  :root {
    --red: #C23B3B;
    --red-dark: #A52F2F;
    --black: #121212;
    --gray: #6B6B6B;
    --line: #E4E4E4;
    --soft: #F4F4F4;
    --white: #FFFFFF;
    --max: 1180px;
    --gutter: clamp(20px, 5vw, 72px);
  }
  * { box-sizing: border-box; margin: 0; padding: 0; }
  html { scroll-behavior: smooth; scroll-padding-top: 88px; }
  body {
    font-family: 'Poppins', system-ui, sans-serif;
    font-weight: 300;
    color: var(--black);
    background: var(--white);
    line-height: 1.6;
    -webkit-font-smoothing: antialiased;
  }
  img { display: block; max-width: 100%; }
  a { color: inherit; }
  .wrap { max-width: var(--max); margin: 0 auto; padding: 0 var(--gutter); }

  /* ---------- títulos no padrão da identidade ---------- */
  .title { font-size: clamp(2.2rem, 5.2vw, 3.6rem); line-height: 1.08; letter-spacing: -0.01em; }
  .title span { display: block; }
  .title .l { font-weight: 300; }
  .title .b { font-weight: 700; color: var(--red); }
  .eyebrow { font-size: .85rem; color: var(--gray); letter-spacing: .02em; margin-bottom: 28px; }

  section { padding: clamp(80px, 11vw, 140px) 0; }

  /* ---------- botões ---------- */
  .btn {
    display: inline-flex; align-items: center; gap: 10px;
    font: 600 .95rem 'Poppins', sans-serif;
    padding: 14px 26px; border-radius: 999px; text-decoration: none;
    border: 2px solid var(--red); cursor: pointer; transition: .2s;
  }
  .btn-red { background: var(--red); color: var(--white); }
  .btn-red:hover { background: var(--red-dark); border-color: var(--red-dark); }
  .btn-line { background: transparent; color: var(--red); }
  .btn-line:hover { background: var(--red); color: var(--white); }

  /* ---------- cabeçalho ---------- */
  header {
    position: sticky; top: 0; z-index: 10;
    background: rgba(255,255,255,.94); backdrop-filter: blur(8px);
    border-bottom: 1px solid transparent; transition: border-color .2s;
  }
  header.scrolled { border-color: var(--line); }
  .nav { display: flex; align-items: center; justify-content: space-between; height: 80px; }
  .nav .logo img { height: 30px; width: auto; }
  .nav ul { display: flex; gap: 34px; list-style: none; align-items: center; }
  .nav ul a { text-decoration: none; font-size: .95rem; font-weight: 400; }
  .nav ul a:hover { color: var(--red); }
  .nav .btn { padding: 10px 20px; font-size: .85rem; }
  .menu-toggle { display: none; background: none; border: 0; width: 40px; height: 40px; cursor: pointer; }
  .menu-toggle span { display: block; height: 2px; background: var(--black); margin: 7px 6px; transition: .2s; }

  /* ---------- início ---------- */
  .hero { padding-top: clamp(40px, 6vw, 80px); }
  .hero-grid { display: grid; grid-template-columns: 1.05fr 1fr; gap: clamp(32px, 6vw, 88px); align-items: center; }
  .hero .title { font-size: clamp(1.85rem, 3.9vw, 3.1rem); }
  .hero .title .nw { display: block; white-space: nowrap; } /* "igreja holiness" / "de campo grande", sem quebras soltas */
  .hero p.lead { font-size: clamp(1.05rem, 1.6vw, 1.25rem); color: var(--gray); margin: 28px 0 40px; max-width: 36ch; }
  .hero p.lead strong { color: var(--red); font-weight: 600; }
  .hero .ctas { margin-top: 40px; display: flex; gap: 14px; flex-wrap: wrap; }
  .hero-photo { aspect-ratio: 1289 / 1221; overflow: hidden; }
  .hero-photo img { width: 100%; height: 100%; object-fit: cover; }
  .steps-strip { display: flex; gap: 44px; margin-top: 56px; align-items: center; }
  .steps-strip img { height: 46px; width: auto; }

  /* ---------- programação ---------- */
  #programacao { background: var(--soft); }
  .sched-head { display: flex; justify-content: space-between; align-items: end; gap: 24px; flex-wrap: wrap; margin-bottom: 56px; }
  .sched-head p { color: var(--gray); max-width: 36ch; }
  .sched { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
  .card { background: var(--white); padding: 36px 32px 34px; border-top: 4px solid var(--red); }
  .card .day { color: var(--red); font-weight: 700; font-size: 1.05rem; text-transform: lowercase; }
  .card .time { font-weight: 700; font-size: 3rem; line-height: 1; margin: 10px 0 22px; letter-spacing: -0.02em; }
  .card .time small { font-size: 1.4rem; font-weight: 600; }
  .card h3 { font-weight: 600; font-size: 1.2rem; }
  .card .place { color: var(--gray); font-size: .95rem; margin-top: 2px; }
  .card .tag { display: inline-flex; align-items: center; gap: 8px; margin-top: 22px; font-size: .8rem; color: var(--gray); }
  .card .tag img { height: 22px; width: auto; }

  /* ---------- propósito ---------- */
  .purpose-intro { display: grid; grid-template-columns: 1fr 1fr; gap: 48px; align-items: end; margin-bottom: 72px; }
  .purpose-intro p { color: var(--gray); font-size: 1.05rem; max-width: 42ch; }
  .path { display: grid; grid-template-columns: 1fr auto 1fr auto 1fr; align-items: start; }
  .path .arrow { width: clamp(28px, 4vw, 64px); height: 1px; background: var(--red); position: relative; margin-top: 64px; }
  .path .arrow::after { content: ''; position: absolute; right: 0; top: -4px; border: 4px solid transparent; border-left: 7px solid var(--red); border-right: 0; }
  .step { padding: 0 clamp(8px, 2vw, 28px); }
  .step .icon { height: 128px; display: flex; align-items: flex-end; margin-bottom: 30px; }
  .step .icon img { height: 112px; width: auto; }
  .step .n { font-size: .8rem; color: var(--gray); letter-spacing: .04em; }
  .step h3 { font-weight: 700; font-size: 1.3rem; margin: 2px 0 4px; }
  .step .rule { width: 46px; height: 2px; background: var(--black); margin: 14px 0 18px; }
  .step p { font-size: 1rem; }
  .step blockquote { font-style: italic; color: var(--gray); margin-top: 20px; font-size: .95rem; }
  .step cite { display: block; font-style: normal; font-weight: 700; color: var(--black); font-size: .85rem; margin-top: 8px; }

  .where { margin-top: 110px; padding-top: 80px; border-top: 1px solid var(--line); text-align: center; }
  .where .title { font-size: clamp(2rem, 4.4vw, 3rem); }
  .where-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 32px; margin: 56px 0 48px; }
  .where-grid p { font-size: 1.1rem; }
  .where-grid .q { font-weight: 700; color: var(--red); display: block; font-size: .8rem; letter-spacing: .05em; margin-bottom: 6px; text-transform: uppercase; }
  .where .closing { font-size: clamp(1.1rem, 2vw, 1.4rem); }
  .where .closing strong { color: var(--red); font-weight: 700; }

  /* ---------- ofertas ---------- */
  #ofertas { background: var(--black); color: var(--white); }
  #ofertas .title .l { color: var(--white); }
  .give { display: grid; grid-template-columns: 1fr 1.15fr; gap: clamp(40px, 7vw, 100px); align-items: start; }
  .give .intro p { color: #CFCFCF; margin-top: 28px; max-width: 40ch; font-size: 1.05rem; }
  .give blockquote { margin-top: 36px; padding-left: 20px; border-left: 2px solid var(--red); font-style: italic; color: #BDBDBD; }
  .give cite { display: block; font-style: normal; font-weight: 700; color: var(--white); font-size: .85rem; margin-top: 8px; }
  .give-cards { display: grid; gap: 16px; }
  .gcard { background: #1E1E1E; padding: 32px; }
  .gcard .label { font-size: .8rem; letter-spacing: .06em; text-transform: uppercase; color: #9A9A9A; }
  .gcard h3 { font-weight: 700; font-size: 1.35rem; margin: 4px 0 18px; }
  .pix-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
             background: #121212; padding: 16px 18px; border: 1px solid #333; }
  .pix-key { font-weight: 600; font-size: 1.1rem; word-break: break-all; }
  .pix-row .btn { padding: 11px 20px; font-size: .85rem; }
  .copied { font-size: .85rem; color: #E9A1A1; margin-top: 10px; min-height: 1.4em; }
  dl.bank { display: grid; grid-template-columns: auto 1fr; gap: 8px 22px; font-size: .98rem; }
  dl.bank dt { color: #9A9A9A; }
  dl.bank dd { font-weight: 400; }

  /* ---------- rodapé ---------- */
  footer { background: var(--black); color: #CFCFCF; border-top: 1px solid #2A2A2A; padding: 64px 0 40px; font-size: .95rem; }
  .foot { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 40px; }
  .foot .logo img { height: 30px; width: auto; filter: brightness(0) invert(1); }
  .foot .logo + p { margin-top: 18px; max-width: 30ch; }
  .foot h4 { color: var(--white); font-weight: 600; font-size: .9rem; margin-bottom: 14px; }
  .foot a { text-decoration: none; }
  .foot a:hover { color: var(--white); }
  .foot li { list-style: none; margin-bottom: 6px; }
  .social { display: flex; gap: 12px; margin-top: 18px; }
  .social a { width: 40px; height: 40px; border: 1px solid #3A3A3A; border-radius: 50%; display: grid; place-items: center; }
  .social a:hover { border-color: var(--red); background: var(--red); }
  .social svg { width: 18px; height: 18px; fill: currentColor; }
  .copy { margin-top: 56px; padding-top: 24px; border-top: 1px solid #2A2A2A; font-size: .8rem; color: #8A8A8A; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 8px; }

  /* ---------- responsivo ---------- */
  @media (max-width: 960px) {
    .hero-grid, .purpose-intro, .give, .foot { grid-template-columns: 1fr; }
    .hero-photo { order: -1; aspect-ratio: 4 / 3; }
    .sched { grid-template-columns: 1fr; }
    .path { grid-template-columns: 1fr; gap: 56px; }
    .path .arrow { display: none; }
    .step { padding: 0; }
    .where-grid { grid-template-columns: 1fr; }
  }
  @media (max-width: 1240px) { .nav ul { gap: 24px; } }
  /* menu de três linhas (☰) a partir de 1080 px: com 7 itens ele não cabe em telas médias */
  @media (max-width: 1080px) {
    .menu-toggle { display: block; }
    .nav ul { position: absolute; top: 80px; left: 0; right: 0; flex-direction: column; align-items: flex-start; gap: 0;
              background: var(--white); border-bottom: 1px solid var(--line); padding: 8px var(--gutter) 20px; display: none; }
    .nav ul.open { display: flex; }
    .nav ul li { width: 100%; }
    .nav ul a { display: block; padding: 12px 0; font-size: 1.05rem; }
    .nav ul .btn { margin-top: 10px; }
  }
  @media (max-width: 820px) {
    .steps-strip { gap: 28px; }
    .steps-strip img { height: 34px; }
  }

  /* ---------- avisos (boletim e página inicial) ---------- */
  .avisos { list-style: none; }
  .aviso { display: grid; grid-template-columns: 28px 1fr; gap: 18px; padding: 26px 0; border-top: 1px solid var(--line); }
  .aviso:last-child { border-bottom: 1px solid var(--line); }
  .aviso-icone { width: 28px; height: 28px; margin-top: 3px; }
  .aviso-icone img { width: 28px; height: 28px; object-fit: contain; }
  .aviso h3 { font-weight: 600; font-size: 1.18rem; line-height: 1.35; }
  .aviso-meta { color: var(--red); font-weight: 600; font-size: 1rem; margin-top: 4px; }
  .aviso-meta span:not(.sep) { display: block; color: var(--black); font-weight: 400; }
  .aviso-meta .sep { display: none; }
  .aviso-desc { margin-top: 8px; color: #3A3A3A; }
  .aviso-inscricao { margin-top: 8px; font-size: .95rem; font-weight: 600; }
  .aviso-link { margin-top: 10px; }
  .aviso-link a { color: var(--red); font-weight: 600; text-decoration: none; }
  .aviso-link a:hover { text-decoration: underline; }

  .home-avisos { padding: 0 0 clamp(64px, 8vw, 100px); }
  .home-avisos-head { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
  .home-avisos-titulo { font-weight: 700; font-size: 1.3rem; }
  .home-avisos-link { color: var(--red); font-weight: 600; text-decoration: none; }
  .home-avisos-link:hover { text-decoration: underline; }
  .aviso-imagem { display: block; margin-top: 16px; max-width: 440px; }
  .aviso-imagem img { width: 100%; height: auto; outline: 1px solid var(--line); outline-offset: -1px; }

  /* ---------- calendário anual (boletim e /calendario) ---------- */
  .cal-lista { list-style: none; }
  .cal-item { display: grid; grid-template-columns: 64px 1fr auto; gap: 6px 16px; align-items: center; padding: 14px 0; border-top: 1px solid var(--line); }
  .cal-lista .cal-item:last-child { border-bottom: 1px solid var(--line); }
  .cal-dia { text-align: center; line-height: 1.1; }
  .cal-num { display: block; font-weight: 700; font-size: 1.3rem; color: var(--red); letter-spacing: -0.01em; }
  .cal-sem { display: block; font-size: .8rem; color: var(--gray); margin-top: 2px; }
  .cal-titulo { display: block; font-weight: 600; }
  .cal-detalhe { display: block; color: var(--gray); font-size: .95rem; }
  .cal-tag { font-size: .78rem; font-weight: 600; padding: 3px 11px; border-radius: 999px; white-space: nowrap; }
  .cal-tag-passado { background: var(--soft); color: #8A8A8A; }
  .cal-tag-hoje { background: var(--red); color: #fff; }
  .cal-tag-proximo { border: 1px solid var(--red); color: var(--red); }
  .cal-tag-adefinir { background: var(--soft); color: var(--gray); }
  .cal-passado .cal-num { color: #B4B4B4; }
  .cal-passado .cal-sem, .cal-passado .cal-detalhe { color: #A8A8A8; }
  .cal-passado .cal-titulo { color: #9A9A9A; font-weight: 400; text-decoration: line-through; text-decoration-color: #C8C8C8; }
  .cal-hoje .cal-titulo { color: var(--red); }
  .cal-vazio { color: var(--gray); padding: 14px 0; border-top: 1px solid var(--line); }
  .cal-num-faixa { font-size: .95rem; line-height: 1.15; }
  @media (max-width: 520px) {
    .cal-item { grid-template-columns: 58px 1fr; }
    .cal-tag { grid-column: 2; justify-self: start; }
    .cal-tag-passado { display: none; } /* no celular o cinza riscado já indica que passou */
  }

/* ---------- escala de pregadores (boletim e /escala) ---------- */
.esc-grade { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 28px; }
@media (max-width: 520px) { .esc-grade { grid-template-columns: 1fr; } }
.esc-card { border-top: 1px solid var(--line); padding: 14px 0 16px; }
.esc-culto { font-weight: 600; color: var(--red); }
.esc-quando { color: var(--gray); font-size: .9em; }
.esc-pregador { font-weight: 700; font-size: 1.15em; line-height: 1.3; margin-top: 6px; }
.esc-pregador.esc-sem { font-weight: 400; color: var(--gray); font-style: italic; }
.esc-obs { color: var(--gray); font-size: .9em; margin-top: 2px; }
.esc-fds { padding: 0; margin-top: 28px; }
.esc-fds-titulo { font-weight: 600; font-size: 1.05em; margin-bottom: 4px; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; }
.esc-fds-passado { opacity: .55; }
.esc-selo { font-size: .75rem; font-weight: 600; color: #fff; background: var(--red); padding: 3px 11px; border-radius: 999px; }
