:root{
  --bg:#f7f7fb; --surface:#fff; --text:#111827; --muted:#6b7280; --border:#e5e7eb;
  --accent:#2563eb; --accent2:#0ea5e9;
  --shadow:0 10px 30px rgba(0,0,0,.10);
  --shadowStrong:0 18px 50px rgba(0,0,0,.18);
  --focus:0 0 0 3px rgba(37,99,235,.25);
  --radius:16px; --max:1200px;
}

body:has(.theme-toggle:checked){
  --bg:#0b1220; --surface:#0f1a2f; --text:#e5e7eb; --muted:#9ca3af; --border:rgba(255,255,255,.12);
  --accent:#60a5fa; --accent2:#22d3ee;
  --shadow:0 12px 40px rgba(0,0,0,.35);
  --shadowStrong:0 24px 70px rgba(0,0,0,.45);
  --focus:0 0 0 3px rgba(96,165,250,.25);
}

*{box-sizing:border-box}
html,body{height:100%}
html{scroll-behavior:smooth}
body{
  margin:0;
  overflow-x:hidden; /* evita estourar em telas pequenas */
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,Arial,"Noto Sans";
  background:var(--bg);
  color:var(--text);
  line-height:1.5;
}
.page{min-height:100%; background:var(--bg);}
.container{width:min(var(--max), calc(100% - 2rem)); margin:0 auto;}
.theme-toggle{display:none}

/* NAV flutuante */
/*
  FIX mobile: alguns navegadores mobile podem ignorar `pointer-events:auto` nos filhos
  quando o container está com `pointer-events:auto`, fazendo o botão ☰ não responder.
*/
.nav-float{position:fixed; top:0; left:0; width:100%; z-index:50; padding:14px 0; pointer-events:auto;}
.nav-shell{
  width:100%;
  max-width:var(--max);
  margin:0 auto;
  padding:0 1rem; /* respiro lateral */
  display:flex;
  justify-content:center;
}
.nav-pill{flex-wrap:nowrap; 
  pointer-events:auto;
  width:100%;
  max-width:100%;
  min-width:0;           /* permite encolher corretamente */
  overflow:visible;      /* permite menu flutuante */
  display:flex; align-items:center; gap:.6rem;
  padding:10px 12px;
  border-radius:999px;
  border:1px solid transparent;
  background:transparent;
  box-shadow:none;
  transition:background .25s, border-color .25s, box-shadow .25s, transform .25s, width .25s;
}
.nav-float.scrolled .nav-pill{flex-wrap:nowrap; 
  width:100%;
  max-width:980px; /* só limita quando tiver espaço */
  background:color-mix(in srgb, var(--surface) 86%, transparent);
  border-color:var(--border);
  backdrop-filter:blur(10px);
  box-shadow:var(--shadowStrong);
  transform:translateY(4px);
}

/* Logo */
.logo{ text-decoration:none; }
.logo-badge{
  width:42px; height:42px; border-radius:999px;
  display:grid; place-items:center;
  font-weight:800; letter-spacing:.5px;
  color:#fff;
  box-shadow:var(--shadow);
  background:radial-gradient(circle at 30% 30%, var(--accent2), var(--accent));
}

/* Carrossel */
.nav-carousel{
  position:relative;
  overflow:hidden; /* mantém carrossel sem vazar */
  display:flex;
  align-items:center;
  flex:1;
  min-width:0; /* ESSENCIAL */
}
.nav-links{
  display:flex; align-items:center; gap:.45rem;
  overflow-x:auto; scroll-behavior:smooth;
  flex:1; min-width:0;
  padding:2px 56px;
  scroll-snap-type:x proximity;
  overscroll-behavior-x:contain;

  /* remove scrollbar */
  scrollbar-width:none;
  -ms-overflow-style:none;
}
.nav-links::-webkit-scrollbar{display:none}

.nav-links a{
  text-decoration:none;
  font-size:.92rem;
  white-space:nowrap;
  padding:.45rem .65rem;
  border-radius:999px;
  color:var(--text);
  scroll-snap-align:start;
  transition:background .2s, border-color .2s, transform .15s;
}
.nav-float:not(.scrolled) .nav-links a{
  background:transparent;
  color:color-mix(in srgb, var(--text) 85%, var(--muted));
}
.nav-float.scrolled .nav-links a{
  background:color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  border:1px solid var(--border);
  box-shadow:var(--shadow);
}
.nav-links a:hover{
  background:color-mix(in srgb, var(--surface) 80%, var(--accent2) 10%);
  transform:translateY(-1px);
}

