.profile-page { width:var(--content-width); margin:0 auto; }
.profile-page h1,.profile-page h2,.profile-page p { margin-top:0; }
.profile-loading,.profile-error { display:grid; min-height:320px; place-items:center; align-content:center; gap:12px; padding:32px; border-radius:18px; background:var(--cream); text-align:center; }
.profile-loading span { width:38px; aspect-ratio:1; border:4px solid #d5d9dc; border-top-color:var(--red); border-radius:50%; animation:profile-spin .8s linear infinite; }
.profile-loading p { margin:0; color:#586773; }
@keyframes profile-spin { to { transform:rotate(1turn); } }
.profile-error h1 { margin-bottom:0; font:800 clamp(25px,4vw,38px)/1.1 Manrope,sans-serif; }
.profile-error p { margin:0; color:#586773; }
.profile-error a,.profile-back { display:inline-flex; align-items:center; min-height:42px; font-weight:800; text-transform:uppercase; }
.profile-back { margin:0 0 12px; font-size:clamp(16px,2vw,22px); }
.profile-back::before { content:'‹'; margin-right:7px; font-size:1.4em; line-height:0; }
.profile-banner { display:none; }
body[data-profile-type='establishment'] .profile-hero:has(.profile-banner.is-present) { grid-template-rows:auto auto; }
body[data-profile-type='establishment'] .profile-banner.is-present { display:block; grid-column:1/-1; height:clamp(170px,24vw,250px); background:#555f67 center/cover no-repeat; }
.profile-hero { display:grid; grid-template-columns:minmax(220px,34%) minmax(0,1fr); min-height:300px; overflow:hidden; border-radius:20px; background:var(--cream); box-shadow:0 14px 34px rgba(30,43,52,.16); }
.profile-cover { display:grid; min-height:300px; place-items:center; overflow:hidden; border-right:1px solid #dedede; background:#fff; color:#7a8389; font:800 72px/1 Manrope,sans-serif; }
.profile-cover img { width:100%; height:100%; object-fit:contain; }
.profile-identity { display:flex; min-width:0; flex-direction:column; justify-content:center; padding:clamp(24px,5vw,58px); }
.profile-kind { margin-bottom:8px; color:var(--red); font-size:11px; font-weight:800; letter-spacing:.13em; text-transform:uppercase; }
.profile-identity h1 { margin-bottom:10px; overflow-wrap:anywhere; font:800 clamp(30px,5vw,56px)/1 Manrope,sans-serif; letter-spacing:-.055em; }
.profile-headline { max-width:620px; margin-bottom:18px; color:#586773; font-size:clamp(15px,2vw,19px); line-height:1.5; }
.profile-tags { display:flex; flex-wrap:wrap; gap:7px; }
.profile-tags .directory-tag { display:inline-flex; padding:6px 11px; border-radius:8px; font-size:11px; font-weight:800; }
.profile-actions { display:flex; width:min(220px,100%); flex-direction:column; gap:9px; padding:18px 0 0; }
.profile-action { display:inline-flex; width:100%; min-height:44px; align-items:center; justify-content:center; padding:10px 16px; border:0; border-radius:11px; background:#18242d; color:#fff; font:inherit; font-size:13px; font-weight:800; line-height:1.2; cursor:pointer; transition:transform .18s ease,opacity .18s ease; }
.profile-whatsapp-icon,.profile-instagram-icon,.profile-location-icon { width:24px; height:24px; flex:0 0 24px; margin-right:9px; }
.profile-action--primary { background:var(--red); }
.profile-action--whatsapp { background:#168b4b; }
.profile-action--instagram { background:linear-gradient(110deg,#833ab4 0%,#c13584 34%,#e1306c 57%,#f77737 80%,#fcaf45 100%); }
.profile-action--location { background:#265f9e; box-shadow:0 8px 18px rgba(38,95,158,.22); }
.profile-action.is-disabled,.profile-action.is-disabled:hover { cursor:default; transform:none; }
.profile-action:hover { transform:translateY(-2px); }
.profile-details { display:grid; grid-template-columns:repeat(auto-fit,minmax(190px,1fr)); gap:12px; margin-top:18px; }
.profile-detail,.profile-section { padding:clamp(20px,3vw,34px); border-radius:16px; background:var(--cream); }
.profile-detail strong { display:block; margin-bottom:7px; color:#6a747b; font-size:10px; letter-spacing:.1em; text-transform:uppercase; }
.profile-detail span { display:block; white-space:pre-line; font-weight:700; line-height:1.45; }
.profile-section { margin-top:18px; }
.profile-section h2 { margin-bottom:18px; font:800 clamp(21px,3vw,29px)/1.15 Manrope,sans-serif; letter-spacing:-.035em; }
.profile-section > p { margin-bottom:0; color:#46545e; line-height:1.75; white-space:pre-line; }
.profile-service-list,.profile-orientation-list { display:grid; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px; margin:0; padding:0; list-style:none; }
.profile-service-list li,.profile-orientation-list li { position:relative; padding:15px 16px 15px 42px; border-radius:11px; background:#eceeef; font-weight:700; }
.profile-service-list li::before,.profile-orientation-list li::before { content:'✓'; position:absolute; left:16px; color:var(--red); font-weight:900; }
.profile-offerings { display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:12px; }
.profile-offering { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:6px 14px; padding:16px; border:1px solid #dedede; border-radius:12px; background:#fff; }
.profile-offering strong { overflow-wrap:anywhere; }
.profile-offering em { color:var(--red); font-style:normal; font-weight:800; }
.profile-offering p { grid-column:1/-1; margin:0; color:#66727a; font-size:13px; line-height:1.45; }
.profile-map-modal { position:fixed; inset:0; z-index:1100; display:grid; place-items:center; padding:clamp(12px,3vw,32px); background:rgba(8,15,20,.76); backdrop-filter:blur(3px); }
.profile-map-modal[hidden] { display:none; }
.profile-map-dialog { display:grid; grid-template-rows:auto minmax(0,1fr); width:min(100%,1000px); height:min(86dvh,720px); overflow:hidden; border:1px solid rgba(255,255,255,.28); border-radius:18px; background:#f4f5f5; box-shadow:0 24px 70px rgba(0,0,0,.42); }
.profile-map-header { position:relative; display:grid; min-height:74px; place-items:center; padding:13px 70px; background:#265f9e; color:#fff; text-align:center; }
.profile-map-header h2 { margin:0; color:#fff; font:800 clamp(21px,3vw,28px)/1.15 Manrope,sans-serif; }
.profile-map-close { position:absolute; top:50%; right:16px; display:grid; width:42px; aspect-ratio:1; place-items:center; padding:0; border:0; border-radius:50%; background:#18242d; color:#fff; font:300 30px/1 Arial,sans-serif; cursor:pointer; transform:translateY(-50%); }
.profile-map-close:hover { background:#ff3131; }
.profile-map-close:focus-visible { outline:3px solid #fff; outline-offset:3px; }
.profile-modal-map { min-height:0; background:#dce3e6; }
.profile-modal-map .leaflet-grab { cursor:grab; }
.profile-modal-map .leaflet-dragging .leaflet-grab { cursor:grabbing; }
.profile-modal-map .leaflet-control-attribution { font-size:10px; }
.profile-modal-map .directory-map-pin { display:grid; width:36px; height:36px; place-items:center; border:3px solid #fff; border-radius:50% 50% 50% 8px; background:#ff3131; color:#fff; box-shadow:0 4px 12px rgba(0,0,0,.28); font:800 13px/1 Manrope,sans-serif; transform:rotate(-45deg); }
.profile-modal-map .directory-map-pin span { transform:rotate(45deg); }
.profile-modal-map .profile-current-marker-static { pointer-events:none !important; cursor:default !important; }
.profile-modal-map .directory-map-popup { display:grid; width:190px; gap:8px; }
.profile-modal-map .directory-map-popup-head { display:grid; grid-template-columns:44px minmax(0,1fr); align-items:center; gap:9px; }
.profile-modal-map .directory-map-popup-media { display:grid; width:44px; aspect-ratio:1; place-items:center; overflow:hidden; border-radius:8px; color:#fff; font:800 20px/1 Manrope,sans-serif; }
.profile-modal-map .directory-map-popup-media img { width:100%; height:100%; object-fit:cover; }
.profile-modal-map .directory-map-popup strong { overflow-wrap:anywhere; font-size:13px; }
.profile-modal-map .leaflet-popup-content { margin:12px; }
.profile-modal-map .leaflet-popup-content-wrapper,.profile-modal-map .leaflet-popup-tip { background:#265f9e; color:#fff; }
.profile-modal-map .leaflet-popup-content-wrapper { border-radius:12px; box-shadow:0 8px 24px rgba(19,42,60,.34); }
body.profile-map-open { overflow:hidden; }
.profile-gallery-stage { display:grid; aspect-ratio:16/8; place-items:center; overflow:hidden; border-radius:14px; background:#eceeef; }
.profile-gallery-stage[hidden] { display:none; }
.profile-gallery-stage img { width:100%; height:100%; object-fit:contain; }
.profile-gallery-thumbs { display:flex; gap:8px; padding-top:10px; overflow-x:auto; scrollbar-width:thin; }
.profile-gallery-thumb { width:72px; flex:0 0 72px; aspect-ratio:1; padding:0; overflow:hidden; border:2px solid transparent; border-radius:9px; background:#fff; cursor:pointer; }
.profile-gallery-thumb[aria-current='true'] { border-color:var(--red); }
.profile-gallery-thumb img { width:100%; height:100%; object-fit:cover; }

/* Interface única: módulos opcionais sob um cabeçalho comum. */
body[data-profile-type='unified'] #profileContent { display:grid; grid-template-columns:1fr; gap:18px; }
body[data-profile-type='unified'] .profile-hero,
body[data-profile-type='unified'] .profile-section { grid-column:1; }
body[data-profile-type='unified'] .profile-hero { position:relative; grid-template-columns:clamp(170px,24vw,230px) minmax(0,1fr); min-height:430px; align-items:end; padding:205px clamp(24px,5vw,58px) 42px; overflow:hidden; background:#f8f8f8; }
body[data-profile-type='unified'] .profile-banner { position:absolute; inset:0 0 auto; display:block; height:270px; background:#555f67 center/cover no-repeat; }
body[data-profile-type='unified'] .profile-banner::after { content:''; position:absolute; inset:0; background:linear-gradient(90deg,rgba(0,0,0,.16),transparent 62%); }
body[data-profile-type='unified'] .profile-cover { position:relative; z-index:1; width:clamp(170px,24vw,230px); min-height:0; aspect-ratio:1; border:8px solid #fff; border-radius:50%; background:#fff; box-shadow:0 12px 32px rgba(24,36,45,.26); font-size:64px; }
body[data-profile-type='unified'] .profile-cover img { object-fit:cover; }
body[data-profile-type='unified'] .profile-identity { position:relative; z-index:1; display:grid; grid-template-columns:minmax(0,52%) minmax(150px,210px); align-self:start; padding:78px 0 14px clamp(22px,4vw,48px); }
body[data-profile-type='unified'] .profile-kind,
body[data-profile-type='unified'] .profile-identity h1,
body[data-profile-type='unified'] .profile-tags { grid-column:1; transform:translateX(clamp(-78px,-6vw,-36px)); }
body[data-profile-type='unified'] .profile-actions { grid-column:2; grid-row:1/4; width:100%; align-self:center; justify-self:start; padding:0; transform:translateY(18px); }
body[data-profile-type='unified'] .profile-action--primary { width:100%; min-height:48px; border-radius:12px; background:#168b4b; box-shadow:0 8px 18px rgba(22,139,75,.24); }
body[data-profile-type='unified'] .profile-action.is-disabled { box-shadow:none; }
body[data-profile-type='unified'] .profile-kind { color:#68737b; }
body[data-profile-type='unified'] .profile-identity h1 { font-size:clamp(32px,5vw,54px); }
body[data-profile-type='unified'] .profile-section { margin-top:0; box-shadow:0 10px 26px rgba(30,43,52,.1); }
body[data-profile-type='unified'] .profile-service-list { grid-template-columns:1fr; gap:2px; }
body[data-profile-type='unified'] .profile-service-list li { min-height:40px; display:flex; align-items:center; padding:9px 14px 9px 40px; background:rgba(255,255,255,.94); color:#18242d; }
body[data-profile-type='unified'] .profile-service-list li::before { left:14px; color:var(--red); }
body[data-profile-type='unified'] #profileServices { background:#265f9e; color:#fff; }
body[data-profile-type='unified'] #profileServices h2 { color:#fff; }
body[data-profile-type='unified'] .profile-banner.is-clickable { cursor:zoom-in; }
body[data-profile-type='unified'] .profile-banner.is-clickable:focus-visible { outline:3px solid #fff; outline-offset:-6px; }
body[data-profile-type='unified'] #profileGallery.is-professional-gallery .profile-gallery-thumbs { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; padding-top:0; overflow:visible; }
body[data-profile-type='unified'] #profileGallery.is-professional-gallery .profile-gallery-thumb { width:100%; min-width:0; aspect-ratio:1; border:0; border-radius:10px; box-shadow:0 5px 14px rgba(30,43,52,.16); cursor:zoom-in; }
body[data-profile-type='unified'] #profileGallery.is-professional-gallery .profile-gallery-thumb:hover { transform:translateY(-2px); box-shadow:0 8px 18px rgba(30,43,52,.24); }
.profile-lightbox { position:fixed; inset:0; z-index:1000; display:grid; padding:clamp(18px,4vw,54px); place-items:center; background:rgba(0,0,0,.82); }
.profile-lightbox[hidden] { display:none; }
.profile-lightbox img { display:block; max-width:100%; max-height:100%; object-fit:contain; border-radius:8px; box-shadow:0 16px 50px rgba(0,0,0,.5); }
.profile-lightbox-close { position:fixed; top:clamp(10px,2vw,22px); right:clamp(10px,2vw,22px); z-index:1; display:grid; width:42px; aspect-ratio:1; padding:0; place-items:center; border:1px solid rgba(255,255,255,.55); border-radius:50%; background:rgba(20,20,20,.72); color:#fff; font:300 32px/1 Arial,sans-serif; cursor:pointer; }
.profile-lightbox-close:focus-visible { outline:3px solid #fff; outline-offset:3px; }
body.profile-lightbox-open { overflow:hidden; }
@media(max-width:620px) {
  .profile-hero { grid-template-columns:1fr; min-height:0; border-radius:15px; }
  .profile-cover { min-height:0; aspect-ratio:16/11; border-right:0; border-bottom:1px solid #dedede; font-size:52px; }
  .profile-identity { padding:22px 18px; }
  .profile-identity h1 { font-size:30px; }
  .profile-actions { display:grid; grid-template-columns:1fr; }
  .profile-action { padding:9px; font-size:12px; }
  .profile-details { grid-template-columns:1fr; }
  .profile-gallery-stage { aspect-ratio:4/3; }
  body[data-profile-type='unified'] #profileContent { gap:14px; }
  body[data-profile-type='unified'] .profile-hero { grid-template-columns:1fr; min-height:0; justify-items:center; padding:115px 18px 24px; overflow:hidden; }
  body[data-profile-type='unified'] .profile-banner { height:180px; }
  body[data-profile-type='unified'] .profile-cover { width:142px; min-height:0; aspect-ratio:1; border-width:6px; font-size:44px; }
  body[data-profile-type='unified'] .profile-identity { grid-template-columns:1fr; width:100%; height:auto; align-self:auto; align-items:center; padding:16px 0 0; text-align:center; }
  body[data-profile-type='unified'] .profile-tags { justify-content:center; }
  body[data-profile-type='unified'] .profile-kind,
  body[data-profile-type='unified'] .profile-identity h1,
  body[data-profile-type='unified'] .profile-tags { transform:none; }
  body[data-profile-type='unified'] .profile-actions { grid-template-columns:1fr; grid-column:1; grid-row:auto; width:min(165px,100%); justify-self:center; padding:14px 0 0; transform:none; }
  body[data-profile-type='unified'] .profile-action--primary { min-height:40px; padding:8px 12px; border-radius:10px; font-size:12px; }
  body[data-profile-type='unified'] :is(.profile-whatsapp-icon,.profile-instagram-icon,.profile-location-icon) { width:20px; height:20px; flex-basis:20px; margin-right:7px; }
  body[data-profile-type='unified'] #profileGallery.is-professional-gallery .profile-gallery-thumbs { grid-template-columns:repeat(3,minmax(0,1fr)); gap:7px; }
  body[data-profile-type='unified'] #profileGallery.is-professional-gallery .profile-gallery-thumb { border-radius:8px; }
  .profile-map-modal { padding:8px; }
  .profile-map-dialog { width:100%; height:min(88dvh,680px); border-radius:14px; }
  .profile-map-header { min-height:66px; padding:10px 60px; }
  .profile-map-close { right:11px; width:40px; }
}
@media(prefers-reduced-motion:reduce) { .profile-loading span { animation:none; } .profile-action { transition:none; } }
