/* ════════════════════════════════════════════════════════════
   AnamnesísMed · Componentes compartilhados
   Carregado por TODAS as páginas (depois de anamnesismed-theme.css quando existe).
   Fonte única de: skip-link, .sr-only, botões (.am-btn), campos (.am-input/.am-label),
   cards (.am-card), chips (.am-chip), spinner (.am-spinner) e toast (.am-toast).
   Só usa tokens (com fallback), então funciona também nas páginas com :root próprio.
   As páginas mantêm só o que é específico delas (ex.: tamanho do botão do hero).
   ════════════════════════════════════════════════════════════ */

/* ── Acessibilidade ── */
.sr-only{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;margin:-1px;padding:0;border:0}
.skip-link{position:fixed;left:12px;top:calc(8px + env(safe-area-inset-top,0px));z-index:100000;padding:12px 18px;min-height:44px;display:inline-flex;align-items:center;
  background:var(--ink,#0A1A24);color:#fff;font:700 14px/1.2 var(--sans,system-ui,sans-serif);text-decoration:none;border-radius:10px;border:2px solid #5ED6E3;
  transform:translateY(-200%);transition:transform .15s}
.skip-link:focus,.skip-link:focus-visible{transform:translateY(0);outline:none}
[data-lang="es"] .skip-link .pt,[data-lang="pt"] .skip-link .es{display:none!important}
#main:focus{outline:none}

/* ── Botões ── */
.am-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;padding:11px 20px;
  font:700 14px/1.2 var(--sans,system-ui,sans-serif);border:1.5px solid transparent;border-radius:var(--r,10px);
  cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .2s,border-color .2s,color .2s,transform .2s,box-shadow .2s}
