 /* ==========================================================================
   FILARMÓNICA 10 DE AGOSTO — CSS ÚNICO (MERGE TOTAL, SEM REPETIÇÕES)
   - Junta TODOS os <style> num só ficheiro
   - Remove/merge de regras repetidas mantendo o comportamento final
   - Mantém namespaces: bf-* (Biblioteca/Fonoteca) e act-* (Modais Atividades)
   ========================================================================== */

/* =========================
   ROOT / VARIÁVEIS
========================= */
:root{
  --cor-fundo:#050814;
  --cor-texto:#161C2D;
  --cor-texto-sec:#161C2D;
  --cor-destaque:#b4002a;
  --cor-destaque-hover:#930023;
  --cor-botao-sec:rgba(255,255,255,0.12);
  --cor-botao-sec-borda:rgba(255,255,255,0.4);
  --cor-header-bg:rgba(5,8,20,0.65);
  --cor-header-bg-solid:rgba(5,8,20,0.96);
  --cor-shadow:rgba(0,0,0,0.35);
  --fonte-base:system-ui,-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",Arial,sans-serif;
  --duracao-transicao:0.25s;
  --largura-max:1200px;
  --altura-header:72px;
  --z-header:1000;
  --cor-texto-escuro:#0b1220;
  --cor-texto-escuro-sec:#4b5563;
  --cor-card-borda:rgba(15,23,42,0.08);
  --cor-card-shadow:rgba(15,23,42,0.06);

  /* (Biblioteca/Fonoteca) */
  --bf-bg:#ffffff;
  --bf-ink:#0e1220;
  --bf-muted:rgba(14,18,32,.68);
  --bf-accent:#b10f2e;
  --bf-accent2:#151a28;
  --bf-wrap:1200px;
  --bf-gap:22px;
  --bf-radius:22px;
  --bf-radius2:16px;
  --bf-shadow:0 14px 40px rgba(0,0,0,.10);
  --bf-shadowHover:0 22px 60px rgba(0,0,0,.16);
  --bf-imgH:200px;
  --bf-modalZ:999999;
  --bf-overlay:rgba(8,10,16,.68);
  --bf-panelBg:#fff;
  --bf-panelBorder:rgba(14,18,32,.12);
  --bf-panelShadow:0 34px 110px rgba(0,0,0,.42);
  --bf-carouselH:min(420px, 52vh);
}

/* =========================
   RESET / BASE
========================= */
*{ box-sizing:border-box; margin:0; padding:0; }