/* Link ativo (página atual) */
.nav-links a.active{
  background:linear-gradient(135deg, var(--accent), var(--accent2));
  color:#fff;
  border:1px solid color-mix(in srgb, var(--border) 50%, transparent);
  box-shadow:var(--shadowStrong);
}

/* Setas: só quando "dá pra rolar" e (desktop) só no hover */
.nav-arrow{
  position:absolute; top:50%;
  width:40px; height:40px;
  border-radius:999px;
  border:1px solid var(--border);
  background:linear-gradient(135deg, var(--accent), var(--accent2));
  color:#fff;
  font-size:22px; font-weight:800; line-height:1;
  display:grid; place-items:center;
  box-shadow:0 10px 26px rgba(0,0,0,.28), inset 0 0 0 1px rgba(255,255,255,.28);
  transform:translateY(-50%) scale(.96);
  opacity:0; pointer-events:auto;
  transition:opacity .18s, transform .18s, box-shadow .18s;
  z-index:3;
}
.nav-arrow.left{left:8px}
.nav-arrow.right{right:8px}
.nav-arrow.is-available{opacity:0; pointer-events:auto;}

@media (hover:hover) and (pointer:fine){
  .nav-carousel.can-scroll:hover .nav-arrow.is-available{
    opacity:1; pointer-events:auto; transform:translateY(-50%) scale(1);
  }
}
@media (hover:none), (pointer:coarse){
  .nav-arrow.is-available{
    opacity:1; pointer-events:auto; transform:translateY(-50%) scale(1);
  }
}

.nav-arrow:hover{transform:translateY(-50%) scale(1.08); box-shadow:0 14px 34px rgba(0,0,0,.38), inset 0 0 0 1px rgba(255,255,255,.35);}
.nav-arrow:active{transform:translateY(-50%) scale(.95);}
.nav-arrow:focus-visible{outline:none; box-shadow:var(--focus);}

/* Sombras laterais (pista de rolagem) */
.nav-carousel::before,
.nav-carousel::after{
  content:"";
  position:absolute; top:0; bottom:0;
  width:70px;
  pointer-events:auto;
  z-index:2;
}
.nav-carousel::before{
  left:0;
  background:linear-gradient(to right, color-mix(in srgb, var(--surface) 96%, transparent), transparent);
  border-radius:999px 0 0 999px;
}
.nav-carousel::after{
  right:0;
  background:linear-gradient(to left, color-mix(in srgb, var(--surface) 96%, transparent), transparent);
  border-radius:0 999px 999px 0;
}
.nav-links{position:relative; z-index:1;}

/* Switch tema */
.theme-switch{
  cursor:pointer;
  display:inline-flex; align-items:center; gap:.6rem;
  padding:.45rem .6rem;
  border-radius:999px;
}
.nav-float.scrolled .theme-switch{
  background:color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  border:1px solid var(--border);
  box-shadow:var(--shadow);
}
.switch-text{font-size:.9rem; color:var(--muted);}
.switch-ui{
  width:46px; height:26px; border-radius:999px;
  border:1px solid var(--border);
  background:color-mix(in srgb, var(--surface) 85%, var(--accent) 8%);
  padding:2px;
  display:inline-flex; align-items:center;
}
.switch-dot{width:20px; height:20px; border-radius:999px; background:var(--accent); transition:transform .2s;}
.theme-toggle:checked + .page .switch-dot{transform:translateX(20px);}

/* Conteúdo */
main.container{padding:96px 0 2.5rem;}
.hero{
  background:color-mix(in srgb, var(--surface) 92%, var(--accent) 2%);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  padding:1.25rem 1rem;
  margin-bottom:1.25rem;
}
.hero-title{margin:0; font-size:clamp(1.4rem,2.6vw,2rem);}
.hero-subtitle{margin:.35rem 0 0; color:var(--muted);  margin-bottom: .75rem;
}

.section{
  background:var(--surface);
  border:1px solid var(--border);
  border-radius:var(--radius);
  box-shadow:var(--shadow);
  overflow:hidden;
  margin-bottom:1.25rem;
}
.section-hd{padding:1rem 1rem .2rem; border-bottom:1px solid var(--border);}
.section-hd h2{margin:0}
.section-hd p{margin:.25rem 0 1rem; color:var(--muted);}

.grid{
  padding:1rem;
  display:grid;
  grid-template-columns:repeat(2,1fr);
  gap:1rem;
}
@media (max-width:700px){ .grid{grid-template-columns:1fr;} }

.card{
  border:1px solid var(--border);
  border-radius:14px;
  padding:1rem;
  background:color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
}

