/* ==========================================================================
   Centro Cultural Paz Flor — Estilos partilhados
   Bootstrap 5.3 + Font Awesome 6 + estilos próprios
   ========================================================================== */

:root {
  --pf-green: #0b6e45;
  --pf-green-600: #095c3a;
  --pf-green-700: #074a2f;
  --pf-green-50: #eef7f2;
  --pf-dark: #02302c;
  --pf-dark-2: #04403a;
  --pf-yellow: #f2b51c;
  --pf-yellow-soft: #fbe8b4;
  --pf-magenta: #c2187a;
  --pf-blue: #1d8fd1;
  --pf-lime: #8cc63f;
  --pf-ink: #14231f;
  --pf-text: #4a5a55;
  --pf-muted: #6c7b76;
  --pf-line: #e3ebe7;
  --pf-bg-soft: #f4f9f7;
  --pf-white: #ffffff;
  --pf-radius: 6px;
  --pf-radius-lg: 8px;
  --pf-shadow: 0 10px 30px rgba(2, 48, 44, .08);
  --pf-shadow-lg: 0 18px 50px rgba(2, 48, 44, .16);
  --pf-font-head: "Montserrat", system-ui, -apple-system, "Segoe UI", sans-serif;
  --pf-font-body: "Open Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --pf-font-script: "Kaushan Script", cursive;
  --pf-header-h: 76px;

  /* Bootstrap overrides */
  --bs-primary: var(--pf-green);
  --bs-primary-rgb: 11, 110, 69;
  --bs-link-color: var(--pf-green);
  --bs-link-hover-color: var(--pf-green-700);
  --bs-body-font-family: var(--pf-font-body);
  --bs-body-color: var(--pf-text);
}

html { scroll-behavior: smooth; scroll-padding-top: calc(var(--pf-header-h) + 12px); }
body { font-family: var(--pf-font-body); color: var(--pf-text); background: var(--pf-white); overflow-x: hidden; }
h1, h2, h3, h4, h5, h6, .pf-head { font-family: var(--pf-font-head); color: var(--pf-ink); font-weight: 700; }
a { color: var(--pf-green); }
img { max-width: 100%; }
::selection { background: var(--pf-yellow-soft); color: var(--pf-ink); }

:focus-visible { outline: 3px solid var(--pf-yellow); outline-offset: 2px; }