body{
  font-family:var(--fonte-base);
  background:var(--cor-fundo);
  color:var(--cor-texto);
  line-height:1.5;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
button{ font-family:inherit; }

.page{
  min-height:100vh;
  display:flex;
  flex-direction:column;
  background:
    radial-gradient(circle at top, rgba(255,255,255,0.12) 0, transparent 55%),
    radial-gradient(circle at bottom, rgba(0,0,0,0.65) 0, #000 60%);
  color:var(--cor-texto);
}

.wrap{
  width:100%;
  max-width:var(--largura-max);
  margin:0 auto;
  padding:0 20px;
}

main{ flex:1 0 auto; }

section{ scroll-margin-top:calc(var(--altura-header) + 18px); }

/* =========================
   HEADER / NAV
========================= */
header.site-header{
  position:fixed;
  top:0; left:0; right:0;
  height:var(--altura-header);
  z-index:var(--z-header);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  background:var(--cor-header-bg);
  border-bottom:1px solid rgba(255,255,255,0.05);
  transition:
    background var(--duracao-transicao) ease,
    transform var(--duracao-transicao) ease,
    box-shadow var(--duracao-transicao) ease;
}

header.site-header.header-solid{
  background:var(--cor-header-bg-solid);
  box-shadow:0 10px 30px var(--cor-shadow);
}

.header-inner{
  height:100%;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
}

.brand{
  display:inline-flex;
  flex-direction:column;
  justify-content:center;
  gap:2px;
  text-transform:uppercase;
  letter-spacing:0.08em;
  font-weight:700;
  font-size:13px;
  color:#ffffff;
  white-space:nowrap;
}

.brand span.brand-top{
  font-size:11px;
  opacity:0.78;
  letter-spacing:0.22em;
}

.brand span.brand-main{ font-size:14px; }

nav.site-nav{
  display:flex;
  align-items:center;
  gap:32px;
}

.nav-links{
  list-style:none;
  display:flex;
  align-items:center;
  gap:24px;
  font-size:15px;
}

.nav-links a.nav-link{
  position:relative;
  padding:4px 0;
  font-weight:500;
  color:rgba(255,255,255,0.78);
  transition:color var(--duracao-transicao) ease;
}

.nav-links a.nav-link::after{
  content:"";
  position:absolute;
  left:0;
  bottom:-4px;
  width:0;
  height:2px;
  border-radius:999px;
  background:linear-gradient(90deg, var(--cor-destaque), #ff5672);
  transition:width var(--duracao-transicao) ease;
}

.nav-links a.nav-link:hover,
.nav-links a.nav-link:focus-visible{ color:#ffffff; }

.nav-links a.nav-link:hover::after,
.nav-links a.nav-link:focus-visible::after{ width:100%; }

/* =========================
   BOTÕES
========================= */
.btn{
  appearance:none;
  border:none;
  cursor:pointer;
  padding:10px 40px;
  font-size:14px;
  font-weight:600;
  border-radius:10px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  text-transform:none;
  letter-spacing:0.03em;
  transition:
    background var(--duracao-transicao) ease,
    transform var(--duracao-transicao) ease,
    box-shadow var(--duracao-transicao) ease,
    color var(--duracao-transicao) ease,
    border-color var(--duracao-transicao) ease;
}

.btn-primary{
  background:var(--cor-destaque);
  color:#ffffff;
  box-shadow:0 10px 30px rgba(180,0,42,0.5);
}

.btn-primary:hover,
.btn-primary:focus-visible{
  background:var(--cor-destaque-hover);
  transform:translateY(-1px);
  box-shadow:0 16px 40px rgba(148,0,32,0.7);
}

.btn-primary:active{
  transform:translateY(0);
  box-shadow:0 6px 20px rgba(0,0,0,0.5);
}

.btn-secondary{
  background:var(--cor-botao-sec);
  color:#fff;
  border:1px solid var(--cor-botao-sec-borda);
  box-shadow:0 12px 30px rgba(0,0,0,0.5);
}

.btn-secondary:hover,
.btn-secondary:focus-visible{
  background:rgba(255,255,255,0.14);
  border-color:rgba(255,255,255,0.8);
  transform:translateY(-1px);
  box-shadow:0 16px 42px rgba(0,0,0,0.7);
}

.btn-secondary:active{
  transform:translateY(0);
  box-shadow:0 6px 20px rgba(0,0,0,0.5);
}

/* =========================
   HAMBURGER + NAV MOBILE
========================= */
.hamburger{
  width:44px;
  height:44px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.25);
  background:radial-gradient(circle at top, rgba(255,255,255,0.06), rgba(20,20,30,0.95));
  display:none;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  transition:
    background var(--duracao-transicao) ease,
    transform var(--duracao-transicao) ease,
    box-shadow var(--duracao-transicao) ease,
    border-color var(--duracao-transicao) ease;
}

.hamburger:hover,
.hamburger:focus-visible{
  border-color:rgba(255,255,255,0.6);
  box-shadow:0 12px 32px rgba(0,0,0,0.5);
  transform:translateY(-1px);
}

.hamburger span{
  position:relative;
  width:20px;
  height:2px;
  border-radius:999px;
  background:transparent;
}

.hamburger span::before,
.hamburger span::after{
  content:"";
  position:absolute;
  left:0;
  width:20px;
  height:2px;
  border-radius:999px;
  background:#ffffff;
  transition:
    transform var(--duracao-transicao) ease,
    opacity var(--duracao-transicao) ease,
    top var(--duracao-transicao) ease,
    bottom var(--duracao-transicao) ease;
}

.hamburger span::before{ top:-6px; }
.hamburger span::after{ bottom:-6px; }

.hamburger.is-open span::before{ top:0; transform:rotate(45deg); }
.hamburger.is-open span::after{ bottom:0; transform:rotate(-45deg); }
.hamburger.is-open span{ background:transparent; }

.nav-mobile-overlay{
  position:fixed;
  inset:var(--altura-header) 0 0 0;
  background:radial-gradient(circle at top, rgba(255,255,255,0.10), rgba(5,8,20,0.98));
  backdrop-filter:blur(18px);
  -webkit-backdrop-filter:blur(18px);
  transform:translateY(-6px);
  opacity:0;
  pointer-events:none;
  transition:opacity var(--duracao-transicao) ease;
}

.nav-mobile-overlay.active{
  opacity:1;
  pointer-events:auto;
}

.nav-mobile-inner{
  max-width:var(--largura-max);
  margin:0 auto;
  padding:24px 20px 32px;
  display:flex;
  flex-direction:column;
  gap:24px;
  background-color:#fff;
}

.nav-mobile-list{
  list-style:none;
  display:flex;
  flex-direction:column;
  gap:12px;
  font-size:18px;
}

.nav-mobile-list a.nav-link{
  display:flex;
  justify-content:space-between;
  align-items:center;
  padding-bottom:6px;
  border-bottom:1px solid rgba(255,255,255,0.08);
  color:#000;
}

.nav-mobile-list a.nav-link span.label{ font-weight:500; }
.nav-mobile-list a.nav-link span.dot{
  width:6px; height:6px;
  border-radius:999px;
  background:rgba(255,255,255,0.4);
}

.nav-mobile-cta{
  display:flex;
  flex-direction:column;
  gap:12px;
  margin-top:8px;
}

.nav-mobile-cta .btn-primary,
.nav-mobile-cta .btn-secondary{
  width:100%;
  justify-content:center;
}

/* lock scroll */
body.nav-open{ overflow:hidden; }

/* =========================
   HERO
========================= */
.hero{
  position:relative;
  height:calc(100vh);
  min-height:560px;
  color:var(--cor-texto);
  display:flex;
  align-items:stretch;
  justify-content:center;
  overflow:hidden;
  padding-top:var(--altura-header);
}

.hero-bg{ position:absolute; inset:0; z-index:0; overflow:hidden; }

.hero-bg::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:url("../images/header_image.webp");
  background-size:cover;
  background-position:center top;
  transform:scale(1.0);
  background-attachment:scroll;
}

.hero-bg::after{
  content:"";
  position:absolute;
  inset:0;
  mix-blend-mode:multiply;
}

.hero-inner{
  position:relative;
  z-index:1;
  flex:1;
  display:flex;
  align-items:center;
  justify-content:center;
}

.hero-content{
  max-width:1200px;
  text-align:center;
  padding:40px 20px 80px;
}

.hero-kicker{
  font-size:13px;
  text-transform:uppercase;
  letter-spacing:0.18em;
  font-weight:600;
  color:rgba(255,255,255,0.8);
  margin-bottom:14px;
}

.hero-title{
  font-size:clamp(32px, 4vw, 44px);
  line-height:1.12;
  font-weight:800;
  letter-spacing:-0.03em;
  margin-bottom:16px;
  color:#fff;
  text-shadow:0 18px 40px rgba(0,0,0,0.75);
}

.hero-subtitle{
  font-size:clamp(32px, 4vw, 40px);
  font-weight:500;
  margin-bottom:16px;
  color:#fff;
  text-shadow:0 10px 30px rgba(0,0,0,0.7);
}

.hero-description{
  font-size:15px;
  max-width:1200px;
  margin:0 auto 30px;
  color:#fff;
  text-shadow:0 10px 28px rgba(0,0,0,0.8);
}

.hero-actions{
  display:inline-flex;
  flex-wrap:wrap;
  justify-content:center;
  gap:14px;
}

/* =========================
   SECTION PLACEHOLDER
========================= */
.section-placeholder{
  min-height:480px;
  padding:96px 0;
  background:#050814;
  color:#f5f5f5;
}
.section-placeholder:nth-of-type(odd){ background:#020617; }
.section-placeholder h2{ font-size:28px; margin-bottom:12px; }
.section-placeholder p{ max-width:540px; color:#d0d0d8; }

/* =========================
   ATIVIDADES (SECÇÃO + CARDS) — MERGE TOTAL
========================= */
.section-activities{
  background:#ffffff;
  color:var(--cor-texto-escuro);
  padding:96px 0 96px;
}

.section-activities-header{
  text-align:center;
  max-width:720px;
  margin:0 auto 56px;
}

.section-activities-title{
  font-size:clamp(30px, 3vw, 36px);
  line-height:1.15;
  font-weight:800;
  letter-spacing:-0.03em;
  margin:0 0 16px;
  color:#161C2D;
}

.section-activities-lead{
  font-size:16px;
  color:#4b5563;
  line-height:1.6;
  margin:0;
}

.activities-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:50px 32px;
}

.activity-card{
  background:transparent;
  border-radius:0;
  overflow:visible;
  box-shadow:none;
  border:none;
  display:flex;
  flex-direction:column;
  cursor:pointer;
  text-align:left;
  transform:none;
}

.activity-card:hover{
  transform:none;
  box-shadow:none;
  border-color:transparent;
}

/* acessibilidade */
.activity-card:focus-within{
  outline:2px solid rgba(177,11,45,0.35);
  outline-offset:6px;
  border-radius:12px;
}
.activity-card:focus-visible{
  outline:2px solid rgba(177,11,45,0.35);
  outline-offset:6px;
  border-radius:12px;
}

/* botão overlay */
.activity-open{
  appearance:none;
  border:none;
  background:transparent;
  padding:0;
  margin:0;
  text-align:left;
  cursor:pointer;
  width:100%;
  display:block;
}

/* título / texto */
.activity-card-title{
  font-size:19px;
  font-weight:700;
  margin:0 0 12px;
  color:#161C2D;
  line-height:1.3;
}

.activity-card-text{
  font-size:15px;
  color:#4b5563;
  line-height:1.6;
}

/* imagem/card: suporta single e carousel (merge das 2 versões) */
.activity-card-image{
  position:relative;
  width:100%;
  border-radius:12px;
  margin:0 0 12px;
  overflow:visible;
  padding-top:0; /* default: não força 16:9 quando tem carousel */
  box-shadow:none;
}

/* single (força 16:9) */
.activity-card-image.single{
  overflow:hidden;
  padding-top:56.25%;
  box-shadow:0 4px 20px rgba(0,0,0,0.08);
}

.activity-card-image.single > img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  transform:scale(1);
  transition:transform .5s ease;
}

.activity-card:hover .activity-card-image.single > img{ transform:scale(1.08); }

/* quando não é single mas tem img directo */
.activity-card-image > img{
  width:100%;
  height:100%;
  border-radius:12px;
  box-shadow:0 4px 20px rgba(0,0,0,0.08);
  object-fit:cover;
}

/* carousel no card: mantém 16:9 */
.activity-card-image .carousel{ aspect-ratio:16 / 9; }
@supports not (aspect-ratio:16 / 9){
  .activity-card-image .carousel{ height:0; padding-top:56.25%; }
  .activity-card-image .carousel .carousel-slide img{
    position:absolute;
    inset:0;
    height:100%;
  }
}

.section-activities-footer{ margin-top:64px; text-align:center; }

/* =========================
   CAROUSEL (REUTILIZÁVEL)
========================= */
.carousel{
  position:relative;
  width:100%;
  overflow:hidden;
  border-radius:12px;
  box-shadow:0 4px 20px rgba(0,0,0,0.08);
  background:#0b1220;
}

.carousel-track{
  display:flex;
  transition:transform 0.45s ease;
  will-change:transform;
}

.carousel-slide{
  flex:0 0 100%;
  position:relative;
}

.carousel-slide img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}

.carousel-btn{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:40px;
  height:40px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.35);
  background:rgba(0,0,0,0.35);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  z-index:2;
  transition:transform 0.18s ease, background 0.18s ease, border-color 0.18s ease;
}

