/* Acessibilidade pública — Etapas 1, 2 e 3. Não altera regras de negócio. */
.skip-link{position:fixed;left:16px;top:-80px;z-index:10000;background:#fff;color:#123d78;border:2px solid #123d78;border-radius:6px;padding:10px 14px;font-weight:700;text-decoration:none;transition:top .15s ease}
.skip-link:focus{top:12px}
.sr-only,.accessibility-status-live{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}

/* Barra e botões de acessibilidade: tipografia e área de toque compatíveis com o restante do site. */
.accessibility-bar{background:#123d78;color:#fff;border-bottom:1px solid rgba(255,255,255,.34)}
.accessibility-bar-inner{width:min(1120px,calc(100% - 32px));min-height:56px;margin:0 auto;display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:7px 0}
.accessibility-label{font-size:1rem;font-weight:700;line-height:1.3}
.accessibility-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.accessibility-button{min-height:44px;border:2px solid rgba(255,255,255,.86);border-radius:7px;background:rgba(255,255,255,.08);color:#fff;padding:8px 14px;font-family:inherit;font-size:.96rem;line-height:1.2;font-weight:700;letter-spacing:0;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap}
.accessibility-button:hover,.accessibility-button:focus-visible,.accessibility-button[aria-pressed="true"]{background:#fff;color:#123d78;border-color:#fff;outline:3px solid #ffd54f;outline-offset:2px}
.accessibility-button[aria-pressed="true"]::before{content:"✓";font-weight:900;margin-right:6px}

/* Tamanhos globais mínimos de interação e tipografia dos controles públicos. */
.button{min-height:46px;font-size:1rem;line-height:1.25;padding-inline:18px}
.tab-button{min-height:44px;font-size:1rem;line-height:1.25}
.slot{min-height:58px;font-size:1rem;line-height:1.2;padding:8px}
.slot small{font-size:.82rem;line-height:1.25;margin-top:3px}
.slot-state{display:block;min-height:1.1em;margin-top:3px;font-size:.78rem;font-weight:800}

html[data-font-scale="1"]{font-size:100%}
html[data-font-scale="2"]{font-size:112.5%}
html[data-font-scale="3"]{font-size:125%}

/* Contraste elevado. */
html.high-contrast body{background:#000!important;color:#fff!important}
html.high-contrast .topbar,html.high-contrast .hero,html.high-contrast .panel,html.high-contrast .location-panel,html.high-contrast .requirement,html.high-contrast .modal-card,html.high-contrast .notice,html.high-contrast .conditions-grid,html.high-contrast .accessibility-support-box{background:#000!important;color:#fff!important;border-color:#fff!important;box-shadow:none!important}
html.high-contrast h1,html.high-contrast h2,html.high-contrast h3,html.high-contrast p,html.high-contrast span,html.high-contrast label,html.high-contrast strong,html.high-contrast b,html.high-contrast .muted,html.high-contrast .lead,html.high-contrast .section-hint{color:#fff!important}
html.high-contrast input,html.high-contrast select,html.high-contrast textarea{background:#000!important;color:#fff!important;border:2px solid #fff!important}
html.high-contrast .button,html.high-contrast .tab-button,html.high-contrast .slot{border:2px solid #fff!important}
html.high-contrast a{color:#ffff00!important}
html.high-contrast :focus-visible{outline:4px solid #ffff00!important;outline-offset:3px!important}

/* Modo para deficiência de visão de cores: informação nunca depende apenas de vermelho/verde. */
html.color-vision-safe .button.primary{border:3px solid #111!important;box-shadow:inset 0 0 0 2px #fff!important}
html.color-vision-safe .tab-button.active{border-bottom-width:5px!important;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:4px}
html.color-vision-safe .slot{border-width:2px!important}
html.color-vision-safe .slot:not(.full):not(.selected){border-style:solid!important;border-color:#1d4f91!important;background:#fff!important;color:#17233a!important}
html.color-vision-safe .slot.selected{background:#17233a!important;color:#fff!important;border:3px double #fff!important;outline:3px solid #17233a!important;outline-offset:2px!important}
html.color-vision-safe .slot.full{background:#ececec!important;color:#292929!important;border:2px dashed #292929!important;opacity:1!important}
html.color-vision-safe .toast{background:#173d2e!important;border:3px solid #fff!important}
html.color-vision-safe .toast::before{content:"✓ ";font-weight:900}
html.color-vision-safe .toast.error-toast{background:#252525!important;border:3px dashed #fff!important}
html.color-vision-safe .toast.error-toast::before{content:"⚠ ";font-weight:900}
html.color-vision-safe .error{color:#6b0010!important;font-weight:800;text-decoration:underline;text-decoration-thickness:2px}

:where(a,button,input,select,textarea,[tabindex]):focus-visible{outline:3px solid #16458f;outline-offset:3px}
[aria-invalid="true"]{border-color:#8a0015!important;box-shadow:0 0 0 3px rgba(138,0,21,.16)!important}

.accessibility-support-box{margin-top:14px;border:1px solid #cbd4df;border-radius:8px;background:#fbfcfe;padding:16px}
.accessibility-support-box>p{margin:0 0 12px;color:#6a7483;font-size:.9rem}
.accessibility-support-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px 14px;margin-top:12px}
.accessibility-support-options .condition-item{min-height:44px;padding:7px 0;font-size:.95rem;line-height:1.35}
.accessibility-support-options input[type="checkbox"]{width:20px;height:20px;flex:0 0 20px}
.accessibility-support-details{margin-top:12px}
.accessibility-privacy-note{display:block;margin-top:8px;color:#596579;font-size:.86rem;line-height:1.45}

@media(max-width:680px){
  .accessibility-bar-inner{align-items:flex-start;flex-direction:column;padding:10px 0}
  .accessibility-actions{width:100%;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
  .accessibility-button{width:100%;font-size:.95rem;padding-inline:8px;white-space:normal;text-align:center}
  .accessibility-support-options{grid-template-columns:1fr}
  .button{width:100%;min-height:48px}
}

@media(max-width:420px){
  .accessibility-actions{grid-template-columns:1fr}
}

/* Ajuste Etapa 3.1 — alinhamento dos checkboxes de ciência. */
.awareness-field .condition-item,.group-request-ack .condition-item{align-items:center!important;gap:12px!important;line-height:1.45}
.awareness-field .condition-item input[type="checkbox"],.group-request-ack .condition-item input[type="checkbox"]{width:20px!important;height:20px!important;min-height:20px!important;flex:0 0 20px!important;margin:0!important}
.group-request-ack .condition-item span{display:block;margin:0}

/* Modo daltonismo: troca perceptível da paleta, preservando legibilidade e identidade estrutural. */
html.color-vision-safe{
  --red:#0067a3;
  --red-dark:#004b78;
  --red-soft:#e7f3f9;
  --blue:#293b63;
  --success:#006b66;
  --danger:#a34300;
  --disabled:#6f7782;
}
html.color-vision-safe .accessibility-bar{background:#293b63!important}
html.color-vision-safe .hero{background:linear-gradient(135deg,#edf6fb 0%,#fff 58%,#f4f0e7 100%)!important}
html.color-vision-safe .eyebrow,html.color-vision-safe .requirement b{color:#004b78!important}
html.color-vision-safe .tab-button.active{color:#004b78!important;border-bottom-color:#0067a3!important}
html.color-vision-safe .button.primary{background:#0067a3!important;color:#fff!important;border-color:#17233a!important}
html.color-vision-safe .button.primary:hover{background:#004b78!important}
html.color-vision-safe .notice{border-left-color:#0067a3!important;background:#edf6fb!important;color:#17233a!important}
html.color-vision-safe .ineligible-box{border-color:#a34300!important;background:#fff3e5!important;color:#4b2d12!important}
html.color-vision-safe .ineligible-box strong{color:#7d3400!important}
html.color-vision-safe .error{color:#7d3400!important}
html.color-vision-safe [aria-invalid="true"]{border-color:#a34300!important;box-shadow:0 0 0 3px rgba(163,67,0,.18)!important}
html.color-vision-safe input:focus,html.color-vision-safe select:focus,html.color-vision-safe textarea:focus{border-color:#0067a3!important;box-shadow:0 0 0 3px rgba(0,103,163,.18)!important}
html.color-vision-safe :where(a,button,input,select,textarea,[tabindex]):focus-visible{outline-color:#e69f00!important}
html.color-vision-safe .status{background:#e8f3f2!important;color:#005a56!important;border:1px solid #005a56!important}

/* Ajuste Etapa 3.2 — contraste textual no modo daltonismo e alinhamento dos apoios. */
html.color-vision-safe .hero h1{color:#17233a!important}
html.color-vision-safe .hero .lead{color:#4d5f78!important}
html.color-vision-safe .hero .location-panel h2{color:#004b78!important}
html.color-vision-safe .hero .location-unit-name{color:#17233a!important}
html.color-vision-safe .hero .location-panel p,
html.color-vision-safe .hero .location-panel .address{color:#4d5f78!important}
html.color-vision-safe .hero .requirement span{color:#354154!important}

.accessibility-support-options .condition-item{
  display:flex!important;
  align-items:center!important;
  gap:10px!important;
  min-height:44px;
  padding:7px 0;
  line-height:1.35;
}
.accessibility-support-options .condition-item input[type="checkbox"]{
  width:20px!important;
  height:20px!important;
  min-height:20px!important;
  flex:0 0 20px!important;
  margin:0!important;
  align-self:center!important;
}


/* Ajuste mobile 3.3 — botão recolhível sempre visível em telas estreitas. */
.accessibility-menu-toggle{display:none!important}
@media(max-width:920px){
  .accessibility-bar{display:block!important;visibility:visible!important;opacity:1!important;height:auto!important;overflow:visible!important}
  .accessibility-bar-inner{display:flex!important;width:min(100% - 24px,1120px);min-height:0!important;margin:0 auto!important;padding:7px 0!important;gap:0!important;align-items:stretch!important;flex-direction:column!important}
  .accessibility-label{display:none!important}
  .accessibility-menu-toggle{
    display:flex!important;visibility:visible!important;opacity:1!important;
    width:100%!important;min-height:46px!important;align-items:center!important;justify-content:space-between!important;
    gap:12px!important;padding:9px 14px!important;border:2px solid rgba(255,255,255,.88)!important;border-radius:8px!important;
    background:rgba(255,255,255,.08)!important;color:#fff!important;font-family:inherit!important;font-size:1rem!important;
    font-weight:700!important;line-height:1.25!important;cursor:pointer!important;text-align:left!important
  }
  .accessibility-menu-toggle:focus-visible{outline:3px solid #ffd54f!important;outline-offset:2px!important}
  .accessibility-menu-chevron{font-size:1.35rem;line-height:1;transition:transform .18s ease}
  .accessibility-menu-toggle[aria-expanded="true"] .accessibility-menu-chevron{transform:rotate(180deg)}
  .accessibility-actions{display:none!important;width:100%!important;margin-top:8px!important}
  .accessibility-bar.mobile-accessibility-open .accessibility-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
}
@media(max-width:480px){
  .accessibility-bar.mobile-accessibility-open .accessibility-actions{grid-template-columns:1fr!important}
}
html.color-vision-safe .accessibility-menu-toggle{border-color:#fff!important;color:#fff!important;background:#293b63!important}
html.high-contrast .accessibility-menu-toggle{background:#000!important;color:#fff!important;border-color:#fff!important}

/* ==========================================================
   MODO DALTONISMO — PALETA SEGURA + SINAIS REDUNDANTES
   Revisão 31/08/2026
   Princípios: WCAG 1.4.1 (não depender só de cor), contraste,
   foco visível e estados identificáveis por borda/texto/símbolo.
   Não usa filter() global para não distorcer logos, imagens ou VLibras.
   ========================================================== */
html.color-vision-safe:not(.high-contrast) body.visual-public{
  --v0-blood:#005f8a!important;
  --v0-blood-dark:#00435f!important;
  --v0-navy:#17233a!important;
  --v0-fg:#111827!important;
  --v0-muted:#3f4b59!important;
  --v0-border:#9eabb7!important;
  --v0-card:#ffffff!important;
  --v0-soft:#eef4f7!important;
  --v0-warm-bg:#f5f3ea!important;
  --v0-warm-border:#a8b3bd!important;
  --v0-warm-input:#7c8c99!important;
  background:#f5f3ea!important;
  color:#111827!important;
}

/* Cabeçalho / navegação */
html.color-vision-safe:not(.high-contrast) body.visual-public .public-anchor-header{
  border-top-color:#005f8a!important;
  border-bottom-color:#9eabb7!important;
  background:rgba(255,255,255,.98)!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .public-anchor-nav a{
  color:#17233a!important;
  text-decoration:none!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .public-anchor-nav a::after{
  background:#e69f00!important;
  height:3px!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .public-anchor-nav a:hover,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-anchor-nav a:focus-visible{
  color:#00435f!important;
  text-decoration:underline!important;
  text-decoration-thickness:2px!important;
  text-underline-offset:5px!important;
}

/* Hero inteiro: troca perceptível da paleta, não apenas textos */
html.color-vision-safe:not(.high-contrast) body.visual-public .hero{
  background-image:radial-gradient(circle at 82% 20%,rgba(230,159,0,.28),transparent 44%),linear-gradient(120deg,#17233a,#005f8a)!important;
  color:#fff!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .hero h1,
html.color-vision-safe:not(.high-contrast) body.visual-public .hero .lead,
html.color-vision-safe:not(.high-contrast) body.visual-public .hero .eyebrow,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-panel,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-panel h2,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-unit-name,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-panel .address,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-hours,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-contact{
  color:#fff!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .hero .eyebrow,
html.color-vision-safe:not(.high-contrast) body.visual-public .location-map-link{
  color:#ffd166!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .location-panel{
  border:2px solid rgba(255,255,255,.72)!important;
  background:rgba(0,0,0,.16)!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .location-unit + .location-unit{
  border-top-color:rgba(255,255,255,.48)!important;
}

/* Seção requisitos / cards */
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-requirements-section{
  background:#f8f4e8!important;
  border-color:#a8b3bd!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-section-heading h2,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-scheduling-heading h2,
html.color-vision-safe:not(.high-contrast) body.visual-public .section-title{
  color:#17233a!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-section-heading p,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-scheduling-heading p,
html.color-vision-safe:not(.high-contrast) body.visual-public .section-hint{
  color:#3f4b59!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-requirements-section .requirement{
  border:2px solid #557586!important;
  background:#fff!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-requirements-section .requirement-icon{
  background:#fff1cc!important;
  color:#7a5400!important;
  outline:1px solid #a57400!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-requirements-section .requirement b{
  color:#17233a!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .v0-requirements-section .requirement > span:last-child{
  color:#354154!important;
}

/* Containers / formulários */
html.color-vision-safe:not(.high-contrast) body.visual-public #scheduleForm,
html.color-vision-safe:not(.high-contrast) body.visual-public #groupForm,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-consulta-panel{
  border:2px solid #557586!important;
  background:#fff!important;
  box-shadow:0 3px 10px rgba(23,35,58,.08)!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public label{
  color:#17233a!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public input,
html.color-vision-safe:not(.high-contrast) body.visual-public select,
html.color-vision-safe:not(.high-contrast) body.visual-public textarea{
  border:2px solid #7c8c99!important;
  background:#fff!important;
  color:#111827!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public input:focus,
html.color-vision-safe:not(.high-contrast) body.visual-public select:focus,
html.color-vision-safe:not(.high-contrast) body.visual-public textarea:focus{
  border-color:#005f8a!important;
  box-shadow:0 0 0 3px rgba(0,95,138,.22)!important;
  outline:2px solid #e69f00!important;
  outline-offset:2px!important;
}

/* Ações: estado não depende apenas de cor */
html.color-vision-safe:not(.high-contrast) body.visual-public .button.primary,
html.color-vision-safe:not(.high-contrast) body.visual-public #scheduleForm button[type="submit"],
html.color-vision-safe:not(.high-contrast) body.visual-public #groupForm button[type="submit"],
html.color-vision-safe:not(.high-contrast) body.visual-public .public-consulta-panel .button.secondary,
html.color-vision-safe:not(.high-contrast) body.visual-public .tab-button.active,
html.color-vision-safe:not(.high-contrast) body.visual-public .tab-button[aria-selected="true"]{
  background:#005f8a!important;
  color:#fff!important;
  border:2px solid #17233a!important;
  box-shadow:inset 0 0 0 2px rgba(255,255,255,.82)!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .tab-button.active,
html.color-vision-safe:not(.high-contrast) body.visual-public .tab-button[aria-selected="true"]{
  text-decoration:underline!important;
  text-decoration-thickness:2px!important;
  text-underline-offset:4px!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .tab-button:not(.active){
  color:#354154!important;
  border:2px solid transparent!important;
}

/* Horários: disponível / selecionado / indisponível usam forma e texto além de cor */
html.color-vision-safe:not(.high-contrast) body.visual-public .slot{
  border:2px solid #005f8a!important;
  background:#fff!important;
  color:#17233a!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .slot:hover:not(:disabled){
  border-color:#17233a!important;
  background:#eef4f7!important;
  color:#17233a!important;
  outline:2px solid #e69f00!important;
  outline-offset:1px!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .slot.selected{
  background:#17233a!important;
  color:#fff!important;
  border:3px double #fff!important;
  outline:3px solid #17233a!important;
  outline-offset:2px!important;
  text-decoration:underline!important;
  text-decoration-thickness:2px!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .slot.full,
html.color-vision-safe:not(.high-contrast) body.visual-public .slot:disabled{
  background:#e7e7e7!important;
  color:#292929!important;
  border:2px dashed #555!important;
  opacity:1!important;
}

/* Avisos / erros / status com símbolos e bordas */
html.color-vision-safe:not(.high-contrast) body.visual-public .notice{
  border-left:6px solid #005f8a!important;
  background:#eef4f7!important;
  color:#17233a!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .ineligible-box{
  border:3px dashed #8a4d00!important;
  background:#fff4dd!important;
  color:#3f2b10!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .ineligible-box strong,
html.color-vision-safe:not(.high-contrast) body.visual-public .error{
  color:#6f3d00!important;
  font-weight:900!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .error:not(:empty)::before{
  content:"⚠ ";
  font-weight:900;
}
html.color-vision-safe:not(.high-contrast) body.visual-public [aria-invalid="true"]{
  border:3px dashed #8a4d00!important;
  box-shadow:0 0 0 3px rgba(138,77,0,.16)!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .status{
  background:#eef4f7!important;
  color:#00435f!important;
  border:2px solid #005f8a!important;
  font-weight:900!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .status::before{
  content:"✓ ";
  font-weight:900;
}

/* Footer também muda, deixando claro que o modo atinge a página inteira. */
html.color-vision-safe:not(.high-contrast) body.visual-public .public-footer{
  background-image:radial-gradient(circle at 82% 20%,rgba(230,159,0,.22),transparent 42%),linear-gradient(120deg,#17233a,#005f8a)!important;
  color:#fff!important;
}
html.color-vision-safe:not(.high-contrast) body.visual-public .public-footer a,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-footer-label,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-footer-info,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-footer-social,
html.color-vision-safe:not(.high-contrast) body.visual-public .public-footer-bottom{
  color:#fff!important;
}

/* Controle Daltonismo mostra o estado também por borda/check, não só cor. */
html.color-vision-safe:not(.high-contrast) body.visual-public #accessColorVision[aria-pressed="true"]{
  background:#17233a!important;
  color:#fff!important;
  border:2px solid #e69f00!important;
  box-shadow:inset 0 0 0 2px #fff!important;
}

/* Preferência do sistema por maior contraste: reforço automático, sem substituir o botão manual. */
@media (prefers-contrast: more){
  body.visual-public :where(a,button,input,select,textarea,[tabindex]):focus-visible{
    outline-width:4px!important;
    outline-style:solid!important;
    outline-offset:3px!important;
  }
}