/* Links em cards (index) */
a.card{
  display:block;
  color:inherit;
  text-decoration:none;
}
a.card:hover{transform:translateY(-1px); box-shadow:var(--shadow);}

/* Mobile ajustes finos */
@media (max-width:520px){
  .nav-links{padding:2px 52px;}
  .nav-arrow{width:36px; height:36px; font-size:20px;}
  .switch-text{display:none;}
}
@media (max-width:420px){
  .nav-pill{flex-wrap:nowrap; gap:.4rem;padding:8px 10px;}
  .logo-badge{width:38px;height:38px;font-size:.9rem;}
  .nav-links{padding:2px 48px;}
  .theme-switch{padding:.35rem .45rem;}
}
/* Botão de menu (☰) */
.menu-btn{
  pointer-events:auto;
  border:none;
  cursor:pointer;
  width:42px; height:42px;
  border-radius:999px;
  display:grid; place-items:center;
  font-size:20px; font-weight:900;
  color:var(--text);
  background:transparent;
  transition:transform .15s, background .2s, box-shadow .2s;
}
.nav-float.scrolled .menu-btn{
  background:color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  border:1px solid var(--border);
  box-shadow:var(--shadow);
}
.menu-btn:hover{transform:translateY(-1px);}
.menu-btn:active{transform:translateY(0px) scale(.98);}
.menu-btn:focus-visible{outline:none; box-shadow:var(--focus);}

/* Menu flutuante */
.menu-overlay{
  position:fixed; inset:0;
  background:rgba(0,0,0,.35);
  opacity:0; pointer-events:none;
  transition:opacity .18s;
  z-index:60;
}
.menu-overlay.open{opacity:1; pointer-events:auto;}

.menu-float{
  position:fixed;
  top:70px; /* logo abaixo da nav */
  right:16px;
  width:min(340px, calc(100% - 2rem));
  background:color-mix(in srgb, var(--surface) 96%, transparent);
  border:1px solid var(--border);
  border-radius:18px;
  box-shadow:var(--shadowStrong);
  backdrop-filter:blur(10px);
  padding:.6rem;
  opacity:0; pointer-events:none;
  transform:translateY(-8px) scale(.98);
  transition:opacity .18s, transform .18s;
  z-index:61;
}
.menu-float.open{opacity:1; pointer-events:auto; transform:translateY(0) scale(1);}

.menu-links{
  display:flex;
  flex-direction:column;
  gap:.35rem;
  max-height:min(60vh, 520px);
  overflow:auto;
  scrollbar-width:none;
}
.menu-links::-webkit-scrollbar{display:none}

.menu-links a{
  display:block;
  text-decoration:none;
  color:var(--text);
  padding:.55rem .7rem;
  border-radius:14px;
  border:1px solid var(--border);
  background:color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  box-shadow:var(--shadow);
  white-space:nowrap;
}
.menu-links a:hover{
  background:color-mix(in srgb, var(--surface) 80%, var(--accent2) 10%);
  transform:translateY(-1px);
}
.menu-links a.active{
  background:linear-gradient(135deg, var(--accent), var(--accent2));
  color:#fff;
  box-shadow:var(--shadowStrong);
  border:1px solid color-mix(in srgb, var(--border) 50%, transparent);
}

@media (max-width:520px){
  .menu-float{top:66px; right:12px;}
  .menu-btn{width:40px; height:40px;}
}

/* Título no lugar da barra de categorias */
.nav-title{
  flex:1;
  min-width:0;
  text-decoration:none;
  font-weight:800;
  font-size:1rem;
  color:var(--text);
  white-space:nowrap;
  overflow:hidden;
  text-overflow:ellipsis;
  padding:.35rem .2rem;
  pointer-events:auto;
}

.nav-float:not(.scrolled) .nav-title{
  color:color-mix(in srgb, var(--text) 85%, var(--muted));
}

/* Hero: título + card lado a lado */
.hero-top{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:1rem;
  flex-wrap:wrap;
}
.hero-copy{
  min-width:240px;
  flex:1 1 320px;
}
.hero-cta{
  flex:0 1 360px;
}
.hero-cta .card{
  margin:0;
}
@media (max-width:700px){
  .hero-cta{flex:1 1 100%;}
}

/* ===== Switch tema: Lua (claro) / Sol (escuro) ===== */
.switch-dot{
  position: relative;
  width:20px;
  height:20px;
  border-radius:50%;
  background:transparent;
  transition:transform .25s ease, background .25s ease;
}

/* LUA – modo claro */
.switch-dot::before{
  content:"";
  position:absolute;
  inset:0;
  border-radius:50%;
  background:#2563eb;
}