.carousel-btn:hover,
.carousel-btn:focus-visible{
  background:rgba(0,0,0,0.55);
  border-color:rgba(255,255,255,0.6);
  transform:translateY(-50%) scale(1.02);
}

.carousel-btn.prev{ left:10px; }
.carousel-btn.next{ right:10px; }

.carousel-btn span{
  width:10px;
  height:10px;
  display:block;
  border-top:2px solid #fff;
  border-right:2px solid #fff;
}

.carousel-btn.prev span{ transform:rotate(-135deg); }
.carousel-btn.next span{ transform:rotate(45deg); }

.carousel-dots{
  position:absolute;
  left:50%;
  bottom:10px;
  transform:translateX(-50%);
  display:flex;
  gap:8px;
  z-index:2;
}

.carousel-dot{
  width:8px;
  height:8px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,0.55);
  background:rgba(255,255,255,0.18);
  cursor:pointer;
  transition:transform 0.18s ease, background 0.18s ease;
}

.carousel-dot.is-active{
  background:rgba(255,255,255,0.9);
  transform:scale(1.08);
}

/* =========================
   MODAL ATIVIDADES (VERSÃO .modal-*)
========================= */
.modal-overlay{
  position:fixed;
  inset:0;
  background:rgba(2,6,23,0.75);
  backdrop-filter:blur(10px);
  -webkit-backdrop-filter:blur(10px);
  display:none;
  z-index:3000;
}
.modal-overlay.is-open{ display:block; }

.modal{
  position:absolute;
  left:50%;
  top:50%;
  transform:translate(-50%,-50%);
  width:min(1100px, calc(100vw - 36px));
  max-height:min(86vh, 780px);
  overflow:hidden;
  border-radius:18px;
  background:#ffffff;
  box-shadow:0 30px 90px rgba(0,0,0,0.55);
  outline:none;
}

.modal-header{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  padding:16px 18px;
  border-bottom:1px solid rgba(15,23,42,0.08);
}

.modal-title{
  font-size:18px;
  font-weight:800;
  color:#111827;
  line-height:1.2;
}

.modal-close{
  width:40px;
  height:40px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,0.12);
  background:#ffffff;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:transform 0.18s ease, box-shadow 0.18s ease, border-color 0.18s ease;
  position:relative;
}

.modal-close:hover,
.modal-close:focus-visible{
  transform:translateY(-1px);
  border-color:rgba(15,23,42,0.25);
  box-shadow:0 10px 25px rgba(0,0,0,0.12);
}

.modal-close::before,
.modal-close::after{
  content:"";
  position:absolute;
  width:16px;
  height:2px;
  background:#111827;
  border-radius:999px;
}

.modal-close::before{ transform:rotate(45deg); }
.modal-close::after{ transform:rotate(-45deg); }

.modal-body{
  display:grid;
  grid-template-columns:minmax(0, 1.15fr) minmax(0, 0.85fr);
  gap:0;
  height:calc(min(86vh, 780px) - 64px);
}

.modal-left{
  background:#0b1220;
  padding:16px;
  display:flex;
  align-items:center;
  justify-content:center;
}

.modal-right{
  padding:18px 18px 20px;
  overflow:auto;
}

.modal-text{
  font-size:15px;
  line-height:1.75;
  color:#4b5563;
  white-space:pre-line;
}

.modal-left .carousel{
  width:100%;
  max-width:640px;
  border-radius:14px;
  box-shadow:0 22px 60px rgba(0,0,0,0.55);
  aspect-ratio:16 / 9;
}
@supports not (aspect-ratio:16 / 9){
  .modal-left .carousel{ height:0; padding-top:56.25%; position:relative; }
  .modal-left .carousel .carousel-track,
  .modal-left .carousel .carousel-slide,
  .modal-left .carousel .carousel-slide img{ position:absolute; inset:0; }
}

/* =========================
   MODAL ATIVIDADES (VERSÃO act-*)
========================= */
body.act-lock{ overflow:hidden !important; }

.act-overlay{
  position:fixed;
  inset:0;
  display:none;
  align-items:center;
  justify-content:center;
  padding:18px;
  background:rgba(2,6,23,0.78);
  backdrop-filter:blur(14px);
  -webkit-backdrop-filter:blur(14px);
  isolation:isolate;
  z-index:2147483647;
}
.act-overlay.is-open{ display:flex; }

.act-dialog{
  width:min(1120px, calc(100vw - 28px));
  max-height:min(86vh, 820px);
  background:#fff;
  border-radius:18px;
  overflow:hidden;
  box-shadow:0 40px 140px rgba(0,0,0,0.6);
  outline:none;
}

.act-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:14px;
  padding:16px 18px;
  border-bottom:1px solid rgba(15,23,42,0.10);
  background:#fff;
}

.act-title{
  margin:0;
  font-size:18px;
  font-weight:800;
  color:#111827;
  line-height:1.2;
}

.act-close{
  width:42px;
  height:42px;
  border-radius:999px;
  border:1px solid rgba(15,23,42,0.16);
  background:#fff;
  cursor:pointer;
  position:relative;
  transition:transform .18s ease, box-shadow .18s ease, border-color .18s ease;
  flex:0 0 auto;
}

.act-close:hover,
.act-close:focus-visible{
  transform:translateY(-1px);
  border-color:rgba(15,23,42,0.28);
  box-shadow:0 12px 26px rgba(0,0,0,0.14);
}

.act-close::before,
.act-close::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  width:18px;
  height:2px;
  background:#0b1220;
  border-radius:999px;
  transform-origin:center;
}

.act-close::before{ transform:translate(-50%,-50%) rotate(45deg); }
.act-close::after{ transform:translate(-50%,-50%) rotate(-45deg); }

.act-body{
  display:grid;
  grid-template-columns:minmax(0, 1.15fr) minmax(0, .85fr);
  height:calc(min(86vh, 820px) - 74px);
}

.act-media{
  background:#0b1220;
  padding:0;
  display:flex;
  align-items:stretch;
  justify-content:stretch;
}

.act-content{
  padding:18px 18px 22px;
  overflow:auto;
  background:#fff;
}

.act-content p{
  margin:0 0 14px;
  font-size:15px;
  line-height:1.75;
  color:#4b5563;
  text-align:justify;
  text-justify:inter-word;
  hyphens:auto;
}

/* carousel act-* (default contain) */
.act-carousel{
  width:100%;
  height:100%;
  max-width:none;
  border-radius:0;
  overflow:hidden;
  box-shadow:none;
  position:relative;
  background:#0b1220;
}

.act-viewport{ width:100%; height:100%; overflow:hidden; }

.act-track{
  display:flex;
  height:100%;
  width:100%;
  transition:transform .42s ease;
  will-change:transform;
  transform:translateX(0);
}

.act-slide{
  flex:0 0 100%;
  height:100%;
  position:relative;
  overflow:hidden;
  background:#0b1220;
}

.act-slide img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:contain;
  object-position:center;
  display:block;
  user-select:none;
  -webkit-user-drag:none;
}

.act-slide.is-cover img{ object-fit:cover; }

.act-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:42px;
  height:42px;
  border-radius:999px;
  border:2px solid rgba(255,255,255,0.85);
  background:rgba(0,0,0,0.25);
  cursor:pointer;
  z-index:5;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  transition:background .18s ease, box-shadow .18s ease;
}

