/* ---------------------------------------------------------------------------
   Ecrãs de acesso (Login / Recuperar Senha / Redefinir Senha / Ativar / Mudar Senha).
   Um ecrã inteiro em vinho com uma rosácea (a janela da igreja) ao fundo; barra no topo com a Arquidiocese, o sistema e a
   liturgia do dia; ao centro, um cartão de marfim com o topo em ARCO (como um portal ou uma janela de igreja) com o brasão
   da paróquia e o formulário; no pé, a área pública, o manual e o mote. Tudo numa só vista, sem rolar.
   Segue o tema escolhido em «Aparência» (as variáveis --pub-* vêm de publico.css, ligadas às --sgc-* do tema).
--------------------------------------------------------------------------- */

.corpo-acesso {
  --ac-serifa: "Cormorant Garamond", "Georgia", "Times New Roman", serif;
  margin: 0;
  font-family: "Work Sans", "Segoe UI", system-ui, sans-serif;
  color: var(--pub-tinta);
  background: var(--pub-vinho);
}

/* ---------- Fundo ---------- */
.acesso-fundo {
  --cor-liturgica: #3fa76a;
  position: relative; overflow: hidden;
  min-height: 100vh; min-height: 100dvh;
  display: grid; grid-template-rows: auto 1fr auto;
  color: #fbf6ec;
  background:
    radial-gradient(60% 55% at 50% 42%, color-mix(in srgb, var(--pub-dourado) 22%, transparent), transparent 70%),
    radial-gradient(50% 40% at 0% 100%, color-mix(in srgb, var(--pub-dourado-suave) 10%, transparent), transparent 70%),
    linear-gradient(170deg, var(--pub-vinho-2), var(--pub-vinho));
}
.acesso-fundo.cor-roxo { --cor-liturgica: #8a5cc4; }
.acesso-fundo.cor-branco { --cor-liturgica: #e9d9a6; }
.acesso-fundo.cor-vermelho { --cor-liturgica: #d9483b; }
.acesso-fundo.cor-rosa { --cor-liturgica: #e08ab4; }
.acesso-fundo.cor-verde { --cor-liturgica: #3fa76a; }
/* faixa fina com a cor litúrgica do dia, no alto do ecrã */
.acesso-fundo::after { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 4px; background: var(--cor-liturgica); z-index: 3; }
/* a rosácea, enorme e discreta, atrás do cartão */
.acesso-fundo::before {
  content: "";
  position: absolute; left: 50%; top: 50%; width: min(1250px, 165vh); height: min(1250px, 165vh); transform: translate(-50%, -50%);
  opacity: .1; pointer-events: none;
  background: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 200'><g fill='none' stroke='%23e3c691' stroke-width='.6'><circle cx='100' cy='100' r='98'/><circle cx='100' cy='100' r='88'/><circle cx='100' cy='100' r='70'/><circle cx='100' cy='100' r='40'/><circle cx='100' cy='100' r='14'/><g id='p'><path d='M100,12 Q124,56 100,100 Q76,56 100,12Z'/><path d='M100,30 Q114,62 100,100 Q86,62 100,30Z'/></g><use href='%23p' transform='rotate(22.5 100 100)'/><use href='%23p' transform='rotate(45 100 100)'/><use href='%23p' transform='rotate(67.5 100 100)'/><use href='%23p' transform='rotate(90 100 100)'/><use href='%23p' transform='rotate(112.5 100 100)'/><use href='%23p' transform='rotate(135 100 100)'/><use href='%23p' transform='rotate(157.5 100 100)'/><use href='%23p' transform='rotate(180 100 100)'/><use href='%23p' transform='rotate(202.5 100 100)'/><use href='%23p' transform='rotate(225 100 100)'/><use href='%23p' transform='rotate(247.5 100 100)'/><use href='%23p' transform='rotate(270 100 100)'/><use href='%23p' transform='rotate(292.5 100 100)'/><use href='%23p' transform='rotate(315 100 100)'/><use href='%23p' transform='rotate(337.5 100 100)'/></g></svg>") center / contain no-repeat;
}
.acesso-fundo > * { position: relative; z-index: 1; }

/* ---------- Barra do topo: sistema (esquerda) · igreja (centro) · liturgia (direita) ---------- */
.acesso-barra {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr) minmax(0, 1fr); align-items: center; gap: 1rem;
  padding: 1rem 2rem .4rem;
}
.acesso-barra-sistema { display: flex; flex-direction: column; align-items: flex-start; gap: .55rem; align-self: start; height: 0; overflow: visible; }
.acesso-barra-sistema .acesso-publico { width: 100%; max-width: 380px; }
.acesso-sistema-titulo { white-space: nowrap; display: flex; align-items: center; gap: .6rem; font-size: 1.15rem; line-height: 1; font-weight: 600; color: var(--pub-dourado-suave); }
.acesso-sistema-titulo span { line-height: 1; }
.acesso-aviso-sistema { background: color-mix(in srgb, #d9a441 24%, rgba(255, 255, 255, .06)); border-color: #e3b45a; }
.acesso-instalar[hidden] { display: none; }
.acesso-cruz { height: 1em; width: auto; aspect-ratio: 18 / 26; flex: none; color: var(--pub-dourado-suave); }
.acesso-sistema-titulo .acesso-cruz { height: 1.15rem; }
.acesso-barra-igreja { text-align: center; min-width: 0; }
.acesso-arquidiocese { font-size: .72rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: #fff; opacity: .92; }
.acesso-barra-igreja .acesso-marca-nome { font-size: 1.35rem; font-weight: 700; line-height: 1.25; color: #fff; white-space: nowrap; overflow: hidden; }
.acesso-barra-igreja .acesso-ministerio { font-size: .8rem; line-height: 1.3; color: var(--pub-dourado-suave); }
.acesso-barra-liturgia { display: flex; flex-direction: column; align-items: flex-end; gap: .55rem; align-self: start; height: 0; overflow: visible; }

.acesso-liturgia {
  display: flex; align-items: center; gap: .7rem; text-align: right;
  padding: .45rem .9rem; border-radius: 999px;
  background: rgba(255, 255, 255, .07); border: 1px solid rgba(255, 255, 255, .13);
}
.acesso-liturgia > div { text-align: left; }
.acesso-liturgia-data { font-size: .66rem; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--pub-dourado-suave); }
.acesso-liturgia-tempo { font-size: .86rem; line-height: 1.25; color: #fff; }
.acesso-liturgia-tempo small { color: color-mix(in srgb, #fff 72%, transparent); font-size: .76rem; }
.acesso-cor-ponto { width: 12px; height: 12px; flex: none; border-radius: 50%; background: var(--cor-liturgica); box-shadow: 0 0 0 3px rgba(255, 255, 255, .18); }

/* ---------- Centro: o arco ---------- */
.acesso-conteudo { display: flex; align-items: center; justify-content: center; padding: .6rem 1.2rem; }
.acesso-arco {
  width: 100%; max-width: 440px;
  background: var(--pub-cartao);
  color: var(--pub-tinta); /* o texto do cartão é escuro: o fundo do ecrã é que é claro-sobre-vinho */
  border-radius: 220px 220px 26px 26px;
  padding: 2.4rem 2.2rem 1.9rem;
  box-shadow:
    0 0 0 6px color-mix(in srgb, var(--pub-dourado) 20%, transparent),
    0 0 0 7px color-mix(in srgb, var(--pub-dourado-suave) 60%, transparent),
    0 40px 70px -30px rgba(0, 0, 0, .65);
}
.acesso-marca { display: flex; flex-direction: column; align-items: center; text-align: center; margin-bottom: .8rem; }
.acesso-circulo {
  width: clamp(100px, 21vh, 168px); aspect-ratio: 1 / 1; flex: none;
  border-radius: 50%; overflow: hidden; display: flex; align-items: center; justify-content: center;
  background: #fff;
  border: 2px solid var(--pub-dourado);
  box-shadow: 0 0 0 6px color-mix(in srgb, var(--pub-dourado) 14%, transparent), 0 14px 24px -14px rgba(58, 15, 28, .6);
}
.acesso-circulo-logo { width: 100%; height: 100%; object-fit: contain; padding: 5%; }
.acesso-circulo .acesso-rosacea { width: 100%; height: 100%; background: var(--pub-vinho); }

.acesso-caixa { width: 100%; }
.acesso-caixa h1 {
  font-family: "Work Sans", "Segoe UI", system-ui, sans-serif; color: var(--pub-vinho); font-weight: 700;
  font-size: 1.65rem; line-height: 1.1; text-align: center; margin: 0 0 .3rem; letter-spacing: -.015em;
}
.acesso-caixa .acesso-subtitulo { text-align: center; color: var(--pub-tinta-suave); font-size: .92rem; margin: 0 0 1rem; }

/* dentro do arco, o cartão é só o conteúdo (sem moldura própria) */
.cartao-acesso { background: transparent; border: 0; border-radius: 0; box-shadow: none; padding: 0; }
.cartao-acesso + .cartao-acesso { margin-top: 1rem; }
.cartao-acesso.cartao-acesso-suave {
  border: 1px dashed var(--pub-linha); border-radius: 14px;
  text-align: center; font-size: .86rem; padding: 1rem 1.2rem; color: var(--pub-tinta-suave);
}

/* cabeçalho do início de sessão e foto de quem escreve o utilizador: tudo centrado */
.acesso-cabeca { text-align: center; margin-bottom: .6rem; }
.acesso-cabeca h1 { margin-bottom: 0; }
.acesso-avatar {
  width: 92px; height: 92px; margin: 0 auto .9rem; border-radius: 50%; position: relative; overflow: hidden;
  display: flex; align-items: center; justify-content: center;
  visibility: hidden; opacity: 0; transition: opacity .25s ease; /* o espaço fica reservado: o cartão não «salta» quando a foto aparece */
  background: color-mix(in srgb, var(--pub-dourado) 14%, var(--pub-cartao));
  border: 2px solid var(--pub-dourado-suave); box-shadow: 0 8px 18px -10px rgba(58, 15, 28, .6);
}
.acesso-avatar.tem-foto { visibility: visible; opacity: 1; }
.acesso-avatar-vazio { display: none; }
.acesso-foto-utilizador { width: 100%; height: 100%; object-fit: cover; }

.acesso-caixa .form-label { font-size: .8rem; font-weight: 600; color: var(--pub-tinta); margin-bottom: .3rem; }
.acesso-caixa .form-control {
  border: 1px solid var(--pub-linha); background: color-mix(in srgb, var(--pub-cartao) 70%, var(--pub-marfim));
  padding: .65rem .9rem; font-size: .98rem; border-radius: 12px; min-height: 44px;
}
.acesso-caixa .form-control:focus {
  border-color: var(--pub-dourado); background: var(--pub-cartao);
  box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--pub-dourado) 26%, transparent);
}
/* O Bootstrap instalado é o 5.1 (sem as variáveis --bs-btn-*): as cores dos botões têm de ser dadas directamente. */
.acesso-caixa .btn { border-radius: 12px; min-height: 44px; font-weight: 600; }
.acesso-caixa .btn-primary {
  background: linear-gradient(135deg, var(--pub-vinho-2), var(--pub-vinho)); border-color: var(--pub-vinho); color: #fbf6ec;
  font-size: .95rem; padding: .65rem 1rem; box-shadow: 0 14px 24px -14px color-mix(in srgb, var(--pub-vinho) 80%, transparent);
}
.acesso-caixa .btn-primary:hover, .acesso-caixa .btn-primary:focus, .acesso-caixa .btn-primary:active {
  background: linear-gradient(135deg, var(--pub-vinho), var(--pub-vinho-2)); border-color: var(--pub-vinho-2); color: #fff;
}
.acesso-caixa .btn-primary:focus { box-shadow: 0 0 0 .22rem color-mix(in srgb, var(--pub-dourado) 35%, transparent); }
.acesso-caixa .btn-outline-primary, .acesso-caixa .btn-outline-secondary {
  color: var(--pub-vinho); border-color: color-mix(in srgb, var(--pub-vinho) 30%, var(--pub-linha)); background: transparent; font-size: .9rem;
}
.acesso-caixa .btn-outline-primary:hover, .acesso-caixa .btn-outline-secondary:hover,
.acesso-caixa .btn-outline-primary:focus, .acesso-caixa .btn-outline-secondary:focus {
  background-color: var(--pub-vinho); border-color: var(--pub-vinho); color: #fbf6ec;
}
.acesso-caixa a { color: var(--pub-vinho-2); text-underline-offset: 3px; }
.acesso-caixa a:hover { color: var(--pub-vinho); }
.acesso-caixa .btn:hover, .acesso-caixa .btn:focus { text-decoration: none; }
.acesso-caixa .text-muted { color: var(--pub-tinta-suave) !important; }
.acesso-caixa .form-text { font-size: .76rem; }
.acesso-caixa .form-check-input:checked { background-color: var(--pub-vinho); border-color: var(--pub-vinho); }

.acesso-opcoes { display: flex; align-items: center; justify-content: space-between; gap: .75rem; margin: .15rem 0 .9rem; font-size: .88rem; }
.acesso-opcoes .form-check { margin: 0; }
.acesso-links { text-align: center; margin-top: .8rem; font-size: .88rem; }
.acesso-aviso-caps { margin-top: .35rem; font-size: .76rem; color: #8a5a00; display: flex; align-items: center; gap: .35rem; }
.acesso-aviso-caps[hidden] { display: none; }

/* ---------- Pé do ecrã ---------- */
.acesso-pe { display: flex; flex-direction: column; align-items: center; gap: .6rem; padding: .4rem 1.2rem 1rem; text-align: center; }
.acesso-publico {
  display: flex; align-items: center; gap: .7rem; text-align: left;
  padding: .5rem .6rem .5rem .75rem; border-radius: 16px;
  background: color-mix(in srgb, var(--pub-dourado) 16%, rgba(255, 255, 255, .08));
  border: 1px solid var(--pub-dourado-suave);
  box-shadow: 0 14px 24px -18px rgba(0, 0, 0, .7);
}
.acesso-publico-icone { width: 36px; height: 36px; flex: none; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--pub-vinho); background: var(--pub-dourado-suave); }
.acesso-publico-icone svg { width: 22px; height: 22px; }
.acesso-publico-texto { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: .78rem; line-height: 1.25; color: color-mix(in srgb, #fbf6ec 94%, transparent); }
.acesso-publico-texto strong { font-size: .95rem; color: #fff; }
.acesso-publico-botao {
  flex: none; border-radius: 12px; font-weight: 700; padding: .4rem .85rem; min-height: 0; font-size: .85rem;
  color: var(--pub-vinho); background: var(--pub-dourado-suave); border: 1px solid var(--pub-dourado-suave);
}
.acesso-publico-botao:focus-visible, .acesso-pe a:focus-visible { outline: 3px solid #fff; outline-offset: 2px; }
.acesso-publico-botao:hover, .acesso-publico-botao:focus { color: var(--pub-vinho); background: #fff; border-color: #fff; }
.acesso-pe { position: relative; }
/* as três caixas (Área pública, Manual, Instalar) no canto inferior direito; o espaço ao lado do cartão é o mesmo do versículo, à esquerda */
.acesso-caixas { position: absolute; right: 2rem; bottom: .9rem; display: flex; flex-direction: column; gap: .55rem; width: min(380px, calc(50vw - 270px)); }
.acesso-caixas .acesso-publico { width: 100%; }
.acesso-versiculo {
  position: absolute; left: 2rem; bottom: .9rem; margin: 0; text-align: left;
  max-width: min(360px, calc(50vw - 270px));
  font-family: var(--ac-serifa); color: color-mix(in srgb, #fbf6ec 90%, transparent);
}
.acesso-versiculo blockquote { margin: 0; font-style: italic; font-size: 1.05rem; line-height: 1.3; }
.acesso-versiculo-rotulo { font-family: "Work Sans", system-ui, sans-serif; font-size: .64rem; font-weight: 600; letter-spacing: .16em; text-transform: uppercase; color: var(--pub-dourado-suave); margin-bottom: .25rem; }
.acesso-versiculo cite { display: block; margin-top: .25rem; font-style: normal; font-family: "Work Sans", system-ui, sans-serif; font-size: .7rem; font-weight: 600; letter-spacing: .1em; color: var(--pub-dourado-suave); }
.acesso-direitos { font-family: "Work Sans", system-ui, sans-serif; font-style: normal; font-size: .68rem; letter-spacing: .03em; opacity: .7; }
.acesso-caixa input::placeholder { color: color-mix(in srgb, var(--pub-tinta) 50%, transparent); }

/* ---------- Ecrãs baixos (portáteis pequenos): aperta para continuar sem rolar ---------- */
@media (max-height: 760px) and (min-width: 576px) {
  .acesso-barra { padding: .6rem 2rem .2rem; }
  .acesso-arco { padding: 1.4rem 2rem 1rem; }
  .acesso-marca { margin-bottom: .5rem; }
  .acesso-avatar { width: 70px; height: 70px; margin-bottom: .6rem; }
  .acesso-caixa .mb-3 { margin-bottom: .6rem !important; }
  .acesso-pe { gap: .35rem; padding-bottom: .5rem; }
}
@media (max-height: 700px) and (min-width: 576px) {
  .acesso-barra-igreja .acesso-marca-nome { font-size: 1.15rem; }
  .acesso-arco { padding: 1.1rem 1.8rem .85rem; }
  .acesso-circulo { width: 104px; }
  .acesso-marca { margin-bottom: .3rem; }
  .acesso-caixa h1 { font-size: 1.4rem; margin-bottom: .2rem; }
  .acesso-avatar { width: 48px; height: 48px; margin-bottom: .4rem; }
  .acesso-opcoes { margin-bottom: .6rem; }
  .acesso-liturgia-santo { display: none; }
  .acesso-sistema-titulo { font-size: 1rem; }
  .acesso-links { margin-top: .5rem; }
  .acesso-caixa .form-control, .acesso-caixa .btn { min-height: 40px; }
  .acesso-publico-texto span { display: none; }
  .acesso-aviso-sistema .acesso-publico-texto span { display: block; }
}

/* ---------- Telemóvel ---------- */
@media (max-width: 1199.98px) {
  .acesso-barra { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: .5rem; padding: .9rem 1rem .3rem; }
  .acesso-barra-liturgia, .acesso-barra-sistema { height: auto; align-items: center; width: 100%; max-width: 420px; }
  .acesso-versiculo { position: static; max-width: 440px; text-align: center; margin: 0 auto .4rem; }
  .acesso-caixas { position: static; width: 100%; max-width: 420px; margin: 0 auto; }
}
@media (max-width: 575.98px) {
  /* no telemóvel a barra desfaz-se: o formulário sobe e as caixas (Área pública, Manual, Instalar) passam para baixo do cartão */
  .acesso-fundo { grid-template-rows: none; align-content: start; row-gap: .55rem; }
  .acesso-barra, .acesso-barra-sistema, .acesso-barra-liturgia { display: contents; }
  .acesso-sistema-titulo, .acesso-aviso-sistema, .acesso-barra-igreja, .acesso-liturgia {
    position: relative; z-index: 1; width: calc(100% - 2rem); max-width: 420px; margin-inline: auto;
  }
  .acesso-sistema-titulo { order: 1; justify-content: center; padding-top: .9rem; }
  .acesso-aviso-sistema { order: 2; }
  .acesso-barra-igreja { order: 3; }
  .acesso-liturgia { order: 4; }
  .acesso-conteudo { order: 5; }
  .acesso-pe { order: 8; }
  .acesso-barra-igreja .acesso-marca-nome { font-size: 1.1rem; }
  .acesso-liturgia { border-radius: 14px; padding: .4rem .75rem; }
  .acesso-liturgia-santo { display: none; }
  .acesso-conteudo { align-items: flex-start; padding: .6rem 1rem; }
  .acesso-arco { border-radius: 170px 170px 22px 22px; padding: 1.7rem 1.3rem 1.2rem; }
  .acesso-caixa h1 { font-size: 1.5rem; }
  .acesso-circulo { width: 110px; }
  .acesso-avatar { width: 72px; height: 72px; }
}