.switch-dot::after{
  content:"";
  position:absolute;
  top:3px;
  left:3px;
  width:14px;
  height:14px;
  border-radius:50%;
  background:var(--surface);
}

/* SOL – modo escuro */
.theme-toggle:checked + .page .switch-dot::before{
  background:#facc15;
}

.theme-toggle:checked + .page .switch-dot::after{
  width:6px;
  height:6px;
  top:7px;
  left:7px;
  background:#facc15;
  border-radius:50%;
  box-shadow:
    0 -9px 0 #facc15,
    0 9px 0 #facc15,
    -9px 0 0 #facc15,
    9px 0 0 #facc15,
    -6px -6px 0 #facc15,
    6px -6px 0 #facc15,
    -6px 6px 0 #facc15,
    6px 6px 0 #facc15;
}

/* Garante clique/toque nos controles da direita */
.theme-switch,
.menu-btn{
  flex:0 0 auto;
  pointer-events:auto;
  touch-action:manipulation;
}

/* Melhor resposta ao toque (mobile) */
.menu-btn,
.theme-switch,
.nav-title{
  -webkit-tap-highlight-color: transparent;
}

/* =========================
   ADD-ON: ESTILO DO CALENDÁRIO
   (apenas adicionando — não altera o CSS existente)
========================= */

.calendar-year{
  margin-top: 1.25rem;
}

.calendar-year-hd{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  padding: 1rem 1rem .75rem;
  margin-bottom: 1rem;
}

.calendar-year-hd h2{
  margin: 0;
}

.calendar-year-hd p{
  margin: .35rem 0 0;
  color: var(--muted);
}

/* barra do ano */
.calendar-toolbar{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.75rem;
  flex-wrap:wrap;
  margin: .75rem 0 1rem;
}

.cal-btn{
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  color: var(--text);
  border-radius: 999px;
  padding: .55rem .75rem;
  cursor: pointer;
  box-shadow: var(--shadow);
  transition: transform .15s, box-shadow .2s, background .2s;
}

.cal-btn:hover{ transform: translateY(-1px); }
.cal-btn:active{ transform: translateY(0px) scale(.98); }
.cal-btn:focus-visible{ outline:none; box-shadow: var(--focus); }

.cal-year{
  display:flex;
  align-items:center;
  gap:.5rem;
  color: var(--muted);
}

.cal-year-input{
  width: 7.5rem;
  padding: .5rem .6rem;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: var(--surface);
  color: var(--text);
  box-shadow: var(--shadow);
}
.cal-year-input:focus-visible{ outline:none; box-shadow: var(--focus); }

/* grid dos 12 meses */
.calendar-grid{
  display:grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1rem;
}

@media (max-width: 980px){
  .calendar-grid{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 640px){
  .calendar-grid{ grid-template-columns: 1fr; }
}

/* card do mês */
.month-card{
  background: var(--surface);
  border: 1px solid var(--border);
  border-radius: var(--radius);
  box-shadow: var(--shadow);
  overflow:hidden;
}

.month-hd{
  display:flex;
  align-items:baseline;
  justify-content:space-between;
  gap: .75rem;
  padding: .85rem 1rem .65rem;
  border-bottom: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 92%, var(--accent) 2%);
}

.month-hd h3{
  margin: 0;
  font-size: 1.05rem;
}

.month-sub{
  color: var(--muted);
  font-size: .95rem;
}

/* tabela do mês */
.month-table{
  width:100%;
  border-collapse: separate;
  border-spacing: .35rem;
  padding: .65rem .65rem .85rem;
}

.month-table th{
  text-align:center;
  font-size: .8rem;
  color: var(--muted);
  font-weight: 700;
  padding: .15rem 0 .25rem;
}

.month-table td{
  vertical-align: top;
  border-radius: 12px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  box-shadow: var(--shadow);
  min-height: 64px;
}

.month-table td.empty{
  border: 1px dashed color-mix(in srgb, var(--border) 60%, transparent);
  background: transparent;
  box-shadow: none;
}

/* conteúdo do dia (criado pelo JS) */
.daybox{
  padding: .45rem .55rem .55rem;
  display:flex;
  flex-direction:column;
  gap:.25rem;
}

.daynum{
  font-weight: 900;
  font-size: .95rem;
  line-height: 1;
}

.saint{
  font-size: .78rem;
  color: color-mix(in srgb, var(--text) 80%, var(--muted));
  line-height: 1.15;
  word-break: break-word;
}