.act-nav.prev{ left:12px; }
.act-nav.next{ right:12px; }

.act-nav:hover,
.act-nav:focus-visible{
  background:rgba(255,255,255,0.92);
  box-shadow:0 14px 30px rgba(0,0,0,0.35);
}

.act-nav span{
  width:10px;
  height:10px;
  display:block;
  border-right:2px solid rgba(255,255,255,0.95);
  border-top:2px solid rgba(255,255,255,0.95);
  transform:rotate(45deg);
  transition:border-color .18s ease;
}

.act-nav.prev span{ transform:rotate(-135deg); }

.act-nav:hover span,
.act-nav:focus-visible span{ border-color:#0b1220; }

.act-dots{
  position:absolute;
  left:50%;
  bottom:12px;
  transform:translateX(-50%);
  display:flex;
  gap:8px;
  z-index:6;
}

.act-dot{
  width:8px;
  height:8px;
  border-radius:999px;
  border:0;
  background:rgba(255,255,255,0.45);
  cursor:pointer;
}
.act-dot.is-active{ background:rgba(255,255,255,0.95); }

/* =========================
   HISTÓRIA (SECÇÃO BASE)
========================= */
.section-history{
  background:#f9fafb;
  padding:110px 0 110px;
  color:#161C2D;
}

.history-header{
  text-align:center;
  max-width:800px;
  margin:0 auto 60px;
}

.history-title{
  font-size:clamp(32px, 3.6vw, 42px);
  font-weight:800;
  letter-spacing:-0.03em;
  margin:0 0 12px;
  color:#161C2D;
}

.history-subtitle{
  font-size:16px;
  color:#4b5563;
  margin:0 0 48px;
  font-weight:500;
}

.history-intro{
  font-size:15px;
  color:#4b5563;
  line-height:1.8;
  max-width:760px;
  margin:0 auto;
}

.history-section-title{
  font-size:18px;
  font-weight:800;
  margin:0 0 48px;
  color:#161C2D;
  text-align:center;
  text-transform:uppercase;
  letter-spacing:0.05em;
}

/* stack vertical (mantém compatibilidade) */
.history-stack{
  display:flex;
  flex-direction:column;
  gap:56px;
  max-width:800px;
  margin:0 auto;
}

.history-item{ text-align:left; }

.history-item-title{
  font-size:19px;
  font-weight:800;
  margin:0 0 14px;
  color:#161C2D;
}

.history-item-text{
  font-size:15px;
  color:#4b5563;
  line-height:1.8;
}

.history-quote{
  text-align:center;
  margin-top:110px;
  margin-bottom:20px;
  padding:0 20px;
}

.history-quote p{
  font-size:clamp(26px, 3.5vw, 36px);
  font-weight:800;
  letter-spacing:-0.03em;
  line-height:1.3;
  color:#161C2D;
  max-width:900px;
  margin:0 auto;
}

/* history media grid (versão antiga, mantida) */
.history-media{
  margin-top:34px;
  display:grid;
  grid-template-columns:repeat(2, minmax(0,1fr));
  gap:18px;
  max-width:900px;
  margin-left:auto;
  margin-right:auto;
}

.history-media figure{
  margin:0;
  border-radius:14px;
  overflow:hidden;
  box-shadow:0 18px 55px rgba(15,23,42,0.12);
  background:#fff;
}

.history-media img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}

@media (max-width:700px){
  .history-media{ grid-template-columns:1fr; }
}

/* =========================
   HISTÓRIA (VERSÃO 2x2 + LIGHTBOX) — MERGE SEM COLIDIR
========================= */
.section-history{ padding:84px 0; } /* override final do bloco 2 */
.history-header{ margin:0 auto 42px; max-width:920px; }
.history-title{ font-weight:900; letter-spacing:-0.02em; }

.history-grid{
  max-width:1120px;
  margin:0 auto;
  display:grid;
  grid-template-columns:repeat(2, minmax(0, 1fr));
  gap:26px;
}

.history-card{
  display:grid;
  grid-template-columns:minmax(0, 1.05fr) minmax(0, 0.95fr);
  gap:18px;
  align-items:center;
  padding:22px 0;
  border-top:1px solid rgba(15, 23, 42, 0.06);
}
.history-card:nth-child(-n+2){ border-top:0; }

.history-card--it{ grid-template-columns:minmax(0, 0.95fr) minmax(0, 1.05fr); }
.history-card--it .history-media{ order:0; }
.history-card--it .history-copy{ order:1; }

.history-copy{
  color:#334155;
  line-height:1.9;
  font-size:15px;
  text-align:justify;
  text-justify:inter-word;
  hyphens:auto;
}
.history-copy p{ margin:0; }
.history-copy p + p{ margin-top:14px; }

/* override para .history-media como “container de imagem sem fundos” no 2x2 */
.history-media{
  margin:0;
  background:transparent !important;
  box-shadow:none !important;
  border:0 !important;
  padding:0 !important;
  border-radius:0 !important;
  display:flex;
  justify-content:center;
  align-items:center;
  min-width:0;
  grid-template-columns:unset;
  gap:unset;
  max-width:none;
  margin-left:unset;
  margin-right:unset;
}

.history-media-btn{
  border:0;
  padding:0;
  margin:0;
  background:transparent !important;
  cursor:pointer;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:100%;
}

.history-media img{
  display:block;
  background:transparent !important;
  box-shadow:0 24px 70px rgba(15, 23, 42, 0.12);
  border-radius:18px;
  width:100%;
  height:auto;
  object-fit:contain;
}

.history-media.is-vertical img{
  max-height:360px;
  width:100%;
  height:auto;
}

.history-media.is-horizontal img{
  max-height:320px;
  width:100%;
  height:auto;
}

.history-media.is-crop img{
  height:360px;
  max-height:none;
  object-fit:cover;
  object-position:center;
}

@media (max-width:1100px){
  .history-grid{ gap:22px; }
  .history-media.is-vertical img{ max-height:330px; }
  .history-media.is-crop img{ height:330px; }
}

@media (max-width:980px){
  .section-history{ padding:64px 0; }
  .history-grid{ grid-template-columns:1fr; gap:18px; }
  .history-card,
  .history-card--it{ grid-template-columns:1fr; gap:14px; padding:18px 0; }
  .history-card:nth-child(-n+2){ border-top:1px solid rgba(15, 23, 42, 0.06); }
  .history-card:first-child{ border-top:0; }
  .history-copy{ font-size:14.5px; }
  .history-media.is-vertical img{ max-height:440px; }
  .history-media.is-crop img{ height:auto; max-height:440px; object-fit:cover; }
  .history-media.is-horizontal img{ max-height:420px; }
}

/* Lightbox */
.history-lightbox{
  position:fixed;
  inset:0;
  z-index:9999;
  display:none;
}
.history-lightbox[aria-hidden="false"]{ display:block; }

.history-lightbox-overlay{
  position:absolute;
  inset:0;
  background:rgba(2, 6, 23, 0.72);
  backdrop-filter:blur(6px);
}

.history-lightbox-panel{
  position:relative;
  width:min(1100px, calc(100vw - 28px));
  height:min(86vh, 780px);
  margin:7vh auto 0;
  display:grid;
  place-items:center;
}

.history-lb-figure{
  margin:0;
  width:100%;
  height:100%;
  display:grid;
  place-items:center;
}

.history-lb-img{
  width:100%;
  height:100%;
  object-fit:contain;
  background:transparent;
  border-radius:16px;
}

.history-lb-close{
  position:absolute;
  top:-14px;
  right:-14px;
  width:44px;
  height:44px;
  border-radius:999px;
  border:0;
  cursor:pointer;
  background:rgba(255,255,255,0.92);
  box-shadow:0 18px 40px rgba(0,0,0,0.35);
  font-size:26px;
  line-height:44px;
}

