/*! Prisma Tools front-end CSS v1.0.82 - contract: assets/MARKUP.md
   Mobile first; desktop overrides at min-width:768px (Elementor's mobile breakpoint).
   Values copied from mockups/homepage-v1, slider-4-directions (S1), terapeuta-trio, precos-fundo. */
/* Roboto Fallback: a local face (Arial / Helvetica / Liberation Sans) shrunk to Roboto's widths and given Roboto's line metrics, so the
   text laid out before the Roboto file arrives is the size of the final text and the late swap moves nothing (layout shift 2026-10-14:
   the H1 and the filter chips changed width when Roboto landed). size-adjust per weight = Roboto's width / Arial's on the page's own
   strings; ascent / descent = Roboto's 1900 / 500 of 2048 units divided by size-adjust (line gap 0). Phones whose system sans is
   Roboto (Android) skip this face: the face is only used where Arial-like fonts exist. Named second in --ptf. */
@font-face{
font-display:swap;font-family:"Roboto Fallback";font-weight:400 500;src:local("Arial"),local("ArialMT"),local("Helvetica"),local("Liberation Sans"),local("Arimo");size-adjust:96%;ascent-override:96.6%;descent-override:25.4%;line-gap-override:0%}
@font-face{
font-display:swap;font-family:"Roboto Fallback";font-weight:600 900;src:local("Arial Bold"),local("Arial-BoldMT"),local("Helvetica Bold"),local("Helvetica-Bold"),local("Liberation Sans Bold"),local("Arimo Bold");size-adjust:93%;ascent-override:99.8%;descent-override:26.2%;line-gap-override:0%}
:root{--pt-pin:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M12 2a7 7 0 0 0-7 7c0 5.25 7 13 7 13s7-7.75 7-13a7 7 0 0 0-7-7zm0 9.5A2.5 2.5 0 1 1 12 6.5a2.5 2.5 0 0 1 0 5z'/%3E%3C/svg%3E");--pt-peach:#F2B399;--pt-green:#25D366;--pt-soft:#d7cfca;--pt-muted:#a79c96;--pt-line:#1c1c1c;--ptf:Roboto,"Roboto Fallback","Helvetica Neue",Arial,sans-serif}

/* Elementor wrappers: headings/text widgets inside a pt- element inherit the pt- typography */
body :is(.pt-card__name,.pt-card__loc,.pt-h,.pt-tname,.pt-sec-h,.pt-clinic__title,.pt-qa__q,.pt-qa__a,.pt-pcard__title,.pt-foot__h,.pt-kick,.pt-tier__du,.pt-tier__pr,.pt-from__lbl,.pt-from__big,.pt-pill,.pt-hint,.pt-pcard__big,.pt-xchip__n,.pt-xchip__p,.pt-xchip__d,.pt-pcard__d,.pt-intro,.pt-note,.pt-lead) :is(.elementor-heading-title,.elementor-widget-container,h1,h2,h3,h4,p){font:inherit;color:inherit;margin:0;text-transform:inherit;letter-spacing:inherit;text-align:inherit}
[class^="pt-"],[class*=" pt-"]{box-sizing:border-box}
[class^="pt-"] svg,[class*=" pt-"] svg{flex:none}
/* Elementor containers carrying a pt- class start with no padding or gap; the pt- rules set them */
.e-con:is([class^="pt-"],[class*=" pt-"]){--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;--row-gap:0px;--column-gap:0px;--gap:0px}
/* Elementor Flexbox containers: .e-con-full.e-flex sets flex-direction from a (0,2,0) variable; row containers need it here */
.e-con.e-flex:is(.pt-chips,.pt-chips__locs,.pt-chips__langs,.pt-card__langs,.pt-clinic__acts,.pt-foot__social,.pt-foot__legal,.pt-attrs,.pt-pills,.pt-xchips,.pt-from,.pt-today,.pt-tname,.pt-acts,.pt-fabs,.pt-crumb,.pt-slider__track,.pt-shorts){--flex-direction:row}
.pt-pinned:not(.pt-btn):before{margin-right:4px}
.pt-pin{width:1em;height:1em;fill:currentColor;flex:none}
/* pin drawn by CSS (no SVG needed in the markup) */
.pt-card__loc:before,.pt-today__where:before,.pt-chip[data-local]:not([data-local=""]):before,.pt-pinned:before{content:"";display:inline-block;vertical-align:-.125em;width:1em;height:1em;flex:none;background:currentColor;-webkit-mask:var(--pt-pin) center/contain no-repeat;mask:var(--pt-pin) center/contain no-repeat}
.pt-wa{width:18px;height:18px;fill:currentColor}
.pt-ic{fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* ===== page blocks ===== */
.pt-section{padding:18px 12px;max-width:1280px;margin-inline:auto;box-sizing:border-box;font-family:var(--ptf)}
.pt-section--edge{padding-inline:1px}
.pt-section--flush{padding-inline:0}
.pt-section--grid{padding-top:6px}
/* Page-title section (e.g. Preços): no extra space above the title or below its intro. */
.pt-section:has(>.elementor-widget.pt-h):not(.elementor-location-footer>*){padding-top:0;padding-bottom:0}
/* Footer blocks (therapist slider, clinics, CTA): one even gap above each (14px phone, 20px above), none below;
   the page's last block gives none either, so page -> footer gets the same gap. */
.elementor-location-footer>.pt-section{padding-top:14px;padding-bottom:0}
/* The last block before the footer line (green CTA) gets the same gap below it. */
.elementor-location-footer>.pt-section:has(+.pt-foot){padding-bottom:14px}
.elementor:not(.elementor-location-footer,.elementor-location-header)>.pt-section:last-child{padding-bottom:0}
.pt-h{color:var(--pt-peach);font:600 24px/1.1 var(--ptf);text-transform:uppercase;text-align:center;margin:0 0 14px;text-wrap:balance}
.pt-pagehead{padding:0 12px;text-align:center;max-width:1280px;margin-inline:auto;box-sizing:border-box}
/* Page H1 always on one line: the longest title ("Massoterapeuta na Barra da Tijuca") is ~19.4em wide in Roboto 600 caps */
.pt-pagehead .pt-h{font-size:min(30px,calc((100vw - 32px) / 19.6));white-space:nowrap;margin:0;padding:0 8px}
.pt-intro{color:var(--pt-soft);font:400 12.5px/1.4 var(--ptf);text-align:center;max-width:64ch;margin:0 auto 4px}
.pt-intro p{margin:0}
.pt-pagehead .pt-intro{font-size:clamp(11.5px,3.15vw,16px);line-height:1.35;margin:6px auto 0;text-wrap:pretty}
.pt-lead{text-align:center;color:var(--pt-soft);font:400 15px/1.45 var(--ptf);max-width:70ch;margin:-4px auto 18px}
.pt-note{color:var(--pt-muted);font:400 13px/1.5 var(--ptf);max-width:78ch;margin:22px auto 0}
.pt-note p{margin:0 0 8px}
.pt-center{text-align:center}
a.pt-cta,.pt-cta a.elementor-button{display:inline-flex;align-items:center;gap:8px;background:linear-gradient(#99f2b3,#12682b);color:#fff;font:600 16px/1.2 var(--ptf);text-transform:uppercase;padding:11px 22px;border-radius:22px;white-space:nowrap;text-decoration:none;border:0}
.pt-cta svg{width:20px;height:20px;fill:currentColor}
body :is(a,button).pt-btn,.pt-btn a.elementor-button{display:inline-flex;align-items:center;gap:6px;font:600 13px/1.2 var(--ptf);padding:9px 13px;border-radius:8px;color:#fff;background:transparent;border:1px solid rgba(255,255,255,.3);text-decoration:none;white-space:nowrap;cursor:pointer}
body :is(a,button).pt-btn--g,.pt-btn--g a.elementor-button{background:var(--pt-green);color:#062b12;border-color:transparent}
body :is(a,button).pt-btn--p,.pt-btn--p a.elementor-button{border-color:rgba(242,179,153,.6);color:var(--pt-peach);background:transparent}
body :is(a,button).pt-btn--big,.pt-btn--big a.elementor-button{font-size:15px;padding:13px 20px;border-radius:10px;justify-content:center}
.pt-btn svg{width:18px;height:18px;fill:currentColor}

/* ===== filter chips ===== */
/* One row on every screen (owner 2026-10-14): locations, the social/Vídeo chip, then ONE language chip (flag + code) that opens a menu.
   Size comes from variables, so every chip in the bar has the same height: phones 32px, 768px+ 32px with larger type, desktop 36px. */
.pt-chips{--h:32px;--fs:10.5px;--cp:6px;--gap:4px;--ls:.02em;--tap:44px;position:sticky;top:0;z-index:5;background:rgba(0,0,0,.94);padding:7px 0;border-bottom:1px solid var(--pt-line);display:flex;flex-flow:row nowrap;gap:var(--gap);align-items:center;font-family:var(--ptf)}
.pt-chips .pt-chips__locs,.pt-chips .pt-chips__langs{display:flex;flex:none;flex-flow:row nowrap;gap:var(--gap);align-items:center;width:auto}
.pt-chips__sep{display:none;width:1px;height:22px;background:#333;flex:none}
/* An uncached page streams in for seconds; Chromium can paint the bar half-parsed, right-aligned on phones, and the chips then slide left as the rest
   arrives (CLS 0.01 at 340px). Bars printed with pt-chips--whole end with an empty pt-chips__end: until it exists the bar is invisible (visibility, not
   opacity: the layout-shift count skips invisible boxes). Old cached markup has no pt-chips--whole and is unaffected. Test: scripts/test_partial_paint.py. */
.pt-chips__end{display:none}
.pt-chips--whole:not(:has(>.pt-chips__end)){visibility:hidden}
.pt-chips .pt-chip::after{content:"";position:absolute;inset:calc((var(--h) - var(--tap)) / 2 - 1px) calc(var(--gap) / -2 - 1px)} /* -1px: inset counts from inside the 1px border; invisible tap area: always 44px tall, sideways to the middle of the gap, never over a neighbouring chip; no visual change */
.pt-chips .pt-chip{position:relative;flex:none;display:inline-flex;align-items:center;justify-content:center;gap:4px;box-sizing:border-box;height:var(--h);margin:0;border:1px solid rgba(255,255,255,.28);color:#fff;background:rgba(255,255,255,.06);font:600 var(--fs)/1 var(--ptf);padding:0 var(--cp);border-radius:999px;cursor:pointer;text-transform:uppercase;letter-spacing:var(--ls);white-space:nowrap;text-decoration:none;-webkit-appearance:none;appearance:none}
/* The Hello theme gives every button and link `transition: all .3s`; a size that glides (padding, font, gap) is measured half-way by prisma.js (section 1b) and the row then jumps: only colours animate. */
.pt-chips .pt-chip{transition:background-color .3s,color .3s,border-color .3s}
.pt-chips .pt-chip:is([aria-pressed="true"],[aria-current="page"],[aria-current="true"],.is-on){background:var(--pt-peach);color:#000;border-color:var(--pt-peach)}
/* Hello theme paints focused/hovered buttons pink (#c36); a tapped chip keeps focus, so a chip turned off stayed pink. Off = default look. */
.pt-chips .pt-chip:is(:hover,:focus):not([aria-pressed="true"],[aria-current],.is-on){background:rgba(255,255,255,.06);color:#fff;border-color:rgba(255,255,255,.28)}
.pt-chip:focus-visible,.pt-slider__btn:focus-visible,.pt-short:focus-visible{outline:2px solid #fff;outline-offset:2px}
.pt-chips .pt-chip[data-local]:before,.pt-chip__full{display:none}
/* Chip labels keep one width whether the text is set in Roboto 600 or in the metric-matched "Roboto Fallback" 600 (the font swaps in late: each label differs by
   0.4-1.1px between the two, which moved the language group 3px at 1280/1920px and the right-aligned clinic group 5px at 768px). Every label is an inline-block
   (a min-width does nothing on an inline box) with min-width = the wider of the two faces, measured uppercase at weight 600, plus one letter-spacing per
   character (Chromium adds it after every character): calc(<em value> + <characters> * var(--ls)). em = the chip's font size, so it scales with --fs and the
   prisma.js step-downs. Markup: extra-chips.php (.pt-chip__t, .pt-chip__full/__short, .pt-lang__code, MARKUP.md section 4). Re-measure when a label, the font or
   --ls changes; a language slug without a rule just has no min-width. */
.pt-chip__t,.pt-chip__short,.pt-lang__code{display:inline-block} /* __full stays display:none above; the 1024px block below makes it inline-block and hides __short */
.pt-chip__t,.pt-chip__full,.pt-chip__short,.pt-lang__code{text-align:center}
.pt-chip[data-local=""] .pt-chip__t{min-width:calc(3.241em + 5 * var(--ls))}
.pt-chip[data-local=copacabana] .pt-chip__full{min-width:calc(6.65em + 10 * var(--ls))}
.pt-chip[data-local=copacabana] .pt-chip__short{min-width:calc(2.62em + 4 * var(--ls))}
.pt-chip[data-local=barra-da-tijuca] .pt-chip__full{min-width:calc(8.51em + 15 * var(--ls))}
.pt-chip[data-local=barra-da-tijuca] .pt-chip__short{min-width:calc(3.36em + 5 * var(--ls))}
.pt-chip[data-local=centro] :is(.pt-chip__full,.pt-chip__short){min-width:calc(3.929em + 6 * var(--ls))}
.pt-chip--video .pt-chip__t{min-width:calc(2.896em + 5 * var(--ls))}
.pt-chip[data-idioma=en] .pt-chip__t{min-width:calc(1.294em + 2 * var(--ls))}
.pt-chip[data-idioma=es] .pt-chip__t{min-width:calc(1.243em + 2 * var(--ls))}
.pt-chip[data-idioma=fr] .pt-chip__t{min-width:calc(1.242em + 2 * var(--ls))}
.pt-chip[data-idioma=it] .pt-chip__t{min-width:calc(0.891em + 2 * var(--ls))}
.pt-chip[data-idioma=ja] .pt-chip__t{min-width:calc(1.201em + 2 * var(--ls))}
.pt-lang__code{min-width:calc(1.344em + 2 * var(--ls))}
.pt-chip__n{opacity:.7;font-weight:500}
/* Phones and tablets (owner 2026-09-29): chips sit on the right, nearer the thumb; desktop keeps them on the left. */
@media (max-width:1023px){.pt-chips,.pt-chips .pt-chips__locs,.pt-chips .pt-chips__langs{justify-content:flex-end;--justify-content:flex-end}.pt-chips .pt-chips__sep{display:none}} /* tablets: no divider (it hung at the end of a row when the chips wrapped) */
/* Sizes: phones = the variables above; from 768px larger type; from 1024px (location names written out, pins, divider) 36px chips.
   Left/right padding 18px = the card grid's 28px edge minus the 10px the chip container holds (chips-spacing-2026.php), so the first chip starts exactly where the first card does. */
@media (min-width:768px){.pt-chips{--fs:12.5px;--cp:10px;--gap:6px;--ls:.04em;padding:10px 18px}}
/* Narrowest phones: the row (logos at their usual size) needs 365px; 1px less padding per chip side fits 355-369px (a few px of slack for font differences).
   Below that prisma.js (section 1b) steps down until the row is ONE line, never wraps: no TikTok logo, tighter padding, smaller type, last of all it scrolls (rules after the language menu). */
@media (max-width:369px){.pt-chips{--cp:5px}}
@media (min-width:1024px){
  .pt-chips{--h:36px;--fs:14px;--cp:14px;--gap:10px;--ls:.05em}
  .pt-chips .pt-chips__sep{display:block}
  .pt-chips .pt-chip[data-local]:not([data-local=""]):before,.pt-chips .pt-chip--video:before{display:block}
  .pt-chip__full{display:inline-block}
  .pt-chip__short{display:none}
}
/* Language menu (prisma.js section 1): one chip with the current flag + code, a menu under it with the choices. */
.pt-menu{position:relative;flex:none}
.pt-fl{display:block;flex:none;width:18px;height:12px;border-radius:2px;background:var(--pt-flag) center/cover no-repeat;box-shadow:0 0 0 1px rgba(255,255,255,.18)}
.pt-caret{display:block;flex:none;width:.7em;height:.7em;background:currentColor;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8l8 8 8-8'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8l8 8 8-8'/%3E%3C/svg%3E") center/contain no-repeat;transition:transform .2s}
.pt-chip[aria-expanded="true"]>.pt-caret{transform:rotate(180deg)}
.pt-pop{position:absolute;top:calc(100% + 6px);right:0;z-index:10;width:224px;max-width:calc(100vw - 20px);padding:6px;border:1px solid rgba(255,255,255,.22);border-radius:14px;background:#141414;box-shadow:0 12px 32px rgba(0,0,0,.7)}
.pt-pop[hidden]{display:none}
.pt-chips .pt-lang-opt{position:relative;display:flex;align-items:center;gap:12px;width:100%;min-height:44px;margin:0;padding:0 10px;border:0;border-radius:9px;background:transparent;color:#fff;font:500 15px/1 var(--ptf);text-align:left;text-transform:none;letter-spacing:0;white-space:nowrap;cursor:pointer;-webkit-appearance:none;appearance:none}
.pt-chips .pt-lang-opt:is(:hover,:focus){background:transparent;color:#fff} /* Hello theme paints focused/hovered buttons pink */
@media (hover:hover){.pt-chips .pt-lang-opt:hover{background:rgba(255,255,255,.09)}}
.pt-chips .pt-lang-opt:focus-visible{background:rgba(255,255,255,.09);outline:2px solid #fff;outline-offset:-2px}
/* The languages come in two forms, one visible at a time (owner 2026-10-14): separate chips (.pt-chips__flat, flag + code each, tap again to clear) when the
   whole bar fits on one line, else the menu chip above. prisma.css guesses from the width by the number of languages (pt-chips--n<count>, thresholds below
   measured in test_lang_menu.py) so nothing jumps when the script loads; prisma.js (section 1b) measures the real fit and sets is-flat / is-menu (+ is-notok,
   is-tight, is-small, is-scroll) on the bar. Hidden = display:none: out of the tab order. */
.pt-chips .pt-chips__flat{display:none;flex-flow:row nowrap;gap:var(--gap);align-items:center}
.pt-chips.is-flat .pt-chips__flat{display:flex}
.pt-chips.is-flat .pt-menu{display:none}
/* Guess of the form before the script runs, by viewport width and language count n (measured with the real chips: separate chips need 480px of bar on phones + 50px per extra language, 627px + 65px per extra from 768px, 960px + 80px per extra from 1024px, whose chips are bigger; plus about 6px of slack; raised by 4px (5px from 768px) on 2026-10-15 when the chip labels got min-widths for the Roboto swap, see the label comment above). Beyond 9 languages the menu stays. */
@media (min-width:510px){.pt-chips--n4:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n4:not(.is-menu) .pt-menu{display:none}}
@media (min-width:560px) and (max-width:1023px){.pt-chips--n5:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n5:not(.is-menu) .pt-menu{display:none}}
@media (min-width:1105px){.pt-chips--n5:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n5:not(.is-menu) .pt-menu{display:none}}
@media (min-width:610px) and (max-width:767px){.pt-chips--n6:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n6:not(.is-menu) .pt-menu{display:none}}
@media (min-width:825px) and (max-width:1023px){.pt-chips--n6:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n6:not(.is-menu) .pt-menu{display:none}}
@media (min-width:1185px){.pt-chips--n6:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n6:not(.is-menu) .pt-menu{display:none}}
@media (min-width:660px) and (max-width:767px){.pt-chips--n7:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n7:not(.is-menu) .pt-menu{display:none}}
@media (min-width:889px) and (max-width:1023px){.pt-chips--n7:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n7:not(.is-menu) .pt-menu{display:none}}
@media (min-width:1265px){.pt-chips--n7:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n7:not(.is-menu) .pt-menu{display:none}}
@media (min-width:710px) and (max-width:767px){.pt-chips--n8:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n8:not(.is-menu) .pt-menu{display:none}}
@media (min-width:955px) and (max-width:1023px){.pt-chips--n8:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n8:not(.is-menu) .pt-menu{display:none}}
@media (min-width:1345px){.pt-chips--n8:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n8:not(.is-menu) .pt-menu{display:none}}
@media (min-width:760px) and (max-width:767px){.pt-chips--n9:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n9:not(.is-menu) .pt-menu{display:none}}
@media (min-width:1019px) and (max-width:1023px){.pt-chips--n9:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n9:not(.is-menu) .pt-menu{display:none}}
@media (min-width:1425px){.pt-chips--n9:not(.is-menu) .pt-chips__flat{display:flex}.pt-chips--n9:not(.is-menu) .pt-menu{display:none}}
/* Guess of the steps below the menu on narrow phones (before the script has set data-fit; measured on the real bar: menu from 354px, no TikTok logo from 353px,
   tighter from 334px, smaller from 298px, scrolling from 274px, plus the TikTok logo only exists in card-video mode); the script's own classes take over once it ran. */
@media (max-width:356px){.pt-chips:not([data-fit]) .pt-chip--soc .pt-soc__tt{display:none}}
@media (max-width:338px){.pt-chips:not([data-fit]){--cp:3px;--gap:2px}.pt-chips:not([data-fit]) .pt-chip--soc{padding-inline:5px}}
@media (max-width:302px){.pt-chips:not([data-fit]){--fs:9.5px}.pt-chips:not([data-fit]) .pt-chip--soc i{width:11px;height:11px}.pt-chips:not([data-fit]) .pt-fl{width:14px;height:10px}}
@media (max-width:278px){.pt-chips:not([data-fit]) .pt-chips__locs{flex:1 1 auto;min-width:0;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent)}.pt-chips:not([data-fit]) .pt-chips__locs::-webkit-scrollbar{display:none}}
/* Steps below the menu (prisma.js sets them one by one, only when the row does not fit): 3 no TikTok logo, 4 tighter, 5 smaller, 6 scroll. */
.pt-chips.is-notok .pt-chip--soc .pt-soc__tt{display:none}
.pt-chips.is-tight{--cp:3px;--gap:2px}
.pt-chips.is-tight .pt-chip--soc{padding-inline:5px}
.pt-chips.is-small{--fs:9.5px}
.pt-chips.is-small .pt-chip--soc i{width:11px;height:11px}
.pt-chips.is-small .pt-fl{width:14px;height:10px}
.pt-chips.is-scroll .pt-chips__locs{flex:1 1 auto;min-width:0;padding-block:6px;margin-block:-6px;justify-content:flex-start;overflow-x:auto;scrollbar-width:none;-webkit-mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent);mask-image:linear-gradient(to right,#000 calc(100% - 22px),transparent)}
.pt-chips.is-scroll .pt-chips__locs::-webkit-scrollbar{display:none}
.pt-chips.is-scroll .pt-chips__langs{flex:none}
.pt-pop .pt-fl{width:24px;height:16px}
.pt-ck{margin-left:auto;flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid #666}
.pt-lang-opt[aria-checked="true"] .pt-ck{background:var(--pt-peach) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12.5l4.5 4.5L19 7'/%3E%3C/svg%3E") center/14px no-repeat;border-color:var(--pt-peach)}

/* ===== therapist card (A4) ===== */
.pt-card,.e-con.pt-card{position:relative;isolation:isolate;display:block;padding:0;border-radius:8px;overflow:hidden;background:#1a1a1a;color:#fff;text-decoration:none;font-family:var(--ptf);--name:24px;--loc:14.5px;--chip:12px}
/* Elementor wraps each widget in its own box (often position:relative); let card overlays anchor to the card itself. */
.pt-card>.elementor-element:not(.pt-card__scrim),.pt-card>.elementor-element>.elementor-widget-container,.pt-card .elementor-shortcode{position:static}
/* Fixed 2:3 frame; photos of another shape are cropped, keeping the upper part (faces) in view. */
.pt-card.pt-card img{display:block;width:100%;max-width:none;height:auto;aspect-ratio:683/1024;object-fit:cover;object-position:50% 20%;border-radius:0}
.pt-card .pt-card__img{width:100%;margin:0}
.pt-card .pt-card__link{position:absolute;inset:0;z-index:3}
.pt-card .pt-card__scrim{position:absolute;inset:auto 0 0 0;width:auto;z-index:1;margin:0;padding:36px 10px 10px;background:linear-gradient(to top,rgba(0,0,0,.9) 0%,rgba(0,0,0,.65) 45%,rgba(0,0,0,0) 100%);display:block}
.pt-card .pt-card__name{font:600 var(--name)/1 var(--ptf);text-transform:uppercase;color:#fff;margin:0}
.pt-card .pt-card__loc{display:flex;align-items:center;gap:5px;color:var(--pt-peach);font:600 var(--loc)/1.2 var(--ptf);margin:5px 0 0}
.pt-card .pt-card__loc:empty{display:none}
/* Same for the card caption: it sits on the card's bottom edge, so a half-parsed one (name, no clinic line yet) would grow upward when the rest arrives.
   Cards printed with data-whole always end the caption with an empty .pt-card__end after the clinic line; until it exists the caption is invisible. */
.pt-card__end{display:none}
.pt-card:has(.pt-card-data[data-whole]) .pt-card__scrim:not(:has(.pt-card__end)){visibility:hidden}
.pt-loc__full{display:none}
.pt-card .pt-card__badges{position:absolute;top:6px;left:6px;width:auto;z-index:2;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.pt-card .pt-card__langs{position:absolute;top:6px;right:6px;width:auto;z-index:2;display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pt-card__langs :is(.jet-listing-dynamic-terms,.elementor-widget-container){display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pt-card__langs [class*=delimiter]{display:none}
.pt-card .pt-card__langs :is(span,a):not([class*=delimiter]){font:600 var(--chip)/1 var(--ptf);padding:5px 7px;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;border:1px solid rgba(255,255,255,.35);letter-spacing:.05em;text-transform:uppercase;min-width:2.9em;text-align:center;box-sizing:border-box}
.pt-tag{display:inline-block;font:700 11px/1 var(--ptf);text-transform:uppercase;letter-spacing:.08em;padding:5px 7px;border-radius:4px;background:var(--pt-peach);color:#000}
.pt-tag--hot{background:#fff}
.pt-tag--pro{background:#111;color:#fff}
.pt-tag:empty,.pt-card__langs:empty,.pt-card__badges:empty{display:none}
.pt-vid{display:inline-flex;align-items:center;gap:4px;font:700 10px/1 var(--ptf);text-transform:uppercase;letter-spacing:.08em;padding:4px 6px 4px 5px;border-radius:4px;background:rgba(0,0,0,.65);color:#fff;border:1px solid rgba(255,255,255,.45)}
.pt-vid svg{width:10px;height:10px;fill:var(--pt-peach)}

/* ===== grid (JetEngine Listing Grid or plain .pt-grid__items) ===== */
.pt-grid{display:flex;flex-direction:column;--flex-direction:column;gap:1px;padding:0}
.pt-grid :is(.jet-listing-grid__items,.pt-grid__items){display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1px!important;margin:0!important;width:auto!important;padding:0}
:is(.pt-grid,.pt-slider) .jet-listing-grid__item{max-width:none!important;flex:none!important;padding:0!important;margin:0;width:auto}
.pt-grid .jet-listing-grid,.pt-slider .jet-listing-grid{margin:0;padding:0}

/* ===== slider S1 (scroll-snap; JetEngine grid in plain Grid mode) ===== */
.pt-slider{position:relative}
.pt-slider :is(.jet-listing-grid__items,.pt-slider__track){display:flex!important;flex-wrap:nowrap!important;gap:1px;overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scrollbar-width:none;margin:0!important;width:auto!important;padding:0}
.pt-slider :is(.jet-listing-grid__items,.pt-slider__track)::-webkit-scrollbar{display:none}
.pt-slider :is(.jet-listing-grid__items,.pt-slider__track)>*{flex:none!important;width:calc((100% - 1px)/2)!important;max-width:none!important;scroll-snap-align:start}
.pt-slider .pt-slider__btn{position:absolute;top:50%;transform:translateY(-50%);z-index:4;width:34px;height:34px;margin:0;padding:0;border-radius:50%;background:rgba(0,0,0,.72);border:1px solid rgba(255,255,255,.35);color:#fff;display:grid;place-items:center;font:400 22px/1 var(--ptf);cursor:pointer;user-select:none;transition:opacity .2s}
.pt-slider .pt-slider__prev{left:4px}
.pt-slider .pt-slider__next{right:4px}
.pt-slider .pt-slider__btn::after{content:"";position:absolute;inset:min(0px,(100% - 44px)/2)} /* 44px tap area */
.pt-slider .pt-slider__btn[disabled]{opacity:0;pointer-events:none}

/* ===== clinics ===== */
.pt-clinics{display:grid;grid-template-columns:1fr;gap:16px;font-family:var(--ptf)}
.pt-clinic{background:#111;border:1px solid #222;border-radius:12px;overflow:hidden;display:flex;flex-direction:column;--flex-direction:column;padding:0;gap:0;color:#fff}
.pt-clinic__photo{position:relative}
.pt-clinic .pt-clinic__photo img{display:block;width:100%;height:auto;aspect-ratio:4/3;object-fit:cover}
.pt-clinic .pt-clinic__scrim{position:absolute;inset:auto 0 0 0;width:auto;padding:50px 16px 12px;background:linear-gradient(to top,rgba(0,0,0,.92) 0%,rgba(0,0,0,.6) 50%,rgba(0,0,0,0) 100%)}
.pt-clinic .pt-clinic__title{margin:0;font:600 22px/1.15 var(--ptf);color:var(--pt-peach);text-transform:uppercase}
.pt-clinic__title span{white-space:nowrap}
.pt-clinic__title .pt-clinic__city{display:inline-block}
.pt-status{display:inline-flex;align-items:center;gap:6px;font:600 12px/1 var(--ptf);text-transform:uppercase;letter-spacing:.06em;color:#8ee3a5;margin:6px 0 0}
.pt-status:before{content:"";width:8px;height:8px;border-radius:50%;background:#25D366;box-shadow:0 0 0 3px rgba(37,211,102,.25)}
.pt-clinic .pt-clinic__body{padding:12px 16px 16px;display:flex;flex-direction:column;gap:6px;flex:1}
.pt-clinic__body p{margin:0;font-size:14px;color:var(--pt-soft);line-height:1.45}
.pt-clinic__body p b{color:#fff;font-weight:500}
.pt-clinic .pt-clinic__acts{display:flex;flex-flow:row wrap;gap:6px;margin-top:auto;padding-top:8px}
/* Buttons never shrink below their text; they wrap to a second row on narrow cards and share each row. */
.pt-clinic__acts>.elementor-widget.pt-btn{flex:1 1 auto;min-width:max-content;width:auto;margin:0;padding:0}
.pt-clinic__acts .pt-btn a.elementor-button::after{content:"";position:absolute;inset:min(0px,(100% - 44px)/2) 0} /* 44px tap height */
.pt-clinic__acts .pt-btn a.elementor-button{position:relative;width:100%;box-sizing:border-box;justify-content:center;padding:8px 10px;font-size:12px}
/* Narrow card (3 columns on tablet/small desktop): WhatsApp on its own row, the other two share the next one. */
.pt-clinic .pt-clinic__body{container-type:inline-size}
@container (max-width:380px){.pt-clinic__acts>.elementor-widget.pt-btn--g{flex-basis:100%}}
.pt-clinic__acts .pt-btn svg{width:16px;height:16px}
.pt-clinic__acts .pt-btn .pt-pin{width:1em;height:1em}

/* ===== footer ===== */
.pt-foot{padding:22px 12px 14px;border-top:1px solid var(--pt-line);display:grid;grid-template-columns:1fr;gap:20px;font:400 13px/normal var(--ptf);color:var(--pt-muted);max-width:1280px;margin-inline:auto;box-sizing:border-box}
.pt-foot .pt-foot__h{color:#fff;margin:0 0 10px;font:600 13px/1.2 var(--ptf);text-transform:uppercase;letter-spacing:.08em}
.pt-foot a{color:var(--pt-soft);text-decoration:none}
.pt-foot__links a{display:block;margin:4px 0}
.pt-foot__logo img,img.pt-foot__logo{width:120px;height:120px;object-fit:contain;display:block;margin-bottom:12px}
.pt-foot__social{display:flex;flex-flow:row wrap;gap:10px;margin-top:14px}
body .pt-foot .pt-foot__social .elementor-widget-container{overflow:visible} /* Elementor sets overflow:hidden here, which clipped the 44px tap area back to 34px */
.pt-foot .pt-foot__social a::after{content:"";position:absolute;inset:min(0px,(100% - 44px)/2)} /* 44px tap area */
.pt-foot .pt-foot__social a{position:relative;flex:0 0 34px;width:34px;height:34px;box-sizing:border-box;padding:0;border:1px solid #333;border-radius:50%;display:flex;align-items:center;justify-content:center;margin:0;color:#fff}
.pt-foot .pt-foot__social .elementor-icon-list-items.elementor-inline-items .elementor-icon-list-item{margin:0;padding:0}
/* Elementor gives inline icon lists -8px side margins: the first and last circles stuck out of the column. */
.pt-foot .pt-foot__social .elementor-icon-list-items.elementor-inline-items{margin:0}
.pt-foot .pt-foot__social .elementor-icon-list-item:after{display:none}
.pt-foot .pt-foot__social .elementor-icon-list-icon{margin:0;padding:0;width:auto;display:flex}
.pt-foot .pt-foot__social .elementor-icon-list-icon i{width:auto;font-size:15px;line-height:1}
.pt-foot__social svg{width:16px;height:16px;fill:currentColor}
.pt-foot__info p{margin:0 0 10px;line-height:1.5}
.pt-foot__info b{color:#fff;font-weight:500}
/* Footer lists built from Elementor Icon List widgets (footer-2026.php) */
.pt-foot .pt-foot__list .elementor-icon-list-items{margin:0;padding:0}
.pt-foot .pt-foot__list .elementor-icon-list-item{margin:0 0 6px;padding:0;line-height:1.5}
.pt-foot .pt-foot__list .elementor-icon-list-text{color:var(--pt-soft);font:inherit}
.pt-foot .pt-foot__list .elementor-icon-list-icon i,.pt-foot .pt-foot__list .elementor-icon-list-icon svg{color:var(--pt-muted);fill:var(--pt-muted);width:13px;font-size:13px}
.pt-foot .pt-foot__list b,.pt-foot .pt-foot__list strong{color:#fff;font-weight:500}
.pt-foot ul.pt-foot__social,.pt-foot .pt-foot__social .elementor-icon-list-items{display:flex;flex-flow:row wrap;gap:10px;margin:0;padding:0;list-style:none}
.pt-foot .pt-foot__social .elementor-icon-list-item{margin:0;padding:0}
.pt-foot .pt-foot__social .elementor-icon-list-text,.pt-sr{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.pt-foot .elementor-icon-list-text{color:var(--pt-soft)}
.pt-foot .pt-foot__legal .elementor-icon-list-text{color:var(--pt-muted)}
.pt-foot .pt-foot__list .elementor-icon-list-text a{text-decoration:underline;text-underline-offset:2px}
.pt-foot__legal p{margin:0}
/* Old footer logo is dark (it sat on peach): lighten it on the dark footer */
.pt-foot__logo img{filter:brightness(0) invert(.86) sepia(.35)}
/* Room for the fixed WhatsApp / phone buttons under the legal line */
.pt-foot.pt-foot{padding-bottom:84px}
.pt-foot__legal{grid-column:1/-1;border-top:1px solid var(--pt-line);padding-top:12px;font-size:12px;display:flex;flex-flow:row wrap;justify-content:space-between;gap:8px}
.pt-foot__legal a{display:inline;margin:0 12px 0 0}

/* ===== floating buttons ===== */
.pt-fabs{position:fixed;left:20px;right:20px;bottom:20px;z-index:90;display:flex;justify-content:space-between;align-items:flex-end;pointer-events:none}
.pt-fabs__stack{display:flex;flex-direction:column;gap:12px;margin-left:auto}
.pt-fab{pointer-events:auto;width:56px;height:56px;border-radius:50%;display:grid;place-items:center;color:#fff;box-shadow:0 6px 18px rgba(0,0,0,.5);text-decoration:none;box-sizing:border-box}
.pt-fab svg{width:30px;height:30px;fill:currentColor}
.pt-fab--wa{background:var(--pt-green)}
.pt-fab--tg{background:#229ED9}
.pt-fab--ph{background:#111;border:2px solid var(--pt-peach);color:var(--pt-peach)}
.pt-fab--ph svg{width:26px;height:26px}
.pt-stickybar{position:fixed;left:0;right:0;bottom:0;z-index:89;background:rgba(0,0,0,.94);border-top:1px solid var(--pt-line);padding:10px 12px}
.pt-stickybar .pt-btn{width:100%;box-sizing:border-box}
body:has(.pt-stickybar){padding-bottom:62px}
body:has(.pt-stickybar) .pt-fabs{bottom:82px}
/* Floating buttons (owner, 2026-10-10): WhatsApp, phone and Telegram are one size that grows smoothly with the screen,
   --pt-fs = 44px on phones, about 51px at 768, 56px from about 1030px up; glyph = half the circle. WhatsApp and phone are
   Elementor Icon widgets (22 / 25 / 28px icon in a padding:.5em circle, per breakpoint); wp/setup/float-buttons-2026.php adds the class
   pt-float-btn to them. The selector below has one element more than Elementor's per-element rules (body), so it wins with no !important;
   Elementor sets the svg height as well as the font size, hence both. Offsets stay Elementor's (10px from the corner, circle 16px from the bottom). */
:root{--pt-fs:clamp(44px, 32px + 2.335vw, 56px)}
body .elementor-element.elementor-widget-icon.pt-float-btn .elementor-icon{font-size:calc(var(--pt-fs) / 2)}
body .elementor-element.elementor-widget-icon.pt-float-btn .elementor-icon svg{width:1em;height:1em}
/* Telegram float (extra-telegram.php): stacked 10px above the WhatsApp circle (which sits 16px from the bottom). */
.pt-tg{--s:var(--pt-fs);position:fixed;right:10px;bottom:calc(26px + var(--s));z-index:99;width:var(--s);height:var(--s);border-radius:50%;background:#229ED9;display:flex;align-items:center;justify-content:center}
.pt-tg svg{width:calc(var(--s) / 2);height:calc(var(--s) / 2);fill:#fff;margin-left:-2px}
.pt-tg:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* Floating buttons slide in with CSS only (owner 2026-09-24). Elementor's own entrance animation hid WhatsApp and
   phone until its (Seraphinite-delayed) JS ran; floats-2026.php removed it and tags them pt-float--left/right.
   Opacity + transform only: no layout, no paint cost; the buttons are never part of LCP. */
@keyframes pt-float-l{from{opacity:0;transform:translateX(-24px)}}
@keyframes pt-float-r{from{opacity:0;transform:translateX(24px)}}
.pt-float--left{animation:pt-float-l .5s ease-out .4s both}
.pt-float--right,.pt-tg{animation:pt-float-r .5s ease-out .4s both}
.pt-tg{animation-delay:.5s}
/* Floating phone button, owner choice 2026-09-24 (option 4): black + peach handset are the Icon widget's colours
   (phone-float-2026.php); the peach ring is drawn here. */
.pt-float--phone .elementor-icon{box-shadow:0 0 0 2px var(--pt-peach),0 2px 8px rgba(0,0,0,.4)}

/* ===== therapist page ===== */
.pt-crumb{padding:4px 12px 0;font:500 11px/1.4 var(--ptf);color:var(--pt-muted);text-transform:uppercase;letter-spacing:.08em;display:flex;flex-flow:row wrap;gap:8px;align-items:center;max-width:1280px;margin-inline:auto;box-sizing:border-box}
.pt-crumb a{color:var(--pt-soft);text-decoration:none}
.pt-crumb__cur{color:var(--pt-peach)}
.pt-crumb__sep{opacity:.5}
.pt-hero{position:relative;display:flex;flex-direction:column;--flex-direction:column;justify-content:flex-end;overflow:hidden;background:#000;aspect-ratio:3/4;min-height:0;padding:0;max-width:1280px;margin-inline:auto;font-family:var(--ptf);color:#fff}
.pt-hero:before{content:"";position:absolute;inset:0;z-index:1;background:linear-gradient(to top,rgba(0,0,0,.95) 0%,rgba(0,0,0,.75) 35%,rgba(0,0,0,0) 70%);pointer-events:none}
.pt-hero .pt-hero__trio{position:absolute;inset:0;z-index:0;display:block;width:auto;margin:0;padding:0}
.pt-hero .pt-hero__trio img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 15%;max-width:none;border-radius:0}
.pt-hero .pt-hero__trio>:not(:nth-child(2)){display:none}
.pt-hero__trio>*,.pt-hero__trio .elementor-widget-container{height:100%}
.pt-hero .pt-hero__in{position:relative;z-index:2;padding:20px 12px 16px;display:flex;flex-direction:column;gap:10px;align-items:flex-start;text-align:left;width:auto}
.pt-hero .pt-tname{margin:0;color:var(--pt-peach);font:600 40px/1 var(--ptf);text-transform:uppercase;display:flex;flex-flow:row wrap;align-items:center;gap:8px}
.pt-tname .pt-tag{font-size:12px;padding:6px 9px}
.pt-hero .pt-tname .elementor-shortcode{display:flex;flex-flow:row wrap;align-items:center;gap:8px;line-height:1}
.pt-langs{display:inline-flex;gap:4px}
.pt-langs span{font:600 12px/1 var(--ptf);padding:6px 9px;border-radius:999px;background:rgba(0,0,0,.6);color:#fff;border:1px solid rgba(255,255,255,.35);letter-spacing:.05em}
/* Language flags (owner 2026-09-24): top filter chips and therapist page pills; card pills stay plain. EN = USA. */
[data-idioma="en"]{--pt-flag:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2019%2010'><rect%20width='19'%20height='10'%20fill='%23fff'/><path%20d='M9.5%200v10'%20stroke='%23B22234'%20stroke-width='19'%20stroke-dasharray='.769'/><rect%20width='7.6'%20height='5.38'%20fill='%233C3B6E'/></svg>")}
[data-idioma="es"]{--pt-flag:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%203%202'><rect%20width='3'%20height='2'%20fill='%23AA151B'/><rect%20y='.5'%20width='3'%20height='1'%20fill='%23F1BF00'/></svg>")}
[data-idioma="it"]{--pt-flag:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%203%202'><rect%20width='1'%20height='2'%20fill='%23009246'/><rect%20x='1'%20width='1'%20height='2'%20fill='%23fff'/><rect%20x='2'%20width='1'%20height='2'%20fill='%23CE2B37'/></svg>")}
[data-idioma="ja"]{--pt-flag:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%203%202'><rect%20width='3'%20height='2'%20fill='%23fff'/><circle%20cx='1.5'%20cy='1'%20r='.6'%20fill='%23BC002D'/></svg>")}
[data-idioma="pt"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2020%2014'%3E%3Crect%20width='20'%20height='14'%20fill='%23009C3B'/%3E%3Cpath%20d='M10%201.4%2018.4%207%2010%2012.6%201.6%207z'%20fill='%23FFDF00'/%3E%3Ccircle%20cx='10'%20cy='7'%20r='3.3'%20fill='%23002776'/%3E%3Cpath%20d='M6.9%206.4q3.1-.9%206.2.9'%20fill='none'%20stroke='%23fff'%20stroke-width='.7'/%3E%3C/svg%3E")}
[data-idioma="fr"]{--pt-flag:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%203%202'><rect%20width='1'%20height='2'%20fill='%23002395'/><rect%20x='1'%20width='1'%20height='2'%20fill='%23fff'/><rect%20x='2'%20width='1'%20height='2'%20fill='%23ED2939'/></svg>")}
/* Attention wave (owner 2026-09-24: make visitors notice the filters): ~1s after load each chip lights up peach,
   left to right, twice, then stops. CSS only; background/border/shadow on small chips, no layout shift. The chip of
   the current page (already peach) is skipped. */
@keyframes pt-chip-hi{50%{border-color:var(--pt-peach);background:rgba(255,255,255,.18);box-shadow:0 0 0 3px color-mix(in srgb,var(--pt-peach) 45%,transparent)}}
.pt-chips .pt-chip:not([aria-current]){animation:pt-chip-hi .6s ease-in-out 2 both;animation-delay:calc(1s + var(--i,0) * 90ms)}
.pt-chips.is-used .pt-chip{animation:none} /* after the first chip tap: a location chip turned off would replay the wave */
.pt-chips__locs>:nth-child(2){--i:1}.pt-chips__locs>:nth-child(3){--i:2}.pt-chips__locs>:nth-child(4){--i:3}.pt-chips__locs>:nth-child(5){--i:4}
.pt-chips__langs .pt-chip{--i:5}
.pt-chips__flat>:nth-child(2){--i:6}.pt-chips__flat>:nth-child(3){--i:7}.pt-chips__flat>:nth-child(4){--i:8}.pt-chips__flat>:nth-child(5){--i:9}.pt-chips__flat>:nth-child(n+6){--i:10}
/* "Vídeo" chip (owner 2026-09-24): written out after Centro in the same row; play icon in the card badge's peach (black when pressed) from 768px, phones have no room for it. */
.pt-chips .pt-chip--video:before{content:"";display:none;width:.8em;height:.8em;flex:none;background:var(--pt-peach);-webkit-mask:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='5%205%2014%2014'><path%20d='M8%205v14l11-7z'/></svg>") center/contain no-repeat;mask:url("data:image/svg+xml,<svg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='5%205%2014%2014'><path%20d='M8%205v14l11-7z'/></svg>") center/contain no-repeat}
.pt-chips .pt-chip--video[aria-pressed="true"]:before{background:currentColor}
.pt-chips .pt-chip[data-idioma]:before,.pt-langs [data-idioma]:before{content:"";display:inline-block;width:18px;height:12px;flex:none;border-radius:2px;background:var(--pt-flag) center/cover no-repeat;box-shadow:0 0 0 1px rgba(255,255,255,.18)}
.pt-langs [data-idioma]{display:inline-flex;align-items:center;gap:6px}
.pt-langs [data-idioma]:before{width:16px;height:11px}
.pt-today{display:flex;flex-flow:row wrap;align-items:center;gap:8px;color:var(--pt-soft);font:400 14px/1.4 var(--ptf)}
.pt-today:empty{display:none}
.pt-today .pt-status{margin:0}
.pt-today__where{display:inline-flex;align-items:center;gap:5px;color:var(--pt-peach);font-weight:600}
.pt-today__addr{color:var(--pt-muted);font-size:13px;flex-basis:100%}
.pt-today__addr a{color:var(--pt-soft);text-decoration:underline;text-underline-offset:3px}
/* Hero text readability, owner choice 2026-09-24 (mockup terapeuta-legibilidade.html, option B): a soft dark shadow
   behind every text line over the photo, lighter address text and darker chips, so light photos (white walls)
   no longer wash the name and address out. */
.pt-hero :is(.pt-tname,.pt-today,.pt-status,.pt-today__where,.pt-today__addr){text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 14px rgba(0,0,0,.85)}
.pt-hero .pt-today__addr{color:var(--pt-soft)}
.pt-hero .pt-attr{background:rgba(0,0,0,.68)}
.pt-hero .pt-langs span{background:rgba(0,0,0,.72)}
.pt-attrs{display:grid;grid-template-columns:1fr 1fr;gap:6px;width:100%;margin:0}
.pt-attr{display:inline-flex;align-items:center;gap:6px;min-width:0;border:1px solid rgba(255,255,255,.28);border-radius:999px;padding:7px 10px;color:#fff;font:500 12.5px/1 var(--ptf);background:rgba(0,0,0,.45);white-space:nowrap}
.pt-attr:last-child:nth-child(odd){grid-column:1/-1}
.pt-attr .pt-ic{width:15px;height:15px;color:var(--pt-peach)}
.pt-attr b{color:var(--pt-muted);font-weight:500}
.pt-attr__txt{overflow:hidden;text-overflow:ellipsis}
.pt-mod{display:none;background:rgba(0,0,0,.55);border:1px solid rgba(242,179,153,.4);border-radius:10px;padding:12px 14px;gap:12px;align-items:flex-start;text-align:left}
.pt-mod .pt-ic{width:28px;height:28px;color:var(--pt-peach)}
.pt-mod b{display:block;color:var(--pt-peach);font:600 12px/1 var(--ptf);text-transform:uppercase;letter-spacing:.08em;margin-bottom:5px}
.pt-mod span{color:#fff;font-size:15px;line-height:1.4}
.pt-hero .pt-acts{display:none;gap:10px;flex-wrap:wrap}
.pt-sec-h{color:var(--pt-peach);font:600 19px/1.15 var(--ptf);text-transform:uppercase;letter-spacing:.02em;margin:0 0 12px}
.pt-sec-h small{display:block;color:var(--pt-muted);font:400 13px/1.4 var(--ptf);text-transform:none;letter-spacing:0;margin-top:3px}
.pt-qa{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;gap:0;font-family:var(--ptf)}
.pt-qa__item{padding:12px 0;border-bottom:1px solid var(--pt-line);break-inside:avoid}
.pt-qa .pt-qa__q{margin:0 0 5px;color:var(--pt-peach);font:600 14px/1.35 var(--ptf);text-transform:none}
.pt-qa .pt-qa__a{margin:0;color:#e6dfda;font:400 14px/1.5 var(--ptf)}
/* gallery: 1 per row edge to edge on phone, 2 per row on desktop, 1px gap, square corners */
.pt-gallery :is(.jet-engine-gallery-grid,.pt-gallery__items){display:grid!important;grid-template-columns:1fr;gap:1px;margin:0!important;padding:0}
.pt-gallery :is(.jet-engine-gallery-grid__item,.pt-gallery__items>*){position:relative;display:block;margin:0;padding:0!important;max-width:none!important;flex:none!important;overflow:hidden;background:#1a1a1a;aspect-ratio:683/1024}
.pt-gallery :is(.jet-engine-gallery-grid__item,.pt-gallery__items>*) :is(a,img){display:block;width:100%;height:100%}
.pt-gallery .pt-gallery__land img,.pt-gallery :is(a,div) img{object-fit:cover;object-position:top;border-radius:0;max-width:none}
.pt-gallery .pt-gallery__land{aspect-ratio:768/512}

/* ===== YouTube Shorts (lite embed) ===== */
.pt-shorts-section:not(:has(.pt-short:not([data-id=""]))),.pt-shorts-section[hidden]{display:none!important}
.pt-shorts{display:flex;gap:1px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;font-family:var(--ptf)}
.pt-shorts::-webkit-scrollbar{display:none}
.pt-short{position:relative;display:block;flex:0 0 100%;scroll-snap-align:start;aspect-ratio:9/16;overflow:hidden;background:#111;border:0;margin:0;padding:0;color:#fff;cursor:pointer;text-align:left;font:inherit;border-radius:0}
.pt-short[data-id=""]{display:none}
/* Hello theme's button reset (loaded later) adds a 1px pink border and 8px padding to every <button>. */
.pt-shorts>.pt-short{border:0;padding:0}
.pt-shorts .pt-short img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 20%;filter:brightness(.7);max-width:none}
.pt-short iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.pt-short:not(.is-playing):after{content:"";position:absolute;left:50%;top:50%;width:60px;height:60px;margin:-30px 0 0 -30px;border-radius:50%;box-shadow:0 10px 30px rgba(0,0,0,.6);background:rgba(242,179,153,.95) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9.3 7.8v8.4l7.3-4.2z' stroke='%23000' stroke-width='1.6' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}
.pt-short.is-playing{cursor:auto}
/* Smart autoplay (prisma.js 3b): muted clip over the poster + "tap to listen" box instead of the play circle. */
.pt-shorts .pt-short__prev{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 20%;opacity:0;transition:opacity .4s}
.pt-shorts .pt-short.is-auto .pt-short__prev{opacity:1}
.pt-short.is-auto:after{content:none}
.pt-short__hint{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding-top:22%;box-sizing:border-box;pointer-events:none;color:#fff;text-align:center;font-family:var(--ptf);background:radial-gradient(circle at 50% 61%,rgba(0,0,0,.5) 0,rgba(0,0,0,.2) 32%,rgba(0,0,0,0) 55%);animation:pt-in .35s ease-out both}
/* Owner pick 2026-09-25: mockups/autoplay-hint-center-4.html direction 1 "Pulso de ondas", larger text. */
.pt-pulse{position:relative;width:72px;height:72px;flex:none}
.pt-pulse__btn{position:absolute;inset:0;display:grid;place-items:center;border-radius:50%;background:var(--pt-peach);color:#111;box-shadow:0 8px 24px rgba(0,0,0,.45);animation:pt-beat 1.6s ease-in-out infinite}
.pt-pulse__btn svg{display:block;width:36px;height:36px;fill:currentColor}
.pt-pulse:before,.pt-pulse:after{content:"";position:absolute;inset:0;border-radius:50%;border:2px solid var(--pt-peach);animation:pt-ripple 1.6s ease-out infinite}
.pt-pulse:after{animation-delay:-.8s}
.pt-pulse__txt{padding:9px 15px;border-radius:10px;background:rgba(0,0,0,.62)}
.pt-pulse__txt b{display:block;font:700 18px/1.2 var(--ptf);white-space:nowrap}
.pt-pulse__txt small{display:block;margin-top:4px;font:500 15px/1.2 var(--ptf);color:var(--pt-peach);letter-spacing:.02em}
@keyframes pt-in{from{opacity:0}}
@keyframes pt-ripple{from{transform:scale(1);opacity:.9}to{transform:scale(2.1);opacity:0}}
@keyframes pt-beat{0%,100%{transform:scale(1)}12%{transform:scale(1.08)}24%{transform:scale(.98)}36%{transform:scale(1.04)}50%{transform:scale(1)}}
.pt-playlist-label{position:absolute;left:0;right:0;bottom:24%;text-align:center;font:600 16px/1.3 var(--ptf);text-transform:uppercase;letter-spacing:.04em}
.pt-shorts:has(>.pt-short+.pt-short){margin-bottom:20px}
.pt-dots{display:flex;justify-content:center;align-items:flex-start;gap:8px;height:20px;margin-top:-20px;padding-top:12px;box-sizing:border-box}
.pt-dots button::after{content:"";position:absolute;inset:-18px -4px} /* bigger tap area for the 8px dots */
.pt-dots button{position:relative;width:8px;height:8px;border-radius:50%;border:0;padding:0;margin:0;background:#555;cursor:pointer}
.pt-dots button[aria-current="true"]{background:var(--pt-peach);width:22px;border-radius:4px}

/* ===== price page (fundo) ===== */
.pt-prices{max-width:980px;margin:0 auto;font-family:var(--ptf);color:#fff}
.pt-prices .pt-sec-h{margin:26px 0 12px}
.pt-prices>.pt-sec-h:first-child{margin-top:0}
.pt-pgrid2{display:grid;grid-template-columns:1fr;gap:14px}
.pt-pgrid4{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.pt-kick{display:inline-block;align-self:flex-start;font:700 11px/1 var(--ptf);text-transform:uppercase;letter-spacing:.08em;padding:5px 8px;border-radius:4px;background:var(--pt-peach);color:#000}
.pt-pcard{position:relative;overflow:hidden;background:#111;border:1px solid #232323;border-radius:12px;padding:14px;display:flex;flex-direction:column;--flex-direction:column;gap:10px;color:#fff}
.pt-pcard--photo:after{content:"";position:absolute;inset:0;z-index:0;background:linear-gradient(180deg,rgba(0,0,0,.25),rgba(0,0,0,.8));pointer-events:none}
.pt-pcard .pt-pcard__bg{position:absolute;inset:0;z-index:0;width:100%;height:100%;margin:0}
.pt-pcard .pt-pcard__bg .elementor-widget-container{height:100%}
.pt-pcard .pt-pcard__bg img,.pt-pcard img.pt-pcard__bg{width:100%;height:100%;object-fit:cover;object-position:top center;opacity:.28;max-width:none;border-radius:0}
.pt-pcard--sala .pt-pcard__bg img,.pt-pcard--sala img.pt-pcard__bg{object-position:center}
.pt-pcard .pt-pcard__in{position:relative;z-index:1;display:flex;flex-direction:column;gap:10px;flex:1;width:auto;padding:0}
.pt-pcard .pt-pcard__title{margin:0;color:var(--pt-peach);font:600 18px/1.15 var(--ptf);text-transform:uppercase}
.pt-pcard__d{margin:0;color:var(--pt-muted);font-size:12px;line-height:1.45}
.pt-pcard .pt-tiers{margin-top:auto}
.pt-tiers{display:grid;grid-template-columns:1fr 1fr;gap:6px}
.pt-tier{background:rgba(0,0,0,.6);border:1px solid #262626;border-radius:8px;padding:9px 6px;text-align:center}
.pt-tier__du{display:block;color:var(--pt-muted);font:600 12px/1 var(--ptf);text-transform:uppercase;letter-spacing:.06em;margin-bottom:5px}
.pt-tier__pr{display:block;color:#fff;font:600 18px/1 var(--ptf);font-variant-numeric:tabular-nums}
.pt-tier__pr .pt-cur{font-size:11px;color:var(--pt-muted);font-weight:400}
.pt-tier--hi{border-color:var(--pt-peach)}
.pt-tier--hi .pt-tier__du{color:var(--pt-peach)}
body a.pt-go,.pt-go{display:inline-flex;align-items:center;gap:6px;color:#8ee3a5;font:600 13px/1.2 var(--ptf);text-decoration:none}
.pt-go svg{width:15px;height:15px;fill:currentColor}
.pt-hint{color:var(--pt-muted);font-size:13px;line-height:1.45}
/* "Mais procurada" hero card */
.pt-pcard--top{padding:16px;gap:9px;border-radius:14px;border-color:rgba(242,179,153,.6);background:#111}
.pt-pcard--top:after{background:linear-gradient(180deg,rgba(0,0,0,.2),rgba(0,0,0,.75))}
.pt-pcard--top .pt-pcard__in{gap:9px}
.pt-pcard--top .pt-pcard__title{font-size:26px;line-height:1}
.pt-from{display:flex;align-items:baseline;gap:10px}
.pt-from__lbl{color:var(--pt-muted);font:600 13px var(--ptf);text-transform:uppercase;letter-spacing:.08em}
.pt-from__big{color:#fff;font:600 38px/1 var(--ptf);font-variant-numeric:tabular-nums}
.pt-from__big .pt-cur{font-size:18px;color:var(--pt-muted);font-weight:400;margin-right:2px}
.pt-pills{display:flex;flex-flow:row wrap;gap:6px}
.pt-pill{display:inline-block;border:1px solid #333;border-radius:999px;padding:6px 10px;color:var(--pt-soft);font:500 14px/1 var(--ptf);white-space:nowrap}
.pt-pcard--top .pt-btn{align-self:flex-start;margin-top:4px;font-size:14px;padding:11px 16px}
/* couples / combos (no photo) */
.pt-pcard--duo{padding:12px}
.pt-pcard--duo .pt-pcard__title{font-size:18px}
.pt-pcard__big{color:#fff;font:600 22px/1.2 var(--ptf);font-variant-numeric:tabular-nums}
.pt-pcard__big small{color:var(--pt-muted);font:400 14px var(--ptf);margin-left:6px}
.pt-pcard__big.pt-pcard__big--txt{font-size:18px;line-height:1.3}
.pt-xchips{display:flex;flex-flow:row wrap;gap:8px}
.pt-xchip{display:inline-flex;flex-direction:column;gap:2px;background:#111;border:1px solid #262626;border-radius:10px;padding:10px 14px;min-width:0;flex:1 1 45%;font-family:var(--ptf)}
.pt-xchip__n{color:#fff;font-weight:600;font-size:14px}
.pt-xchip__p{color:var(--pt-peach);font-size:16px;font-weight:500}
.pt-xchip__p .pt-hint{font-size:13px}
.pt-xchip__d{color:var(--pt-muted);font-size:12px;line-height:1.35}

/* ===== desktop ===== */
@media (min-width:768px){
  .pt-section,.pt-section--edge,.pt-section--flush,.pt-section--grid{padding:24px 28px}
  .pt-section--grid{padding-top:9px}
  .elementor-location-footer>.pt-section{padding-top:20px;padding-bottom:0}
  .elementor-location-footer>.pt-section:has(+.pt-foot){padding-bottom:20px}
  .pt-h{font-size:30px}
  .pt-pagehead{padding:0 28px 8px}
  .pt-intro{font-size:16px;line-height:1.45}
  .pt-intro p{margin:0 0 6px}
  .pt-lead{font-size:16px}
  .pt-loc__full{display:inline}
  .pt-loc__short{display:none}
  .pt-card{--name:30px;--loc:20px;--chip:15px}
  .pt-card .pt-card__scrim{padding:60px 14px 14px}
  .pt-card .pt-card__loc{margin-top:8px}
  .pt-card .pt-card__badges{top:10px;left:10px}
  .pt-card .pt-card__langs{top:10px;right:10px}
  .pt-card__langs :is(.jet-listing-dynamic-terms,.elementor-widget-container){display:flex;flex-direction:column;align-items:flex-end;gap:4px}
.pt-card__langs [class*=delimiter]{display:none}
.pt-card .pt-card__langs :is(span,a):not([class*=delimiter]){padding:6px 9px}
  .pt-tag{font-size:13px;padding:6px 9px}
  .pt-vid{font-size:12px;padding:5px 8px 5px 6px}
  .pt-vid svg{width:12px;height:12px}
  .pt-grid{gap:4px}
  .pt-grid :is(.jet-listing-grid__items,.pt-grid__items){grid-template-columns:repeat(4,minmax(0,1fr))!important;gap:4px!important}
  .pt-slider :is(.jet-listing-grid__items,.pt-slider__track){gap:4px}
  .pt-slider :is(.jet-listing-grid__items,.pt-slider__track)>*{width:calc((100% - 16px)/5.2)!important}
  .pt-slider .pt-slider__btn{width:40px;height:40px}
  .pt-slider .pt-slider__prev{left:-8px}
  .pt-slider .pt-slider__next{right:-8px}
  .pt-clinics{grid-template-columns:repeat(3,1fr)}
  .pt-clinic__acts{gap:8px}
  .pt-clinic__acts .pt-btn a.elementor-button{padding:9px 11px;font-size:13px}
  .pt-clinic__acts .pt-btn svg{width:18px;height:18px}
  .pt-foot{grid-template-columns:200px 1fr 1.6fr;gap:28px;padding:30px 28px 18px}
  .pt-stickybar{display:none}
  body:has(.pt-stickybar){padding-bottom:0}
  body:has(.pt-stickybar) .pt-fabs{bottom:20px}
  .pt-crumb{padding:6px 28px 0;font-size:12px}
  .pt-hero{aspect-ratio:auto;min-height:640px}
  .pt-hero:before{background:linear-gradient(to top,rgba(0,0,0,.95) 0%,rgba(0,0,0,.75) 30%,rgba(0,0,0,.25) 60%,rgba(0,0,0,.1) 100%)}
  .pt-hero .pt-hero__trio{display:grid;grid-template-columns:1fr 1fr 1fr;gap:1px}
  .pt-hero .pt-hero__trio>:not(:nth-child(2)){display:block}
  .pt-hero .pt-hero__trio img{object-position:top}
  .pt-hero .pt-hero__in{padding:40px 28px 34px;gap:14px;align-items:center;text-align:center;margin:0 auto}
  .pt-hero .pt-tname{font-size:64px;gap:12px;justify-content:center}
  .pt-today{font-size:15px;justify-content:center}
  .pt-today__addr{flex-basis:auto}
  .pt-attrs{display:flex;flex-flow:row wrap;justify-content:center;width:auto}
  .pt-attr{font-size:13px;padding:6px 11px}
  .pt-mod{display:flex}
  .pt-hero .pt-acts{display:flex;justify-content:center}
  .pt-sec-h{font-size:22px}
  .pt-qa{grid-template-columns:1fr 1fr;gap:4px 32px}
  .pt-qa .pt-qa__a{font-size:15px}
  .pt-gallery :is(.jet-engine-gallery-grid,.pt-gallery__items){grid-template-columns:1fr 1fr}
  .pt-gallery .pt-gallery__land{grid-column:span 2}
  .pt-shorts{display:grid;grid-template-columns:repeat(3,1fr);overflow:visible}
  .pt-short:not(.is-playing):after{width:76px;height:76px;margin:-38px 0 0 -38px}
  .pt-shorts:has(>.pt-short+.pt-short){margin-bottom:0}
  .pt-dots{display:none}
  .pt-pgrid2{grid-template-columns:1fr 1fr}
  .pt-pgrid4{grid-template-columns:repeat(4,1fr);gap:14px}
  .pt-pcard--photo{min-height:290px}
  .pt-pcard__d{font-size:13px}
  .pt-tier__pr{font-size:21px}
  .pt-tier__pr .pt-cur{font-size:13px}
  .pt-pcard--top{padding:24px;gap:12px;min-height:300px}
  .pt-pcard--top .pt-pcard__in{gap:12px}
  .pt-pcard--top .pt-kick{margin-bottom:auto}
  .pt-pcard--top .pt-pcard__title{font-size:34px}
  .pt-from__big{font-size:46px}
  .pt-pill{font-size:15px;padding:7px 12px}
  .pt-pcard--duo{padding:18px}
  .pt-pcard__big{font-size:24px}
  .pt-pcard__d{font-size:13px}
  .pt-xchip{min-width:150px;flex:0 1 auto}
  .pt-xchip__p{font-size:17px}
}
/* Very wide screens (owner, 2026-10-10): 6 cards per row, never an odd count (2 phone / 4 / 6); at 1800px a card is about 297px, like a laptop's 4-column card. prisma.js initFill reads the columns from the grid, so the filler tiles close the last row. */
@media (min-width:1800px){.pt-grid :is(.jet-listing-grid__items,.pt-grid__items){grid-template-columns:repeat(6,minmax(0,1fr))!important}}
@media (prefers-reduced-motion:reduce){
  .pt-float,.pt-tg{animation:none!important} /* chip wave kept on purpose (owner, 2026-09-25): 2 short colour pulses, no movement */
  .pt-slider :is(.jet-listing-grid__items,.pt-slider__track),.pt-shorts{scroll-behavior:auto}
  .pt-slider .pt-slider__btn{transition:none}
}
/* Accessibility on older page content (owner-kept sections): links inside text are underlined */
.elementor-widget-text-editor :is(p,li) a{text-decoration:underline;text-underline-offset:2px}
/* Header menu layout shift (desktop CLS 0.351, same on production): before Roboto loads, the menu wrapped
   "SAIBA MAIS" to a 2nd line, then snapped back. Keep one line, and hide Seraphinite's temporary 2nd arrow copy. */
@media (min-width:1025px){.elementor-location-header .elementor-nav-menu--main>.elementor-nav-menu{flex-wrap:nowrap}}
.elementor-nav-menu .sub-arrow.js-lzl-ing{display:none}
/* Header (and its dropdowns) above the page: the sticky filter-chip bar (z-index 5) and the Centro promo banner (z-index 100) covered the last dropdown items. */
.elementor-location-header{position:relative;z-index:200}
/* Header painted half-parsed (2026-10-15): Chromium may paint the header before all its columns exist (a pause in the network, or the parser yielding
   mid-header on a cached load); the button, centred in the column that takes what is left, and the Instagram square then slide left (or the row
   settles 6px) when the menu arrives. The header stays invisible until the element after it in <body> exists (the page content, or the 410 page's
   <style>; wp_footer always prints after it, so it never stays hidden). No :has() support = rule dropped = header visible. Test: test_partial_paint.py. */
body>.elementor-location-header:not(:has(+*)){visibility:hidden}
/* Menu button with Elementor's icon font (prismaterapias.com prints <i class="eicon-menu-bar">; the other sites inline an SVG): before the eicons
   font arrives the fallback glyph is narrower, so the button grew 27.8 -> 32.6px at 340px about 300 ms in (every load). The icon box is 1em
   either way. */
.elementor-location-header .elementor-menu-toggle>i{width:1em;height:1em}
/* Header icon widgets: no text line box under the icon, so it centres exactly with the menu button (Elementor has no setting for it). */
.elementor-location-header .elementor-widget-icon .elementor-icon-wrapper{line-height:0}
/* Phone header button (header-mobile-2026.php): fills the space the logo leaves in its column (legacy sections have no grow setting). */
.elementor-location-header .pt-hdr-cta{flex:1 1 0;min-width:0}
/* The logo is no longer the column's last widget, so Elementor's 20px widget spacing would push it up. */
.elementor-location-header .elementor-widget-wrap:has(>.pt-hdr-cta)>.elementor-widget{margin-bottom:0}
/* The logo PNG has black margins that the negative margins crop; clip them at every width so they never cover
   the page title or the therapist-page breadcrumb (desktop: 25px of black square hung below the header). */
.elementor-location-header .elementor-widget-image{overflow:hidden}
/* Phone header: logo, button, Instagram and menu 10px apart (the section's 10px padding gives the same at the edges).
   Legacy columns have fixed % widths and no gap setting: the icon and menu columns shrink to their button. */
@media (max-width:767px){
  .elementor-location-header .elementor-container:has(.pt-hdr-cta){gap:var(--pt-hg)}
  .elementor-location-header .elementor-container:has(.pt-hdr-cta)>.elementor-column{width:auto;flex:none}
  .elementor-location-header .elementor-container:has(.pt-hdr-cta)>.elementor-column:has(.pt-hdr-cta){flex:1 1 0;min-width:0}
}
/* Phone header fits on one row down to 280px, nothing cut (owner, 2026-10-14). One length, --pt-x, runs 0 -> 80px between 280 and 360px
   of screen; every size below is MIN + --pt-x * K (K = (MAX - MIN) / 80), so from 360px up each box is exactly what the Elementor settings
   give (logo 83, Instagram 35, menu 34.5, gap 10, button text 12px) and below it everything shrinks together, smoothly. Below 280px the label
   may wrap to two lines rather than be cut. The widgets carry stable Elementor classes only (the ids differ per site). */
@media (max-width:767px){
  .elementor-location-header{--pt-x:clamp(0px,100vw - 280px,80px);--pt-hg:calc(5px + var(--pt-x) * .0625);--pt-l:calc(54px + var(--pt-x) * .3625);--pt-i:calc(27px + var(--pt-x) * .1);--pt-m:calc(27px + var(--pt-x) * .09375)}
  /* logo: width, image and the negative margins that crop the PNG's black borders keep their proportions (83 : 87 : -21 / -22 / -6) */
  .elementor-location-header .elementor-element.elementor-widget-image.elementor-widget{width:var(--pt-l);max-width:var(--pt-l);--container-widget-width:var(--pt-l)}
  .elementor-location-header .elementor-element.elementor-widget-image.elementor-widget>.elementor-widget-container{margin:calc(var(--pt-l) * -.253) 0 calc(var(--pt-l) * -.265) calc(var(--pt-l) * -.0723)}
  .elementor-location-header .elementor-element.elementor-widget-image.elementor-widget img{width:calc(var(--pt-l) * 1.0482)}
  /* Instagram box (23px glyph + 6px padding at full size) and menu box (23px glyph + 5.75px padding) */
  .elementor-location-header .elementor-element.elementor-widget-icon.elementor-view-stacked .elementor-icon{font-size:calc(var(--pt-i) * .6571);padding:calc(var(--pt-i) * .1714)}
  .elementor-location-header .elementor-element.elementor-widget-icon.elementor-view-stacked .elementor-icon svg{width:calc(var(--pt-i) * .6571);height:calc(var(--pt-i) * .6571)}
  .elementor-location-header .elementor-element.elementor-widget-nav-menu.elementor-widget{--nav-menu-icon-size:calc(var(--pt-m) * .6667)}
  /* the button keeps its 36px height; the label (and the icon, 1em), the gap and the side padding shrink */
  .elementor-location-header .elementor-element.elementor-widget.pt-hdr-cta .elementor-button.elementor-button-link{font-size:calc(9.5px + var(--pt-x) * .03125);padding-inline:calc(4px + var(--pt-x) * .05)}
  .elementor-location-header .elementor-element.elementor-widget.pt-hdr-cta .elementor-button.elementor-button-link .elementor-button-content-wrapper{gap:calc(3px + var(--pt-x) * .0375)}
  /* Tap areas (owner, 2026-10-14): the Instagram and menu squares shrink to 27px at 280px; an invisible area makes each 44px tall and reaches
     sideways to the middle of the gaps (the menu also to the screen edge, the header's 10px side padding), never over a neighbour. */
  .elementor-location-header .elementor-element.elementor-widget-icon.elementor-view-stacked .elementor-icon,.elementor-location-header .elementor-element.elementor-widget-nav-menu .elementor-menu-toggle{position:relative}
  .elementor-location-header .elementor-element.elementor-widget-icon.elementor-view-stacked .elementor-icon::after,.elementor-location-header .elementor-element.elementor-widget-nav-menu .elementor-menu-toggle::after{content:"";position:absolute;top:min(0px,(100% - 44px) / 2);bottom:min(0px,(100% - 44px) / 2);left:calc(var(--pt-hg) / -2);right:calc(var(--pt-hg) / -2)}
  .elementor-location-header .elementor-element.elementor-widget-nav-menu .elementor-menu-toggle::after{right:-10px}
}
/* Header text in the same font stack (Roboto, then the metric-matched fallback) as the rest of the page: Elementor writes "Roboto", Sans-serif on these. */
body .elementor-location-header .elementor-element.elementor-widget .elementor-button.elementor-button-link,body .elementor-location-header .elementor-element.elementor-widget-nav-menu .elementor-nav-menu .elementor-item{font-family:var(--ptf)}
/* Last resort below 280px (a foldable's split screen): the label wraps to two lines, never cut. */
@media (max-width:279px){
  .elementor-location-header .elementor-element.elementor-widget.pt-hdr-cta .elementor-button.elementor-button-link{white-space:normal;height:auto;min-height:36px}
}

/* Location pages, clinic block / reviews / FAQ / SEO text (setup/local-2026.php, mockups/local-middle.html).
   Elementor settings carry colours, type, borders and widths; these rules cover what it has no control for. */
.pt-loc__gal .gallery{display:grid!important;grid-template-columns:repeat(4,1fr);gap:1px;margin:0!important}
.pt-loc__gal .gallery-columns-6{grid-template-columns:repeat(6,1fr)}
.pt-loc__gal .gallery-item{max-width:none!important;width:auto!important;margin:0!important;padding:0!important}
.pt-loc__gal .gallery-icon a{display:block;aspect-ratio:4/3;overflow:hidden;background:#1a1a1a}
.pt-loc__gal .gallery-icon img{display:block;width:100%;height:100%;object-fit:cover;border:0!important;border-radius:0}
.pt-loc__gal .gallery br{display:none}
.pt-loc__col>.elementor-widget-wrap{align-content:flex-start}
.pt-loc__act{flex:1 1 0;min-width:max-content}
.pt-loc__act+.pt-loc__act{margin-inline-start:6px}
/* Clinics page (setup/clinicas-2026.php): VER MAIS on its own row under the three buttons; the footer's clinics
   section is hidden there because the page already shows every clinic. */
.pt-loc__act.pt-loc__more{flex:1 1 100%;margin:6px 0 0!important}
@media (min-width:768px){.pt-pagehead.pt-clinicas{padding-bottom:0}.pt-pagehead.pt-clinicas .pt-intro p:last-child{margin-bottom:0}}
body:has(.pt-clinicas) .elementor-location-footer>.pt-section:has(.pt-clinics){display:none}
.pt-loc__act .elementor-button{height:100%;box-sizing:border-box}
.pt-loc__map iframe{display:block;width:100%;height:320px;border:0;border-radius:12px;background:#1b1d1f}
.pt-faq .elementor-widget-accordion .elementor-accordion .elementor-accordion-item{border-width:0 0 1px!important}
.pt-faq .elementor-widget-accordion .elementor-accordion .elementor-tab-content{border-top:0!important}
@media (max-width:1024px){
  .pt-loc__gal .gallery-columns-6{grid-template-columns:repeat(4,1fr)}
  .pt-loc__map iframe{height:260px}
}
@media (max-width:767px){
  .pt-loc__gal .gallery,.pt-loc__gal .gallery-columns-6{grid-template-columns:1fr 1fr}
  .pt-loc__gal .elementor-image-gallery{margin-inline:-10px}
  .pt-revs__row>.elementor-container{flex-wrap:nowrap;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none}
  .pt-revs__row>.elementor-container::-webkit-scrollbar{display:none}
  .pt-revs__card{flex:none;scroll-snap-align:start}
}
@media (min-width:1025px){
  .pt-seo .elementor-column>.elementor-widget-wrap{display:block;column-count:2;column-gap:48px}
  .pt-seo .elementor-widget-wrap>.elementor-widget-heading{break-after:avoid;break-inside:avoid}
  .pt-seo .elementor-widget-wrap>.elementor-widget-text-editor{break-inside:avoid}
}

/* Tablet: its header ends 10px under the button, so the title gets 10px more to make 20px like the other gaps. */
@media (min-width:768px) and (max-width:1024px){.pt-pagehead{padding-top:10px}}

/* Promo banner (setup/promo-2026.php, Centro page): brand card with a peach "NN% OFF" badge. */
.pt-promo{display:flex;align-items:center;gap:12px;margin:0;padding:12px 14px;border-radius:12px;border:1px solid rgba(242,179,153,.45);background:linear-gradient(135deg,rgba(242,179,153,.18),rgba(242,179,153,.04) 60%),#0d0d0d;color:#f3ede9;font-family:var(--ptf);text-align:left}
.pt-promo__off{flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;width:64px;height:64px;border-radius:10px;background:var(--pt-peach);color:#000;font:800 22px/1 var(--ptf);letter-spacing:-.02em}
.pt-promo__off small{font:700 11px/1 var(--ptf);letter-spacing:.12em;margin-top:3px}
.pt-promo__txt{display:flex;flex-direction:column;gap:4px;min-width:0}
.pt-promo__h{font:600 14px/1.3 var(--ptf);color:#fff}
.pt-promo__p{font:400 13px/1.4 var(--ptf);color:var(--pt-soft)}
.pt-promo__p s{color:var(--pt-muted)}
.pt-promo__p b{color:var(--pt-peach);font-weight:700;font-size:15px}
@media (min-width:768px){
  .pt-promo{max-width:760px;margin:0 auto;padding:14px 18px;gap:16px}
  .pt-promo__off{width:76px;height:76px;font-size:26px}
  .pt-promo__h{font-size:16px}
  .pt-promo__p{font-size:15px}
  .pt-promo__p b{font-size:17px}
}
/* Therapist cards (owner trial 2026-09-24, mockup cards-legibilidade.html option B): shadow behind name and location, darker pills. */
.pt-card :is(.pt-card__name,.pt-card__loc){text-shadow:0 1px 2px rgba(0,0,0,.95),0 0 12px rgba(0,0,0,.85)}
.pt-card .pt-card__langs :is(span,a):not([class*=delimiter]),.pt-card .pt-vid{background:rgba(0,0,0,.75)}
/* Nova / Destaque / Pro tags: shadow on the chip, never on the letters (the hero name's text shadow was inheriting into the tag). */
:is(.pt-card,.pt-hero) .pt-tag{text-shadow:none;box-shadow:0 1px 4px rgba(0,0,0,.6)}
/* Therapist page on phones: 1px between the hero photo and the video row. */
@media (max-width:767px){.pt-hero+.pt-shorts-section{padding-top:1px}}
/* Preços "Mais procurada" card: duration pills on one line at 360px; "1H" label lines up with the pill text (border + padding). */
.pt-pcard--top .pt-from{padding-left:9px}
.pt-pcard--top .pt-pills{gap:5px}
.pt-pcard--top .pt-pill{font-size:13px;padding:6px 8px}
@media (min-width:768px){.pt-pcard--top .pt-from{padding-left:13px}.pt-pcard--top .pt-pill{font-size:15px;padding:7px 12px}}
/* Fewer than 3 Shorts on tablet/desktop: keep the 1/3 width and centre them instead of leaving an empty column. */
@media (min-width:768px){
  .pt-shorts:has(>.pt-short:first-child:nth-last-child(2)){grid-template-columns:repeat(2,calc((100% - 2px)/3));justify-content:center}
  .pt-shorts:has(>.pt-short:only-child){grid-template-columns:calc((100% - 2px)/3);justify-content:center}
}
/* One Prisma video before the footer (home + location pages, setup/prisma-video-2026.php): centred, not full-width tall on phones. */
/* Elementor containers wrap by default; a wrapping column under-measures the 9:16 box and the footer overlapped it. */
.e-con.pt-pvideo{--flex-wrap:nowrap}
.pt-pvideo .pt-sec-h{text-align:center}
.pt-pvideo .pt-shorts{max-width:260px;margin-inline:auto}
@media (min-width:768px){.pt-pvideo .pt-shorts:has(>.pt-short){max-width:320px;grid-template-columns:1fr}}
/* Grid filler tiles (prisma.js section 7, mockups/blank-spaces-v2.html): card-sized links that close a half-empty last row. */
.pt-fill{container-type:inline-size;position:relative;border-radius:8px;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center;gap:8px;padding:18px 14px;box-sizing:border-box;aspect-ratio:683/1024;min-width:0;border:1px solid #2b2b2b;background:#0d0d0d;color:#fff;text-decoration:none;font-family:var(--ptf)}
/* body + a: beats the Elementor kit's link colour (pink) on the tile and its text. */
body a.pt-fill,body a.pt-fill:hover,body a.pt-fill:focus{color:#fff}
.pt-fill:focus-visible{outline:2px solid #fff;outline-offset:-2px}
.pt-fill__ico{width:clamp(34px,21cqi,62px);height:clamp(34px,21cqi,62px);display:grid;place-items:center;border-radius:50%;flex:none}
.pt-fill__ico svg{width:58%;height:58%;fill:currentColor}
.pt-fill__k{font:600 clamp(9px,4.6cqi,13px)/1.2 var(--ptf);text-transform:uppercase;letter-spacing:.12em;color:var(--pt-muted)}
.pt-fill__h{font:700 clamp(15px,8.6cqi,26px)/1.08 var(--ptf);text-transform:uppercase;text-wrap:balance}
.pt-fill__p{font:400 clamp(11px,5.4cqi,15px)/1.35 var(--ptf);color:#cfc6c0;text-wrap:balance}
.pt-fill__go{margin-top:4px;display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:clamp(8px,4.2cqi,12px) clamp(12px,6.5cqi,20px);border-radius:999px;font:700 clamp(10px,5cqi,14px)/1 var(--ptf);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap;max-width:100%;box-sizing:border-box}
.pt-fill__go svg{width:1.2em;height:1.2em;fill:currentColor;flex:none}
.pt-fill--ig .pt-fill__ico svg,.pt-fill--ig .pt-fill__go svg{fill:none}
.pt-fill--wa{background:radial-gradient(120% 70% at 50% 0%,rgba(37,211,102,.22),rgba(37,211,102,0) 70%),#0b0f0c;border-color:rgba(37,211,102,.35)}
.pt-fill--wa .pt-fill__ico{background:#25D366;color:#062b12}
.pt-fill--wa .pt-fill__go{background:linear-gradient(#99f2b3,#12682b);color:#fff}
.pt-fill--tg{background:radial-gradient(120% 70% at 50% 0%,rgba(34,158,217,.24),rgba(34,158,217,0) 70%),#0a0d10;border-color:rgba(34,158,217,.4)}
.pt-fill--tg .pt-fill__ico,.pt-fill--tg .pt-fill__go{background:#229ED9;color:#fff}
.pt-fill--ig{background:radial-gradient(120% 70% at 50% 0%,rgba(242,179,153,.2),rgba(242,179,153,0) 70%),#0f0c0b;border-color:rgba(242,179,153,.35)}
.pt-fill--ig .pt-fill__ico{background:var(--pt-peach);color:#111}
.pt-fill--ig .pt-fill__h{color:var(--pt-peach)}
.pt-fill--ig .pt-fill__go{border:1.5px solid var(--pt-peach);color:var(--pt-peach)}
.pt-fill--pr .pt-fill__ico{border:2px solid var(--pt-peach);color:var(--pt-peach);box-sizing:border-box}
.pt-fill--pr .pt-fill__go{border:1.5px solid rgba(255,255,255,.5);color:#fff}
/* Panel beside the "Conheça a Prisma" video ([prisma_video_panel], setup/video-panel-2026.php). Below 1025px only the buttons show, under the video. */
.pt-vpanel{font-family:var(--ptf);color:#fff}
body .pt-vpanel a.pt-cta,body .pt-vpanel a.pt-cta:hover{color:#fff}
body .pt-vpanel a.pt-vpanel__more,body .pt-vpanel a.pt-vpanel__more:hover{color:var(--pt-peach)}
body .pt-vpanel .pt-vpanel__list a,body .pt-vpanel .pt-vpanel__list a:hover{color:#fff}
@media (max-width:1024px){.pt-vpanel{margin-top:14px}}
.pt-vpanel__k,.pt-vpanel__lead,.pt-vpanel__svc,.pt-vpanel__list{display:none}
body .pt-vpanel .pt-vpanel__svc a,body .pt-vpanel .pt-vpanel__svc a:hover{color:var(--pt-peach)}
.pt-vpanel__acts{display:flex;flex-direction:column;align-items:center;gap:2px}
.pt-vpanel__more{display:inline-flex;align-items:center;color:var(--pt-peach);font:600 14px/1 var(--ptf);text-transform:uppercase;letter-spacing:.03em;padding:12px 6px;text-decoration:none}
@media (min-width:1025px){
  .e-con.pt-pvideo:has(.pt-vpanel){display:grid!important;grid-template-columns:320px minmax(0,520px);grid-template-rows:1fr auto auto 1fr;grid-template-areas:"v ." "v h" "v p" "v .";justify-content:center;column-gap:48px;row-gap:0}
  .pt-pvideo:has(.pt-vpanel)>.elementor-element{width:auto;max-width:none;margin:0}
  .pt-pvideo:has(.pt-vpanel)>.elementor-element:has(.pt-shorts){grid-area:v}
  .pt-pvideo:has(.pt-vpanel)>.pt-sec-h{grid-area:h;text-align:left}
  .pt-pvideo:has(.pt-vpanel)>.elementor-element:has(.pt-vpanel){grid-area:p}
  .pt-pvideo:has(.pt-vpanel) .pt-sec-h .elementor-heading-title{font-size:30px}
  .pt-vpanel__k{display:block;margin:10px 0 14px;font:600 12px/1 var(--ptf);text-transform:uppercase;letter-spacing:.14em;color:var(--pt-muted)}
  .pt-vpanel__lead{display:block;margin:0 0 22px;font:400 17px/1.5 var(--ptf);color:var(--pt-soft)}
  .pt-vpanel__lead:has(+.pt-vpanel__svc){margin-bottom:10px}
  .pt-vpanel__svc{display:block;margin:0 0 22px;font:400 15px/1.5 var(--ptf);color:var(--pt-soft)}
  .pt-vpanel__svc a{text-decoration:underline;text-underline-offset:3px}
  .pt-vpanel__list{display:grid;gap:10px;list-style:none;margin:0 0 24px;padding:0}
  .pt-vpanel__list li{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start;padding:12px 14px;border:1px solid var(--pt-line);border-radius:10px;background:#0b0b0b}
  .pt-vpanel__list a{display:grid;grid-template-columns:20px 1fr;column-gap:10px;color:#fff;text-decoration:none}
  .pt-vpanel__list a:before{content:"";grid-row:span 2;width:20px;height:20px;margin-top:1px;background:var(--pt-peach);-webkit-mask:var(--pt-pin) center/contain no-repeat;mask:var(--pt-pin) center/contain no-repeat}
  .pt-vpanel__list b{font:600 16px/1.25 var(--ptf)}
  .pt-vpanel__addr{font:400 13px/1.35 var(--ptf);color:var(--pt-muted);margin-top:2px}
  .pt-vpanel .pt-vpanel__st{margin:3px 0 0;font-size:12px;letter-spacing:.02em;text-transform:none;white-space:nowrap;min-height:12px}
  .pt-vpanel__st:empty:before,.pt-vpanel__st.is-closed:before{visibility:hidden}
  .pt-vpanel__st.is-closed{color:var(--pt-muted)}
  .pt-vpanel__st.is-closed:before{width:0;margin-right:-6px}
  .pt-vpanel__acts{flex-direction:row;flex-wrap:wrap;gap:10px}
}

/* Hover-to-play cards (extra-hover-play.php, prisma.js initHoverPlay; body.pt-hoverplay pages only). The clip sits over
   the photo (under tags and scrim) and fades in once playing; "Ver perfil" rises under the location. */
.pt-card .pt-card__clip{position:absolute;inset:0;z-index:0;width:100%;height:100%;object-fit:cover;object-position:50% 20%;opacity:0;transition:opacity .3s;pointer-events:none}
.pt-card.is-on video.pt-card__clip.is-vis{opacity:1}
.pt-card video.pt-card__clip{transition:opacity .5s}
/* AI test page (/home-video-2/): clips of other shapes (YouTube) sit near the top like the cropped AI files.
   Influencers: YouTube / Instagram / TikTok logos as same-size tiles, no background, in a column under the tag, the
   tag-to-logo gap equal to the logo-to-logo gap (owner pick C2). Languages: flags alone, stacked top right (L3), as
   rounded squares the same size as the logos (T5: real flags; Spain with a light emoji-style coat of arms); the
   filter's language chips use the same square flags at the logo-chip size.
   Filter chip: the three logos instead of "Vídeo" (F1). Every logo and flag gets the same soft shadow. */
.pt-hoverplay--ai .pt-card video.pt-card__clip{object-position:50% 15%}
.pt-hoverplay--ai .pt-card .pt-card__badges,.pt-soc{gap:5px}
.pt-soc{display:flex;flex-direction:column}
.pt-soc i,.pt-chip--soc i{display:block;flex:none;width:21px;height:21px;background-position:center;background-size:100% 100%;background-repeat:no-repeat;filter:drop-shadow(0 1px 2px rgba(0,0,0,.7)) drop-shadow(0 0 6px rgba(0,0,0,.35))}
.pt-soc__yt{background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Crect%20width='24'%20height='24'%20rx='6'%20fill='%23FF0033'/%3E%3Cpath%20d='M9.4%207.3v9.4l7.9-4.7z'%20fill='%23fff'/%3E%3C/svg%3E")}
.pt-soc__ig{background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cdefs%3E%3CradialGradient%20id='g'%20cx='30%25'%20cy='107%25'%20r='150%25'%3E%3Cstop%20offset='0'%20stop-color='%23fdf497'/%3E%3Cstop%20offset='.05'%20stop-color='%23fdf497'/%3E%3Cstop%20offset='.45'%20stop-color='%23fd5949'/%3E%3Cstop%20offset='.6'%20stop-color='%23d6249f'/%3E%3Cstop%20offset='.9'%20stop-color='%23285AEB'/%3E%3C/radialGradient%3E%3C/defs%3E%3Crect%20width='24'%20height='24'%20rx='6'%20fill='url(%23g)'/%3E%3Crect%20x='5'%20y='5'%20width='14'%20height='14'%20rx='4.2'%20fill='none'%20stroke='%23fff'%20stroke-width='1.9'/%3E%3Ccircle%20cx='12'%20cy='12'%20r='3.3'%20fill='none'%20stroke='%23fff'%20stroke-width='1.9'/%3E%3Ccircle%20cx='16.3'%20cy='7.7'%20r='1.05'%20fill='%23fff'/%3E%3C/svg%3E")}
.pt-soc__tt{background-image:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Crect%20width='24'%20height='24'%20rx='6'%20fill='%23000'/%3E%3Crect%20x='.5'%20y='.5'%20width='23'%20height='23'%20rx='5.5'%20fill='none'%20stroke='%23fff'%20stroke-opacity='.3'/%3E%3Cg%20transform='translate(5%204.6)%20scale(.58)'%3E%3Cpath%20d='M12.525.02c1.31-.02%202.61-.01%203.91-.02.08%201.53.63%203.09%201.75%204.17%201.12%201.11%202.7%201.62%204.24%201.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01%202.92.01%205.84-.02%208.75-.08%201.4-.54%202.79-1.35%203.94-1.31%201.92-3.58%203.17-5.91%203.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9%201.12-3.72%202.58-4.96%201.66-1.44%203.98-2.13%206.15-1.72.02%201.48-.04%202.96-.04%204.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11%201.04-1.36%201.75-.21.51-.15%201.07-.14%201.61.24%201.64%201.82%203.02%203.5%202.87%201.12-.01%202.19-.66%202.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'%20fill='%2325F4EE'%20transform='translate(-1.1%20-1.1)'/%3E%3Cpath%20d='M12.525.02c1.31-.02%202.61-.01%203.91-.02.08%201.53.63%203.09%201.75%204.17%201.12%201.11%202.7%201.62%204.24%201.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01%202.92.01%205.84-.02%208.75-.08%201.4-.54%202.79-1.35%203.94-1.31%201.92-3.58%203.17-5.91%203.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9%201.12-3.72%202.58-4.96%201.66-1.44%203.98-2.13%206.15-1.72.02%201.48-.04%202.96-.04%204.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11%201.04-1.36%201.75-.21.51-.15%201.07-.14%201.61.24%201.64%201.82%203.02%203.5%202.87%201.12-.01%202.19-.66%202.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'%20fill='%23FE2C55'%20transform='translate(1.1%201.1)'/%3E%3Cpath%20d='M12.525.02c1.31-.02%202.61-.01%203.91-.02.08%201.53.63%203.09%201.75%204.17%201.12%201.11%202.7%201.62%204.24%201.79v4.03c-1.44-.05-2.89-.35-4.2-.97-.57-.26-1.1-.59-1.62-.93-.01%202.92.01%205.84-.02%208.75-.08%201.4-.54%202.79-1.35%203.94-1.31%201.92-3.58%203.17-5.91%203.21-1.43.08-2.86-.31-4.08-1.03-2.02-1.19-3.44-3.37-3.65-5.71-.02-.5-.03-1-.01-1.49.18-1.9%201.12-3.72%202.58-4.96%201.66-1.44%203.98-2.13%206.15-1.72.02%201.48-.04%202.96-.04%204.44-.99-.32-2.15-.23-3.02.37-.63.41-1.11%201.04-1.36%201.75-.21.51-.15%201.07-.14%201.61.24%201.64%201.82%203.02%203.5%202.87%201.12-.01%202.19-.66%202.77-1.61.19-.33.4-.67.41-1.06.1-1.79.06-3.57.07-5.36.01-4.03-.01-8.05.02-12.07z'%20fill='%23fff'/%3E%3C/g%3E%3C/svg%3E")}
.pt-card .pt-card__langs--flag{gap:5px}
.pt-card .pt-card__langs--flag i{display:block;width:21px;height:21px;border-radius:25%;background:var(--pt-flag) center/cover no-repeat;box-shadow:0 0 0 1px rgba(0,0,0,.35),0 1px 2px rgba(0,0,0,.7),0 0 6px rgba(0,0,0,.35)}
.pt-card__langs--flag [data-idioma="en"],.pt-hoverplay--ai .pt-chips [data-idioma="en"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-us'%20viewBox='0%200%20512%20512'%3E%3Cpath%20fill='%23bd3d44'%20d='M0%200h512v512H0'/%3E%3Cpath%20stroke='%23fff'%20stroke-width='40'%20d='M0%2058h512M0%20137h512M0%20216h512M0%20295h512M0%20374h512M0%20453h512'/%3E%3Cpath%20fill='%23192f5d'%20d='M0%200h390v275H0z'/%3E%3Cmarker%20id='us-a'%20markerHeight='30'%20markerWidth='30'%3E%3Cpath%20fill='%23fff'%20d='m15%200%209.3%2028.6L0%2011h30L5.7%2028.6'/%3E%3C/marker%3E%3Cpath%20fill='none'%20marker-mid='url(%23us-a)'%20d='m0%200%2018%2011h65%2065%2065%2065%2066L51%2039h65%2065%2065%2065L18%2066h65%2065%2065%2065%2066L51%2094h65%2065%2065%2065L18%20121h65%2065%2065%2065%2066L51%20149h65%2065%2065%2065L18%20177h65%2065%2065%2065%2066L51%20205h65%2065%2065%2065L18%20232h65%2065%2065%2065%2066z'/%3E%3C/svg%3E")}
.pt-card__langs--flag [data-idioma="es"],.pt-hoverplay--ai .pt-chips [data-idioma="es"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='%23C60A1D'%20d='M0%200h24v24H0z'/%3E%3Cpath%20fill='%23FFC400'%20d='M0%206h24v12H0z'/%3E%3Cg%20transform='scale(.667)'%3E%3Cpath%20fill='%23EA596E'%20d='M9%2017v3c0%201.657%201.343%203%203%203s3-1.343%203-3v-3H9z'/%3E%3Cpath%20fill='%23F4A2B2'%20d='M12%2016h3v3h-3z'/%3E%3Cpath%20fill='%23DD2E44'%20d='M9%2016h3v3H9z'/%3E%3Cellipse%20fill='%23EA596E'%20cx='12'%20cy='14.5'%20rx='3'%20ry='1.5'/%3E%3Cellipse%20fill='%23FFAC33'%20cx='12'%20cy='13.75'%20rx='3'%20ry='.75'/%3E%3Cpath%20fill='%2399AAB5'%20d='M7%2016h1v7H7zm9%200h1v7h-1z'/%3E%3Cpath%20fill='%2366757F'%20d='M6%2022h3v1H6zm9%200h3v1h-3zm-8-7h1v1H7zm9%200h1v1h-1z'/%3E%3C/g%3E%3C/svg%3E")}
.pt-card__langs--flag [data-idioma="it"],.pt-hoverplay--ai .pt-chips [data-idioma="it"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-it'%20viewBox='0%200%20512%20512'%3E%3Cg%20fill-rule='evenodd'%20stroke-width='1pt'%3E%3Cpath%20fill='%23fff'%20d='M0%200h512v512H0z'/%3E%3Cpath%20fill='%23009246'%20d='M0%200h170.7v512H0z'/%3E%3Cpath%20fill='%23ce2b37'%20d='M341.3%200H512v512H341.3z'/%3E%3C/g%3E%3C/svg%3E")}
.pt-card__langs--flag [data-idioma="ja"],.pt-hoverplay--ai .pt-chips [data-idioma="ja"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-jp'%20viewBox='0%200%20512%20512'%3E%3Cdefs%3E%3CclipPath%20id='jp-a'%3E%3Cpath%20fill-opacity='.7'%20d='M177.2%200h708.6v708.7H177.2z'/%3E%3C/clipPath%3E%3C/defs%3E%3Cg%20fill-rule='evenodd'%20stroke-width='1pt'%20clip-path='url(%23jp-a)'%20transform='translate(-128)scale(.72249)'%3E%3Cpath%20fill='%23fff'%20d='M0%200h1063v708.7H0z'/%3E%3Ccircle%20cx='523.1'%20cy='344.1'%20r='194.9'%20fill='%23bc002d'%20transform='translate(-59.7%20-34.5)scale(1.1302)'/%3E%3C/g%3E%3C/svg%3E")}
.pt-card__langs--flag [data-idioma="fr"],.pt-hoverplay--ai .pt-chips [data-idioma="fr"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20id='flag-icons-fr'%20viewBox='0%200%20512%20512'%3E%3Cpath%20fill='%23fff'%20d='M0%200h512v512H0z'/%3E%3Cpath%20fill='%23000091'%20d='M0%200h170.7v512H0z'/%3E%3Cpath%20fill='%23e1000f'%20d='M341.3%200H512v512H341.3z'/%3E%3C/svg%3E")}
.pt-hoverplay--ai .pt-chips [data-idioma="pt"]{--pt-flag:url("data:image/svg+xml,%3Csvg%20xmlns='http://www.w3.org/2000/svg'%20viewBox='0%200%2024%2024'%3E%3Cpath%20fill='%23009C3B'%20d='M0%200h24v24H0z'/%3E%3Cpath%20fill='%23FFDF00'%20d='M12%203.2%2021.4%2012%2012%2020.8%202.6%2012z'/%3E%3Ccircle%20cx='12'%20cy='12'%20r='4.9'%20fill='%23002776'/%3E%3Cpath%20d='M7.3%2011.1q4.7-1.5%209.4%201.3'%20fill='none'%20stroke='%23fff'%20stroke-width='1.1'/%3E%3C/svg%3E")}
.pt-hoverplay--ai .pt-chips .pt-chip[data-idioma]:before,.pt-hoverplay--ai .pt-chips .pt-fl{width:15px;height:15px;border-radius:25%;box-shadow:0 0 0 1px rgba(0,0,0,.25);filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.6))}
.pt-hoverplay--ai .pt-chips .pt-pop .pt-fl{width:20px;height:20px}
.pt-chips .pt-chip--soc{gap:4px;padding-inline:8px}
.pt-chips .pt-chip--soc i{width:15px;height:15px;filter:drop-shadow(0 1px 1.5px rgba(0,0,0,.6))}
@media (min-width:768px){.pt-hoverplay--ai .pt-card .pt-card__badges,.pt-soc,.pt-card .pt-card__langs--flag{gap:6px}.pt-soc i{width:25px;height:25px}.pt-card .pt-card__langs--flag i{width:25px;height:25px}.pt-chips .pt-chip--soc{gap:5px;padding-inline:12px}.pt-chips .pt-chip--soc i,.pt-hoverplay--ai .pt-chips .pt-chip[data-idioma]:before,.pt-hoverplay--ai .pt-chips .pt-chip .pt-fl{width:17px;height:17px}}
.pt-card .pt-card__alb{transition:opacity .6s}
.pt-card.is-on .pt-card__alb.is-shown{opacity:1}
/* "Ver perfil" rises from below with the name and location gliding up. Transform + opacity only (the line's space is
   reserved from the first paint and the scrim content sits one line lower until the card is chosen): no layout or re-paint of the
   shadowed text per frame, so it stays smooth. --pt-mh = the line's height + gap (the space is reserved from the first paint, see below). */
.pt-card--clip{--pt-ease:cubic-bezier(.22,.61,.36,1);--pt-mh:calc(12px * 1.15 + 8px)}
.pt-card .pt-card__more{display:block;margin-top:8px;opacity:0;font:600 12px/1.15 var(--ptf);letter-spacing:.06em;text-transform:uppercase;color:var(--pt-peach);transition:opacity .3s ease}
.pt-card--clip .pt-card__scrim>*{transform:translateY(var(--pt-mh));transition:transform .45s var(--pt-ease)}
.pt-card--clip.is-act .pt-card__scrim>*{transform:none}
.pt-card.is-act .pt-card__more{opacity:1;transition-delay:.08s}
.pt-card .pt-card__bar{--pt-ease:cubic-bezier(.22,.61,.36,1);position:absolute;inset:auto 0 0 0;z-index:2;height:3px;background:rgba(255,255,255,.18);opacity:0;transform:translateY(100%);transition:opacity .3s,transform .45s var(--pt-ease);pointer-events:none}
.pt-card .pt-card__bar i{display:block;width:0;height:100%;background:var(--pt-peach)}
.pt-card.is-act .pt-card__bar{opacity:1;transform:none}
@media (min-width:768px){.pt-card .pt-card__more{font-size:14px;margin-top:10px}.pt-card--clip{--pt-mh:calc(14px * 1.15 + 10px)}}
/* No layout shift when prisma.js adds the line (owner, 2026-10-14; it ran about 6 s after load, Seraphinite delays it, and the scrim, anchored at
   the card's bottom, grew by exactly --pt-mh: 123 -> 149 px desktop, 92 -> 114 phone, a shift of every card). A grid card with a clip marker is
   laid out in that final state from the first paint: the scrim already has the extra bottom padding the line will fill and its content already
   sits one line lower (the same translate .pt-card--clip gives). When the script adds the line and .pt-card--clip, the padding goes and the line
   takes its place: same box, same picture. Not once the line exists: a clip that fails to load drops .pt-card--clip but keeps the line. A card the script leaves alone (an album that filters to nothing) gets .pt-card--plain and looks as before. */
.pt-grid .pt-card:has(.pt-clip):not(.pt-card--clip,.pt-card--plain,:has(.pt-card__more)){--pt-mh:calc(12px * 1.15 + 8px)}
.pt-grid .pt-card:has(.pt-clip):not(.pt-card--clip,.pt-card--plain,:has(.pt-card__more)) .pt-card__scrim{padding-bottom:calc(10px + var(--pt-mh))}
.pt-grid .pt-card:has(.pt-clip):not(.pt-card--clip,.pt-card--plain,:has(.pt-card__more)) .pt-card__scrim>*{transform:translateY(var(--pt-mh))}
@media (min-width:768px){
  .pt-grid .pt-card:has(.pt-clip):not(.pt-card--clip,.pt-card--plain,:has(.pt-card__more)){--pt-mh:calc(14px * 1.15 + 10px)}
  .pt-grid .pt-card:has(.pt-clip):not(.pt-card--clip,.pt-card--plain,:has(.pt-card__more)) .pt-card__scrim{padding-bottom:calc(14px + var(--pt-mh))}
}
/* Album cards: 3 story lines at the top while playing (no bottom bar); the tags and language pills step down under them. */
.pt-card--alb .pt-card__bar{display:none}
.pt-card .pt-card__segs{position:absolute;top:0;left:0;right:0;z-index:1;display:flex;gap:4px;padding:6px 6px 16px;background:linear-gradient(to bottom,rgba(0,0,0,.32),rgba(0,0,0,0));opacity:0;transition:opacity .25s;pointer-events:none}
.pt-card .pt-card__segs b{flex:1;height:4px;border-radius:2px;background:rgba(255,255,255,.45);overflow:hidden;box-shadow:0 0 3px rgba(0,0,0,.7)}
.pt-card .pt-card__segs i{display:block;width:0;height:100%;background:#fff}
.pt-card--alb.is-act .pt-card__segs{opacity:1}
.pt-card--alb :is(.pt-card__badges,.pt-card__langs){transition:top .25s}
.pt-card--alb.is-act :is(.pt-card__badges,.pt-card__langs){top:16px}
@media (min-width:768px){.pt-card .pt-card__segs{padding:8px 8px 18px}.pt-card--alb.is-act :is(.pt-card__badges,.pt-card__langs){top:20px}}