.saint-link{
  color: inherit;
  text-decoration: none;
}
.saint-link:hover{
  text-decoration: underline;
}

/* melhora toque em celular */
.month-table td,
.cal-btn{
  touch-action: manipulation;
}

/* =========================================================
   CALENDÁRIO — MODO UNIFICADO (1 MÊS) + SELETOR DE MÊS
   Troca de mês pelo nome do mês na barra superior
   ========================================================= */

.calendar-year .month-card-single{
  max-width: 860px;
  margin: 0 auto;
}

/* Barra do mês (inserida via JS na toolbar) */
.calendar-year .cal-month{
  display:flex;
  align-items:center;
  gap:.5rem;
  flex: 0 0 auto;
}

.calendar-year .cal-month-label{
  color: var(--muted);
  font-weight: 700;
}

.calendar-year .cal-month-select{
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  color: var(--text);
  border-radius: 999px;
  padding: .55rem .75rem;
  box-shadow: var(--shadow);
  cursor: pointer;
  appearance: none;
}

/* Botão numérico (clicável) */
.calendar-year .daynum-btn{
  border: none;
  background: transparent;
  color: inherit;
  font: inherit;
  padding: 0;
  cursor: pointer;
  text-align: left;
}
.calendar-year .daynum-btn:focus-visible{
  outline:none;
  box-shadow: var(--focus);
  border-radius: 10px;
}

/* Popover (se ainda não existir no seu CSS mesclado) */
.cal-popover-overlay{
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,.35);
  opacity: 0;
  pointer-events: none;
  transition: opacity .18s;
  z-index: 2000;
}
.cal-popover-overlay.open{
  opacity: 1;
  pointer-events: auto;
}
.cal-popover{
  position: fixed;
  width: min(340px, calc(100% - 24px));
  background: color-mix(in srgb, var(--surface) 96%, transparent);
  border: 1px solid var(--border);
  border-radius: 18px;
  box-shadow: var(--shadowStrong);
  backdrop-filter: blur(10px);
  padding: .75rem .8rem .8rem;
  opacity: 0;
  pointer-events: none;
  transform: translateY(-8px) scale(.98);
  transition: opacity .18s, transform .18s;
  z-index: 2001;
}
.cal-popover.open{
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0) scale(1);
}
.cal-popover-close{
  position: absolute;
  top: 10px;
  right: 10px;
  width: 34px;
  height: 34px;
  border-radius: 999px;
  border: 1px solid var(--border);
  background: color-mix(in srgb, var(--surface) 92%, var(--accent) 3%);
  color: var(--text);
  cursor: pointer;
  box-shadow: var(--shadow);
}
.cal-popover-date{
  font-weight: 900;
  margin: .1rem 2.2rem .35rem 0;
}
.cal-popover-saint{
  color: color-mix(in srgb, var(--text) 85%, var(--muted));
}
.cal-popover-link{
  color: inherit;
  text-decoration: none;
}
.cal-popover-link:hover,
.cal-popover-link:focus-visible{
  text-decoration: underline;
}

/* ===== Calendário: destaque do dia atual (balinha azul) ===== */
.month-table td.is-today{
  border-color: color-mix(in srgb, var(--accent) 55%, var(--border));
  box-shadow: var(--shadowStrong);
}

.daynum-btn.is-today{
  display:inline-flex;
  align-items:center;
  justify-content:center;

  /* "balinha" */
  padding: .25rem .65rem;
  border-radius: 999px;

  background: linear-gradient(135deg, var(--accent), var(--accent2));
  color:#fff;

  font-weight: 900;
  line-height: 1;
  min-height: 28px;
}

/* Espaço entre o calendário e o conteúdo abaixo (sem alterar mais nada) */
.calendar-year{
  margin-bottom: clamp(2.5rem, 6vh, 4rem);
}

/* ===== HERO: card largo no lado esquerdo + imagem na direita ===== */
.hero-cta-wide{ flex: 1 1 100%; }

.hero-card{
  height: 100%;
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 1.5rem;
  margin-top: .75rem; /* espaço entre subtítulo e card */
  background: transparent;
  border-radius: 20px;
  box-shadow: none;
}

.hero-card-title{ font-size: 1.25rem; font-weight: 900; }

.hero-card-text{
  margin-top: .6rem;
  color: var(--muted);
  max-width: 90%;
}

.hero-img{
  width: 100%;
  max-width: 520px;
  border-radius: 16px;
  box-shadow: var(--shadowStrong);
  display: block;
}

@media (max-width: 700px){
  .hero-card-text{ max-width: 100%; }
  .hero-img{ max-width: 100%; }
}