.history-lb-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:46px;
  height:46px;
  border-radius:999px;
  border:0;
  cursor:pointer;
  background:rgba(255,255,255,0.92);
  box-shadow:0 18px 40px rgba(0,0,0,0.35);
  font-size:34px;
  line-height:46px;
}
.history-lb-nav.prev{ left:-10px; }
.history-lb-nav.next{ right:-10px; }

@media (max-width:640px){
  .history-lightbox-panel{
    width:calc(100vw - 18px);
    height:84vh;
    margin-top:8vh;
  }
  .history-lb-nav.prev{ left:6px; }
  .history-lb-nav.next{ right:6px; }
  .history-lb-close{ top:6px; right:6px; }
}

/* =========================
   CALENDÁRIO TRADIÇÕES (ANUAL)
========================= */
.section-calendar-traditions{
  background:#b10b2d;
  padding:90px 0 120px;
  color:#ffffff;
}

.calendar-traditions-header{
  text-align:left;
  max-width:1200px;
  margin:0 auto 48px;
}

.calendar-traditions-title{
  font-size:clamp(30px, 3vw, 36px);
  font-weight:800;
  letter-spacing:-0.03em;
}

.calendar-traditions-grid{
  display:grid;
  grid-template-columns:repeat(3, minmax(0, 1fr));
  gap:32px;
}

.calendar-card{
  background:#ffffff;
  border-radius:18px;
  overflow:hidden;
  display:flex;
  flex-direction:column;
  box-shadow:0 24px 55px rgba(0, 0, 0, 0.35);
  transform:translateY(0);
  transition:transform 0.22s ease, box-shadow 0.22s ease;
}

.calendar-card:hover{
  transform:translateY(-4px);
  box-shadow:0 30px 70px rgba(0, 0, 0, 0.45);
}

.calendar-card-image{
  position:relative;
  width:100%;
  padding-top:60%;
  overflow:hidden;
}

.calendar-card-image img{
  position:absolute;
  inset:0;
  width:100%;
  height:100%;
  object-fit:cover;
  transform:scale(1.03);
  transition:transform 0.45s ease;
}

.calendar-card:hover .calendar-card-image img{ transform:scale(1.07); }

.calendar-card-body{
  display:flex;
  align-items:flex-start;
  gap:18px;
  padding:20px 22px 24px;
  color:#020617;
}

.calendar-card-date{
  min-width:48px;
  text-align:left;
}

.calendar-card-date .month{
  display:block;
  font-size:11px;
  font-weight:700;
  letter-spacing:0.16em;
  text-transform:uppercase;
  color:#b10b2d;
  margin-bottom:2px;
}

.calendar-card-date .day{
  display:block;
  font-size:22px;
  font-weight:700;
  color:#111827;
}

.calendar-card-info h3{
  font-size:16px;
  font-weight:700;
  margin:0 0 6px;
  color:#111827;
}

.calendar-card-info p{
  font-size:14px;
  line-height:1.6;
  color:#4b5563;
  margin:0;
}

@media (max-width:1024px){
  .calendar-traditions-grid{ grid-template-columns:repeat(2, minmax(0, 1fr)); }
}

@media (max-width:700px){
  .section-calendar-traditions{ padding:72px 0 90px; }
  .calendar-traditions-header{ margin-bottom:36px; }
  .calendar-traditions-grid{ grid-template-columns:minmax(0, 1fr); }
}

/* =========================
   GALERIA (SLIDER)
========================= */
.section-gallery{
  background:#262626;
  color:#ffffff;
  padding:80px 0 90px;
  position:relative;
}

.section-gallery-top-border,
.section-gallery-bottom-border{
  position:absolute;
  left:0;
  right:0;
  height:6px;
  background:#b10b2d;
}

.section-gallery-top-border{ top:0; }
.section-gallery-bottom-border{ bottom:0; }

.gallery-wrap{ position:relative; z-index:1; }

.gallery-header{ text-align:center; margin-bottom:48px; }

.gallery-title{
  font-size:clamp(30px, 3vw, 36px);
  font-weight:800;
  letter-spacing:-0.03em;
}

.gallery-slider{
  position:relative;
  max-width:1100px;
  margin:0 auto;
  display:flex;
  align-items:center;
  gap:18px;
}

.gallery-viewport{ flex:1; overflow:hidden; }

.gallery-track{
  display:flex;
  transition:transform 0.45s ease;
  will-change:transform;
}

.gallery-item{
  flex:0 0 calc(100% / 3);
  padding:4px 14px;
  display:flex;
  justify-content:center;
  align-items:center;
  position:relative;
}

.gallery-item img{
  display:block;
  width:100%;
  max-width:340px;
  border-radius:18px;
  box-shadow:0 26px 70px rgba(0, 0, 0, 0.7);
  object-fit:cover;
}

.gallery-item::after{
  content:"";
  position:absolute;
  left:14px;
  right:14px;
  bottom:-24px;
  height:32px;
  background:radial-gradient(ellipse at center, rgba(0, 0, 0, 0.55), transparent 70%);
  filter:blur(2px);
  z-index:-1;
}

.gallery-arrow{
  width:44px;
  height:44px;
  border-radius:999px;
  border:2px solid #ffffff;
  background:transparent;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
  flex-shrink:0;
  transition:background 0.2s ease, transform 0.2s ease, box-shadow 0.2s ease, border-color 0.2s ease;
}

.gallery-arrow span{
  width:10px;
  height:10px;
  border-top:2px solid #ffffff;
  border-right:2px solid #ffffff;
  transform:rotate(45deg);
  display:block;
}

.gallery-arrow-prev span{ transform:rotate(-135deg); }
.gallery-arrow-next span{ transform:rotate(45deg); }

.gallery-arrow:hover,
.gallery-arrow:focus-visible{
  background:#ffffff;
  border-color:#ffffff;
  transform:translateY(-1px);
  box-shadow:0 10px 30px rgba(0, 0, 0, 0.6);
}