.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 2000;
  background: var(--pf-green); color: #fff; padding: .6rem 1rem; border-radius: 4px; text-decoration: none;
}
.skip-link:focus { top: 12px; color: #fff; }

/* ---------- Header ---------- */
.pf-header {
  position: sticky; top: 0; z-index: 1030;
  background: rgba(255, 255, 255, .97);
  backdrop-filter: blur(8px);
  border-bottom: 1px solid transparent;
  transition: box-shadow .25s ease, border-color .25s ease;
}
.pf-header.is-scrolled { box-shadow: 0 6px 24px rgba(2, 48, 44, .08); border-color: var(--pf-line); }
.pf-header .navbar { min-height: var(--pf-header-h); padding-block: .5rem; }
.pf-logo img { height: 46px; width: auto; display: block; }
.pf-nav .nav-link {
  font-family: var(--pf-font-head); font-weight: 600; font-size: .9rem;
  color: var(--pf-ink); padding: .5rem .9rem !important; position: relative;
}
.pf-nav .nav-link::after {
  content: ""; position: absolute; left: .9rem; right: .9rem; bottom: .15rem;
  height: 2px; border-radius: 2px; background: var(--pf-green);
  transform: scaleX(0); transform-origin: left; transition: transform .25s ease;
}
.pf-nav .nav-link:hover, .pf-nav .nav-link:focus { color: var(--pf-green); }
.pf-nav .nav-link:hover::after, .pf-nav .nav-link.active::after { transform: scaleX(1); }
.pf-nav .nav-link.active { color: var(--pf-green); }
.navbar-toggler { border: 0; padding: .4rem .6rem; color: var(--pf-green); font-size: 1.4rem; }
.navbar-toggler:focus { box-shadow: 0 0 0 3px var(--pf-yellow-soft); }
.pf-search-btn {
  width: 40px; height: 40px; border-radius: 50%; border: 0; background: transparent; color: var(--pf-ink);
}
.pf-search-btn:hover { background: var(--pf-green-50); color: var(--pf-green); }

@media (max-width: 1199.98px) {
  .pf-header .navbar-collapse {
    background: #fff; border-top: 1px solid var(--pf-line); margin-top: .5rem; padding: .75rem 0 1rem;
  }
  .pf-nav .nav-link { padding: .75rem .25rem !important; border-bottom: 1px solid var(--pf-line); }
  .pf-nav .nav-link::after { display: none; }
  .pf-nav .nav-link.active { padding-left: .75rem !important; border-left: 3px solid var(--pf-green); }
  .pf-header-actions { padding-top: 1rem; }
}

/* ---------- Buttons ---------- */
.btn { font-family: var(--pf-font-head); font-weight: 600; padding: .7rem 1.4rem; font-size: .9rem; }
.btn-sm { padding: .45rem 1rem; font-size: .8rem; }
.btn-pf {
  background: var(--pf-green); color: #fff; border: 2px solid var(--pf-green);
  box-shadow: 0 8px 20px rgba(11, 110, 69, .25);
}
.btn-pf:hover, .btn-pf:focus { background: var(--pf-green-700); border-color: var(--pf-green-700); color: #fff; }
.btn-pf-outline { background: transparent; color: var(--pf-green); border: 2px solid var(--pf-green); }
.btn-pf-outline:hover, .btn-pf-outline:focus { background: var(--pf-green); color: #fff; }
.btn-pf-light { background: transparent; color: #fff; border: 2px solid rgba(255, 255, 255, .85); }
.btn-pf-light:hover, .btn-pf-light:focus { background: #fff; color: var(--pf-green); }
.btn-pf-yellow { background: var(--pf-yellow); color: var(--pf-ink); border: 2px solid var(--pf-yellow); }
.btn-pf-yellow:hover, .btn-pf-yellow:focus { background: #e2a40b; border-color: #e2a40b; color: var(--pf-ink); }
.btn-whatsapp { background: #25d366; border: 2px solid #25d366; color: #fff; }
.btn-whatsapp:hover, .btn-whatsapp:focus { background: #1da851; border-color: #1da851; color: #fff; }
.btn .fa-arrow-right { transition: transform .2s ease; }
.btn:hover .fa-arrow-right { transform: translateX(3px); }

.pf-play {
  display: inline-flex; align-items: center; gap: .75rem; color: #fff; background: none; border: 0;
  font-family: var(--pf-font-head); font-weight: 600; font-size: .9rem;
  padding: .3rem 1.2rem .3rem .3rem; border-radius: 999px; border: 2px solid rgba(255, 255, 255, .7);
}
.pf-play .pf-play-icon {
  width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center;
  border: 2px solid #fff; transition: background .2s ease, color .2s ease;
}
.pf-play:hover .pf-play-icon { background: #fff; color: var(--pf-green); }

/* ---------- Typography helpers ---------- */
.pf-eyebrow {
  display: inline-block; font-family: var(--pf-font-head); font-weight: 700; letter-spacing: .14em;
  text-transform: uppercase; font-size: .78rem; color: var(--pf-green); margin-bottom: .5rem;
}
.pf-eyebrow.on-dark { color: var(--pf-yellow); }
.pf-title { font-size: clamp(1.6rem, 2.6vw, 2.2rem); line-height: 1.2; margin-bottom: .75rem; }
.pf-title-bar { border-left: 4px solid; border-image: linear-gradient(var(--pf-green), var(--pf-yellow)) 1; padding-left: 1rem; }
.pf-lead { color: var(--pf-text); font-size: 1.02rem; line-height: 1.7; }
.pf-script { font-family: var(--pf-font-script); }
.text-pf-green { color: var(--pf-green) !important; }
.text-pf-yellow { color: var(--pf-yellow) !important; }

/* ---------- Sections ---------- */
.pf-section { padding: clamp(3.5rem, 7vw, 5.5rem) 0; position: relative; }
.pf-section-soft { background: var(--pf-bg-soft); }
.pf-section-dark { background: var(--pf-dark); color: rgba(255, 255, 255, .82); }
.pf-section-dark h2, .pf-section-dark h3, .pf-section-dark h4 { color: #fff; }

/* Decorative logo-colour swoosh */
.pf-swoosh {
  position: absolute; width: 160px; height: 160px; pointer-events: none; z-index: 1;
  background:
    radial-gradient(circle at 100% 100%, transparent 54%, var(--pf-yellow) 55%, var(--pf-yellow) 64%, transparent 65%),
    radial-gradient(circle at 100% 100%, transparent 66%, var(--pf-green) 67%, var(--pf-green) 76%, transparent 77%),
    radial-gradient(circle at 100% 100%, transparent 78%, var(--pf-magenta) 79%, var(--pf-magenta) 88%, transparent 89%);
}
.pf-swoosh.tl { top: -40px; left: -40px; transform: rotate(180deg); }
.pf-swoosh.tr { top: -40px; right: -40px; transform: rotate(270deg); }
.pf-swoosh.bl { bottom: -40px; left: -40px; transform: rotate(90deg); }
.pf-swoosh.br { bottom: -40px; right: -40px; }

/* ---------- Home hero ---------- */
.pf-hero {
  position: relative; min-height: min(88vh, 720px); display: flex; align-items: center;
  color: #fff; overflow: hidden; isolation: isolate;
  background: var(--pf-dark) url("../images/hero-paz-flor.jpg") center / cover no-repeat;
}
.pf-hero::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(2, 30, 26, .88) 0%, rgba(2, 30, 26, .66) 42%, rgba(2, 30, 26, .12) 75%, rgba(2, 30, 26, 0) 100%);
}
.pf-hero h1 { color: #fff; font-size: clamp(2.4rem, 6vw, 4.4rem); font-weight: 800; line-height: 1.02; }
.pf-hero h1 .accent { background: linear-gradient(90deg, var(--pf-lime), var(--pf-yellow)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.pf-hero p { color: rgba(255, 255, 255, .92); font-size: 1.08rem; max-width: 470px; }
.pf-hero-tags { display: flex; flex-wrap: wrap; gap: .5rem 1.25rem; list-style: none; padding: 0; margin: 1.5rem 0 2rem; }
.pf-hero-tags li { display: flex; align-items: center; gap: .5rem; font-family: var(--pf-font-head); font-weight: 600; font-size: .85rem; }
.pf-hero-tags i { font-size: 1.05rem; color: var(--pf-yellow); }
.pf-hero-contact {
  position: absolute; right: clamp(1rem, 4vw, 3rem); bottom: 2rem; z-index: 2;
  display: flex; align-items: center; gap: .9rem; padding: .85rem 1.3rem;
  background: rgba(2, 30, 26, .82); border-radius: 999px; color: #fff; text-decoration: none;
  backdrop-filter: blur(6px);
}
.pf-hero-contact i { font-size: 1.3rem; color: var(--pf-yellow); }
.pf-hero-contact small { display: block; font-family: var(--pf-font-head); font-weight: 700; font-size: .78rem; }
.pf-hero-contact span { font-size: .85rem; }

/* ---------- Internal page banner ---------- */
.pf-page-banner {
  position: relative; color: #fff; overflow: hidden; isolation: isolate;
  padding: clamp(3.5rem, 9vw, 6.5rem) 0 clamp(2.5rem, 6vw, 4rem);
  background-color: var(--pf-dark); background-size: cover; background-position: center;
}
.pf-page-banner::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(100deg, rgba(2, 30, 26, .92) 0%, rgba(2, 48, 44, .72) 50%, rgba(2, 48, 44, .35) 100%);
}
.pf-page-banner h1 { color: #fff; font-size: clamp(2rem, 4.6vw, 3.2rem); font-weight: 800; margin-bottom: .75rem; }
.pf-page-banner p { color: rgba(255, 255, 255, .9); max-width: 620px; font-size: 1.05rem; margin-bottom: 0; }
.pf-breadcrumb { --bs-breadcrumb-divider-color: rgba(255, 255, 255, .6); --bs-breadcrumb-item-active-color: var(--pf-yellow); margin-bottom: 1.25rem; font-size: .88rem; font-family: var(--pf-font-head); font-weight: 600; }
.pf-breadcrumb a { color: #fff; text-decoration: none; }
.pf-breadcrumb a:hover { text-decoration: underline; }
.pf-breadcrumb .breadcrumb-item + .breadcrumb-item::before { content: "›"; }

/* ---------- Feature strip ---------- */
.pf-features { border-bottom: 1px solid var(--pf-line); background: #fff; }
.pf-feature {
  display: flex; flex-direction: column; align-items: center; justify-content: flex-start; text-align: center;
  gap: .6rem; padding: 1.75rem .75rem; height: 100%; text-decoration: none; color: var(--pf-ink);
  font-family: var(--pf-font-head); font-weight: 600; font-size: .86rem; transition: background .2s ease, transform .2s ease;
}
.pf-feature i { font-size: 1.9rem; color: var(--pf-green); transition: transform .25s ease; }
.pf-feature:hover { background: var(--pf-green-50); color: var(--pf-green); }
.pf-feature:hover i { transform: translateY(-3px) scale(1.06); }
@media (min-width: 992px) { .pf-features .col-lg-2 + .col-lg-2 .pf-feature { border-left: 1px solid var(--pf-line); } }

/* ---------- Media frames ---------- */
.pf-media {
  position: relative; border-radius: var(--pf-radius-lg); overflow: hidden; box-shadow: var(--pf-shadow-lg);
  aspect-ratio: 16 / 10; background: var(--pf-green-50);
}
.pf-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pf-media .pf-media-caption {
  position: absolute; left: 1.5rem; bottom: 1.25rem; color: #fff; font-size: clamp(1.2rem, 2.4vw, 1.7rem);
  transform: rotate(-6deg); text-shadow: 0 2px 10px rgba(0, 0, 0, .45); line-height: 1.25;
}
.pf-media::after {
  content: ""; position: absolute; inset: auto 0 0 0; height: 45%;
  background: linear-gradient(transparent, rgba(0, 0, 0, .38)); pointer-events: none;
}
.pf-media .pf-play-big {
  position: absolute; inset: 0; margin: auto; width: 74px; height: 74px; border-radius: 50%; border: 0;
  background: #fff; color: var(--pf-green); font-size: 1.5rem; z-index: 2; box-shadow: 0 10px 30px rgba(0, 0, 0, .25);
  transition: transform .2s ease;
}
.pf-media .pf-play-big:hover { transform: scale(1.08); }

/* Demonstrative content tag */
.pf-demo-tag {
  position: absolute; top: .75rem; right: .75rem; z-index: 3;
  background: rgba(2, 30, 26, .78); color: #fff; font-size: .68rem; font-weight: 600; letter-spacing: .02em;
  padding: .25rem .6rem; border-radius: 999px; font-family: var(--pf-font-head);
}
.pf-demo-note {
  display: flex; gap: .6rem; align-items: flex-start; font-size: .85rem; color: var(--pf-muted);
  background: #fff8e6; border: 1px dashed #e8c66d; border-radius: 6px; padding: .7rem 1rem;
}
.pf-demo-note i { color: #c58a00; margin-top: .15rem; }

/* ---------- Space cards ---------- */
.pf-space-card {
  position: relative; display: block; border-radius: var(--pf-radius); overflow: hidden; aspect-ratio: 4 / 5;
  color: #fff; text-decoration: none; box-shadow: var(--pf-shadow); background: var(--pf-dark);
  border-bottom: 5px solid var(--pf-accent, var(--pf-green));
}
.pf-space-card img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.pf-space-card::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 45%, rgba(2, 30, 26, .85) 100%); }
.pf-space-card .pf-space-label {
  position: absolute; left: 1rem; right: 1rem; bottom: 1rem; z-index: 2; display: flex; align-items: center; gap: .6rem;
  font-family: var(--pf-font-head); font-weight: 600; font-size: .9rem; line-height: 1.2;
}
.pf-space-card .pf-space-label i { font-size: 1.35rem; }
.pf-space-card:hover img, .pf-space-card:focus img { transform: scale(1.07); }
.pf-space-card:hover, .pf-space-card:focus { color: #fff; }
.accent-green { --pf-accent: var(--pf-green); }
.accent-blue { --pf-accent: var(--pf-blue); }
.accent-magenta { --pf-accent: var(--pf-magenta); }
.accent-yellow { --pf-accent: var(--pf-yellow); }
.accent-lime { --pf-accent: var(--pf-lime); }

/* Detailed space card (espacos.html) */
.pf-card {
  background: #fff; border: 1px solid var(--pf-line); border-radius: var(--pf-radius-lg); overflow: hidden;
  box-shadow: var(--pf-shadow); height: 100%; display: flex; flex-direction: column;
  transition: transform .25s ease, box-shadow .25s ease;
}
.pf-card:hover { transform: translateY(-4px); box-shadow: var(--pf-shadow-lg); }
.pf-card-img { position: relative; aspect-ratio: 16 / 10; overflow: hidden; background: var(--pf-green-50); }
.pf-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.pf-card:hover .pf-card-img img { transform: scale(1.05); }
.pf-card-body { padding: 1.5rem; display: flex; flex-direction: column; flex: 1; }
.pf-card-body h3 { font-size: 1.2rem; margin-bottom: .5rem; }
.pf-card-body p { font-size: .94rem; line-height: 1.65; }
.pf-badge {
  display: inline-flex; align-items: center; gap: .35rem; font-family: var(--pf-font-head); font-weight: 600; font-size: .72rem;
  padding: .3rem .7rem; border-radius: 999px; background: var(--pf-green-50); color: var(--pf-green); text-transform: uppercase; letter-spacing: .05em;
}
.pf-badge.badge-yellow { background: var(--pf-yellow-soft); color: #7a5600; }
.pf-badge.badge-magenta { background: #fbe3f0; color: var(--pf-magenta); }
.pf-badge.badge-blue { background: #e1f1fb; color: #136a9e; }
.pf-checklist { list-style: none; padding: 0; margin: 0 0 1.25rem; }
.pf-checklist li { position: relative; padding-left: 1.6rem; margin-bottom: .45rem; font-size: .92rem; }
.pf-checklist li::before {
  content: "\f00c"; font-family: "Font Awesome 6 Free"; font-weight: 900; position: absolute; left: 0; top: .1rem;
  color: var(--pf-green); font-size: .8rem;
}

/* Value / info boxes */
.pf-box {
  background: #fff; border: 1px solid var(--pf-line); border-radius: var(--pf-radius-lg); padding: 2rem 1.75rem;
  height: 100%; box-shadow: var(--pf-shadow); transition: transform .25s ease;
}
.pf-box:hover { transform: translateY(-4px); }
.pf-box-icon {
  width: 58px; height: 58px; border-radius: 6px; display: grid; place-items: center; font-size: 1.5rem; margin-bottom: 1.2rem;
  background: var(--pf-green-50); color: var(--pf-green);
}
.pf-box-icon.yellow { background: var(--pf-yellow-soft); color: #9a6b00; }
.pf-box-icon.magenta { background: #fbe3f0; color: var(--pf-magenta); }
.pf-box-icon.blue { background: #e1f1fb; color: #136a9e; }
.pf-box h3 { font-size: 1.15rem; }
.pf-box p:last-child { margin-bottom: 0; }

.pf-stat { font-family: var(--pf-font-head); font-weight: 800; font-size: clamp(2.4rem, 5vw, 3.4rem); color: var(--pf-green); line-height: 1; }

/* ---------- Events banner ---------- */
.pf-events-band {
  position: relative; overflow: hidden; color: #fff; isolation: isolate;
  background: var(--pf-dark) url("../images/eventos/eventos-banner.jpg") center / cover no-repeat;
}
.pf-events-band::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: linear-gradient(90deg, rgba(2, 30, 26, .96) 0%, rgba(2, 30, 26, .78) 45%, rgba(2, 30, 26, .3) 100%);
}
.pf-events-band h2 { color: #fff; }
.pf-events-band .pf-script { font-size: clamp(1.4rem, 3vw, 2rem); transform: rotate(-8deg); display: inline-block; line-height: 1.3; }

/* ---------- Gallery ---------- */
.pf-gallery-thumb {
  position: relative; display: block; width: 100%; border: 0; padding: 0; background: var(--pf-green-50);
  border-radius: var(--pf-radius); overflow: hidden; aspect-ratio: 4 / 3; cursor: zoom-in;
}
.pf-gallery-thumb img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s ease, filter .3s ease; display: block; }
.pf-gallery-thumb .pf-thumb-overlay {
  position: absolute; inset: 0; display: flex; flex-direction: column; justify-content: flex-end; align-items: flex-start;
  padding: 1rem; color: #fff; text-align: left; opacity: 0; transition: opacity .3s ease;
  background: linear-gradient(180deg, transparent 35%, rgba(2, 30, 26, .85));
}
.pf-gallery-thumb .pf-thumb-overlay strong { font-family: var(--pf-font-head); font-size: .92rem; }
.pf-gallery-thumb .pf-thumb-overlay small { font-size: .75rem; opacity: .85; }
.pf-gallery-thumb .pf-zoom {
  position: absolute; top: .8rem; left: .8rem; width: 36px; height: 36px; border-radius: 50%; background: rgba(255, 255, 255, .95);
  color: var(--pf-green); display: grid; place-items: center; opacity: 0; transform: scale(.7); transition: all .3s ease;
}
.pf-gallery-thumb:hover img, .pf-gallery-thumb:focus-visible img { transform: scale(1.07); }
.pf-gallery-thumb:hover .pf-thumb-overlay, .pf-gallery-thumb:focus-visible .pf-thumb-overlay { opacity: 1; }
.pf-gallery-thumb:hover .pf-zoom, .pf-gallery-thumb:focus-visible .pf-zoom { opacity: 1; transform: scale(1); }
.pf-gallery-item { transition: opacity .3s ease, transform .3s ease; }
.pf-gallery-item.is-hiding { opacity: 0; transform: scale(.96); }

.pf-filters { display: flex; flex-wrap: wrap; gap: .5rem; }
.pf-filter {
  border: 2px solid var(--pf-line); background: #fff; color: var(--pf-ink); border-radius: 999px; padding: .45rem 1.1rem;
  font-family: var(--pf-font-head); font-weight: 600; font-size: .85rem; transition: all .2s ease;
}
.pf-filter:hover { border-color: var(--pf-green); color: var(--pf-green); }
.pf-filter.active, .pf-filter[aria-pressed="true"] { background: var(--pf-green); border-color: var(--pf-green); color: #fff; }
.pf-filter .count { opacity: .7; font-weight: 500; margin-left: .2rem; }

/* Lightbox */
.pf-lightbox .modal-content { background: rgba(2, 20, 18, .97); border: 0; border-radius: 0; }
.pf-lightbox .modal-body { display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 3.5rem 4.5rem 1.5rem; min-height: 100vh; }
.pf-lightbox figure { margin: 0; text-align: center; max-width: 100%; }
.pf-lightbox img { max-height: 76vh; max-width: 100%; border-radius: 6px; box-shadow: 0 20px 60px rgba(0, 0, 0, .5); object-fit: contain; }
.pf-lightbox figcaption { color: rgba(255, 255, 255, .9); margin-top: 1rem; font-size: .95rem; }
.pf-lightbox figcaption strong { color: #fff; font-family: var(--pf-font-head); display: block; margin-bottom: .2rem; }
.pf-lb-btn {
  position: absolute; z-index: 5; width: 50px; height: 50px; border-radius: 50%; border: 0;
  background: rgba(255, 255, 255, .12); color: #fff; font-size: 1.15rem; transition: background .2s ease;
}
.pf-lb-btn:hover, .pf-lb-btn:focus-visible { background: var(--pf-green); }
.pf-lb-prev { left: 1rem; top: 50%; transform: translateY(-50%); }
.pf-lb-next { right: 1rem; top: 50%; transform: translateY(-50%); }
.pf-lb-close { right: 1rem; top: 1rem; }
.pf-lb-counter { position: absolute; left: 1.25rem; top: 1.4rem; color: rgba(255, 255, 255, .7); font-family: var(--pf-font-head); font-size: .85rem; }
@media (max-width: 575.98px) {
  .pf-lightbox .modal-body { padding: 4rem .75rem 5rem; }
  .pf-lb-prev, .pf-lb-next { top: auto; bottom: 1rem; transform: none; }
  .pf-lb-prev { left: calc(50% - 60px); }
  .pf-lb-next { right: calc(50% - 60px); }
}

/* ---------- Event cards ---------- */
.pf-event-card .pf-card-img { aspect-ratio: 16 / 9; }
.pf-event-meta { display: flex; flex-wrap: wrap; gap: .4rem 1rem; font-size: .82rem; color: var(--pf-muted); margin-bottom: .75rem; }
.pf-event-meta i { color: var(--pf-green); margin-right: .3rem; }
.pf-empty {
  text-align: center; padding: 3rem 1.5rem; border-radius: var(--pf-radius-lg);
  background: linear-gradient(135deg, var(--pf-green-50), #fffaf0); border: 1px solid var(--pf-line);
}
.pf-empty-icon {
  width: 76px; height: 76px; border-radius: 50%; display: grid; place-items: center; margin: 0 auto 1.25rem;
  background: #fff; color: var(--pf-green); font-size: 1.8rem; box-shadow: var(--pf-shadow);
}
.pf-empty h3 { font-size: 1.3rem; }
.pf-empty p { max-width: 520px; margin-inline: auto; }

.pf-search { position: relative; }
.pf-search i { position: absolute; left: 1.1rem; top: 50%; transform: translateY(-50%); color: var(--pf-muted); }
.pf-search input { padding-left: 2.8rem; border-radius: 999px; min-height: 48px; border: 2px solid var(--pf-line); }
.pf-search input:focus { border-color: var(--pf-green); box-shadow: 0 0 0 .2rem rgba(11, 110, 69, .15); }

/* ---------- Modals ---------- */
.pf-modal .modal-content { border: 0; border-radius: var(--pf-radius-lg); overflow: hidden; }
.pf-modal .modal-header { border: 0; padding: 1.5rem 1.75rem .5rem; }
.pf-modal .modal-body { padding: .5rem 1.75rem 1.75rem; }
.pf-modal .modal-title { font-size: 1.4rem; }
.pf-modal-hero { aspect-ratio: 16 / 7; overflow: hidden; position: relative; background: var(--pf-green-50); }
.pf-modal-hero img { width: 100%; height: 100%; object-fit: cover; }
.pf-modal-thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: .6rem; }
.pf-modal-thumbs img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 6px; }

/* ---------- CTA strip ---------- */
.pf-cta {
  border-radius: var(--pf-radius-lg); overflow: hidden; background: linear-gradient(120deg, var(--pf-green-50), #fffaf0);
  border: 1px solid var(--pf-line); display: flex; align-items: stretch;
}
.pf-cta-icon { background: var(--pf-green); color: #fff; display: grid; place-items: center; font-size: 2rem; min-width: 110px; }
.pf-cta-body { padding: 1.5rem 1.75rem; }
.pf-cta-body h3 { font-size: 1.15rem; margin-bottom: .35rem; }
.pf-quote { font-size: 1rem; font-style: italic; color: var(--pf-text); line-height: 1.7; }
.pf-quote-mark { font-size: 2.2rem; color: var(--pf-green); line-height: 1; }

.pf-cta-band {
  position: relative; overflow: hidden; border-radius: var(--pf-radius-lg); padding: clamp(2rem, 5vw, 3.5rem);
  background: linear-gradient(120deg, var(--pf-green-700), var(--pf-green) 55%, #138a59); color: #fff;
}
.pf-cta-band h2 { color: #fff; }
.pf-cta-band p { color: rgba(255, 255, 255, .88); }

/* ---------- Forms ---------- */
.pf-form .form-label { font-family: var(--pf-font-head); font-weight: 600; font-size: .85rem; color: var(--pf-ink); }
.pf-form .form-control, .pf-form .form-select { border: 2px solid var(--pf-line); border-radius: 6px; min-height: 50px; padding: .65rem 1rem; }
.pf-form textarea.form-control { min-height: 150px; }
.pf-form .form-control:focus, .pf-form .form-select:focus { border-color: var(--pf-green); box-shadow: 0 0 0 .2rem rgba(11, 110, 69, .15); }
.pf-form .form-control.is-invalid, .pf-form .form-select.is-invalid { border-color: #c62828; }
.pf-form .form-control.is-valid, .pf-form .form-select.is-valid { border-color: var(--pf-green); }
.pf-form .invalid-feedback { font-size: .82rem; color: #b42318; }
.pf-form .form-check-input:checked { background-color: var(--pf-green); border-color: var(--pf-green); }
.pf-form .req { color: #b42318; }
.pf-contact-item { display: flex; gap: 1rem; align-items: flex-start; padding: 1.1rem 0; border-bottom: 1px solid var(--pf-line); }
.pf-contact-item:last-child { border-bottom: 0; }
.pf-contact-item .pf-box-icon { width: 48px; height: 48px; font-size: 1.15rem; margin: 0; flex-shrink: 0; border-radius: 6px; }
.pf-contact-item h3 { font-size: 1rem; margin-bottom: .2rem; }
.pf-contact-item a { text-decoration: none; font-weight: 600; }
.pf-map-placeholder {
  border-radius: var(--pf-radius-lg); min-height: 280px; display: grid; place-items: center; text-align: center; padding: 2rem;
  background:
    linear-gradient(rgba(238, 247, 242, .92), rgba(238, 247, 242, .92)),
    repeating-linear-gradient(45deg, var(--pf-line) 0 2px, transparent 2px 22px);
  border: 1px dashed #b9d3c6;
}

/* ---------- Footer ---------- */
.pf-footer { background: var(--pf-dark); color: rgba(255, 255, 255, .78); position: relative; overflow: hidden; font-size: .9rem; }
.pf-footer h2 { color: #fff; font-size: .95rem; margin-bottom: 1rem; }
.pf-footer a { color: rgba(255, 255, 255, .78); text-decoration: none; }
.pf-footer a:hover, .pf-footer a:focus { color: var(--pf-yellow); }
.pf-footer .pf-footer-logo { height: 58px; width: auto; }
.pf-footer ul { list-style: none; padding: 0; margin: 0; }
.pf-footer li { margin-bottom: .45rem; }
.pf-footer .pf-contact-line { display: flex; gap: .7rem; align-items: flex-start; }
.pf-footer .pf-contact-line i { color: var(--pf-yellow); margin-top: .25rem; width: 16px; }
.pf-footer-script { font-family: var(--pf-font-script); color: #fff; font-size: 1.45rem; line-height: 1.35; transform: rotate(-8deg); display: inline-block; }
.pf-footer-bottom { border-top: 1px solid rgba(255, 255, 255, .12); font-size: .8rem; }
.pf-social { display: flex; gap: .55rem; }
.pf-social a, .pf-social span {
  width: 38px; height: 38px; border-radius: 50%; display: grid; place-items: center;
  background: rgba(255, 255, 255, .1); color: #fff; transition: background .2s ease, color .2s ease;
}
.pf-social a:hover, .pf-social a:focus { background: var(--pf-yellow); color: var(--pf-ink); }
.pf-social [aria-disabled="true"] { opacity: .45; cursor: not-allowed; }
.pf-social.on-light a, .pf-social.on-light span { background: var(--pf-green-50); color: var(--pf-green); }
.pf-social.on-light a:hover { background: var(--pf-green); color: #fff; }

/* ---------- Floating buttons ---------- */
.pf-to-top, .pf-wa-float {
  position: fixed; right: 1.25rem; z-index: 1020; width: 50px; height: 50px; border-radius: 50%; border: 0;
  display: grid; place-items: center; box-shadow: 0 10px 24px rgba(0, 0, 0, .2); text-decoration: none;
  transition: opacity .25s ease, transform .25s ease;
}
.pf-wa-float { bottom: 1.25rem; background: #25d366; color: #fff; font-size: 1.6rem; }
.pf-wa-float:hover { color: #fff; transform: scale(1.06); }
.pf-to-top { bottom: 5.1rem; background: var(--pf-green); color: #fff; opacity: 0; pointer-events: none; transform: translateY(10px); }
.pf-to-top.is-visible { opacity: 1; pointer-events: auto; transform: none; }

/* ---------- Reveal animation ---------- */
.pf-reveal { opacity: 0; transform: translateY(24px); transition: opacity .7s ease, transform .7s ease; }
.pf-reveal.is-visible { opacity: 1; transform: none; }
.no-js .pf-reveal { opacity: 1; transform: none; }

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; }
  .pf-reveal { opacity: 1; transform: none; }
}

@media (max-width: 767.98px) {
  .pf-hero { min-height: auto; padding: 4.5rem 0 7.5rem; }
  .pf-hero::before { background: linear-gradient(180deg, rgba(2, 30, 26, .82), rgba(2, 30, 26, .72)); }
  .pf-hero-contact { left: 1rem; right: 1rem; bottom: 1.25rem; border-radius: 6px; }
  .pf-cta { flex-direction: column; }
  .pf-cta-icon { min-height: 80px; }
}

/* ==========================================================================
   Extensões: menu com 8 itens, carrossel, notícias, espaços, calendário,
   aulas e inscrições
   ========================================================================== */

@media (min-width: 1200px) and (max-width: 1399.98px) {
  .pf-nav .nav-link { padding: .5rem .55rem !important; font-size: .84rem; }
  .pf-nav .nav-link::after { left: .55rem; right: .55rem; }
}

/* ---------- Carrossel principal com efeito de zoom (Ken Burns) ---------- */
.pf-hero-carousel { position: relative; background: var(--pf-dark); color: #fff; overflow: hidden; }
.pf-hero-carousel .carousel-item { height: min(88vh, 720px); min-height: 520px; overflow: hidden; }
.pf-hero-carousel .pf-slide-img {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  transform: scale(1); transform-origin: 60% 50%; will-change: transform;
}
.pf-hero-carousel .carousel-item.active .pf-slide-img,
.pf-hero-carousel .carousel-item-next .pf-slide-img,
.pf-hero-carousel .carousel-item-prev .pf-slide-img { animation: pfKenBurns 8s ease-out forwards; }
.pf-hero-carousel .carousel-item:nth-child(even) .pf-slide-img { transform-origin: 30% 60%; }
@keyframes pfKenBurns { from { transform: scale(1); } to { transform: scale(1.18); } }
.pf-hero-carousel .carousel-item::before {
  content: ""; position: absolute; inset: 0; z-index: 1;
  background: linear-gradient(90deg, rgba(2, 30, 26, .88) 0%, rgba(2, 30, 26, .62) 42%, rgba(2, 30, 26, .12) 75%, rgba(2, 30, 26, 0) 100%);
}
.pf-hero-carousel .pf-slide-content { position: relative; z-index: 2; height: 100%; display: flex; align-items: center; }
.pf-hero-carousel .pf-slide-title { color: #fff; font-family: var(--pf-font-head); font-size: clamp(2.3rem, 5.6vw, 4.2rem); font-weight: 800; line-height: 1.04; }
.pf-hero-carousel .accent { background: linear-gradient(90deg, var(--pf-lime), var(--pf-yellow)); -webkit-background-clip: text; background-clip: text; color: transparent; }
.pf-hero-carousel p { color: rgba(255, 255, 255, .92); font-size: 1.08rem; max-width: 500px; }
.pf-hero-carousel .carousel-item.active .pf-slide-anim { animation: pfSlideUp .9s ease both; }
.pf-hero-carousel .carousel-item.active .pf-slide-anim:nth-child(2) { animation-delay: .12s; }
.pf-hero-carousel .carousel-item.active .pf-slide-anim:nth-child(3) { animation-delay: .24s; }
.pf-hero-carousel .carousel-item.active .pf-slide-anim:nth-child(4) { animation-delay: .36s; }
.pf-hero-carousel .carousel-item.active .pf-slide-anim:nth-child(5) { animation-delay: .48s; }
@keyframes pfSlideUp { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: none; } }
.pf-hero-carousel .carousel-indicators { z-index: 3; justify-content: flex-start; margin: 0 0 2rem clamp(1rem, 6vw, 5rem); }
.pf-hero-carousel .carousel-indicators [data-bs-target] { width: 34px; height: 4px; border-radius: 4px; border: 0; background: rgba(255, 255, 255, .5); opacity: 1; margin: 0 6px 0 0; }
.pf-hero-carousel .carousel-indicators .active { background: var(--pf-yellow); width: 54px; }
.pf-hero-carousel .carousel-control-prev, .pf-hero-carousel .carousel-control-next { z-index: 3; width: 64px; opacity: 1; }
.pf-hero-carousel .pf-car-btn {
  width: 46px; height: 46px; border-radius: 50%; display: grid; place-items: center;
  background: rgba(255, 255, 255, .14); border: 1px solid rgba(255, 255, 255, .35); color: #fff; transition: background .2s ease;
}
.pf-hero-carousel .carousel-control-prev:hover .pf-car-btn, .pf-hero-carousel .carousel-control-next:hover .pf-car-btn { background: var(--pf-green); }
.pf-hero-carousel .pf-hero-contact { z-index: 4; }
@media (max-width: 767.98px) {
  .pf-hero-carousel .carousel-item { height: auto; min-height: 640px; }
  .pf-hero-carousel .carousel-item::before { background: linear-gradient(180deg, rgba(2, 30, 26, .78), rgba(2, 30, 26, .7)); }
  .pf-hero-carousel .pf-slide-content { padding: 4rem 0 9rem; min-height: 640px; }
  .pf-hero-carousel .carousel-control-prev, .pf-hero-carousel .carousel-control-next { display: none; }
  .pf-hero-carousel .carousel-indicators { margin-bottom: 6.5rem; }
}
@media (prefers-reduced-motion: reduce) {
  .pf-hero-carousel .pf-slide-img { animation: none !important; }
}

/* ---------- Notícias: destaque 70% + coluna 30% ---------- */
.pf-news-grid { display: grid; grid-template-columns: 7fr 3fr; gap: 1.5rem; }
@media (max-width: 991.98px) { .pf-news-grid { grid-template-columns: 1fr; } }
.pf-news-feature { border-radius: var(--pf-radius-lg); overflow: hidden; box-shadow: var(--pf-shadow-lg); min-height: 440px; }
.pf-news-feature-link { position: relative; display: block; height: 100%; min-height: 440px; color: #fff; text-decoration: none; background: var(--pf-dark); }
.pf-news-feature-link img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
.pf-news-feature-link::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(2, 30, 26, .05) 25%, rgba(2, 30, 26, .92) 100%); }
.pf-news-feature-link:hover { color: #fff; }
.pf-news-feature-link:hover img { transform: scale(1.05); }
.pf-news-feature-body { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: clamp(1.25rem, 3vw, 2.25rem); }
.pf-news-feature-body h3 { color: #fff; font-size: clamp(1.35rem, 2.6vw, 2rem); margin: .6rem 0; }
.pf-news-feature-body p { color: rgba(255, 255, 255, .88); max-width: 620px; margin-bottom: .9rem; }
.pf-news-feature .pf-news-meta time { color: rgba(255, 255, 255, .85); }
.pf-news-more { font-family: var(--pf-font-head); font-weight: 600; font-size: .9rem; color: var(--pf-yellow); }
.pf-news-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .3rem .75rem; font-size: .78rem; color: var(--pf-muted); }
.pf-news-meta .cat { font-family: var(--pf-font-head); font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--pf-green); font-size: .7rem; }
.pf-news-side { display: flex; flex-direction: column; gap: 1rem; }
.pf-news-mini a {
  display: flex; gap: .9rem; align-items: stretch; text-decoration: none; color: var(--pf-ink); background: #fff;
  border: 1px solid var(--pf-line); border-radius: var(--pf-radius); padding: .6rem; box-shadow: var(--pf-shadow);
  transition: transform .2s ease, border-color .2s ease;
}
.pf-news-mini a:hover { transform: translateX(4px); border-color: var(--pf-green); color: var(--pf-ink); }
.pf-news-mini-img { flex: 0 0 104px; border-radius: 6px; overflow: hidden; aspect-ratio: 1; background: var(--pf-green-50); }
.pf-news-mini-img img { width: 100%; height: 100%; object-fit: cover; }
.pf-news-mini-body { display: flex; flex-direction: column; justify-content: center; gap: .3rem; min-width: 0; }
.pf-news-mini-body strong { font-family: var(--pf-font-head); font-size: .9rem; line-height: 1.3; }
@media (min-width: 992px) { .pf-news-grid .pf-news-mini { flex: 1; } .pf-news-grid .pf-news-mini a { height: 100%; } }

/* ---------- Detalhe de espaço ---------- */
.pf-sticky { position: sticky; top: calc(var(--pf-header-h) + 1rem); }
.pf-capacity { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }
.pf-capacity > div { background: var(--pf-green-50); border-radius: var(--pf-radius); padding: 1rem; text-align: center; }
.pf-capacity .pf-stat { display: block; font-size: 2.4rem; }
.pf-capacity small { font-family: var(--pf-font-head); font-weight: 600; color: var(--pf-text); font-size: .78rem; }
.pf-type-list { list-style: none; padding: 0; margin: 0; display: grid; gap: .5rem; }
.pf-type-list li { display: flex; gap: .6rem; align-items: center; padding: .55rem .8rem; border: 1px solid var(--pf-line); border-radius: 6px; font-size: .92rem; }
.pf-type-list i { color: var(--pf-green); }
.pf-thumb-btn { border: 3px solid transparent; padding: 0; border-radius: 6px; overflow: hidden; background: none; transition: border-color .2s ease; }
.pf-thumb-btn img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; display: block; }
.pf-thumb-btn.active, .pf-thumb-btn:hover { border-color: var(--pf-green); }
.pf-chosen { display: flex; align-items: center; gap: .6rem; margin: 0; padding: .65rem 1rem; border-radius: 6px; background: var(--pf-green-50); color: var(--pf-green-700); font-weight: 600; font-size: .9rem; }

/* ---------- Calendário ---------- */
.pf-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: .75rem; }
.pf-cal-title { font-size: 1rem; margin: 0; }
.pf-cal-nav { width: 38px; height: 38px; border-radius: 50%; border: 1px solid var(--pf-line); background: #fff; color: var(--pf-green); }
.pf-cal-nav:hover:not(:disabled) { background: var(--pf-green); color: #fff; }
.pf-cal-nav:disabled { opacity: .35; }
.pf-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; }
.pf-cal-week { text-align: center; font-family: var(--pf-font-head); font-size: .7rem; font-weight: 700; color: var(--pf-muted); text-transform: uppercase; padding: .25rem 0; }
.pf-cal-day {
  aspect-ratio: 1; display: grid; place-items: center; border-radius: 6px; border: 1px solid transparent;
  font-family: var(--pf-font-head); font-weight: 600; font-size: .85rem; background: transparent; color: var(--pf-ink); padding: 0;
}
.pf-cal-day.is-empty { visibility: hidden; }
.pf-cal-day.is-past { color: #b8c4c0; background: #f6f8f7; }
.pf-cal-day.is-free { background: #e9f6ef; color: var(--pf-green-700); border-color: #cfe8db; }
.pf-cal-day.is-reserved { background: #fde8e8; color: #b42318; border-color: #f6c9c9; text-decoration: line-through; }
.pf-cal-day.is-highlight { background: var(--pf-green); color: #fff; }
.pf-cal-day.is-today { box-shadow: inset 0 0 0 2px var(--pf-yellow); }
.pf-cal-day.is-selected { background: var(--pf-yellow) !important; color: var(--pf-ink) !important; border-color: #e2a40b !important; }
button.pf-cal-day { cursor: pointer; transition: transform .15s ease; }
button.pf-cal-day:hover { transform: scale(1.08); border-color: var(--pf-green); }
.pf-cal-legend { list-style: none; display: flex; flex-wrap: wrap; gap: .4rem 1rem; padding: 0; margin: .9rem 0 0; font-size: .78rem; }
.pf-cal-legend li { display: flex; align-items: center; gap: .4rem; }
.pf-cal-legend .dot { width: 14px; height: 14px; border-radius: 4px; display: inline-block; border: 1px solid transparent; }
.pf-cal-legend .dot.is-free { background: #e9f6ef; border-color: #cfe8db; }
.pf-cal-legend .dot.is-reserved { background: #fde8e8; border-color: #f6c9c9; }
.pf-cal-legend .dot.is-highlight { background: var(--pf-green); }
.pf-cal-legend .dot.is-selected { background: var(--pf-yellow); }

/* ---------- Aulas e treinos ---------- */
.pf-status { display: inline-flex; align-items: center; gap: .35rem; font-family: var(--pf-font-head); font-weight: 700; font-size: .72rem; padding: .3rem .7rem; border-radius: 999px; text-transform: uppercase; letter-spacing: .04em; }
.pf-status-open { background: #dcf3e6; color: #0a6a3f; }
.pf-status-soon { background: var(--pf-yellow-soft); color: #7a5600; }
.pf-status-closed { background: #fde3e3; color: #b42318; }
.pf-status-panel { display: flex; gap: .9rem; align-items: center; padding: 1rem 1.1rem; border-radius: var(--pf-radius); margin-bottom: 1.25rem; }
.pf-status-panel > i { font-size: 1.6rem; }
.pf-status-panel strong { display: block; font-family: var(--pf-font-head); }
.pf-status-panel span { font-size: .85rem; }
.pf-facts { display: grid; grid-template-columns: auto 1fr; gap: .55rem 1rem; margin: 0; font-size: .92rem; }
.pf-facts dt { font-family: var(--pf-font-head); font-weight: 600; color: var(--pf-ink); }
.pf-facts dd { margin: 0; }
.text-capitalize-first::first-letter { text-transform: uppercase; }
.pf-legend { font-family: var(--pf-font-head); color: var(--pf-green); border-bottom: 1px solid var(--pf-line); padding-bottom: .5rem; margin-bottom: 1rem; width: 100%; }
.pf-closed-msg { display: flex; gap: 1rem; align-items: flex-start; padding: 1.25rem 1.5rem; margin-bottom: 1.25rem; border-radius: var(--pf-radius); background: #fff4f4; border: 1px solid #f6c9c9; color: #7a1a12; }
.pf-closed-msg > i { font-size: 1.5rem; margin-top: .1rem; }
.pf-closed-msg strong { display: block; font-family: var(--pf-font-head); }
.pf-closed-msg span { display: block; font-size: .92rem; }
.pf-form.is-closed { opacity: .55; filter: grayscale(.4); }
.pf-mini-class {
  display: flex; gap: .9rem; align-items: center; padding: 1rem; border-radius: var(--pf-radius); border: 1px solid var(--pf-line);
  background: #fff; text-decoration: none; color: var(--pf-ink); box-shadow: var(--pf-shadow); height: 100%; transition: transform .2s ease;
}
.pf-mini-class:hover { transform: translateY(-3px); color: var(--pf-ink); }
.pf-mini-class strong { display: block; font-family: var(--pf-font-head); font-size: .95rem; margin-bottom: .35rem; }
.pf-mini-class .pf-box-icon { width: 48px; height: 48px; font-size: 1.2rem; flex-shrink: 0; margin: 0; }

.pf-class-chip {
  display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; padding: 1rem 1.1rem; height: 100%;
  border-radius: var(--pf-radius); background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .14);
  color: #fff; text-decoration: none; transition: background .2s ease, transform .2s ease;
}
.pf-class-chip:hover { background: rgba(255, 255, 255, .14); color: #fff; transform: translateY(-3px); }
.pf-class-chip strong { font-family: var(--pf-font-head); display: flex; align-items: center; gap: .6rem; }
.pf-class-chip strong i { color: var(--pf-yellow); font-size: 1.2rem; }

/* ---------- Eventos: entrada, vagas e reserva ---------- */
.pf-price {
  display: inline-flex; align-items: center; gap: .35rem; font-family: var(--pf-font-head); font-weight: 700; font-size: .75rem;
  padding: .3rem .7rem; border-radius: 999px; background: var(--pf-dark); color: #fff;
}
.pf-price.is-free { background: var(--pf-lime); color: var(--pf-ink); }
.pf-date-chip {
  position: absolute; left: 1rem; top: 1rem; z-index: 2; background: #fff; color: var(--pf-ink); border-radius: 6px;
  padding: .35rem .7rem; text-align: center; line-height: 1.1; font-family: var(--pf-font-head); font-size: .72rem;
  text-transform: uppercase; box-shadow: 0 6px 16px rgba(0, 0, 0, .18);
}
.pf-date-chip strong { display: block; font-size: 1.35rem; color: var(--pf-green); }
.pf-seats { margin-top: .6rem; }
.pf-seats-bar { height: 8px; border-radius: 4px; background: #e6ece9; overflow: hidden; }
.pf-seats-bar span { display: block; height: 100%; border-radius: 4px; background: linear-gradient(90deg, var(--pf-green), var(--pf-lime)); transition: width .6s ease; }
.pf-seats.is-ultimas .pf-seats-bar span { background: linear-gradient(90deg, #e2a40b, var(--pf-yellow)); }
.pf-seats.is-esgotado .pf-seats-bar span, .pf-seats.is-realizado .pf-seats-bar span { background: #c62828; }
.pf-seats small { display: block; margin-top: .35rem; font-size: .8rem; color: var(--pf-muted); }
.pf-seats small strong { color: var(--pf-ink); }
.pf-timeline { list-style: none; padding: 0; margin: 0; border-left: 2px solid var(--pf-line); }
.pf-timeline li { position: relative; display: flex; gap: 1rem; padding: .5rem 0 .5rem 1.25rem; }
.pf-timeline li::before { content: ""; position: absolute; left: -7px; top: .85rem; width: 12px; height: 12px; border-radius: 50%; background: var(--pf-green); border: 2px solid #fff; }
.pf-timeline time { font-family: var(--pf-font-head); font-weight: 700; color: var(--pf-green); min-width: 52px; }
.pf-stepper { display: flex; gap: .5rem; max-width: 240px; }
.pf-stepper .btn { padding: 0; width: 50px; flex-shrink: 0; border-radius: 6px; }
.pf-stepper .form-control { text-align: center; font-family: var(--pf-font-head); font-weight: 700; font-size: 1.1rem; }
.pf-seat-summary > div { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px dashed var(--pf-line); font-size: .92rem; }
.pf-seat-summary > div:last-child { border-bottom: 0; }
.pf-seat-summary strong { font-family: var(--pf-font-head); color: var(--pf-ink); text-align: right; }
.pf-seat-summary .total { padding: .9rem 1rem; margin: .4rem 0; border: 0; border-radius: 6px; background: var(--pf-green-50); }
.pf-seat-summary .total strong { color: var(--pf-green); font-size: 1.15rem; }
.pf-event-card .pf-card-img { position: relative; }

/* ---------- Fotografias da aula/treino (mosaico: 1 grande + até 3 pequenas) ---------- */
.pf-photo-mosaic { display: grid; grid-template-columns: 2fr 1fr; grid-auto-rows: 120px; gap: .6rem; }
.pf-photo-mosaic .pf-gallery-thumb { aspect-ratio: auto; height: 100%; border-radius: 6px; }
.pf-photo-mosaic .pf-gallery-thumb.is-main { grid-row: span 3; }
.pf-photo-mosaic .pf-gallery-thumb .pf-zoom { top: auto; bottom: .6rem; left: auto; right: .6rem; width: 30px; height: 30px; font-size: .8rem; }
.pf-photo-mosaic .pf-demo-tag { top: .6rem; right: auto; left: .6rem; }
@media (max-width: 575.98px) {
  .pf-photo-mosaic { grid-template-columns: repeat(3, 1fr); grid-auto-rows: 80px; }
  .pf-slide-content { margin: 0px 8px; }
  .pf-photo-mosaic .pf-gallery-thumb.is-main { grid-column: 1 / -1; grid-row: span 3; }
}

/* ==========================================================================
   Formulários e calendários compactos
   ========================================================================== */
.pf-form-card { padding: 1.5rem; }
@media (min-width: 768px) { .pf-form-card { padding: 1.75rem 2rem; } }
.pf-form .row { --bs-gutter-x: 1rem; --bs-gutter-y: .8rem; }
.pf-form .form-label { font-size: .78rem; margin-bottom: .3rem; }
.pf-form .form-control, .pf-form .form-select {
  min-height: 40px; padding: .4rem .75rem; font-size: .9rem; border-width: 1.5px; border-radius: 6px;
}
.pf-form .form-select { padding-right: 2.25rem; }
.pf-form textarea.form-control { min-height: 84px; }
.pf-form .form-text, .pf-form .invalid-feedback { font-size: .76rem; margin-top: .2rem; }
.pf-form .form-check-label { font-size: .82rem; line-height: 1.45; }
.pf-form .btn { padding: .55rem 1.2rem; font-size: .85rem; }
.pf-legend { font-size: .85rem; padding-bottom: .4rem; margin-bottom: .75rem; }
.pf-stepper { max-width: 190px; }
.pf-stepper .btn { width: 40px; padding: 0; }
.pf-stepper .form-control { font-size: 1rem; }
.pf-chosen { padding: .45rem .8rem; font-size: .82rem; }
.pf-closed-msg { padding: 1rem 1.25rem; }
.pf-form-card h3.h5, .pf-form-card .h5 { font-size: 1.05rem; }

.pf-cal { max-width: 340px; margin-inline: auto; }
.pf-cal-head { margin-bottom: .5rem; }
.pf-cal-title { font-size: .92rem; }
.pf-cal-nav { width: 30px; height: 30px; font-size: .75rem; }
.pf-cal-grid { gap: 3px; }
.pf-cal-week { font-size: .62rem; padding: .15rem 0; }
.pf-cal-day { aspect-ratio: auto; height: 34px; border-radius: 4px; font-size: .78rem; }
button.pf-cal-day:hover { transform: none; box-shadow: inset 0 0 0 2px var(--pf-green); }
.pf-cal-legend { gap: .3rem .8rem; margin-top: .6rem; font-size: .7rem; }
.pf-cal-legend .dot { width: 11px; height: 11px; border-radius: 3px; }
.pf-cal-box { height: auto; position: sticky; top: calc(var(--pf-header-h) + 1rem); }
.pf-cal-box h3.h5 { font-size: 1rem; }

/* Caixas laterais: altura ajustada ao conteúdo (não esticar até à altura da coluna) */
.pf-box.pf-sticky { height: auto; }
.pf-cal-box { padding: 1.25rem; }
.pf-side-box { height: auto; padding: 1.5rem; }
.pf-side-box .pf-status-panel { margin-bottom: 1rem; padding: .8rem 1rem; }
.pf-side-box .pf-facts { font-size: .88rem; gap: .4rem .9rem; }
.pf-cal-box-static { position: static; }
.pf-photo-mosaic { grid-auto-rows: 100px; }
@media (max-width: 575.98px) { .pf-photo-mosaic { grid-auto-rows: 72px; } }
.pf-side-box .pf-type-list { gap: .35rem; }
.pf-side-box .pf-type-list li { padding: .4rem .7rem; font-size: .86rem; }
.pf-side-box .pf-capacity > div { padding: .7rem; }
.pf-side-box .pf-capacity .pf-stat { font-size: 1.9rem; }

/* ---------- Home: cartões das escolas desportivas ---------- */
.pf-class-stats { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: .75rem; padding: 0; margin: 0; }
.pf-class-stats li { background: rgba(255, 255, 255, .06); border: 1px solid rgba(255, 255, 255, .12); border-radius: var(--pf-radius); padding: .9rem .75rem; text-align: center; }
.pf-class-stats strong { display: block; font-family: var(--pf-font-head); font-size: 1.5rem; color: var(--pf-yellow); line-height: 1.1; }
.pf-class-stats span { font-size: .78rem; color: rgba(255, 255, 255, .75); }
.pf-class-card {
  height: 100%; display: flex; flex-direction: column; background: #fff; border-radius: var(--pf-radius); overflow: hidden;
  box-shadow: 0 14px 34px rgba(0, 0, 0, .25); transition: transform .25s ease;
}
.pf-class-card:hover { transform: translateY(-4px); }
.pf-class-card-img { position: relative; display: block; aspect-ratio: 16 / 9; overflow: hidden; background: var(--pf-dark-2); }
.pf-class-card-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }
.pf-class-card:hover .pf-class-card-img img { transform: scale(1.06); }
.pf-class-card-img::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, transparent 50%, rgba(2, 30, 26, .6)); }
.pf-class-card-status { position: absolute; top: .75rem; left: .75rem; z-index: 2; }
.pf-class-card-body { padding: 1.25rem 1.25rem 1.1rem; display: flex; flex-direction: column; flex: 1; color: var(--pf-text); }
.pf-class-card-type { font-family: var(--pf-font-head); font-weight: 700; font-size: .7rem; letter-spacing: .08em; text-transform: uppercase; color: var(--pf-green); }
.pf-class-card h3 { font-size: 1.1rem; margin: .3rem 0 .45rem; }
.pf-class-card h3 a { color: var(--pf-ink); text-decoration: none; }
.pf-class-card h3 a:hover { color: var(--pf-green); }
.pf-class-card p { font-size: .88rem; line-height: 1.55; margin-bottom: .75rem; }
.pf-class-card-facts { list-style: none; padding: 0; margin: 0 0 1rem; display: grid; gap: .35rem; font-size: .82rem; }
.pf-class-card-facts i { color: var(--pf-green); width: 18px; }
.pf-class-card-actions { margin-top: auto; display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding-top: .9rem; border-top: 1px solid var(--pf-line); }
.pf-class-card-actions .btn-pf-light { color: var(--pf-green); border-color: var(--pf-green); }
.pf-class-card-actions .btn-pf-light:hover { background: var(--pf-green); color: #fff; }
.pf-class-card-link { font-family: var(--pf-font-head); font-weight: 600; font-size: .85rem; text-decoration: none; }
.pf-class-card-cta { padding: 1.75rem; background: linear-gradient(140deg, var(--pf-green-700), var(--pf-green)); color: rgba(255, 255, 255, .9); box-shadow: none; border: 1px solid rgba(255, 255, 255, .12); }
.pf-class-card-cta > i { font-size: 2rem; color: var(--pf-yellow); margin-bottom: 1rem; }
.pf-class-card-cta h3 { color: #fff; font-size: 1.3rem; }
.pf-class-card-cta p { color: rgba(255, 255, 255, .85); font-size: .92rem; }

/* Secção "Aulas e treinos" da Home: fundo cinza suave */
.pf-section-grey { background: #eef1f0; }
.pf-section-grey .pf-class-stats li { background: #fff; border-color: var(--pf-line); box-shadow: var(--pf-shadow); }
.pf-section-grey .pf-class-stats strong { color: var(--pf-green); }
.pf-section-grey .pf-class-stats span { color: var(--pf-muted); }
.pf-section-grey .pf-class-card { box-shadow: var(--pf-shadow); border: 1px solid var(--pf-line); }
.pf-section-grey .pf-class-card:hover { box-shadow: var(--pf-shadow-lg); }

/* Formulário de inscrição em largura total: duas colunas + rodapé de envio */
.pf-form-footer {
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem 2rem;
  padding-top: 1.25rem; border-top: 1px solid var(--pf-line);
}
.pf-form-footer > .d-grid { flex: 1 1 420px; }

/* Conteúdo HTML vindo da base de dados ({!! !!}) */
.pf-rich-text > :last-child { margin-bottom: 0; }
.pf-rich-text a { font-weight: 600; }
.pf-banner-text p { color: rgba(255, 255, 255, .9); max-width: 620px; font-size: 1.05rem; margin-bottom: 0; }
.pf-section-heading .pf-rich-text { margin-top: .25rem; }
.pf-logo img { width: auto; }

/* =========================================================
   Toast de confirmação/erro após enviar um formulário
   ========================================================= */
.pf-toast-stack { position: fixed; top: calc(var(--pf-header-h) + 16px); right: 20px; z-index: 1090; width: 400px; max-width: calc(100vw - 32px); }
.pf-toast { position: relative; display: flex; gap: 14px; align-items: flex-start; padding: 18px 18px 20px; background: #fff; border-radius: var(--pf-radius-lg);
  box-shadow: var(--pf-shadow-lg); border: 1px solid var(--pf-line); border-left: 5px solid var(--pf-green); overflow: hidden;
  opacity: 0; transform: translateY(-12px) scale(.98); transition: opacity .3s ease, transform .3s ease; outline: none; }
.pf-toast.is-visible { opacity: 1; transform: none; }
.pf-toast.is-hiding { opacity: 0; transform: translateX(24px); }
.pf-toast.is-error { border-left-color: #c0392b; }
.pf-toast-icon { width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; font-size: 1.15rem; background: var(--pf-green-50); color: var(--pf-green); }
.pf-toast.is-error .pf-toast-icon { background: #fdecea; color: #c0392b; }
.pf-toast-body { flex: 1; min-width: 0; font-size: .9rem; color: var(--pf-text); }
.pf-toast-title { display: block; font-family: var(--pf-font-head); color: var(--pf-ink); font-size: 1rem; margin-bottom: 2px; }
.pf-toast-reference { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-top: 10px; padding: 8px 10px; border-radius: var(--pf-radius); background: var(--pf-bg-soft); border: 1px dashed var(--pf-line); font-size: .85rem; }
.pf-toast-reference strong { color: var(--pf-green-700); letter-spacing: .03em; }
.pf-toast-copy { border: 0; background: transparent; color: var(--pf-muted); padding: 2px 6px; border-radius: 6px; }
.pf-toast-copy:hover { background: #fff; color: var(--pf-green); }
.pf-toast .btn-close { font-size: .7rem; flex-shrink: 0; }
.pf-toast-progress { position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--pf-green); transform-origin: left; transform: scaleX(1); }
@media (max-width: 575.98px) { .pf-toast-stack { left: 16px; right: 16px; width: auto; top: calc(var(--pf-header-h) + 10px); } }
@media (prefers-reduced-motion: reduce) { .pf-toast { transition: none; } }