.am-btn--primary{background:var(--primary-dark,#0B7C88);color:#fff}
.am-btn--primary:hover{background:var(--primary-deep,#096873);transform:translateY(-1px)}
.am-btn--secondary{background:var(--bg-card,#fff);color:var(--ink,#0A1A24);border-color:var(--line-md,rgba(10,26,36,.16))}
.am-btn--secondary:hover{border-color:var(--primary-dark,#0B7C88);background:var(--bg,#EAF0F2)}
.am-btn--ghost{background:transparent;color:var(--muted,#5A7079);border-color:var(--line-md,rgba(10,26,36,.16))}
.am-btn--ghost:hover{border-color:var(--primary-dark,#0B7C88);color:var(--teal-text,#0A6A75)}
.am-btn--block{display:flex;width:100%}
.am-btn[disabled],.am-btn[aria-disabled="true"]{opacity:.7;cursor:not-allowed;transform:none}

/* ── Campos ── */
.am-label{display:block;font-size:13px;font-weight:600;color:var(--ink,#0A1A24);margin-bottom:6px}
.am-input{width:100%;min-height:44px;padding:12px 14px;font:400 15px/1.4 var(--sans,system-ui,sans-serif);
  background:var(--bg-card,#fff);border:1.5px solid var(--line-md,rgba(10,26,36,.16));border-radius:var(--r,10px);color:var(--ink,#0A1A24);
  transition:border-color .2s,box-shadow .2s}
.am-input:focus{border-color:var(--primary-dark,#0B7C88);box-shadow:0 0 0 3px rgba(15,163,177,.12)}
.am-input::placeholder{color:rgba(90,112,121,.8)}
.am-input[aria-invalid="true"]{border-color:#B3261E}
/* 16px em campos no toque: evita o zoom automático do iOS ao focar */
@media (pointer:coarse){.am-input,input.am-input,select.am-input,textarea.am-input{font-size:16px}}

/* ── Card / chip ── */
.am-card{background:var(--bg-card,#fff);border:1px solid var(--line,rgba(10,26,36,.09));border-radius:14px;padding:28px}
.am-chip{display:inline-flex;align-items:center;gap:6px;min-height:32px;padding:5px 12px;border-radius:20px;font:600 12px/1.2 var(--sans,system-ui,sans-serif);
  background:rgba(15,163,177,.12);border:1px solid rgba(15,163,177,.3);color:var(--teal-text,#0A6A75)}
@media (pointer:coarse){button.am-chip,a.am-chip,[role=button].am-chip{min-height:44px}}

/* ── Spinner ── */
@keyframes am-spin{to{transform:rotate(360deg)}}
.am-spinner{display:inline-block;width:14px;height:14px;border:2px solid rgba(255,255,255,.5);border-top-color:#fff;border-radius:50%;animation:am-spin .7s linear infinite;vertical-align:-2px}
.am-spinner--dark{border-color:rgba(10,26,36,.2);border-top-color:var(--primary-dark,#0B7C88)}
@media (prefers-reduced-motion:reduce){.am-spinner{animation-duration:1.8s}}
.am-spinner[hidden]{display:none}/* o display do spinner anulava o atributo hidden (girava parado no botão Exportar) */

/* ── Toast (amNotify em supabase-integration.js) ── */
.am-toast-wrap{position:fixed;left:50%;bottom:calc(20px + env(safe-area-inset-bottom,0px));transform:translateX(-50%);z-index:10000;display:flex;flex-direction:column;gap:8px;width:min(92vw,420px);pointer-events:none}
.am-toast{pointer-events:auto;background:var(--ink,#0A1A24);color:#fff;border-left:4px solid var(--primary,#0FA3B1);border-radius:10px;padding:12px 14px;font:500 14px/1.45 var(--sans,system-ui,sans-serif);box-shadow:0 8px 28px rgba(10,26,36,.35);display:flex;gap:10px;align-items:flex-start}
.am-toast.error{border-left-color:var(--accent,#FF5C49)}
.am-toast button{margin-left:auto;background:none;border:0;color:#fff;font-size:20px;line-height:1;cursor:pointer;padding:0;min-width:44px;min-height:44px;margin:-10px -8px -10px auto}

/* ── Botão de perigo ── */
.am-btn--danger{background:#B3261E;color:#fff}
.am-btn--danger:hover{background:#8F1D17}

/* ── Diálogo modal (alertdialog) ── */
.am-modal{position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;padding:max(16px,env(safe-area-inset-top,0px)) max(16px,env(safe-area-inset-right,0px)) max(16px,env(safe-area-inset-bottom,0px)) max(16px,env(safe-area-inset-left,0px))}
.am-modal[hidden]{display:none}
.am-modal-backdrop{position:absolute;inset:0;background:rgba(10,26,36,.6)}
.am-modal-box{position:relative;width:min(100%,480px);max-height:100%;overflow:auto;background:var(--bg-card,#fff);color:var(--ink,#0A1A24);border-radius:16px;padding:24px;box-shadow:0 24px 60px rgba(10,26,36,.4);display:flex;flex-direction:column;gap:12px}
.am-modal-box:focus{outline:none}
.am-modal-title{font:700 20px/1.25 var(--serif,system-ui,sans-serif);margin:0}
.am-modal-body{font-size:14px;line-height:1.55;color:var(--ink,#0A1A24);display:flex;flex-direction:column;gap:8px}
.am-modal-body p{margin:0}
.am-modal-actions{display:flex;gap:10px;justify-content:flex-end;flex-wrap:wrap;margin-top:4px}
@media (max-width:480px){.am-modal-actions .am-btn{flex:1 1 100%}}
body.am-modal-open{overflow:hidden}

/* ── Aviso fixo inline (ex.: assinatura já ativa) ── */
.am-banner{position:fixed;left:50%;top:calc(12px + env(safe-area-inset-top,0px));transform:translateX(-50%);z-index:10000;width:min(94vw,520px);display:flex;gap:12px;align-items:flex-start;flex-wrap:wrap;
  background:var(--ink,#0A1A24);color:#fff;border-left:4px solid var(--primary,#0FA3B1);border-radius:12px;padding:14px 16px;font:500 14px/1.45 var(--sans,system-ui,sans-serif);box-shadow:0 12px 36px rgba(10,26,36,.4)}
.am-banner a{color:var(--teal-on-dark,#5ED6E3);font-weight:700;text-underline-offset:3px;display:inline-flex;align-items:center;min-height:44px}
.am-banner button{margin-left:auto;background:none;border:0;color:#fff;font-size:20px;line-height:1;cursor:pointer;min-width:44px;min-height:44px}
.am-banner .am-banner-msg{flex:1 1 220px;padding-top:2px}

/* ── Toque / tablet / app instalado (PWA) ──
   Alvos >= 44px, campos >= 16px (iOS não dá zoom), rolagem sem "elástico" encadeado e safe-area. */
html{overscroll-behavior-y:contain}
@media (pointer:coarse),(max-width:1180px){
  .lang-btn{min-height:44px;min-width:44px}
  .hc-btn{min-height:44px;min-width:44px}
  .form-input,.form-select,.search-input{min-height:44px;font-size:16px}
  .btn-new,.btn-upgrade,.hero-cta,.topbar-back,.tab-btn,.esp-card{min-height:44px}
}
@media (max-width:768px){.topbar .pwa-btn{display:none!important}}

/* ── Alvos de toque restantes (QA visual): hambúrguer, voltar, abas secundárias, busca, botões de perigo ── */
@media (pointer:coarse),(max-width:1180px){
  .hamburger{min-width:44px;min-height:44px}
  .topbar-back{min-width:44px}
  .secnav-btn,.search-box,.btn-danger{min-height:44px}
}

/* ── Tratamento (Dr./Dra.) — radio group de gênero, aviso e modal ── */
.am-genero{border:0;margin:14px 0 6px;padding:0;min-width:0}
.am-genero legend{font-size:13px;font-weight:700;color:var(--ink,#0d2d3d);padding:0;margin-bottom:8px}
.am-genero-opts{display:flex;gap:10px;flex-wrap:wrap}
.am-genero-opt{flex:1 1 150px;display:flex;align-items:center;gap:10px;min-height:48px;padding:10px 14px;border:1.5px solid rgba(13,45,61,.2);border-radius:10px;background:#fff;color:var(--ink,#0d2d3d);font-size:15px;cursor:pointer}
.am-genero-opt input{width:20px;height:20px;flex-shrink:0;accent-color:#0e7490;margin:0}
.am-genero-opt:has(input:checked){border-color:#0e7490;background:#e6f4f7}
.am-genero-opt:focus-within{outline:3px solid #0e7490;outline-offset:2px}
.am-genero-sub{font-size:13px;color:#4b6070}
.am-genero-msg{margin:10px 0 0;font-size:13px;font-weight:600;color:#b91c1c}
.am-genero-msg[hidden]{display:none}
.am-genero-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:16px}
.am-genero-actions button{min-height:44px;min-width:44px;padding:10px 18px;border-radius:8px;border:1.5px solid rgba(13,45,61,.2);background:#fff;color:#0d2d3d;font:700 14px/1 inherit;font-family:inherit;cursor:pointer}
.am-genero-actions .am-genero-save{background:#0e7490;border-color:#0e7490;color:#fff}
.am-genero-actions button:disabled{opacity:.6;cursor:wait}
.am-genero-overlay{position:fixed;inset:0;z-index:9998;background:rgba(13,45,61,.6);display:flex;align-items:center;justify-content:center;padding:20px}
.am-genero-card{background:#fff;color:#0d2d3d;border-radius:14px;max-width:440px;width:100%;padding:24px 22px;box-shadow:0 20px 60px rgba(0,0,0,.35)}
.am-genero-card h2{font-size:19px;margin:0 0 8px}
.am-genero-card p{font-size:14px;line-height:1.55;color:#4b6070;margin:0 0 8px}
.am-genero-aviso{display:flex;align-items:center;gap:8px 14px;flex-wrap:wrap;margin:0 0 14px;padding:8px 8px 8px 14px;border:1px solid rgba(14,116,144,.3);background:#e6f4f7;color:#0d2d3d;border-radius:12px;font-size:14px}
.am-genero-aviso>span{flex:1 1 220px}
.am-genero-aviso button{min-height:44px;min-width:44px;border-radius:8px;border:1.5px solid #0e7490;background:#fff;color:#0e7490;font:700 14px/1 inherit;font-family:inherit;padding:0 14px;cursor:pointer}
.am-genero-aviso .am-genero-aviso-x{border-color:transparent;background:transparent;color:#4b6070;font-size:22px;padding:0}
[data-lang="es"] .am-genero-aviso .pt,[data-lang="pt"] .am-genero-aviso .es{display:none!important}