.gallery-arrow:hover span,
.gallery-arrow:focus-visible span{ border-color:#262626; }

.gallery-arrow[disabled]{
  opacity:0.45;
  cursor:default;
  transform:none;
  box-shadow:none;
}

@media (max-width:1024px){
  .gallery-slider{ max-width:900px; }
  .gallery-item{ flex:0 0 calc(100% / 2); }
}

@media (max-width:768px){
  .section-gallery{ padding:64px 0 80px; }
  .gallery-slider{ gap:10px; }
  .gallery-item{ flex:0 0 100%; padding:4px 8px; }
  .gallery-arrow{ width:38px; height:38px; }
}

@media (max-width:480px){
  .gallery-title{ font-size:26px; }
  .gallery-item img{ max-width:280px; }
}

/* =========================
   TORNA-TE SÓCIO
========================= */
.section-join{
  background:#b10b2d;
  color:#ffffff;
}

.join-top{
  background:#b10b2d;
  padding:34px 0 28px;
  text-align:center;
}

.join-title{
  font-size:clamp(30px, 3vw, 38px);
  font-weight:800;
  letter-spacing:-0.03em;
}

.join-body{
  background:#666666;
  padding:80px 0 90px;
}

.join-inner{
  max-width:760px;
  margin:0 auto;
  text-align:center;
}

.join-subtitle{
  font-size:20px;
  color:#e5e5e5;
  margin:0 0 48px;
}

.join-content{
  text-align:left;
  margin:0 auto 40px;
}

.join-benefits-heading{
  font-size:18px;
  font-weight:700;
  margin:0 0 18px;
  color:#ffffff;
}

.join-benefits-list{
  list-style:none;
  padding:0;
  margin:0;
}

.join-benefits-list li{
  position:relative;
  padding-left:18px;
  margin-bottom:14px;
  font-size:15px;
  color:#f5f5f5;
}

.join-benefits-list li::before{
  content:"";
  position:absolute;
  left:0;
  top:0.7em;
  width:6px;
  height:6px;
  border-radius:999px;
  background:#ffffff;
}

.join-cta{ margin-top:36px; text-align:center; }
.join-btn{ min-width:260px; }

@media (max-width:768px){
  .join-body{ padding:64px 0 80px; }
  .join-inner{ max-width:100%; }
  .join-content{ padding:0 6px; }
}

/* =========================
   CONTACTOS
========================= */
.section-contact{
  background:#ffffff;
  color:#020617;
  padding:80px 0 0;
}

.contact-header-wrap{
  text-align:center;
  margin-bottom:40px;
}

.contact-title{
  font-size:clamp(30px, 3vw, 36px);
  font-weight:800;
  letter-spacing:-0.03em;
  margin:0 0 12px;
  color:#020617;
}

.contact-subtitle{
  font-size:18px;
  color:#4b5563;
  margin:0;
}

.contact-main{
  position:relative;
  padding-bottom:40px;
  z-index:3;
}

.contact-main-inner{
  max-width:960px;
  margin:0 auto;
  display:grid;
  grid-template-columns:minmax(0, 1.3fr) minmax(0, 1fr);
  gap:40px;
  align-items:flex-start;
  position:relative;
  z-index:3;
}

.contact-card{
  background:#ffffff;
  border-radius:14px 14px 0 0;
  box-shadow:0 24px 70px rgba(15, 23, 42, 0.25);
  padding:26px 26px 24px;
  position:relative;
  z-index:4;
}

.contact-card form{
  display:flex;
  flex-direction:column;
  gap:18px;
}

.contact-field label{
  display:block;
  font-size:13px;
  font-weight:600;
  margin-bottom:6px;
  color:#111827;
}

.contact-field input,
.contact-field textarea{
  width:100%;
  border-radius:8px;
  border:1px solid #e5e7eb;
  padding:10px 12px;
  font-size:14px;
  font-family:inherit;
  outline:none;
  transition:border-color 0.18s ease, box-shadow 0.18s ease;
  background:#f9fafb;
}

.contact-field textarea{
  resize:vertical;
  min-height:90px;
}

.contact-field input:focus,
.contact-field textarea:focus{
  border-color:#b10b2d;
  box-shadow:0 0 0 1px rgba(177, 11, 45, 0.35);
  background:#ffffff;
}

.contact-field.has-error input,
.contact-field.has-error textarea{
  border-color:#dc2626;
  box-shadow:0 0 0 1px rgba(220, 38, 38, 0.25);
  background:#fef2f2;
}

.field-error{
  display:none;
  margin-top:4px;
  font-size:12px;
  color:#dc2626;
}
.contact-field.has-error .field-error{ display:block; }

.contact-actions{
  text-align:center;
  margin-top:6px;
}

.contact-submit{
  width:100%;
  max-width:320px;
}

.contact-feedback{
  margin-top:10px;
  font-size:14px;
  text-align:center;
  min-height:18px;
}

.contact-feedback.success{ color:#059669; }
.contact-feedback.error{ color:#dc2626; }

.contact-info{ padding-top:26px; }

.contact-info-item{
  display:flex;
  align-items:flex-start;
  gap:14px;
  margin-bottom:24px;
}

.contact-icon{
  width:32px;
  height:32px;
  border-radius:999px;
  background:#fee2e2;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
}

.contact-icon svg{
  width:18px;
  height:18px;
  fill:#b10b2d;
}

.contact-info-text p{
  font-size:14px;
  color:#4b5563;
  margin:0;
}

/* mapa */
.contact-map-wrapper{
  margin-top:-180px;
  height:320px;
  overflow:hidden;
  position:relative;
  z-index:1;
}

.contact-map-wrapper iframe{
  width:100%;
  height:100%;
  border:0;
}

@media (max-width:900px){
  .contact-main-inner{
    grid-template-columns:minmax(0, 1fr);
    gap:30px;
  }
  .contact-card{ border-radius:14px; }
  .contact-info{ padding-top:0; }
  .contact-map-wrapper{ margin-top:0 !important; height:260px; }
}

@media (max-width:600px){
  .section-contact{ padding-top:64px; }
  .contact-card{ padding:22px 18px 20px; }
}

/* =========================
   FOOTER
========================= */
.site-footer{
  background:#ffffff;
  color:#111827;
  padding:24px 0 18px;
  border-top:1px solid #e5e7eb;
}

.footer-inner{
  max-width:var(--largura-max);
  margin:0 auto;
  padding:0 20px 8px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  font-size:13px;
}

.footer-copy{ color:#111827; line-height:1.5; }
.footer-heart{ color:#e11d48; }

.footer-social{
  display:flex;
  align-items:center;
  gap:14px;
}

.footer-social a{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:26px;
  height:26px;
  border-radius:999px;
  font-size:13px;
  font-weight:600;
  text-decoration:none;
  transition:transform 0.18s ease, box-shadow 0.18s ease, opacity 0.18s ease;
}

.footer-social a.twitter{ background:#0f172a; color:#ffffff; }
.footer-social a.facebook{ background:#1877F2; color:#ffffff; }
.footer-social a.instagram{ border:1.5px solid #111827; color:#111827; background:transparent; }
.footer-social a.linkedin{ background:#111827; color:#ffffff; }

.footer-social a:hover,
.footer-social a:focus-visible{
  transform:translateY(-1px);
  box-shadow:0 10px 25px rgba(15, 23, 42, 0.25);
  opacity:0.9;
}

.footer-bottom{
  text-align:center;
  font-size:12px;
  color:#6b7280;
}

.footer-bottom span.dev-brand{
  font-weight:600;
  color:#16a34a;
}

@media (max-width:640px){
  .footer-inner{
    flex-direction:column;
    align-items:flex-start;
  }
  .footer-bottom{ margin-top:6px; }
}

/* =========================
   TRADIÇÕES (TABS + TOOLTIP)
========================= */
.section-traditions{
  background:#b10b2d;
  color:#fff;
  padding:110px 0 120px;
}

.traditions-header{
  text-align:center;
  max-width:720px;
  margin:0 auto 70px;
}

.traditions-title{
  font-size:clamp(32px, 3.4vw, 40px);
  font-weight:800;
  letter-spacing:-0.03em;
  margin:0 0 16px;
}

.traditions-subtitle{
  font-size:17px;
  margin:0 0 18px;
  opacity:.92;
}

.traditions-intro{
  font-size:15px;
  line-height:1.7;
  max-width:520px;
  margin:0 auto;
  opacity:.92;
}

.traditions-shell{
  position:relative;
  max-width:980px;
  margin:0 auto;
}

.traditions-list{
  display:flex;
  flex-direction:column;
  gap:18px;
}

.tradition-item{
  background:#fff;
  color:#020617;
  border-radius:12px;
  border:0;
  padding:26px 28px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  text-align:left;
  font-size:16px;
  font-weight:650;
  cursor:pointer;
  box-shadow:0 20px 45px rgba(0,0,0,.25);
  transition:transform .18s ease, box-shadow .18s ease, background .18s ease;
}

.tradition-item .trad-title{ flex:1; padding-right:14px; }

.tradition-item .trad-arrow{
  width:28px;
  height:28px;
  border-radius:999px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  position:relative;
}

.tradition-item .trad-arrow::before{
  content:"";
  width:8px;
  height:8px;
  border-right:2px solid #b10b2d;
  border-bottom:2px solid #b10b2d;
  transform:rotate(-45deg);
  transition:transform .18s ease, border-color .18s ease;
}

.tradition-item:hover,
.tradition-item:focus-visible{
  transform:translateY(-2px);
  box-shadow:0 26px 55px rgba(0,0,0,.3);
}

.tradition-item.is-active{ background:#fff6f9; }
.tradition-item.is-active .trad-arrow::before{
  transform:rotate(45deg);
  border-color:#e11d48;
}

/* tooltip */
.trad-tooltip{
  position:absolute;
  z-index:50;
  width:min(640px, calc(100vw - 32px));
  background:#ffffff;
  color:#020617;
  border-radius:14px;
  box-shadow:0 30px 90px rgba(0,0,0,.35);
  border:1px solid rgba(2,6,23,.08);
  opacity:0;
  transform:translateY(8px) scale(.98);
  pointer-events:none;
  transition:opacity .16s ease, transform .16s ease;
}

.trad-tooltip.is-open{
  opacity:1;
  transform:translateY(0) scale(1);
  pointer-events:auto;
}

.trad-tooltip-close{
  position:absolute;
  top:10px;
  right:10px;
  width:36px;
  height:36px;
  border-radius:10px;
  border:0;
  background:#0b1220;
  color:#fff;
  cursor:pointer;
  font-size:20px;
  line-height:1;
}

.trad-tooltip-inner{
  display:grid;
  grid-template-columns:280px minmax(0, 1fr);
  gap:18px;
  padding:18px;
  align-items:start;
}

.trad-tooltip-media{
  border-radius:12px;
  overflow:hidden;
  background:transparent;
}

.trad-tooltip-media .carousel{
  position:relative;
  width:100%;
  aspect-ratio:4 / 3;
  border-radius:12px;
  overflow:hidden;
  background:transparent;
}

.trad-tooltip-media .carousel-track{
  display:flex;
  width:100%;
  height:100%;
  transform:translateX(0);
  transition:transform .42s ease;
  will-change:transform;
}

.trad-tooltip-media .carousel-slide{
  flex:0 0 100%;
  height:100%;
}

.trad-tooltip-media .carousel-slide img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  background:transparent;
}

.trad-tooltip-media .carousel-btn{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:40px;
  height:40px;
  border-radius:999px;
  border:2px solid rgba(2,6,23,.25);
  background:rgba(255,255,255,.9);
  cursor:pointer;
  z-index:3;
  display:inline-flex;
  align-items:center;
  justify-content:center;
}

.trad-tooltip-media .carousel-btn.prev{ left:10px; }
.trad-tooltip-media .carousel-btn.next{ right:10px; }

.trad-tooltip-media .carousel-btn span{
  width:10px;
  height:10px;
  border-right:2px solid #0b1220;
  border-top:2px solid #0b1220;
  transform:rotate(45deg);
}

.trad-tooltip-media .carousel-btn.prev span{ transform:rotate(-135deg); }

.trad-tooltip-media .carousel-dots{
  position:absolute;
  left:50%;
  bottom:10px;
  transform:translateX(-50%);
  display:flex;
  gap:8px;
  z-index:3;
}

.trad-tooltip-media .carousel-dot{
  width:8px;
  height:8px;
  border-radius:999px;
  border:0;
  background:rgba(2,6,23,.25);
  cursor:pointer;
}
.trad-tooltip-media .carousel-dot.is-active{ background:#0b1220; }

.trad-tooltip-content h3{
  margin:0 0 10px;
  font-size:18px;
  font-weight:800;
  color:#0b1220;
  letter-spacing:-0.01em;
}

.trad-tooltip-content ul{
  margin:0;
  padding-left:18px;
  color:#334155;
  line-height:1.7;
  font-size:14px;
}
.trad-tooltip-content li{ margin:6px 0; }

.trad-tooltip-arrow{
  position:absolute;
  width:14px;
  height:14px;
  background:#fff;
  transform:rotate(45deg);
  border-left:1px solid rgba(2,6,23,.08);
  border-top:1px solid rgba(2,6,23,.08);
  left:24px;
  top:24px;
}

@media (max-width:860px){
  .section-traditions{ padding:90px 0 100px; }
  .tradition-item{ padding:22px 20px; }

  .trad-tooltip{
    position:static;
    width:100%;
    margin-top:18px;
    transform:none;
    opacity:1;
    pointer-events:auto;
    display:none;
  }
  .trad-tooltip.is-open{ display:block; }
  .trad-tooltip-arrow{ display:none; }

  .trad-tooltip-inner{ grid-template-columns:1fr; }
  .trad-tooltip-media .carousel{ aspect-ratio:16 / 10; }
}

/* trad-panel (media + listas) */
.trad-panel .trad-media{
  margin-top:16px;
  margin-bottom:16px;
}

.trad-panel .trad-media .carousel{
  border-radius:14px;
  box-shadow:0 22px 55px rgba(0,0,0,0.18);
}

.trad-panel ul{
  margin-top:10px;
  padding-left:18px;
  color:#4b5563;
  line-height:1.7;
  font-size:15px;
}
.trad-panel li{ margin:6px 0; }

/* =========================
   BIBLIOTECA / FONOTECA (bf-*)
========================= */
.bf-section{
  background:var(--bf-bg);
  color:var(--bf-ink);
  padding:clamp(56px, 6vw, 96px) 0;
  position:relative;
  overflow:clip;
}

.bf-section::before{
  content:"";
  position:absolute;
  inset:0;
  pointer-events:none;
  background:
    radial-gradient(900px 280px at 50% -40px, rgba(177,15,46,.10), transparent 62%),
    radial-gradient(700px 260px at 12% 26%, rgba(0,0,0,.04), transparent 60%),
    radial-gradient(700px 260px at 88% 30%, rgba(0,0,0,.03), transparent 60%);
}

.bf-wrap{
  max-width:var(--bf-wrap);
  margin:0 auto;
  padding:0 22px;
  position:relative;
  z-index:1;
}

.bf-header{
  text-align:center;
  margin:0 auto 36px;
  max-width:900px;
}

.bf-title{
  margin:0;
  font-weight:900;
  letter-spacing:-0.03em;
  font-size:clamp(30px, 3.2vw, 46px);
  line-height:1.05;
  display:inline-block;
  position:relative;
  padding-bottom:14px;
}

.bf-title::after{
  content:"";
  position:absolute;
  left:50%;
  bottom:0;
  transform:translateX(-50%);
  width:90px;
  height:4px;
  border-radius:999px;
  background:linear-gradient(90deg, var(--bf-accent), rgba(0,0,0,.85));
  box-shadow:0 10px 22px rgba(177,15,46,.20);
}

.bf-lead{
  margin:14px auto 0;
  max-width:720px;
  color:var(--bf-muted);
  line-height:1.7;
  font-size:15px;
}

.bf-grid{
  display:grid;
  grid-template-columns:repeat(12, 1fr);
  gap:var(--bf-gap);
}

.bf-card{ grid-column:span 4; }

.bf-cardBtn{
  width:100%;
  border:1px solid rgba(14,18,32,.12);
  background:#fff;
  border-radius:var(--bf-radius);
  overflow:hidden;
  padding:0;
  cursor:pointer;
  text-align:left;
  box-shadow:var(--bf-shadow);
  display:grid;
  grid-template-rows:var(--bf-imgH) auto;
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  will-change:transform;
}

@media (hover:hover){
  .bf-cardBtn:hover{
    transform:translateY(-5px);
    box-shadow:var(--bf-shadowHover);
    border-color:rgba(177,15,46,.30);
  }
}

.bf-cardBtn:focus-visible{
  outline:3px solid rgba(177,15,46,.55);
  outline-offset:4px;
  border-radius:calc(var(--bf-radius) + 4px);
}

.bf-media{
  position:relative;
  background:
    radial-gradient(1000px 260px at 30% 10%, rgba(177,15,46,.16), transparent 60%),
    linear-gradient(180deg, rgba(0,0,0,.08), rgba(0,0,0,.02));
}

.bf-media img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
  transform:scale(1.03);
  transition:transform .28s ease, filter .28s ease;
}

@media (hover:hover){
  .bf-cardBtn:hover .bf-media img{
    transform:scale(1.08);
    filter:saturate(1.06) contrast(1.02);
  }
}

.bf-media img[data-fit="contain"]{
  object-fit:contain;
  background:#fff;
  transform:none;
}

.bf-body{
  padding:18px 18px 16px;
  display:grid;
  gap:8px;
}

.bf-kicker{
  font-size:11px;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:rgba(14,18,32,.62);
  font-weight:800;
  display:inline-flex;
  align-items:center;
  gap:10px;
}

.bf-kicker::before{
  content:"";
  width:10px;
  height:10px;
  border-radius:999px;
  background:linear-gradient(180deg, var(--bf-accent), rgba(0,0,0,.85));
  box-shadow:0 8px 16px rgba(177,15,46,.20);
}

.bf-cardTitle{
  font-size:19px;
  font-weight:900;
  letter-spacing:-0.02em;
  line-height:1.2;
  margin:0;
  color: #000;
}

.bf-desc{
  font-size:14px;
  line-height:1.65;
  color:var(--bf-muted);
  margin:0;
}

.bf-cta{
  margin-top:4px;
  display:inline-flex;
  align-items:center;
  gap:10px;
  font-weight:900;
  font-size:13px;
  color:var(--bf-accent);
  user-select:none;
}

.bf-cta::after{
  content:"→";
  transition:transform .18s ease;
}

@media (hover:hover){
  .bf-cardBtn:hover .bf-cta::after{ transform:translateX(5px); }
}

@media (max-width:980px){
  .bf-card{ grid-column:span 6; }
}
@media (max-width:640px){
  .bf-section{ padding:46px 0; }
  .bf-grid{ gap:16px; }
  .bf-card{ grid-column:span 12; }
  :root{ --bf-imgH:210px; }
}

/* Modal bf-* */
.bf-modal{
  position:fixed;
  inset:0;
  z-index:var(--bf-modalZ);
  display:none;
}
.bf-modal[aria-hidden="false"]{ display:block; }

.bf-modalOverlay{
  position:absolute;
  inset:0;
  background:var(--bf-overlay);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
}

.bf-modalPanel{
  position:relative;
  width:min(1020px, calc(100vw - 40px));
  max-height:min(88vh, 980px);
  margin:6vh auto 0;
  background:var(--bf-panelBg);
  border:1px solid var(--bf-panelBorder);
  border-radius:var(--bf-radius);
  box-shadow:var(--bf-panelShadow);
  overflow:hidden;
  display:grid;
  grid-template-rows:auto 1fr;
  animation:bfModalIn .16s ease-out;
}

@keyframes bfModalIn{
  from{ transform:translateY(12px); opacity:0; }
  to{ transform:translateY(0); opacity:1; }
}

.bf-modalClose{
  position:absolute;
  top:12px;
  left:12px;
  width:42px;
  height:42px;
  border-radius:999px;
  border:1px solid rgba(14,18,32,.14);
  background:#fff;
  cursor:pointer;
  font-size:22px;
  line-height:1;
  display:grid;
  place-items:center;
  box-shadow:0 12px 30px rgba(0,0,0,.16);
}
.bf-modalClose:hover{ border-color:rgba(177,15,46,.35); }

.bf-modalHeader{
  padding:18px 18px 14px 62px;
  border-bottom:1px solid rgba(14,18,32,.10);
  display:grid;
  gap:6px;
}

.bf-modalTitle{
  margin:0;
  font-weight:950;
  letter-spacing:-0.02em;
  font-size:18px;
}

.bf-modalSub{
  margin:0;
  color:var(--bf-muted);
  font-size:13px;
  line-height:1.5;
}

.bf-modalBody{
  padding:16px 18px 18px;
  overflow:auto;
  display:grid;
  gap:16px;
}

.bf-modalText p{
  margin:0 0 8px 0;
  font-weight:900;
}
.bf-modalText ul{
  margin:0;
  padding-left:18px;
  color:var(--bf-muted);
  line-height:1.75;
  font-size:14px;
}

/* Carousel bf-* */
.bf-carousel{
  position:relative;
  border-radius:var(--bf-radius2);
  overflow:hidden;
  border:1px solid rgba(14,18,32,.10);
  background:#0b0f1a;
}

.bf-viewport{
  height:var(--bf-carouselH);
  overflow:auto hidden;
  scroll-snap-type:x mandatory;
  -webkit-overflow-scrolling:touch;
  scrollbar-width:none;
}
.bf-viewport::-webkit-scrollbar{ display:none; }

.bf-track{ display:flex; width:max-content; }

.bf-slide{
  width:min(920px, calc(100vw - 90px));
  height:var(--bf-carouselH);
  scroll-snap-align:start;
  display:grid;
  place-items:center;
  background:#0b0f1a;
}

.bf-slide img{
  width:100%;
  height:100%;
  display:block;
  object-fit:cover;
}

.bf-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:46px;
  height:46px;
  border-radius:999px;
  border:1px solid rgba(255,255,255,.18);
  background:rgba(0,0,0,.38);
  color:#fff;
  cursor:pointer;
  display:grid;
  place-items:center;
  font-size:26px;
  line-height:1;
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
}
.bf-prev{ left:12px; }
.bf-next{ right:12px; }
.bf-nav:hover{
  background:rgba(177,15,46,.62);
  border-color:rgba(255,255,255,.22);
}

.bf-dots{
  position:absolute;
  left:50%;
  bottom:12px;
  transform:translateX(-50%);
  display:flex;
  gap:8px;
  padding:7px 10px;
  border-radius:999px;
  background:rgba(0,0,0,.38);
  border:1px solid rgba(255,255,255,.12);
  backdrop-filter:blur(7px);
  -webkit-backdrop-filter:blur(7px);
}

.bf-dot{
  width:9px;
  height:9px;
  border-radius:999px;
  border:0;
  cursor:pointer;
  background:rgba(255,255,255,.40);
}
.bf-dot.is-active{ background:#fff; }

@media (max-width:640px){
  .bf-modalPanel{ margin-top:4vh; max-height:90vh; }
  .bf-slide{ width:calc(100vw - 60px); }
}

/* =========================
   RESPONSIVO GLOBAL (HEADER/HERO/ATIVIDADES)
========================= */
@media (max-width:900px){
  .nav-links{ display:none; }
  .header-cta{ display:none; }
  .hamburger{ display:inline-flex; }

  .hero-content{ padding-top:32px; }
  .hero-title{ font-size:clamp(28px, 7vw, 38px); }
  .hero-subtitle{ font-size:18px; }
  .hero-description{ font-size:14px; }

  .section-activities{ padding:72px 0 80px; }
  .activities-grid{
    grid-template-columns:repeat(2, minmax(0, 1fr));
    gap:28px 24px;
  }

  /* modal .modal-* */
  .modal-body{
    grid-template-columns:1fr;
    height:auto;
    max-height:calc(86vh - 64px);
  }
  .modal-left{ padding:12px; }
  .modal-left .carousel{ max-width:100%; }
  .modal-right{ max-height:40vh; }

  /* modal act-* */
  .act-body{
    grid-template-columns:1fr;
    height:auto;
    max-height:calc(min(86vh, 820px) - 74px);
  }
  .act-media{ height:42vh; }
  .act-content{ max-height:40vh; }

  /* contacto map */
  .contact-map-wrapper{ margin-top:0 !important; height:260px; }
}

@media (max-width:640px){
  .activities-grid{ grid-template-columns:1fr; }
}

@media (max-width:480px){
  .brand span.brand-main{ font-size:13px; }
  .brand span.brand-top{ display:none; }
  .section-activities-header{ margin-bottom:40px; }
}

/* =========================
   RESPONSIVO HISTÓRIA (STACK)
========================= */
@media (max-width:768px){
  .section-history{ padding:80px 0 90px; }
  .history-stack{ gap:40px; }
  .history-quote{ margin-top:80px; }
}