/* ============================================================
   AM9 TICKETS — Design System
   Bootstrap 5 + custom layer
   ============================================================ */

/* ── 1. CUSTOM PROPERTIES ───────────────────────────────────── */
:root {
  --am9-primary:        #2563EB;
  --am9-primary-hover:  #1E3A8A;
  --am9-primary-light:  rgba(37, 99, 235, .10);
  --am9-secondary:      #ff6600;
  --am9-accent:         #14213D;
  --am9-highlight:      #38BDF8;
  --am9-dark:           #0D1B2A;
  --am9-success:        #37c956;
  --am9-warning:        #ffc107;

  --am9-radius-sm:  8px;
  --am9-radius:     12px;
  --am9-radius-lg:  16px;
  --am9-radius-xl:  24px;

  --am9-shadow-sm:  0 1px 4px rgba(0,0,0,.06);
  --am9-shadow:     0 2px 12px rgba(0,0,0,.08);
  --am9-shadow-lg:  0 8px 28px rgba(0,0,0,.13);
  --am9-shadow-xl:  0 16px 48px rgba(0,0,0,.18);

  --am9-nav-h:      64px;
  --am9-bottom-h:   62px;

  --am9-transition: .18s ease;
  --am9-font:       'Poppins', 'Inter', system-ui, -apple-system, sans-serif;

  --am9-body-bg:    #dfeafe;

  /* Textura de papel (ruído sutil via SVG) */
  --am9-paper-noise: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='0.05'/%3E%3C/svg%3E");

  /* Máscara da perfuração (furos reais) como um SVG único — evita
     depender de mask-composite pra combinar várias camadas, que tem
     suporte irregular entre navegadores e some com os furos quando
     não é reconhecido. O recorte (notch + furinhos) já vem pronto
     num só path, via fill-rule:evenodd. */
  --am9-perf-mask-h: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 90'%3E%3Cpath fill-rule='evenodd' fill='%23000' d='M0,0H1000V90H0Z M0,45m-46,0a46,46 0 1,0 92,0a46,46 0 1,0 -92,0 M1000,45m-46,0a46,46 0 1,0 92,0a46,46 0 1,0 -92,0 M61,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M107,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M153,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M199,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M245,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M291,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M337,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M383,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M429,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M475,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M521,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M567,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M613,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M659,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M705,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M751,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M797,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M843,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M889,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0 M935,45m-11.5,0a11.5,11.5 0 1,0 23,0a11.5,11.5 0 1,0 -23,0'/%3E%3C/svg%3E");
  --am9-perf-mask-v: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 300'%3E%3Cpath fill-rule='evenodd' fill='%23000' d='M0,0H40V300H0Z M20,0m-20,0a20,20 0 1,0 40,0a20,20 0 1,0 -40,0 M20,300m-20,0a20,20 0 1,0 40,0a20,20 0 1,0 -40,0 M20,40m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,60m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,80m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,100m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,120m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,140m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,160m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,180m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,200m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,220m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,240m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0 M20,260m-3,0a3,3 0 1,0 6,0a3,3 0 1,0 -6,0'/%3E%3C/svg%3E");
}

/* Bootstrap color-system sync */
:root {
  --bs-primary:         var(--am9-primary);
  --bs-primary-rgb:     37, 99, 235;
  --bs-link-color:      var(--am9-primary);
  --bs-link-hover-color:var(--am9-primary-hover);

  /* Verde padrão do site (botões, badges, .text-success, .bg-success
     inclusive com bg-opacity — que usa rgba(var(--bs-success-rgb),...) —
     e o próprio --bs-success-text-emphasis/-bg-subtle/-border-subtle
     do Bootstrap 5.3, todos derivados de --bs-success-rgb). */
  --bs-success:         #37c956;
  --bs-success-rgb:     55, 201, 86;
}

/* ── 2. BASE ──────────────────────────────────────────────────── */
html { scroll-behavior: smooth; overflow-x: hidden; }

body {
  font-family: var(--am9-font);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: #1a1a2e;
  background: var(--am9-body-bg);
  /* Rede de segurança pro site inteiro (não só o dashboard): qualquer
     elemento largo demais (tabela sem .table-responsive, botão que não
     quebra linha etc.) vira scroll da PÁGINA inteira no mobile em vez
     de ficar contido — o que empurra/corta outros elementos, como no
     botão "Novo Tipo de Ingresso" que estourava a tela. Isso não
     resolve o elemento largo em si (cada caso concreto encontrado — as
     10 tabelas do dashboard — foi corrigido à parte com .table-
     responsive), mas garante que nenhum outro, já existente ou futuro,
     quebre o layout da página toda. */
  overflow-x: hidden;
  /* Rodapé sempre no final da tela, mesmo em página com pouco conteúdo
     (ex: carrinho vazio) — sem isso ele ficava colado direto embaixo do
     conteúdo, sobrando tela em branco antes dele em vez de depois.
     margin-top:auto no <footer> (abaixo) empurra ele pro fim do flex
     container, sem precisar mexer no HTML/markup de cada página. */
  min-height: 100vh;
  display: flex;
  flex-direction: column;
}
body > footer {
  margin-top: auto;
  flex-shrink: 0;
}

/* Main content offset for sticky nav */
.am9-main {
  padding-top: var(--am9-nav-h);
  min-height: 100vh;
}
/* .am9-archive-page não precisa desse padding: a navbar é sticky-top (fica
   no fluxo normal do documento), não fixed — o padding extra só duplicava
   o espaço já ocupado pela navbar. */
.am9-archive-page { min-height: 100vh; }
/* Homepage: sem padding-top extra — o .am9-poster-hero já compensa */
.am9-homepage { min-height: 100vh; }

/* ── POSTER HERO SLIDER ─────────────────────────────────────── */
/* justify-content:flex-start (não mais "center") — com o bloco
   (header + carrossel + busca) centralizado num container de 100vh,
   sobrava um vão em branco enorme entre a navbar e "PRÓXIMO EVENTO"
   em qualquer tela mais baixa/larga que o conteúdo. Ancorar no topo,
   com um respiro fixo bem menor, deixa a informação sempre perto do
   topo, sem depender da altura da viewport. */
.am9-poster-hero {
  position: relative;
  min-height: 100vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  overflow: hidden;
  padding-top: calc(var(--am9-nav-h) + 4vh);
  padding-bottom: 5vh;
}
/* No mobile, a barra inferior fixa (.am9-bottom-nav, só existe abaixo de
   768px) fica por cima da parte de baixo do hero — se o bloco de
   conteúdo acabar empurrado até lá embaixo num viewport baixo, o
   "peek" com o botão "Ver detalhes" fica embaixo da barra e o toque
   nunca chega no slide. Descontar a altura da barra do min-height evita
   a sobreposição; o respiro do topo também encolhe um pouco a mais. */
@media (max-width: 767px) {
  .am9-poster-hero {
    min-height: calc(100vh - var(--am9-bottom-h));
    padding-top: calc(var(--am9-nav-h) + 2.5vh);
  }
}

/* Backgrounds desfocados empilhados */
.am9-poster-bgs { position: absolute; inset: 0; }
.am9-poster-bg {
  position: absolute; inset: -40px;
  background-size: cover;
  background-position: center;
  filter: blur(28px) brightness(.45) saturate(1.4);
  opacity: 0;
  transition: opacity .7s ease;
  transform: scale(1.08);
}
.am9-poster-bg.active { opacity: 1; }

.am9-poster-overlay {
  position: absolute; inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(0,0,0,0.55) 0%,
    rgba(0,0,0,0.10) 35%,
    rgba(0,0,0,0.10) 60%,
    rgba(0,0,0,0.45) 100%
  );
  z-index: 1;
}

.am9-poster-hero-inner {
  position: relative;
  z-index: 2;
  width: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  padding: 32px 0 48px;
}

/* Swiper container */
.am9-poster-swiper {
  width: 100%;
  padding: 10px 0 32px !important;
  overflow: visible !important;
  position: relative; z-index: 2;
  animation: am9FadeIn 0.9s 0.2s ease both;
}
.am9-poster-slide {
  width: 220px !important;
  opacity: 0.5;
  transform: scale(0.85);
  transition: transform 0.4s ease, opacity 0.4s ease;
}
.swiper-slide-active.am9-poster-slide {
  opacity: 1;
  transform: scale(1);
}
@media (min-width: 576px) { .am9-poster-slide { width: 250px !important; } }
@media (min-width: 992px) { .am9-poster-slide { width: 280px !important; } }

/* Card do cartaz */
.am9-poster-card {
  display: block;
  background: #fff;
  border-radius: 20px;
  overflow: hidden;
  box-shadow: 0 20px 60px rgba(0,0,0,.45);
  transition: transform .3s ease, box-shadow .3s ease;
}
.swiper-slide-active .am9-poster-card {
  transform: translateY(-12px);
  box-shadow: 0 32px 80px rgba(0,0,0,.6);
}

/* Imagem do cartaz */
.am9-poster-img-wrap {
  position: relative;
  aspect-ratio: 3/4;
  overflow: hidden;
  background: #111;
}
.am9-poster-img-wrap img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform .4s ease;
}
.am9-poster-card:hover .am9-poster-img-wrap img { transform: scale(1.04); }

.am9-poster-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: #2a2a3e; color: #666; font-size: 3rem;
}

.am9-poster-badge {
  position: absolute; top: 10px; left: 10px;
  background: var(--am9-secondary, #ff6600);
  color: #fff;
  font-size: 10px; font-weight: 700;
  padding: 2px 8px; border-radius: 20px;
  text-transform: uppercase; letter-spacing: .05em;
}

/* Info do cartaz */
.am9-poster-info {
  padding: 14px 14px 16px;
}
.am9-poster-titulo {
  font-size: 14px; font-weight: 800;
  color: #1a1a2e; margin: 0 0 6px;
  line-height: 1.3;
}
.am9-poster-meta {
  font-size: 11px; color: #888;
  display: flex; align-items: center; gap: 4px;
  margin-bottom: 2px;
}
.am9-poster-meta i { font-size: 10px; flex-shrink: 0; }

.am9-poster-footer {
  display: flex; align-items: center;
  justify-content: space-between;
  margin-top: 10px;
}
.am9-poster-preco {
  font-size: 13px; font-weight: 800;
  color: var(--am9-primary);
}
.am9-poster-btn {
  display: inline-flex; align-items: center;
  background: var(--am9-warning, #ffc107);
  color: #1a1a2e;
  font-size: 11px; font-weight: 700;
  padding: 5px 12px; border-radius: 20px;
  text-transform: uppercase; letter-spacing: .04em;
}

/* Navegação Swiper */
.am9-swiper-btn {
  color: #fff !important;
  text-shadow: 0 2px 8px rgba(0,0,0,.6);
}
.am9-swiper-btn::after { font-size: 20px !important; }
.am9-swiper-pag { bottom: 8px !important; }
.am9-swiper-pag .swiper-pagination-bullet {
  background: rgba(255,255,255,.5);
  opacity: 1;
}
.am9-swiper-pag .swiper-pagination-bullet-active {
  background: #fff;
  width: 20px;
  border-radius: 4px;
}

/* Busca no hero */
/* Busca no hero — glassmorphism */
.am9-poster-search {
  width: 100%; padding: 0 20px;
  position: relative; z-index: 2;
  animation: am9FadeInUp 0.7s 0.35s ease both;
}
.am9-poster-search .form-control {
  background: rgba(255,255,255,0.14) !important;
  border: 1px solid rgba(255,255,255,0.38) !important;
  color: #fff !important;
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
}
.am9-poster-search .form-control::placeholder { color: rgba(255,255,255,0.55); }
.am9-poster-search .form-control:focus {
  background: rgba(255,255,255,0.22) !important;
  border-color: rgba(255,255,255,0.6) !important;
  box-shadow: 0 0 0 3px rgba(255,255,255,0.18) !important;
  color: #fff !important;
}

/* ── SLIDER NOVO (page-lista-ingressos style) ───────────────── */

/* Fundo dinâmico (troca via fade de opacity no JS) */
.app-bg {
  position: absolute;
  top: -10%; left: -10%; width: 120%; height: 120%;
  background-size: cover; background-position: center;
  filter: blur(10px) brightness(0.48) saturate(1.15);
  z-index: 0;
  transition: opacity 0.35s ease;
}

/* Header dinâmico (título + subtítulo que mudam com o slide) */
.am9-hero-header {
  position: relative; z-index: 2;
  text-align: center;
  padding: 12px 20px 0;
  color: #fff;
  animation: am9FadeInDown 0.7s ease both;
}
.am9-hero-subtitle {
  display: block;
  letter-spacing: 2px; font-size: 0.7rem;
  opacity: 0.8; text-transform: uppercase;
  margin-bottom: 4px;
  text-shadow: 0 1px 8px rgba(0,0,0,0.5);
  transition: opacity 0.25s ease;
}
.am9-hero-title {
  font-weight: 800;
  font-size: clamp(1.8rem, 5vw, 2.5rem);
  letter-spacing: 1px; margin: 0;
  line-height: 1.15;
  text-shadow: 0 2px 16px rgba(0,0,0,0.6);
  transition: opacity 0.25s ease;
}

/* Movie card: poster 3:4 + peek panel */
.am9-movie-card {
  position: relative;
  border-radius: 25px; overflow: hidden;
  box-shadow: 0 12px 30px rgba(0,0,0,0.4);
  border: 3px solid rgba(255,255,255,0.85);
  cursor: pointer;
  aspect-ratio: 2/3;
  transition: transform 0.4s ease, box-shadow 0.4s ease, border-color 0.4s ease;
}
.swiper-slide-active .am9-movie-card {
  transform: translateY(-10px);
  box-shadow: 0 28px 64px rgba(0,0,0,0.55);
  border-color: #fff;
}
.am9-movie-poster {
  width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  display: block;
}
.am9-movie-poster-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: #2a2a3e; color: #555; font-size: 3rem;
}

/* Peek panel — faixa compacta (~10% do card) */
.am9-movie-peek {
  position: absolute; bottom: -2px; left: 0; width: 100%;
  background: #fff; border-radius: 0;
  padding: 6px 12px 10px; text-align: center;
}
.am9-peek-title {
  font-size: 12px; font-weight: 800;
  color: #1a1a2e; margin: 0 0 3px; line-height: 1.2;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.am9-peek-meta {
  display: block;
  font-size: 10px; color: #888; margin: 0 0 5px;
}
.am9-peek-btn {
  display: block; width: 100%;
  background: #1a1a2e; color: #fff;
  border: none; border-radius: 30px;
  padding: 5px 0; font-size: 10px; font-weight: 700;
  cursor: pointer; text-transform: uppercase; letter-spacing: 0.05em;
  transition: background 0.2s;
}
.am9-peek-btn:hover { background: var(--am9-primary); color: #fff; }

/* Bottom Sheet */
.am9-bottom-sheet {
  position: fixed; bottom: -100%; left: 0; width: 100%; max-height: 85vh;
  background: #fff; border-radius: 30px 30px 0 0;
  z-index: 1060;
  display: flex; flex-direction: column;
  transition: bottom 0.4s cubic-bezier(0.25, 1, 0.5, 1);
  box-shadow: 0 -8px 40px rgba(0,0,0,0.25);
}
.am9-bottom-sheet.show { bottom: 0; }

.am9-sheet-overlay {
  position: fixed; inset: 0;
  background: rgba(0,0,0,0.6);
  z-index: 1055; opacity: 0; pointer-events: none;
  transition: opacity 0.4s ease;
}
.am9-sheet-overlay.show { opacity: 1; pointer-events: auto; }

.am9-sheet-close {
  position: absolute; top: 14px; right: 20px;
  background: none; border: none;
  font-size: 1.3rem; color: #333; cursor: pointer; z-index: 10;
  line-height: 1;
}
.am9-sheet-body {
  flex: 1; overflow-y: auto;
  padding: 28px 24px 100px;
}
.am9-sheet-body::-webkit-scrollbar { display: none; }
.am9-sheet-footer {
  position: absolute; bottom: 0; left: 0; width: 100%;
  padding: 16px 24px 28px;
  background: linear-gradient(to top, #fff 80%, rgba(255,255,255,0));
}
.am9-sheet-meta {
  font-size: 13px; color: #666; margin-bottom: 6px;
  display: flex; align-items: center; gap: 6px;
}
.am9-sheet-preco {
  font-size: 1.1rem; font-weight: 800; color: var(--am9-primary);
}

/* ── ANIMAÇÕES DE ENTRADA ───────────────────────────────────── */
@keyframes am9FadeInDown {
  from { opacity: 0; transform: translateY(-20px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes am9FadeInUp {
  from { opacity: 0; transform: translateY(30px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes am9FadeIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Reveal via IntersectionObserver */
.am9-reveal {
  opacity: 0;
  transform: translateY(24px);
  transition: opacity 0.55s ease, transform 0.55s ease;
  transition-delay: calc(var(--am9-delay, 0) * 80ms);
}
.am9-reveal.visible {
  opacity: 1;
  transform: translateY(0);
}

/* ── 3. TYPOGRAPHY ──────────────────────────────────────────── */
h1, h2, h3, h4, h5, h6 { font-family: var(--am9-font); font-weight: 700; }

.am9-section-title {
  font-size: clamp(1.3rem, 3vw, 1.75rem);
  font-weight: 800;
  line-height: 1.25;
}
.am9-section-subtitle {
  font-size: 14px;
  color: #6c757d;
  text-transform: uppercase;
  letter-spacing: .06em;
  font-weight: 600;
}

/* ── 4. GLOBAL BOOTSTRAP OVERRIDES ─────────────────────────── */
/* Primary */
.btn-primary,
.btn-primary:focus   { background: var(--am9-primary); border-color: var(--am9-primary); }
.btn-primary:hover   { background: var(--am9-primary-hover); border-color: var(--am9-primary-hover); }
.btn-outline-primary { color: var(--am9-primary); border-color: var(--am9-primary); }
.btn-outline-primary:hover { background: var(--am9-primary); border-color: var(--am9-primary); color: #fff; }
.badge.bg-primary    { background: var(--am9-primary) !important; }
.text-primary        { color: var(--am9-primary) !important; }
.bg-primary          { background: var(--am9-primary) !important; }
.border-primary      { border-color: var(--am9-primary) !important; }

/* Form focus ring */
.form-control:focus,
.form-select:focus,
.form-check-input:focus {
  border-color: var(--am9-primary);
  box-shadow: 0 0 0 .2rem var(--am9-primary-light);
}
.form-check-input:checked { background-color: var(--am9-primary); border-color: var(--am9-primary); }

/* Tables */
.table th {
  font-size: 11px;
  text-transform: uppercase;
  letter-spacing: .05em;
  color: #6c757d;
  font-weight: 700;
  white-space: nowrap;
}

/* Pagination */
.page-link         { color: var(--am9-primary); }
.page-link:hover   { color: var(--am9-primary-hover); }
.page-item.active .page-link { background: var(--am9-primary); border-color: var(--am9-primary); }

/* Badges: category label style */
.badge.bg-primary.bg-opacity-10 {
  background: var(--am9-primary-light) !important;
  color: var(--am9-primary) !important;
}

/* ── 5. NAVBAR ──────────────────────────────────────────────── */
.navbar {
  height: var(--am9-nav-h);
  border-bottom: 1px solid rgba(0,0,0,.06) !important;
}
/* !important pq um logo customizado enviado pelas Configurações (AM9
   Tickets → Configurações → Logo) pode vir com proporção bem diferente
   do assets/logo.svg do tema (retrato, com legenda embaixo etc.) — sem
   travar altura E largura aqui, um logo assim passa por cima do próprio
   menu (a .navbar tem altura fixa mas não corta overflow). */
.navbar-brand { max-height: var(--am9-nav-h); overflow: hidden; }
.navbar-brand img { height: 36px !important; width: auto !important; max-width: 140px !important; max-height: 36px !important; object-fit: contain; }
.navbar .nav-link { font-size: 14px; font-weight: 500; color: #333; transition: color var(--am9-transition); }
.navbar .nav-link:hover { color: var(--am9-primary); }

/* Menu mobile: em vez de expandir pra baixo, #am9Navbar é um offcanvas de
   verdade (Bootstrap) que desliza da direita, com fundo escurecido atrás
   e um cabeçalho próprio com botão de fechar — ver header.php. A partir
   do breakpoint lg (onde o menu já aparece inteiro ao lado da logo),
   neutralizamos o offcanvas pra ele voltar a se comportar como uma barra
   normal, sem esconder/deslizar nada (mesmo efeito visual de antes).
   */
.offcanvas#am9Navbar { --bs-offcanvas-width: 280px; }
@media (min-width: 992px) {
  .offcanvas#am9Navbar {
    position: static;
    z-index: auto;
    display: flex !important;
    flex-grow: 1;
    width: auto;
    height: auto;
    visibility: visible;
    background-color: transparent;
    box-shadow: none !important;
    transform: none;
    transition: none;
  }
  .offcanvas#am9Navbar .offcanvas-header { display: none; }
  .offcanvas#am9Navbar .offcanvas-body {
    display: flex; flex-grow: 1; padding: 0; overflow-y: visible;
  }
}

/* Ícone com bolinha de contagem (carrinho) — usado na navbar desktop, no
   offcanvas mobile e no bottom nav (footer.php). O elemento com
   .am9-badge-count precisa de um ancestral direto com position:relative. */
.am9-nav-icon-wrap { position: relative; display: inline-flex; }
.am9-badge-count {
  position: absolute; top: -4px; right: -6px;
  min-width: 16px; height: 16px; padding: 0 4px;
  border-radius: 999px; background: #dc3545; color: #fff;
  font-size: 10px; font-weight: 700; line-height: 16px; text-align: center;
}

/* Menu mobile (offcanvas) — bloco de identidade do usuário + lista de
   itens com ícone-em-caixa, no lugar do antigo dropdown aninhado (que
   causava o menu quebrado: dropdown por cima de offcanvas é um padrão
   frágil, com corte de texto e sobreposição). */
.am9-mnav-user {
  display: flex; align-items: center; gap: 12px;
  padding: 16px; border-bottom: 1px solid rgba(0,0,0,.06);
}
.am9-mnav-user-avatar {
  width: 44px; height: 44px; border-radius: 50%; flex-shrink: 0;
  background: var(--am9-primary); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 16px;
}
.am9-mnav-user-name { font-weight: 600; font-size: 14px; color: #1a1a2e; }
.am9-mnav-user-email { font-size: 12px; color: #888; }

.am9-mnav-list { display: flex; flex-direction: column; padding: 8px; }
.am9-mnav-item {
  display: flex; align-items: center; gap: 12px;
  padding: 10px 12px; border-radius: var(--am9-radius-sm);
  color: #333; text-decoration: none; font-size: 14px; font-weight: 500;
  transition: background var(--am9-transition);
}
.am9-mnav-item:hover { background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-mnav-item-icon {
  width: 34px; height: 34px; border-radius: var(--am9-radius-sm); flex-shrink: 0;
  background: var(--am9-primary-light); color: var(--am9-primary);
  display: flex; align-items: center; justify-content: center; font-size: 15px;
}
.am9-mnav-item.text-danger .am9-mnav-item-icon { background: rgba(220,53,69,.1); color: #dc3545; }
.am9-mnav-divider { height: 1px; background: rgba(0,0,0,.06); margin: 8px 12px; }

/* ── 6. CARDS ───────────────────────────────────────────────── */
/* --bs-card-spacer-y/-x (padding do .card-body) e --bs-card-cap-
   padding-y/-x (padding do .card-header/.card-footer) são as variáveis
   que o próprio Bootstrap usa internamente — sobrescrever aqui dá mais
   respiro em todo card do site de uma vez, sem precisar tocar em cada
   template. Onde o padding já é propositalmente zerado (ex.: tabela
   encostada na borda do card, via .p-0) continua igual — utilitário do
   Bootstrap usa !important e ganha desta variável. */
.card {
  border-radius: var(--am9-radius) !important;
  --bs-card-spacer-y: 1.35rem;      /* padding do .card-body */
  --bs-card-spacer-x: 1.35rem;
  --bs-card-cap-padding-y: 1rem;    /* padding do .card-header/.card-footer */
  --bs-card-cap-padding-x: 1.35rem;
}

/* Generic hover card */
.am9-card {
  border: none;
  border-radius: var(--am9-radius);
  box-shadow: var(--am9-shadow);
  transition: transform var(--am9-transition), box-shadow var(--am9-transition);
  overflow: hidden;
}
.am9-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--am9-shadow-lg);
}

/* ── 7. EVENT CARDS ────────────────────────────────────────── */
/* Both names used in templates — both defined here */
.am9-event-card,
.am9-evento-card {
  border: none !important;
  border-radius: var(--am9-radius) !important;
  overflow: hidden;
  box-shadow: var(--am9-shadow) !important;
  transition: transform var(--am9-transition), box-shadow var(--am9-transition);
  background: #fff;
}
.am9-event-card:hover,
.am9-evento-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--am9-shadow-lg) !important;
}

/* Card image container */
.am9-card-img-wrap,
.am9-evento-banner-wrap {
  overflow: hidden;
  background: #e9ecef;
  height: 180px;
}
.am9-card-img-wrap img,
.am9-evento-banner-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .35s ease;
}
.am9-event-card:hover .am9-card-img-wrap img,
.am9-evento-card:hover .am9-evento-banner-wrap img {
  transform: scale(1.04);
}

/* Empty banner placeholder */
.am9-card-placeholder {
  display: flex;
  align-items: center;
  justify-content: center;
  height: 180px;
  background: linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%);
  color: #adb5bd;
  font-size: 2.5rem;
}

/* Price display */
.am9-evento-preco       { font-weight: 700; color: var(--am9-success); font-size: 14px; }
.am9-evento-preco.gratis { color: #6c757d; }

/* Category badge */
.am9-badge-categoria {
  display: inline-block;
  font-size: 10px;
  text-transform: uppercase;
  letter-spacing: .05em;
  padding: 3px 10px;
  border-radius: 20px;
  background: var(--am9-primary-light);
  color: var(--am9-primary);
  font-weight: 700;
  line-height: 1.6;
}

/* ── 8. HERO SECTIONS ──────────────────────────────────────── */
/* Homepage hero */
.am9-hero {
  position: relative;
  min-height: 500px;
  display: flex;
  align-items: center;
  overflow: hidden;
  background: linear-gradient(135deg, var(--am9-primary) 0%, var(--am9-accent, #14213D) 100%);
}
.am9-hero-bg-img {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: .2;
  transition: opacity .3s;
}
.am9-hero-content { position: relative; z-index: 1; }

/* Search bar inside hero */
.am9-search-bar {
  background: #fff;
  border-radius: var(--am9-radius-xl);
  padding: 6px 6px 6px 16px;
  box-shadow: var(--am9-shadow-xl);
  max-width: 580px;
  margin: 0 auto;
}
.am9-search-bar .form-control {
  border: none;
  background: transparent;
  font-size: 15px;
}
.am9-search-bar .form-control:focus { box-shadow: none; }

/* Single evento hero — sem max-height/object-fit:cover no desktop: a
   altura acompanha a proporção real da imagem (width:100% + height:auto),
   em vez de cortar o topo/base pra caber num teto fixo de 440px. Só o
   mobile continua com o corte (ver media query, seção 20) — lá o
   objetivo é economizar altura de tela, não mostrar a imagem inteira. */
.am9-evento-hero {
  position: relative;
  overflow: hidden;
  background: #111;
}
.am9-evento-hero picture { display: block; }
.am9-evento-hero img {
  width: 100%;
  height: auto;
  display: block;
  opacity: .85;
}
.am9-evento-hero-overlay {
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  padding: 2rem 0 1.5rem;
  background: linear-gradient(to top, rgba(0,0,0,.82) 0%, transparent 100%);
}

/* Archive search hero */
.am9-search-hero {
  background: var(--am9-primary);
  padding: 36px 0 28px;
}
.am9-search-hero .form-control,
.am9-search-hero .form-select {
  background: rgba(255,255,255,.96);
  border: none;
  font-size: 14px;
}
.am9-search-hero .input-group-text {
  background: rgba(255,255,255,.96);
  border: none;
}

/* ── 9. CATEGORY FILTER BAR ────────────────────────────────── */
.am9-cat-bar {
  background: #fff;
  border-bottom: 1px solid rgba(0,0,0,.07);
  padding: 10px 0;
}
.am9-cat-bar .btn-outline-secondary {
  border-radius: 20px;
  font-size: 13px;
  padding: 4px 14px;
  border-color: #dee2e6;
  color: #495057;
  font-weight: 500;
  transition: all var(--am9-transition);
}
.am9-cat-bar .btn-outline-secondary:hover,
.am9-cat-bar .btn-outline-secondary.active {
  background: var(--am9-primary);
  border-color: var(--am9-primary);
  color: #fff;
}

/* ── 10. SECTION LAYOUT ────────────────────────────────────── */
.am9-section { padding: 60px 0; }
.am9-section-sm { padding: 36px 0; }
.am9-section-bg-light { background: #f8f9fa; }
.am9-section-bg-white { background: #fff; }

/* Section heading row */
.am9-section-head {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 1.5rem;
}
.am9-see-all {
  font-size: 13px;
  color: var(--am9-primary);
  text-decoration: none;
  font-weight: 500;
  display: flex;
  align-items: center;
  gap: 4px;
}
.am9-see-all:hover { color: var(--am9-primary-hover); }

/* CTA full-width band */
.am9-cta-band {
  background: linear-gradient(135deg, var(--am9-primary) 0%, var(--am9-highlight, #38BDF8) 50%, var(--am9-accent, #14213D) 100%);
  padding: 72px 0;
  color: #fff;
  position: relative; overflow: hidden;
}
.am9-cta-band::before {
  content: '';
  position: absolute; inset: 0;
  background-image: radial-gradient(circle at 20% 50%, rgba(255,255,255,0.06) 0%, transparent 60%),
                    radial-gradient(circle at 80% 20%, rgba(255,255,255,0.04) 0%, transparent 50%);
}

/* ── 11. SINGLE EVENTO PAGE ─────────────────────────────────── */

/* Conteúdo "flutua" por cima da base do hero, com cantos bem arredondados */
.am9-single-content-overlap { position: relative; z-index: 2; margin-top: -28px; }
.am9-single-hero-card { border-radius: var(--am9-radius-xl) !important; }

/* Info row below hero */
.am9-evento-inforow {
  background: #fff;
  border-bottom: 1px solid rgba(0,0,0,.07);
  padding: 16px 0;
  font-size: 14px;
}
.am9-evento-inforow .am9-info-item {
  display: flex;
  align-items: center;
  gap: 6px;
  color: #495057;
  white-space: nowrap;
}
.am9-evento-inforow .am9-info-item i { color: var(--am9-primary); font-size: 16px; }

/* Sidebar sticky — só a partir do desktop (ver @media 992px mais abaixo).
   No mobile o card de ingressos é movido pra dentro do fluxo normal da
   página (ver script em single-evento.php), então "sticky" ali grudaria
   ele no topo da tela ao rolar, o que não faz sentido fora da barra
   lateral do desktop. */

/* Lote table row */
.am9-lote-item {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 0;
  border-bottom: 1px solid #f0f0f0;
  gap: 12px;
  flex-wrap: wrap;
}
.am9-lote-item:last-child { border-bottom: none; }
.am9-lote-nome  { font-weight: 600; font-size: 14px; }
.am9-lote-tipo  { font-size: 11px; color: #6c757d; }
.am9-lote-preco { font-weight: 700; color: var(--am9-success); font-size: 15px; }
.am9-lote-preco.gratis { color: #6c757d; font-size: 14px; }
.am9-lote-esgotado { color: #dc3545; font-size: 12px; font-weight: 600; }
.am9-lote-disponiveis { font-size: 12px; color: #adb5bd; }

/* Organizer card */
.am9-org-card { border-radius: var(--am9-radius); overflow: hidden; }
.am9-org-avatar {
  width: 48px; height: 48px;
  border-radius: 50%;
  overflow: hidden;
  background: var(--am9-primary-light);
  display: flex; align-items: center; justify-content: center;
  color: var(--am9-primary); font-weight: 700; font-size: 20px;
}

/* Sticky sidebar */
@media (min-width: 992px) {
  .am9-sticky-sidebar { position: sticky; top: calc(var(--am9-nav-h) + 16px); }
}

/* Event content (post_content) */
.am9-evento-content { font-size: 15px; line-height: 1.75; color: #444; }
.am9-evento-content img { max-width: 100%; height: auto; border-radius: var(--am9-radius-sm); }
.am9-evento-content h2,
.am9-evento-content h3 { margin-top: 1.5em; margin-bottom: .5em; }
.am9-evento-content p  { margin-bottom: 1em; }

/* ── 12. ARCHIVE PAGE ──────────────────────────────────────── */
.am9-archive-page { background: #f8f9fa; }
.am9-results-count { font-size: 14px; color: #6c757d; font-weight: 500; }

/* Empty state */
.am9-empty-state {
  padding: 80px 0;
  text-align: center;
  color: #adb5bd;
}
.am9-empty-state i { font-size: 64px; margin-bottom: 16px; display: block; }

/* ── 13. DASHBOARD ─────────────────────────────────────────── */
.am9-dashboard-wrap { min-height: 100vh; background: var(--am9-body-bg); padding-top: var(--am9-nav-h); }
.am9-dashboard-content { padding: 28px 24px 100px; }

/* Cards do dashboard: elevação sutil no hover, cantos mais arredondados */
.am9-dashboard-wrap .card {
  border-radius: var(--am9-radius-lg) !important;
  transition: box-shadow var(--am9-transition), transform var(--am9-transition);
}
.am9-dashboard-wrap .card:hover {
  box-shadow: var(--am9-shadow-lg) !important;
}

/* Sidebar nav */
.am9-sidebar { min-height: calc(100vh - var(--am9-nav-h)); }
.am9-sidebar .nav-link {
  display: flex;
  align-items: center;
  gap: 10px;
  border-radius: var(--am9-radius-sm);
  font-size: 14px;
  font-weight: 500;
  color: #495057;
  padding: 10px 14px;
  transition: background var(--am9-transition), color var(--am9-transition);
}
.am9-sidebar .nav-link:hover:not(.active) { background: #f0f0f5; color: var(--am9-primary); }
.am9-sidebar .nav-link.active { background: var(--am9-primary); color: #fff; }
.am9-sidebar .nav-link i { font-size: 16px; width: 20px; text-align: center; flex-shrink: 0; }

/* Abas do editor de evento (Informações/Local & Data/Ingressos/Equipe/
   Histórico) — rolagem horizontal com scroll-snap em vez de quebrar
   linha ou estourar a largura da tela (era o que cortava o botão "Novo
   Tipo de Ingresso" no mobile: as abas Bootstrap puras não encolhem nem
   rolam sozinhas). flex-wrap:nowrap + overflow-x:auto valem em qualquer
   largura — no desktop, se couberem todas, não rola nada; se não
   couberem (ou no mobile), rola só a barra de abas, nunca a página. */
.am9-ed-tabs {
  flex-wrap: nowrap;
  overflow-x: auto;
  overflow-y: hidden;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
  border-bottom: none;
  gap: 4px;
}
.am9-ed-tabs::-webkit-scrollbar { display: none; }
.am9-ed-tabs .nav-item { flex-shrink: 0; }
.am9-ed-tabs .nav-link {
  display: flex;
  align-items: center;
  gap: 6px;
  border: none;
  border-radius: var(--am9-radius-sm) var(--am9-radius-sm) 0 0;
  padding: 10px 16px;
  font-size: 13.5px;
  font-weight: 600;
  color: #6c7280;
  white-space: nowrap;
  transition: background var(--am9-transition), color var(--am9-transition);
}
.am9-ed-tabs .nav-link i { font-size: 14px; }
.am9-ed-tabs .nav-link:hover:not(.active) { background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-ed-tabs .nav-link.active {
  background: var(--am9-body-bg, #f6f7fb);
  color: var(--am9-primary);
  box-shadow: inset 0 -2px 0 var(--am9-primary);
}

/* Metric cards */
.am9-metric-card .am9-metric-icon {
  width: 48px; height: 48px;
  border-radius: var(--am9-radius-sm);
  display: flex; align-items: center; justify-content: center;
  font-size: 22px;
  flex-shrink: 0;
}
.am9-metric-value { font-size: 1.6rem; font-weight: 800; line-height: 1.1; }
.am9-metric-label { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: #6c757d; font-weight: 600; }

/* ── 13b. DASHBOARD — SHELL E COMPONENTES ────────────────────────
   Layout do painel do organizador (sidebar + conteúdo), hub do evento
   e componentes reutilizáveis renderizados por dashboard/_helpers.php
   (am9_ui_stat, am9_ui_progress, am9_ui_ring, am9_ui_alerts…). */
.am9-dash {
  --am9-side-w: 256px;
  --am9-line: #e6e9f0;
  --am9-muted: #6b7280;
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  padding-top: 0;
}
.am9-dash-main { padding: 24px 16px 96px; min-width: 0; }
@media (min-width: 992px) {
  .am9-dash { grid-template-columns: var(--am9-side-w) minmax(0, 1fr); }
  .am9-dash-main { padding: 28px 32px 64px; }
}

/* Sidebar — no lg+ o .offcanvas-lg do Bootstrap força background-color
   transparente com !important, por isso o fundo vem de background-image. */
.am9-side { border-right: 1px solid var(--am9-line); }
@media (min-width: 992px) {
  .am9-side {
    position: sticky;
    top: var(--am9-nav-h);
    height: calc(100vh - var(--am9-nav-h));
    overflow-y: auto;
    background-image: linear-gradient(#fff, #fff);
  }
}
.am9-side-user { display: flex; align-items: center; gap: 10px; padding: 18px 18px 14px; border-bottom: 1px solid var(--am9-line); }
.am9-side-user-name { font-weight: 600; font-size: 14px; line-height: 1.2; }
.am9-side-user-role { font-size: 11px; color: var(--am9-primary); font-weight: 600; text-transform: uppercase; letter-spacing: .04em; }
.am9-side-nav { padding: 10px; display: flex; flex-direction: column; gap: 2px; }
.am9-side-section { margin: 14px 10px 4px; font-size: 10.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .08em; color: #9aa1ad; }
.am9-side-link {
  display: flex; align-items: center; gap: 10px;
  padding: 8px 10px; border-radius: var(--am9-radius-sm);
  color: #374151; text-decoration: none; font-size: 13.5px; font-weight: 500;
  transition: background var(--am9-transition), color var(--am9-transition);
}
.am9-side-link i { font-size: 15px; width: 18px; text-align: center; flex-shrink: 0; color: #8a93a3; }
.am9-side-link span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.am9-side-link small { font-size: 11px; color: #9aa1ad; flex-shrink: 0; }
.am9-side-link:hover { background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-side-link:hover i { color: var(--am9-primary); }
.am9-side-link.active { background: var(--am9-primary); color: #fff; }
.am9-side-link.active i, .am9-side-link.active small { color: rgba(255,255,255,.85); }
.am9-side-more { display: block; padding: 4px 10px 0 38px; font-size: 12px; color: var(--am9-primary); text-decoration: none; }
.am9-side-foot { display: flex; gap: 8px; padding: 14px; border-top: 1px solid var(--am9-line); }

/* Tipografia de seção */
.am9-eyebrow { font-size: 11px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--am9-primary); text-decoration: none; }
.am9-h2 { font-size: 1.25rem; font-weight: 700; margin: 2px 0 0; color: #111827; }
.am9-label { font-size: 11px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--am9-muted); }
.am9-kpi { font-size: 1.35rem; font-weight: 800; line-height: 1.15; color: #111827; overflow-wrap: anywhere; }
.am9-kpi small { font-size: .8rem; font-weight: 600; color: var(--am9-muted); }
.am9-section-head { display: flex; align-items: flex-end; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin: 4px 0 14px; }
.am9-section-actions { display: flex; gap: 8px; flex-wrap: wrap; }

/* Card base */
.am9-card { background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); box-shadow: var(--am9-shadow-sm); overflow: hidden; }
.am9-card-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--am9-line); font-weight: 700; font-size: 14px; }
.am9-card-head i { color: var(--am9-primary); margin-right: 6px; }
.am9-card-body { padding: 18px; }

/* Indicador */
.am9-stat { height: 100%; display: flex; flex-direction: column; gap: 10px; padding: 16px; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); box-shadow: var(--am9-shadow-sm); }
.am9-stat-ic { width: 38px; height: 38px; border-radius: 10px; display: inline-flex; align-items: center; justify-content: center; font-size: 18px; background: var(--am9-tone-bg); color: var(--am9-tone); }
@media (max-width: 575.98px) {
  /* Indicadores compactos no celular: ícone ao lado, menos altura */
  .am9-stat { flex-direction: row; align-items: flex-start; gap: 10px; padding: 12px; }
  .am9-stat-ic { width: 30px; height: 30px; font-size: 15px; border-radius: 8px; flex-shrink: 0; }
  .am9-stat .am9-kpi { font-size: 1.05rem; }
  .am9-stat .am9-label { font-size: 10px; }
  .am9-stat-sub { font-size: 11px; }
  .am9-section-head { margin-bottom: 10px; }
}
.am9-stat-sub { font-size: 12px; color: var(--am9-muted); line-height: 1.35; }
.am9-stat-sub a { color: var(--am9-primary); }
.am9-tone-primary { --am9-tone: var(--am9-primary); --am9-tone-bg: var(--am9-primary-light); }
.am9-tone-success { --am9-tone: #1f9d3a; --am9-tone-bg: rgba(55,201,86,.14); }
.am9-tone-info    { --am9-tone: #0b8db3; --am9-tone-bg: rgba(13,202,240,.14); }
.am9-tone-warning { --am9-tone: #b7791f; --am9-tone-bg: rgba(255,193,7,.18); }
.am9-tone-danger  { --am9-tone: #c0392b; --am9-tone-bg: rgba(220,53,69,.12); }
.am9-tone-dark    { --am9-tone: #374151; --am9-tone-bg: rgba(55,65,81,.10); }

/* Progresso contra meta */
.am9-progress-card { height: 100%; padding: 16px; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); box-shadow: var(--am9-shadow-sm); display: flex; flex-direction: column; gap: 8px; }
.am9-pct { font-size: 12px; font-weight: 700; padding: 2px 8px; border-radius: 999px; background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-pct.is-done { background: rgba(55,201,86,.16); color: #1f9d3a; }
.am9-progress { height: 8px; border-radius: 999px; background: #eef1f6; }
.am9-progress .progress-bar { background: var(--am9-primary); border-radius: 999px; }
.am9-progress .progress-bar.is-done { background: var(--bs-success); }
.am9-progress-sm { height: 6px; }
.am9-pct.is-warn { background: rgba(255,193,7,.2); color: #b7791f; }
.am9-pct.is-over { background: rgba(220,53,69,.12); color: #c0392b; }
.am9-progress .progress-bar.is-warn { background: var(--am9-warning); }
.am9-progress .progress-bar.is-over { background: #dc3545; }

/* Anel */
.am9-ring { position: relative; display: inline-block; }
.am9-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.am9-ring circle { fill: none; stroke-width: 3.2; }
.am9-ring-bg { stroke: rgba(255,255,255,.25); }
.am9-ring-fg { stroke: #fff; stroke-linecap: round; }
.am9-ring b { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 800; color: #fff; }

/* Alertas */
.am9-alerts { display: grid; gap: 8px; margin-bottom: 20px; }
.am9-alertrow { display: flex; align-items: center; gap: 10px; padding: 10px 14px; border-radius: var(--am9-radius); font-size: 13.5px; border: 1px solid; background: #fff; }
.am9-alertrow > i { font-size: 16px; flex-shrink: 0; }
.am9-alertrow > span { flex: 1; min-width: 0; }
.am9-alertrow-link { flex-shrink: 0; font-weight: 600; font-size: 12.5px; text-decoration: none; white-space: nowrap; }
.am9-lv-danger  { border-color: rgba(220,53,69,.35); background: #fff5f5; } .am9-lv-danger > i, .am9-lv-danger .am9-alertrow-link { color: #c0392b; }
.am9-lv-warning { border-color: rgba(255,193,7,.5); background: #fffbeb; }  .am9-lv-warning > i, .am9-lv-warning .am9-alertrow-link { color: #b7791f; }
.am9-lv-info    { border-color: rgba(37,99,235,.25); background: #f5f8ff; } .am9-lv-info > i, .am9-lv-info .am9-alertrow-link { color: var(--am9-primary); }
.am9-lv-success { border-color: rgba(55,201,86,.4); background: #f2fcf4; }  .am9-lv-success > i, .am9-lv-success .am9-alertrow-link { color: #1f9d3a; }

/* Vazio */
.am9-empty { text-align: center; padding: 28px 16px; color: var(--am9-muted); }
.am9-empty > i { font-size: 2rem; opacity: .45; }
.am9-empty p { margin: 8px auto 12px; max-width: 460px; font-size: 13.5px; }

/* Tabelas */
.am9-table { font-size: 13px; }
.am9-table thead th { font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--am9-muted); font-weight: 600; background: #f8f9fc; border-bottom-color: var(--am9-line); white-space: nowrap; }
.am9-table td, .am9-table th { padding: 10px 14px; }
.am9-table-group td { font-weight: 700; font-size: 12.5px; }

/* Barras horizontais (canais) */
.am9-bar-row { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 8px 0; font-size: 13px; }
.am9-bar-row + .am9-bar-row { border-top: 1px dashed var(--am9-line); }
.am9-chart-donut { width: 100%; max-width: 260px; margin: 0 auto; }
.am9-row-feed { padding-bottom: 10px; margin-bottom: 10px; border-bottom: 1px solid var(--am9-line); }
.am9-row-feed:last-child { border-bottom: 0; margin-bottom: 0; padding-bottom: 0; }

/* Hub do evento — cabeçalho */
.am9-hub-hero { position: relative; overflow: hidden; border-radius: var(--am9-radius-xl); background: var(--am9-dark); color: #fff; margin-bottom: 16px; }
.am9-hub-hero-bg { position: absolute; inset: -20px; background-size: cover; background-position: center; filter: blur(18px) saturate(1.2); opacity: .45; }
.am9-hub-hero::after { content: ''; position: absolute; inset: 0; background: linear-gradient(90deg, rgba(13,27,42,.92), rgba(13,27,42,.6)); }
.am9-hub-hero-in { position: relative; z-index: 1; display: flex; gap: 20px; align-items: center; padding: 22px; flex-wrap: wrap; }
.am9-hub-thumb { width: 150px; aspect-ratio: 16 / 10; object-fit: cover; border-radius: var(--am9-radius); box-shadow: var(--am9-shadow-lg); }
.am9-hub-back { color: rgba(255,255,255,.75); display: inline-flex; gap: 6px; align-items: center; }
.am9-hub-back:hover { color: #fff; }
.am9-hub-title { font-size: clamp(1.3rem, 2.4vw, 1.9rem); font-weight: 800; margin: 4px 0 10px; color: #fff; overflow-wrap: anywhere; }
.am9-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 14px; }
.am9-chip { display: inline-flex; align-items: center; gap: 6px; padding: 4px 10px; border-radius: 999px; font-size: 12px; font-weight: 500; background: rgba(255,255,255,.12); color: #fff; }
.am9-chip-success { background: rgba(55,201,86,.9); }
.am9-chip-warning { background: rgba(255,193,7,.95); color: #1f2937; }
.am9-chip-danger  { background: rgba(220,53,69,.9); }
.am9-chip-dark, .am9-chip-secondary { background: rgba(255,255,255,.22); }
.am9-hub-actions { display: flex; flex-wrap: wrap; gap: 8px; }
.am9-hub-side { display: flex; align-items: center; gap: 18px; margin-left: auto; }
.am9-countdown { display: flex; flex-direction: column; align-items: center; min-width: 76px; padding: 10px 12px; border-radius: var(--am9-radius); background: rgba(255,255,255,.1); border: 1px solid rgba(255,255,255,.18); line-height: 1.1; }
.am9-countdown span { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: rgba(255,255,255,.75); }
.am9-countdown b { font-size: 1.9rem; font-weight: 800; }
.am9-hub-side .am9-label { color: rgba(255,255,255,.75); }
@media (max-width: 575.98px) {
  .am9-hub-hero-in { padding: 18px 16px; }
  .am9-hub-side { margin-left: 0; }
}

/* Hub — abas */
.am9-pills { display: flex; gap: 6px; overflow-x: auto; scrollbar-width: none; margin-bottom: 20px; padding: 4px; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius); }
.am9-pills::-webkit-scrollbar { display: none; }
.am9-pill { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; padding: 8px 14px; border-radius: var(--am9-radius-sm); font-size: 13px; font-weight: 600; color: #4b5563; text-decoration: none; white-space: nowrap; }
.am9-pill:hover { background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-pill.active { background: var(--am9-primary); color: #fff; }
.am9-subnav { display: flex; gap: 4px; overflow-x: auto; scrollbar-width: none; margin: -12px 0 20px; padding: 0 4px; border-bottom: 1px solid var(--am9-line); }
.am9-subnav::-webkit-scrollbar { display: none; }
.am9-subnav-link { display: inline-flex; align-items: center; gap: 6px; flex-shrink: 0; padding: 10px 12px; font-size: 13px; font-weight: 600; color: #6b7280; text-decoration: none; border-bottom: 2px solid transparent; margin-bottom: -1px; white-space: nowrap; }
.am9-subnav-link:hover { color: var(--am9-primary); }
.am9-subnav-link.active { color: var(--am9-primary); border-bottom-color: var(--am9-primary); }
.am9-count { display: inline-flex; min-width: 18px; height: 18px; padding: 0 5px; align-items: center; justify-content: center; border-radius: 999px; font-size: 10.5px; font-weight: 700; background: rgba(0,0,0,.08); }
.am9-calc { display: flex; flex-wrap: wrap; gap: 8px 24px; padding: 12px 14px; border-radius: var(--am9-radius); background: var(--am9-primary-light); }
.am9-calc > div { display: flex; flex-direction: column; min-width: 110px; }
.am9-calc span { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--am9-muted); }
.am9-calc b { font-size: 15px; }
.am9-preco-conta { list-style: none; padding: 12px 0 0; margin: 12px 0 0; border-top: 1px dashed var(--am9-line); font-size: 13px; }
.am9-preco-conta li { display: flex; justify-content: space-between; gap: 12px; padding: 3px 0; }
.am9-preco-conta li span { color: var(--am9-muted); }
.am9-preco-conta li.is-total { margin-top: 4px; padding-top: 6px; border-top: 1px solid var(--am9-line); font-weight: 700; }
.am9-preco-conta li.is-total span { color: inherit; }
.am9-preco-box { height: 100%; padding: 12px; border: 1px solid var(--am9-line); border-radius: var(--am9-radius); display: flex; flex-direction: column; gap: 2px; }
.am9-preco-box span { font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--am9-muted); }
.am9-preco-box b { font-size: 1.35rem; font-weight: 800; line-height: 1.2; }
.am9-preco-box small { font-size: 11.5px; color: var(--am9-muted); }
.am9-preco-box.is-main { background: var(--am9-primary); border-color: var(--am9-primary); color: #fff; }
.am9-preco-box.is-main span, .am9-preco-box.is-main small { color: rgba(255,255,255,.8); }
.am9-preco-lotes { list-style: none; padding: 0; margin: 0; }
.am9-preco-lotes li { display: grid; grid-template-columns: 1fr auto; align-items: baseline; gap: 0 12px; padding: 6px 0; border-bottom: 1px dashed var(--am9-line); font-size: 13px; }
.am9-preco-lotes li small { grid-column: 1 / -1; color: var(--am9-muted); font-size: 11.5px; }
.am9-preco-ocup td, .am9-preco-ocup th { padding: 6px 10px; }
.am9-filtros { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; padding: 10px 12px; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius); scroll-margin-top: calc(var(--am9-nav-h) + 12px); }
.am9-filtros .form-select { width: auto; max-width: 220px; }
.am9-filtro-busca { flex: 1 1 220px; max-width: 320px; }
.am9-filtro-total td { background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-fornecedores tbody tr { cursor: pointer; }
.am9-fornecedores tbody tr:hover td, .am9-fornecedores tbody tr:focus td { background: #f5f8ff; }
.am9-fornecedores tbody tr.is-active td { background: var(--am9-primary-light); }
.am9-fornecedores tbody tr.is-active td:first-child { box-shadow: inset 3px 0 0 var(--am9-primary); }
.am9-link-filtro { color: inherit; text-decoration: underline dotted; text-underline-offset: 3px; }
@media (max-width: 575.98px) { .am9-filtros .form-select { max-width: none; flex: 1 1 45%; } .am9-filtro-busca { max-width: none; } }
.am9-checklist summary { list-style: none; cursor: pointer; }
.am9-checklist summary::-webkit-details-marker { display: none; }
.am9-checklist details:not([open]) summary { border-bottom: 0; }
.am9-checklist-list { list-style: none; margin: 0; padding: 6px 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); }
.am9-checklist-list li { display: flex; align-items: center; gap: 12px; padding: 10px 18px; }
.am9-checklist-list li > i { font-size: 18px; color: #c4cad4; flex-shrink: 0; }
.am9-checklist-list li.is-done > i { color: var(--bs-success); }
.am9-checklist-list li > div { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: 13.5px; }
.am9-checklist-list li > div span { font-size: 12px; color: var(--am9-muted); }
.am9-checklist-list li.is-done b { color: var(--am9-muted); text-decoration: line-through; }
.am9-count-danger { background: #dc3545; color: #fff; }
.am9-atencao .am9-card-body { padding: 12px 14px; }
.am9-atencao .am9-alerts { margin-bottom: 0; }
.am9-atencao-mais { margin-top: 8px; }
.am9-atencao-mais summary { cursor: pointer; font-size: 13px; font-weight: 600; color: var(--am9-primary); padding: 4px 2px; }
.am9-atencao-mais[open] summary { margin-bottom: 8px; }
.am9-count-warn { background: var(--am9-warning); color: #1f2937; }

/* Cards de próximos eventos (Painel) */
.am9-event-card { display: flex; height: 100%; text-decoration: none; color: inherit; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); overflow: hidden; box-shadow: var(--am9-shadow-sm); transition: box-shadow var(--am9-transition), transform var(--am9-transition); }
.am9-event-card:hover { box-shadow: var(--am9-shadow-lg); transform: translateY(-2px); color: inherit; }
.am9-event-card-img { position: relative; width: 120px; flex-shrink: 0; background: #eef1f6 center / cover no-repeat; display: flex; align-items: center; justify-content: center; color: #9aa1ad; font-size: 1.5rem; }
.am9-event-card-date { width: 96px; flex-shrink: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; background: var(--am9-primary-light); color: var(--am9-primary); line-height: 1.05; text-transform: uppercase; }
.am9-event-card-date span { font-size: 12px; font-weight: 700; letter-spacing: .08em; }
.am9-event-card-date b { font-size: 30px; font-weight: 800; }
.am9-event-card-date small { margin-top: 4px; font-size: 10px; color: var(--am9-muted); text-transform: none; }
.am9-dot { display: inline-block; width: 8px; height: 8px; border-radius: 50%; margin-right: 8px; vertical-align: middle; }
.am9-event-card-days { position: absolute; left: 8px; bottom: 8px; display: flex; flex-direction: column; align-items: center; padding: 4px 8px; border-radius: 8px; background: rgba(13,27,42,.85); color: #fff; font-size: 10px; line-height: 1.1; text-transform: uppercase; }
.am9-event-card-days b { font-size: 1.05rem; }
.am9-event-card-body { flex: 1; min-width: 0; padding: 14px; }
.am9-event-card-title { font-weight: 700; font-size: 14.5px; line-height: 1.25; margin-bottom: 2px; }

/* Fase 2 — patrocinadores (funil), DRE e fluxo de caixa do hub */
.am9-link-card { display: block; height: 100%; text-decoration: none; color: inherit; }
.am9-link-card .am9-stat { transition: box-shadow var(--am9-transition), border-color var(--am9-transition); }
.am9-link-card:hover .am9-stat { box-shadow: var(--am9-shadow); border-color: var(--am9-primary); }
.am9-board { display: grid; grid-template-columns: repeat(4, minmax(220px, 1fr)); gap: 12px; overflow-x: auto; padding-bottom: 6px; }
.am9-board-col { background: #f3f5f9; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); padding: 10px; min-width: 220px; display: flex; flex-direction: column; gap: 8px; }
.am9-board-col > header { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding: 2px 4px 6px; font-size: 12.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #4b5563; border-bottom: 3px solid #cbd2dd; }
.am9-board-negociando > header { border-bottom-color: var(--am9-warning); }
.am9-board-fechado > header { border-bottom-color: var(--bs-success); }
.am9-board-perdido { opacity: .75; }
.am9-board-card { background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius); padding: 10px 12px; box-shadow: var(--am9-shadow-sm); font-size: 13px; }
.am9-board-title { font-size: 13.5px; line-height: 1.25; overflow-wrap: anywhere; }
.am9-board-valor { font-weight: 700; margin-top: 4px; }
.am9-board-actions { display: flex; gap: 6px; justify-content: flex-end; margin-top: 8px; }
.am9-board-empty { text-align: center; color: #9aa1ad; font-size: 12.5px; margin: 8px 0; }
.am9-dre td { padding: 9px 18px; }
.am9-dre .am9-dre-sub td { font-weight: 700; background: #fafbfd; }
.am9-dre .am9-dre-total td { font-weight: 800; font-size: 15px; border-top: 2px solid #111827; border-bottom: 0; }
.am9-cash-row { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; border-bottom: 1px dashed var(--am9-line); font-size: 13px; }
.am9-cash-row:last-of-type { border-bottom: 0; }

/* Fase 3 — programação, tarefas, planos (hub) e seções públicas do evento */
.am9-tag { display: inline-block; padding: 1px 8px; border-radius: 999px; font-size: 11px; font-weight: 600; background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-chipbtn { border: 1px solid var(--am9-line); background: #fff; border-radius: 999px; font-size: 12.5px; }
.am9-chipbtn.active { background: var(--am9-primary); border-color: var(--am9-primary); color: #fff; }
.am9-timeline { padding: 6px 0; }
.am9-slot { display: grid; grid-template-columns: 64px minmax(0, 1fr) auto; gap: 14px; padding: 10px 18px; border-bottom: 1px dashed var(--am9-line); }
.am9-slot:last-child { border-bottom: 0; }
.am9-slot-time { display: flex; flex-direction: column; font-variant-numeric: tabular-nums; }
.am9-slot-time b { font-size: 15px; }
.am9-slot-time span { font-size: 12px; color: var(--am9-muted); }
.am9-slot-actions { display: flex; gap: 6px; align-items: flex-start; }
.am9-board-3 { grid-template-columns: repeat(3, minmax(240px, 1fr)); }
.am9-board-andamento > header { border-bottom-color: var(--am9-primary); }
.am9-board-feita > header { border-bottom-color: var(--bs-success); }
.am9-board-card.is-done .am9-board-title { text-decoration: line-through; color: var(--am9-muted); }
.am9-board-actions { flex-wrap: wrap; }
@media (max-width: 767.98px) {
  .am9-board, .am9-board-3 { grid-template-columns: minmax(0, 1fr); overflow-x: visible; }
  .am9-board-col { min-width: 0; }
  .am9-slot { grid-template-columns: 52px minmax(0, 1fr); }
  .am9-slot-actions { grid-column: 2; }
}
.am9-person { display: inline-flex; align-items: center; gap: 6px; padding: 3px 10px 3px 3px; border: 1px solid var(--am9-line); border-radius: 999px; font-size: 12.5px; }
.am9-person small { color: var(--am9-muted); }
.am9-upsell-ic { display: inline-flex; width: 56px; height: 56px; border-radius: 16px; align-items: center; justify-content: center; font-size: 26px; background: var(--am9-primary-light); color: var(--am9-primary); }
.am9-upsell-list { list-style: none; padding: 0; margin: 0 auto 16px; display: inline-grid; gap: 6px; text-align: left; font-size: 14px; }
.am9-upsell-list i { color: var(--bs-success); margin-right: 8px; }
.am9-pub-dia { font-weight: 700; font-size: 13px; text-transform: uppercase; letter-spacing: .05em; color: var(--am9-primary); margin: 8px 0; }
.am9-pub-prog { list-style: none; padding: 0; margin: 0 0 12px; }
.am9-pub-prog li { display: grid; grid-template-columns: 58px minmax(0, 1fr); gap: 14px; padding: 12px 0; border-bottom: 1px solid #eef0f4; }
.am9-pub-prog li:last-child { border-bottom: 0; }
.am9-pub-prog time { display: flex; flex-direction: column; font-weight: 700; font-variant-numeric: tabular-nums; }
.am9-pub-prog time small { font-weight: 400; color: #6b7280; }
.am9-pub-prog .am9-tag { display: table; margin: 0 0 4px; }
.am9-pub-prog strong { display: block; line-height: 1.35; }
.am9-pub-patros { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.am9-pub-patro { display: flex; align-items: center; justify-content: center; height: 64px; min-width: 120px; padding: 8px 14px; border: 1px solid #eef0f4; border-radius: 12px; background: #fff; color: #374151; text-decoration: none; font-weight: 600; font-size: 14px; }
.am9-pub-patro img { max-height: 48px; max-width: 140px; object-fit: contain; }
.am9-pub-patro-master { height: 88px; min-width: 170px; }
.am9-pub-patro-master img { max-height: 70px; max-width: 190px; }

/* Meus eventos — cards, abas e barra de filtros (dashboard/organizador/meus-eventos.php) */
.am9-eventos-toolbar { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin-bottom: 16px; }
.am9-seg { display: inline-flex; gap: 2px; padding: 3px; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius); overflow-x: auto; max-width: 100%; scrollbar-width: none; }
.am9-seg::-webkit-scrollbar { display: none; }
.am9-seg-btn { border: 0; background: transparent; padding: 6px 12px; border-radius: var(--am9-radius-sm); font-size: 13px; font-weight: 600; color: #4b5563; white-space: nowrap; display: inline-flex; align-items: center; gap: 6px; }
.am9-seg-btn:hover { color: var(--am9-primary); }
.am9-seg-btn.active { background: var(--am9-primary); color: #fff; }
.am9-seg-btn.active .am9-count { background: rgba(255,255,255,.25); color: #fff; }
.am9-evento-card { height: 100%; display: flex; flex-direction: column; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); overflow: hidden; box-shadow: var(--am9-shadow-sm); transition: box-shadow var(--am9-transition), transform var(--am9-transition), background var(--am9-transition); }
.am9-evento-card:hover { box-shadow: var(--am9-shadow); transform: translateY(-2px); }
.am9-evento-card.is-novo { animation: am9CardNovo 2s ease; }
.am9-evento-card.is-salvo { background: #f2fcf4; }
@keyframes am9CardNovo { 0%, 100% { box-shadow: var(--am9-shadow-sm); } 35% { box-shadow: 0 0 0 4px rgba(55,201,86,.45); } }
.am9-evento-capa { position: relative; display: flex; align-items: center; justify-content: center; height: 132px; padding-top: 18px; background: linear-gradient(135deg, var(--am9-primary-light), #eef1f6) center / cover no-repeat; color: var(--am9-primary); font-size: 2rem; text-decoration: none; }
.am9-evento-capa[style*="background-image"]::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.35), transparent 45%); }
.am9-evento-capa-data { display: flex; flex-direction: column; align-items: center; line-height: 1.05; text-transform: uppercase; }
.am9-evento-capa-data b { font-size: 2.4rem; font-weight: 800; }
.am9-evento-capa-data small { font-size: 12px; font-weight: 700; letter-spacing: .08em; color: var(--am9-muted); }
.am9-evento-capa-chips { position: absolute; z-index: 1; top: 10px; left: 10px; right: 10px; display: flex; justify-content: space-between; gap: 6px; font-size: 12px; line-height: 1; }
.am9-evento-capa-chips .badge { font-size: 11px; padding: 5px 8px; }
.am9-badge-quando { background: rgba(13,27,42,.8); color: #fff; }
.am9-badge-quando.is-perto { background: var(--am9-warning); color: #1f2937; }
.am9-evento-body { flex: 1; padding: 14px 16px 10px; display: flex; flex-direction: column; gap: 10px; }
.am9-evento-titulo { font-size: 15.5px; font-weight: 700; line-height: 1.3; margin: 0; }
.am9-evento-titulo a { color: #111827; text-decoration: none; }
.am9-evento-titulo a:hover { color: var(--am9-primary); }
.am9-evento-meta { display: flex; flex-wrap: wrap; gap: 4px 14px; font-size: 12.5px; color: var(--am9-muted); }
.am9-evento-meta i { margin-right: 5px; }
.am9-evento-meta .badge { font-weight: 600; }
.am9-evento-vendas { font-size: 13px; margin-top: auto; }
.am9-evento-alerta { display: flex; align-items: center; gap: 8px; padding: 7px 10px; border-radius: var(--am9-radius-sm); font-size: 12.5px; font-weight: 600; text-decoration: none; border: 1px solid; }
.am9-evento-alerta.am9-lv-danger { color: #c0392b; }
.am9-evento-alerta.am9-lv-warning { color: #b7791f; }
.am9-evento-alerta.am9-lv-success { color: #1f9d3a; }
.am9-evento-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; padding: 10px 16px 14px; border-top: 1px solid var(--am9-line); }
.am9-evento-status { display: flex; align-items: center; gap: 8px; width: 100%; margin: 0; font-size: 12px; color: var(--am9-muted); }
.am9-evento-status .am9-status-select { flex: 1; font-size: 12px; }

.am9-cupom-aviso { display: flex; gap: 12px; align-items: flex-start; padding: 12px 16px; margin-bottom: 16px; border-radius: var(--am9-radius); font-size: 14px; border: 1px solid; }
.am9-cupom-aviso > i { font-size: 20px; line-height: 1.2; }
.am9-cupom-aviso.is-ok { background: #f2fcf4; border-color: rgba(55,201,86,.45); color: #14532d; }
.am9-cupom-aviso.is-ok > i { color: #1f9d3a; }
.am9-cupom-aviso.is-erro { background: #fffbeb; border-color: rgba(255,193,7,.5); color: #78350f; }

.am9-cupom-usado { display: flex; flex-wrap: wrap; align-items: center; gap: 4px; margin-top: 3px; font-weight: 500; }
.am9-cupom-chip { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px; border-radius: 999px; font-size: 10.5px; font-weight: 700; letter-spacing: .03em; background: #fff4e5; color: #b45309; border: 1px dashed #f59e0b; }
.am9-cupom-desc { font-size: 11px; color: #b45309; }
.text-end .am9-cupom-usado { justify-content: flex-end; }

/* Cupons — card em formato de ticket (dashboard/organizador/cupons.php) */
.am9-cupom-card { height: 100%; display: flex; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); box-shadow: var(--am9-shadow-sm); overflow: hidden; }
.am9-cupom-card.is-inativo, .am9-cupom-card.is-expirado { opacity: .7; }
.am9-cupom-canhoto { position: relative; width: 150px; flex-shrink: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; padding: 18px 10px; background: linear-gradient(160deg, var(--am9-primary), #1e3a8a); color: #fff; text-align: center; }
.am9-cupom-canhoto::after { content: ''; position: absolute; top: 10px; bottom: 10px; right: -1px; border-right: 2px dashed rgba(255,255,255,.55); }
.am9-cupom-card.is-inativo .am9-cupom-canhoto, .am9-cupom-card.is-expirado .am9-cupom-canhoto { background: linear-gradient(160deg, #6b7280, #374151); }
.am9-cupom-off { font-size: 2.1rem; font-weight: 800; line-height: 1; }
.am9-cupom-off small { font-size: .5em; font-weight: 700; margin: 0 1px; }
.am9-cupom-off-label { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; opacity: .85; }
.am9-cupom-codigo { margin-top: 10px; border: 1px dashed rgba(255,255,255,.7); background: rgba(255,255,255,.12); color: #fff; border-radius: 8px; padding: 4px 10px; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; font-weight: 700; letter-spacing: .04em; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.am9-cupom-codigo:hover { background: rgba(255,255,255,.22); }
.am9-cupom-codigo.is-copiado { background: #37c956; border-color: #37c956; }
.am9-cupom-codigo.is-copiado i::before { content: "\f26e"; }
.am9-cupom-info { flex: 1; min-width: 0; padding: 14px 16px; display: flex; flex-direction: column; gap: 10px; }
.am9-cupom-evento { font-weight: 600; font-size: 13.5px; }
.am9-cupom-evento i { color: var(--am9-primary); margin-right: 4px; }
.am9-cupom-desc-txt { font-size: 12.5px; color: var(--am9-muted); margin-top: -4px; }
.am9-cupom-regras { list-style: none; display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; }
.am9-cupom-regras:empty { display: none; }
.am9-cupom-regras li { font-size: 11.5px; padding: 2px 8px; border-radius: 999px; background: #f3f5f9; color: #4b5563; }
.am9-cupom-regras i { margin-right: 4px; }
.am9-cupom-resultado { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; padding: 8px 10px; border-radius: var(--am9-radius-sm); background: #f8f9fc; }
.am9-cupom-resultado span { display: block; font-size: 10px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em; color: var(--am9-muted); }
.am9-cupom-resultado b { font-size: 14px; }
.am9-cupom-acoes { display: flex; gap: 6px; align-items: center; margin-top: auto; }
@media (max-width: 575.98px) {
  .am9-cupom-card { flex-direction: column; }
  .am9-cupom-canhoto { width: auto; flex-direction: row; flex-wrap: wrap; gap: 6px 12px; padding: 12px; }
  .am9-cupom-canhoto::after { display: none; }
  .am9-cupom-codigo { margin-top: 0; }
  .am9-cupom-resultado { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* Planilha de Estrutura & orçamento — edição direta, seleção e lote */
.am9-planilha .am9-col-sel { width: 34px; padding-right: 0; }
.am9-planilha .am9-col-sel .form-check-input { margin: 0; cursor: pointer; }
.am9-planilha tr.is-sel td { background: #f5f8ff; }
.am9-planilha tr.is-salvo td { background: #f2fcf4; transition: background .3s; }
.am9-planilha tr.is-descartado td { color: #9aa1ad; }
.am9-planilha tr.is-descartado .am9-item-nome { text-decoration: line-through; font-weight: 600; }
.am9-cat-nome[data-renomear] { cursor: text; border-bottom: 1px dashed transparent; }
.am9-cat-nome[data-renomear]:hover { border-bottom-color: #9aa1ad; }
.am9-cat-editar { border: 0; background: transparent; padding: 0 4px; color: #9aa1ad; font-size: 12px; opacity: 0; transition: opacity var(--am9-transition); }
.am9-table-group:hover .am9-cat-editar, .am9-cat-editar:focus { opacity: 1; }
.am9-cat-input { display: inline-block; width: 220px; max-width: 60vw; height: 28px; font-weight: 700; }
.am9-sit-select { width: auto; min-width: 118px; padding-top: 2px; padding-bottom: 2px; font-size: 12px; font-weight: 600; border-radius: 999px; }
.am9-sit-select.is-a_definir  { background-color: #f1f3f6; color: #4b5563; border-color: #e1e5eb; }
.am9-sit-select.is-cotando    { background-color: #e6f8fc; color: #0b7c9c; border-color: #b6e9f5; }
.am9-sit-select.is-negociando { background-color: #fff6db; color: #92600a; border-color: #ffe08a; }
.am9-sit-select.is-fechado    { background-color: #e8f0ff; color: #1d4ed8; border-color: #bcd2ff; }
.am9-sit-select.is-pago       { background-color: #e7f8ec; color: #15803d; border-color: #b7ebc6; }
.am9-sit-select.is-descartado { background-color: #fff; color: #9aa1ad; border-color: #e1e5eb; text-decoration: line-through; }
.am9-filtro-switches { display: flex; flex-wrap: wrap; gap: 4px 14px; }
/* Fixa no rodapé (sticky não funciona: um ancestral do painel tem overflow) */
.am9-lote { position: fixed; z-index: 1030; bottom: 16px; left: 50%; transform: translateX(-50%); width: min(1100px, calc(100vw - 24px)); padding: 10px 14px; border-radius: var(--am9-radius-lg); background: #111827; color: #fff; box-shadow: var(--am9-shadow-xl); }
@media (min-width: 992px) { .am9-lote { left: calc(50% + var(--am9-side-w, 256px) / 2); width: min(1100px, calc(100vw - var(--am9-side-w, 256px) - 48px)); } }
.am9-lote-in { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.am9-lote-qtd { font-size: 13px; white-space: nowrap; }
.am9-lote-qtd .btn-link { color: #9db4ff; font-size: 12px; }
.am9-lote-campos { display: flex; flex-wrap: wrap; gap: 6px; flex: 1; }
.am9-lote-campos .form-select, .am9-lote-campos .form-control { width: auto; min-width: 130px; flex: 1 1 130px; max-width: 200px; }
.am9-lote-acoes { display: flex; gap: 6px; }
.am9-lote-msg:empty { display: none; }
.am9-lote-msg { margin-top: 6px; color: #fcd34d; }
@media (max-width: 767.98px) { .am9-lote { bottom: calc(var(--am9-bottom-h) + 8px); } .am9-lote-campos .form-select, .am9-lote-campos .form-control { max-width: none; } }

/* Organização › Resumo do projeto (hub/organizacao.php) */
.am9-fluxo td { padding: 9px 16px; font-size: 13px; }
.am9-fluxo td:nth-child(2), .am9-fluxo td:nth-child(3) { width: 130px; white-space: nowrap; }
.am9-fluxo .am9-fluxo-total td { font-weight: 800; border-top: 2px solid #111827; border-bottom: 0; background: #fafbfd; }
.am9-meta-linha + .am9-meta-linha { margin-top: 14px; }
.am9-meta-quando { font-size: 12px; }
.am9-meta-quando.is-ok { color: #1f9d3a; }
.am9-meta-quando.is-bom { color: var(--am9-primary); }
.am9-meta-quando.is-ruim { color: #c0392b; }
.am9-meta-quando.is-neutro { color: var(--am9-muted); }
.am9-agenda { list-style: none; margin: 0; padding: 0; }
.am9-agenda li { display: grid; grid-template-columns: 52px minmax(0, 1fr) auto 84px; align-items: center; gap: 10px; padding: 7px 0; border-bottom: 1px dashed var(--am9-line); font-size: 13px; }
.am9-agenda li:last-child { border-bottom: 0; }
.am9-agenda-data { font-weight: 700; font-variant-numeric: tabular-nums; color: #4b5563; }
.am9-agenda .is-vencido .am9-agenda-data { color: #c0392b; }
.am9-agenda-nome { color: inherit; text-decoration: none; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.am9-agenda-nome small { display: block; color: var(--am9-muted); font-size: 11.5px; }
.am9-agenda .is-entrada .am9-agenda-valor { color: #1f9d3a; }
.am9-agenda .is-saida .am9-agenda-valor { color: #c0392b; }
.am9-agenda-saldo { text-align: right; font-size: 12px; font-weight: 600; white-space: nowrap; }
.am9-agenda-valor { white-space: nowrap; }
.am9-area-card { display: flex; flex-direction: column; gap: 8px; height: 100%; padding: 16px; background: #fff; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-lg); box-shadow: var(--am9-shadow-sm); color: inherit; text-decoration: none; transition: box-shadow var(--am9-transition), border-color var(--am9-transition); }
.am9-area-card:hover { box-shadow: var(--am9-shadow); border-color: var(--am9-primary); color: inherit; }
.am9-area-head { font-size: 12px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--am9-muted); }
.am9-area-head i { color: var(--am9-primary); margin-right: 4px; }
.am9-area-card ul { list-style: none; margin: 0; padding: 0; font-size: 12.5px; }
.am9-area-card li { display: flex; justify-content: space-between; gap: 8px; padding: 4px 0; border-top: 1px dashed var(--am9-line); }
.am9-area-card li span { color: var(--am9-muted); min-width: 0; }
@media (max-width: 575.98px) { .am9-agenda li { grid-template-columns: 44px minmax(0, 1fr) auto; } .am9-agenda-saldo { display: none; } .am9-fluxo td:nth-child(2), .am9-fluxo td:nth-child(3) { width: auto; } }

/* Patrocinadores — lista, colunas personalizadas, cotas (hub/patrocinadores.php) */
.am9-seg-sm .am9-seg-btn { padding: 4px 10px; font-size: 12.5px; }
.am9-extra-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.am9-extra-tag { display: inline-flex; align-items: center; gap: 4px; padding: 1px 7px; border-radius: 999px; font-size: 11px; background: #f3f5f9; color: #4b5563; }
.am9-extra-tag.is-sim { background: #e7f8ec; color: #15803d; }
.am9-extra-tag.is-nao { background: #f3f5f9; color: #9aa1ad; text-decoration: line-through; }
.am9-patro-lista .am9-cel-select { width: auto; min-width: 110px; font-size: 12px; padding-top: 2px; padding-bottom: 2px; }
.am9-patro-lista .am9-cel-texto { min-width: 120px; font-size: 12.5px; border-color: transparent; background: transparent; }
.am9-patro-lista .am9-cel-texto:hover, .am9-patro-lista .am9-cel-texto:focus { border-color: var(--am9-line); background: #fff; }
.am9-etapa-sel { border-radius: 999px; font-weight: 600; }
.am9-etapa-sel.is-prospeccao { background-color: #f1f3f6; color: #4b5563; }
.am9-etapa-sel.is-negociando { background-color: #fff6db; color: #92600a; }
.am9-etapa-sel.is-fechado { background-color: #e7f8ec; color: #15803d; }
.am9-etapa-sel.is-perdido { background-color: #fff; color: #9aa1ad; text-decoration: line-through; }
.am9-col-extra { min-width: 110px; }
.am9-patro-lista td:first-child { min-width: 190px; }
th.am9-col-extra { white-space: nowrap; }
.am9-col-conta { font-weight: 600; color: #15803d; text-transform: none; letter-spacing: 0; }
.am9-simnao { min-width: 64px; border: 1px solid var(--am9-line); border-radius: 999px; padding: 2px 10px; font-size: 12px; font-weight: 600; background: #fff; color: #9aa1ad; }
.am9-simnao.is-sim { background: #e7f8ec; border-color: #b7ebc6; color: #15803d; }
.am9-simnao.is-nao { background: #f8f9fc; color: #6b7280; }
.am9-simnao:hover { border-color: var(--am9-primary); }
.am9-lista-edit { display: flex; flex-direction: column; gap: 6px; }
.am9-lista-edit-row { display: flex; align-items: center; gap: 6px; flex-wrap: nowrap; padding: 6px; border: 1px solid var(--am9-line); border-radius: var(--am9-radius-sm); background: #fafbfd; }
.am9-lista-edit-row [data-k="nome"] { flex: 1 1 160px; }
.am9-lista-edit-row [data-k="tipo"] { width: auto; }
.am9-lista-edit-row [data-k="opcoes"] { flex: 1 1 180px; }
.am9-lista-valor { width: 170px; flex-shrink: 0; }
@media (max-width: 575.98px) { .am9-lista-edit-row { flex-wrap: wrap; } }
.am9-mover { display: inline-flex; gap: 2px; }
.am9-mover .btn { padding: 0 5px; }
.am9-mover .btn:first-child:disabled, .am9-lista-edit-row:first-child .am9-mover .btn:first-child, .am9-lista-edit-row:last-child .am9-mover .btn:last-child { opacity: .35; }

/* ── Tabelas do painel do organizador — padrão único ─────────────
   Vale para TODAS as <table class="table"> do painel (telas novas e as
   antigas: Pedidos, Participantes, Ingressos emitidos, Check-in,
   Financeiro…): cabeçalho discreto, zebrado leve, hover, números
   alinhados. Destaques de linha (seleção, salvo, descartado) têm
   especificidade maior e continuam valendo por cima do zebrado. */
.am9-dash-main .table { --bs-table-bg: #fff; --bs-table-border-color: #edf0f5; font-size: 13px; margin-bottom: 0; }
.am9-dash-main .table > thead { --bs-table-bg: #f6f8fb; }
.am9-dash-main .table > thead > tr > th {
  color: #6b7280; font-size: 11px; font-weight: 600; text-transform: uppercase; letter-spacing: .04em;
  padding: 11px 14px; border-bottom: 1px solid #e3e7ee; white-space: nowrap; vertical-align: middle;
}
.am9-dash-main .table > tbody > tr > td { padding: 10px 14px; border-bottom-color: #edf0f5; }
.am9-dash-main :where(.table > tbody > tr:nth-child(even)) { --bs-table-bg: #fafbfd; }
.am9-dash-main :where(.table > tbody > tr:hover) { --bs-table-bg: #f2f6ff; }
.am9-dash-main .table > tbody > tr:last-child > td { border-bottom: 0; }
.am9-dash-main .table > tfoot > tr > td { background: #f6f8fb; border-top: 2px solid #e3e7ee; padding: 10px 14px; }
.am9-dash-main .table td.text-end, .am9-dash-main .table th.text-end { font-variant-numeric: tabular-nums; }
.am9-dash-main .table-responsive { border-radius: inherit; }
/* Linha de grupo (categoria) bem distinta do zebrado */
.am9-dash-main .table > tbody > tr.am9-table-group > td { background: #eef2f8; color: #1f2937; font-weight: 700; font-size: 12.5px; border-bottom: 1px solid #e0e6ef; }
/* Cabeçalho ordenável */
.am9-dash-main th.am9-ordenavel { cursor: pointer; user-select: none; }
.am9-dash-main th.am9-ordenavel:hover { color: var(--am9-primary); }
.am9-dash-main th.am9-ordenavel:focus-visible { outline: 2px solid var(--am9-primary); outline-offset: -2px; }
.am9-ordem-ico { margin-left: 5px; font-size: 10px; opacity: .35; }
.am9-dash-main th.am9-ordenavel:hover .am9-ordem-ico { opacity: .7; }
.am9-dash-main th.is-asc, .am9-dash-main th.is-desc { color: var(--am9-primary); }
.am9-dash-main th.is-asc .am9-ordem-ico, .am9-dash-main th.is-desc .am9-ordem-ico { opacity: 1; font-size: 11px; }

/* Participantes — resumo e cor extra dos cards */
.text-purple { color:#6f42c1 !important; }
.bg-purple { background-color:rgba(111,66,193,var(--bs-bg-opacity,1)) !important; }
.am9-part-resumo { display:flex; flex-wrap:wrap; gap:8px; }
.am9-part-resumo > span { display:inline-flex; align-items:center; gap:6px; background:#fff; border:1px solid #e7ebf2; border-radius:999px; padding:6px 14px; font-size:13px; color:#475467; }
.am9-part-resumo i { color:#2563eb; }
.am9-part-resumo b { color:#101828; }
.am9-part-colunas .dropdown-item { font-size:13px; cursor:pointer; }

/* Formulário de inscrição — editor (Configurações › Formulário) e checkout */
.am9-form-modelos { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.am9-form-modelo { border: 1px dashed #c7d2fe; background: #f5f7ff; color: var(--am9-primary); border-radius: 999px; padding: 3px 10px; font-size: 12px; font-weight: 600; }
.am9-form-modelo:hover { background: #e8edff; }
.am9-form-q { border: 1px solid #e5e7eb; border-radius: 12px; padding: 12px; margin-bottom: 10px; background: #fff; }
.am9-form-q-topo { display: flex; align-items: center; gap: 8px; }
.am9-form-q-num { width: 24px; height: 24px; border-radius: 50%; background: #eef2ff; color: var(--am9-primary); font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; }
.am9-form-q-acoes { display: flex; gap: 4px; flex-shrink: 0; }
.am9-form-chip { display: inline-flex; align-items: center; gap: 6px; border: 1px solid #e2e8f0; border-radius: 999px; padding: 4px 12px; font-size: 13px; cursor: pointer; background: #fff; margin: 0; }
.am9-form-chip:has(input:checked) { border-color: var(--am9-primary); background: #eef2ff; color: var(--am9-primary); font-weight: 600; }
.am9-form-chip-sm { padding: 2px 8px; font-size: 12px; }
/* Celular: o botão "Usar meus dados p/ todos" desce para a linha de baixo, sem espremer o título */
@media (max-width: 575.98px) {
  .am9-participante-lote-header > .flex-grow-1 { flex: 1 1 calc(100% - 50px); min-width: 0; }
  .am9-participante-lote-header .am9-usar-meus-dados-todos { width: 100%; }
}
.am9-form-perguntas { margin-top: 12px; padding-top: 12px; border-top: 1px dashed #e5e7eb; }
.am9-form-perguntas-titulo { font-size: 12px; font-weight: 700; color: #475467; text-transform: uppercase; letter-spacing: .03em; margin-bottom: 8px; }
.am9-form-perguntas-titulo i { color: var(--am9-primary); }

/* Público (hub › Vendas › Público): barras horizontais por resposta */
.am9-pub-barras { display: flex; flex-direction: column; gap: 8px; }
.am9-pub-barra { display: grid; grid-template-columns: minmax(90px, 38%) 1fr auto; align-items: center; gap: 10px; font-size: 13px; }
.am9-pub-barra-rot { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #344054; }
.am9-pub-barra-trilho { height: 10px; background: #f1f4f9; border-radius: 999px; overflow: hidden; }
.am9-pub-barra-trilho span { display: block; height: 100%; background: var(--am9-primary); border-radius: 999px; min-width: 2px; }
.am9-pub-barra-num { font-weight: 700; font-variant-numeric: tabular-nums; min-width: 64px; text-align: right; }
.am9-pub-barra-num small { color: #98a2b3; font-weight: 500; }
.am9-pub-barra.is-zero { color: #98a2b3; }
.am9-pub-barra.is-zero .am9-pub-barra-trilho span { display: none; }

/* Checkout — espaçamento e campos uniformes */
/* Linhas .row.g-3 seguidas se anulavam (margem negativa) e o rótulo colava no campo de cima */
.woocommerce-billing-fields__field-wrapper > .row.g-3 + .row.g-3,
#am9-endereco-campos > .row.g-3 + .row.g-3 { margin-top: 0; }
.woocommerce-billing-fields__field-wrapper > .row.g-3:last-of-type { margin-bottom: 1rem; }
.am9-checkout-wrap .form-row { margin: 0; padding-top: 0; padding-bottom: 0; }
.woocommerce-billing-fields__field-wrapper > .mb-2:has(#am9-endereco-toggle) { margin-top: 2px; margin-bottom: 14px !important; }
.am9-checkout-wrap .form-row label { margin-bottom: 6px; }
/* Estado (select2 do Woo) com o mesmo visual dos outros campos */
.am9-checkout-wrap .select2-container .select2-selection--single {
  height: 38px; border: 1.5px solid #e5e9f0; border-radius: var(--am9-radius-sm); background: #fafbfc;
  display: flex; align-items: center;
}
.am9-checkout-wrap .select2-container .select2-selection--single .select2-selection__rendered { padding-left: 12px; line-height: 1.4; color: #212529; }
.am9-checkout-wrap .select2-container .select2-selection--single .select2-selection__arrow { height: 36px; right: 6px; }
.am9-checkout-wrap .select2-container--open .select2-selection--single,
.am9-checkout-wrap .select2-container--focus .select2-selection--single { border-color: var(--am9-primary); box-shadow: 0 0 0 3px var(--am9-primary-light); background: #fff; }
.am9-checkout-wrap .woocommerce-privacy-policy-text { font-size: 12px; color: #6b7280; line-height: 1.5; }
.am9-checkout-wrap .woocommerce-privacy-policy-text p { margin-bottom: 12px; }
@media (max-width: 575.98px) {
  /* Etapas numa linha só */
  .am9-checkout-etapas { flex-wrap: nowrap !important; gap: 4px !important; }
  .am9-checkout-etapas span { font-size: 12px !important; }
  .am9-checkout-etapas .am9-step-dot { width: 24px; height: 24px; font-size: 12px; }
}

/* Etiquetas & listas — escolha do formato */
.am9-imp-opcao { display: flex; flex-direction: column; gap: 4px; border: 1.5px solid #e5e7eb; border-radius: 14px; padding: 14px; cursor: pointer; margin: 0; }
.am9-imp-opcao input { position: absolute; opacity: 0; pointer-events: none; }
.am9-imp-opcao:has(input:checked) { border-color: var(--am9-primary); background: #f5f7ff; }
.am9-imp-opcao small { color: #6b7280; line-height: 1.4; }
.am9-imp-ic { width: 36px; height: 36px; border-radius: 10px; background: #eef2ff; color: var(--am9-primary); display: inline-flex; align-items: center; justify-content: center; font-size: 18px; margin-bottom: 4px; }
/* Recado do organizador no ingresso */
.am9-tv-recado { margin-top: 10px; padding: 8px 10px; border-radius: 10px; background: rgba(37,99,235,.08); color: #1e3a8a; font-size: 12px; line-height: 1.45; }

/* Produtos extras do evento — vitrine e cadastro */
.am9-produto-card { gap: 12px; }
.am9-produto-thumb { width: 52px; height: 52px; border-radius: 10px; object-fit: cover; flex-shrink: 0; background: #f1f4f9; }
.am9-prod-lista { display: flex; flex-direction: column; gap: 10px; }
.am9-prod-card { display: flex; align-items: center; gap: 12px; background: #fff; border-radius: 14px; padding: 12px; box-shadow: var(--am9-shadow-sm); }
.am9-prod-card.is-inativo { opacity: .65; }
.am9-prod-img { width: 56px; height: 56px; border-radius: 12px; background: #eef2ff; color: var(--am9-primary); display: flex; align-items: center; justify-content: center; font-size: 22px; overflow: hidden; flex-shrink: 0; }
.am9-prod-img img { width: 100%; height: 100%; object-fit: cover; }

/* Página do produtor (/produtor/{slug}/) */
.am9-produtor-capa { height: 220px; background: linear-gradient(120deg, #1e3a8a, #2563eb 60%, #38bdf8) center/cover no-repeat; }
.am9-produtor-cab { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px; margin-top: -56px; margin-bottom: 12px; }
.am9-produtor-logo { width: 112px; height: 112px; border-radius: 24px; object-fit: cover; border: 4px solid #fff; background: #fff; box-shadow: var(--am9-shadow-sm); }
.am9-produtor-info { flex: 1; min-width: 200px; padding-bottom: 6px; }
.am9-produtor-info h1 { font-size: 1.6rem; font-weight: 800; margin: 0 0 4px; }
.am9-produtor-stats { display: flex; gap: 14px; font-size: 13px; color: #6b7280; }
.am9-produtor-stats b { color: #101828; }
.am9-produtor-links { display: flex; flex-wrap: wrap; gap: 8px; padding-bottom: 6px; }
.am9-produtor-bio { background: #fff; border-radius: 16px; padding: 16px 20px; color: #344054; max-width: 860px; box-shadow: var(--am9-shadow-sm); }
.am9-produtor-bio p:last-child { margin-bottom: 0; }
@media (max-width: 575.98px) { .am9-produtor-capa { height: 150px; } .am9-produtor-logo { width: 88px; height: 88px; } .am9-produtor-cab { margin-top: -44px; } }
/* Página da cidade */
.am9-cidade-secao { margin-bottom: 32px; }
.am9-cidade-faixa { scroll-snap-type: x mandatory; padding-bottom: 6px; }
.am9-cidade-faixa > * { scroll-snap-align: start; }

/* Minha conta (comprador) — abas no topo no celular */
.am9-comprador-conteudo { padding: 24px 20px 32px; }
.am9-comprador-abas { display: flex; gap: 6px; overflow-x: auto; margin: -8px -4px 16px; padding: 4px; scrollbar-width: none; }
.am9-comprador-abas::-webkit-scrollbar { display: none; }
.am9-comprador-abas a { flex: 0 0 auto; display: inline-flex; align-items: center; gap: 6px; padding: 8px 14px; border-radius: 999px; background: #fff; color: #475467; font-size: 13px; font-weight: 600; text-decoration: none; box-shadow: var(--am9-shadow-sm); }
.am9-comprador-abas a.active { background: var(--am9-primary); color: #fff; }
@media (max-width: 767.98px) { .am9-comprador-conteudo { padding: 16px 12px 24px; } }

/* Meus ingressos — um card por evento, uma linha por ingresso */
.am9-mi-filtro { display: inline-flex; background: rgba(255,255,255,.12); border-radius: 999px; padding: 4px; margin-bottom: 16px; }
.am9-mi-filtro button { border: 0; background: transparent; color: rgba(255,255,255,.8); font-weight: 600; font-size: 13px; padding: 7px 14px; border-radius: 999px; }
.am9-mi-filtro button span { opacity: .7; margin-left: 4px; }
.am9-mi-filtro button.active { background: #fff; color: #101828; }
.am9-mi-evento { background: #fff; border-radius: 18px; overflow: hidden; box-shadow: 0 10px 30px rgba(0,0,0,.18); }
.am9-mi-evento.is-passado { opacity: .85; }
.am9-mi-cab { display: flex; gap: 14px; padding: 14px; }
.am9-mi-capa { width: 72px; height: 96px; border-radius: 12px; overflow: hidden; flex-shrink: 0; background: linear-gradient(135deg, var(--am9-primary), #38bdf8); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 24px; }
.am9-mi-capa img { width: 100%; height: 100%; object-fit: cover; }
.am9-mi-info { min-width: 0; flex: 1; }
.am9-mi-tag { display: inline-block; font-size: 11px; font-weight: 700; color: #b45309; background: #fef3c7; border-radius: 999px; padding: 2px 8px; margin-bottom: 4px; }
.am9-mi-tag.is-muted { color: #6b7280; background: #f1f4f9; }
.am9-mi-titulo { font-size: 16px; font-weight: 800; line-height: 1.25; margin: 0 0 6px; color: #101828; }
.am9-mi-titulo a { color: inherit; text-decoration: none; }
.am9-mi-meta { display: flex; align-items: center; gap: 6px; font-size: 13px; color: #475467; min-width: 0; }
.am9-mi-meta i { color: var(--am9-primary); }
.am9-mi-atalhos { display: flex; border-top: 1px solid #f1f3f6; }
.am9-mi-atalhos a { flex: 1; display: flex; align-items: center; justify-content: center; gap: 6px; padding: 10px; font-size: 13px; font-weight: 600; color: var(--am9-primary); text-decoration: none; }
.am9-mi-atalhos a + a { border-left: 1px solid #f1f3f6; }
.am9-mi-lista { list-style: none; margin: 0; padding: 0; background: #f8fafc; }
.am9-mi-ing { padding: 12px 14px; border-top: 1px solid #eef1f5; }
.am9-mi-ing-linha { display: flex; align-items: center; gap: 12px; }
.am9-mi-ing-dados { min-width: 0; flex: 1; }
.am9-mi-ing-nome { font-weight: 700; font-size: 15px; color: #101828; overflow-wrap: anywhere; }
.am9-mi-ing-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; font-size: 12px; color: #6b7280; margin-top: 2px; }
.am9-mi-status { font-weight: 700; border-radius: 999px; padding: 1px 8px; font-size: 11px; }
.am9-mi-status.is-valido { background: #dcfce7; color: #15803d; }
.am9-mi-status.is-usado { background: #e0e7ff; color: #3730a3; }
.am9-mi-status.is-cancelado { background: #fee2e2; color: #b91c1c; }
.am9-mi-ing.is-cancelado .am9-mi-ing-nome { text-decoration: line-through; color: #98a2b3; }
.am9-mi-qr { flex-shrink: 0; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 76px; height: 64px; border-radius: 14px; background: var(--am9-primary); color: #fff; text-decoration: none; font-size: 11px; font-weight: 700; }
.am9-mi-qr i { font-size: 24px; line-height: 1; }
.am9-mi-qr.is-sec { background: #fff; color: var(--am9-primary); border: 1.5px solid #dbe3ff; }
.am9-mi-acoes { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.am9-mi-acoes a, .am9-mi-acoes button { display: inline-flex; align-items: center; gap: 5px; border: 1px solid #e5e7eb; background: #fff; color: #344054; border-radius: 999px; padding: 6px 12px; font-size: 12px; font-weight: 600; text-decoration: none; }
.am9-mi-acoes span { font-size: 12px; display: inline-flex; gap: 5px; align-items: center; }
.am9-mi-evento--claro { box-shadow: none; border: 1px solid #e8ecf2; }

/* Thank-you no celular: linha simples por ingresso (sem o mini bilhete) */
@media (max-width: 575.98px) {
  .am9-ty-ticket-mini { display: none !important; }
  .am9-ty-ticket-row { flex-wrap: wrap; gap: 12px !important; }
  .am9-ty-ticket-btn-wrap { width: 100%; }
  .am9-ty-ticket-btn { width: 100%; padding: 10px; font-size: 15px; }
  .am9-thankyou-wrap .container { padding-left: 12px; padding-right: 12px; }
}
/* Card "Receber por WhatsApp" (plugin) no padrão da página */
.am9-thankyou-wrap #am9-whatsapp-btn { white-space: nowrap; }
@media (max-width: 575.98px) {
  .am9-thankyou-wrap #am9-whatsapp-numero { flex: 1; width: auto !important; min-width: 0; }
  .am9-thankyou-wrap .card-body > .d-flex > .d-flex { width: 100%; }
}
.am9-thankyou-wrap .card { border-radius: var(--am9-radius-lg) !important; }

/* Check-in — contadores, modos e lista com busca */
.am9-ck-kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
.am9-ck-kpis > div { background: #fff; border-radius: 14px; padding: 12px; box-shadow: var(--am9-shadow-sm); display: grid; grid-template-columns: auto 1fr; grid-template-rows: auto auto; column-gap: 10px; align-items: center; }
.am9-ck-kpis b { font-size: 22px; line-height: 1; font-variant-numeric: tabular-nums; }
.am9-ck-kpis small { grid-column: 2; font-size: 11px; color: #6b7280; text-transform: uppercase; letter-spacing: .03em; }
.am9-ck-kpi-ic { grid-row: span 2; width: 36px; height: 36px; border-radius: 10px; background: #eef2ff; color: var(--am9-primary); display: flex; align-items: center; justify-content: center; font-size: 17px; }
.am9-ck-kpi-ic.is-ok { background: #dcfce7; color: #15803d; } .am9-ck-kpi-ic.is-wait { background: #fef3c7; color: #b45309; }
.am9-ck-progresso { margin-bottom: 14px; }
.am9-ck-barra { height: 8px; border-radius: 999px; background: #e5e9f0; overflow: hidden; }
.am9-ck-barra span { display: block; height: 100%; background: linear-gradient(90deg, #22c55e, #2563eb); border-radius: 999px; transition: width .3s; }
.am9-ck-modos { display: flex; background: #fff; border-radius: 999px; padding: 4px; box-shadow: var(--am9-shadow-sm); margin-bottom: 14px; max-width: 360px; }
.am9-ck-modos button { flex: 1; border: 0; background: transparent; border-radius: 999px; padding: 9px; font-weight: 700; font-size: 14px; color: #475467; }
.am9-ck-modos button.active { background: var(--am9-primary); color: #fff; }
.am9-ck-busca { position: relative; margin-bottom: 10px; }
.am9-ck-busca i { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: #98a2b3; }
.am9-ck-busca input { width: 100%; border: 1.5px solid #e5e9f0; border-radius: 14px; padding: 13px 14px 13px 40px; font-size: 16px; background: #fff; }
.am9-ck-busca input:focus { outline: none; border-color: var(--am9-primary); box-shadow: 0 0 0 3px var(--am9-primary-light); }
.am9-ck-filtros { display: flex; align-items: center; gap: 6px; margin-bottom: 10px; flex-wrap: wrap; }
.am9-ck-filtros button { border: 1px solid #e5e7eb; background: #fff; border-radius: 999px; padding: 5px 12px; font-size: 13px; font-weight: 600; color: #475467; }
.am9-ck-filtros button.active { background: #101828; border-color: #101828; color: #fff; }
.am9-ck-itens { list-style: none; margin: 0; padding: 0; background: #fff; border-radius: 16px; box-shadow: var(--am9-shadow-sm); overflow: hidden; }
.am9-ck-item { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-top: 1px solid #f1f3f6; transition: background .3s; }
.am9-ck-item:first-child { border-top: 0; }
.am9-ck-item.is-feito { background: #f6fef9; }
.am9-ck-item.is-cancelado { opacity: .55; }
.am9-ck-item.am9-ck-pisca { background: #dcfce7; }
.am9-ck-item-dados { flex: 1; min-width: 0; }
.am9-ck-item-nome { font-weight: 700; font-size: 15px; color: #101828; overflow-wrap: anywhere; }
.am9-ck-item-sub { display: flex; flex-wrap: wrap; gap: 2px 10px; font-size: 12px; color: #6b7280; margin-top: 2px; }
.am9-ck-codigo { font-family: ui-monospace, monospace; }
.am9-ck-cupom { color: #b45309; font-weight: 700; }
.am9-ck-quando { color: #15803d; font-weight: 600; }
.am9-ck-item-acao { display: flex; flex-direction: column; gap: 6px; flex-shrink: 0; }
.am9-ck-btn-in, .am9-ck-btn-out { display: inline-flex; align-items: center; justify-content: center; gap: 6px; border-radius: 12px; font-weight: 700; font-size: 13px; padding: 10px 14px; min-width: 112px; border: 0; }
.am9-ck-btn-in { background: #16a34a; color: #fff; }
.am9-ck-btn-out { background: #fff; color: #b45309; border: 1.5px solid #fcd9a8; padding: 6px 10px; font-size: 12px; }
.am9-ck-btn-in:disabled, .am9-ck-btn-out:disabled { opacity: .5; }
.am9-ck-tag.is-cancelado { font-size: 12px; font-weight: 700; color: #b91c1c; }
.am9-ck-vazio { text-align: center; color: #6b7280; padding: 30px 0; } .am9-ck-vazio i { font-size: 28px; }
@media (max-width: 575.98px) {
  .am9-ck-kpis { gap: 6px; } .am9-ck-kpis > div { padding: 10px 8px; grid-template-columns: 1fr; text-align: center; }
  .am9-ck-kpi-ic { display: none; } .am9-ck-kpis small { grid-column: 1; font-size: 10px; }
  .am9-ck-modos { max-width: none; }
  .am9-ck-btn-in { min-width: 96px; padding: 12px; }
}

/* Check-in no celular: câmera grande e à mão, impressora recolhida */
.am9-ck-video { position: relative; max-width: 340px; margin: 0 auto; border-radius: 14px; overflow: hidden; background: #0f172a; aspect-ratio: 4 / 3; }
.am9-ck-video video { width: 100%; height: 100%; object-fit: cover; display: block; background: #0f172a; }
.am9-ck-video-abrir { position: absolute; inset: 0; border: 0; background: radial-gradient(circle at 50% 40%, #1e293b, #0f172a); color: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; }
.am9-ck-video-abrir i { font-size: 42px; width: 78px; height: 78px; border-radius: 50%; background: #16a34a; display: grid; place-items: center; box-shadow: 0 0 0 10px rgba(22,163,74,.2); }
.am9-ck-video-abrir b { font-size: 18px; margin-top: 8px; } .am9-ck-video-abrir small { opacity: .7; }
.am9-ck-video.is-ligada .am9-ck-video-abrir { display: none; }
.am9-ck-termica { background: #fff; border-radius: 14px; box-shadow: var(--am9-shadow-sm); margin-bottom: 14px; }
.am9-ck-termica > summary { list-style: none; display: flex; align-items: center; gap: 8px; padding: 10px 14px; font-size: 13px; font-weight: 700; color: #475467; cursor: pointer; }
.am9-ck-termica > summary::-webkit-details-marker { display: none; }
.am9-ck-termica[open] > summary .bi-chevron-down { transform: rotate(180deg); }
.am9-ck-termica.is-on > summary { color: #15803d; }
.am9-ck-termica .am9-termica-barra { box-shadow: none; margin: 0; padding-top: 0; }
@media (max-width: 767.98px) {
  .am9-ck-titulo { display: none; }
  .am9-ck-video { max-width: none; aspect-ratio: 1 / 1; }
  #am9-ck-scanner { --bs-gutter-y: 12px; }
  #am9-ck-scanner .card-body { padding: 10px !important; }
  .am9-ck-auto { display: flex !important; justify-content: center; }
  /* A busca da lista fica presa abaixo do menu ao rolar. overflow-x: clip (só nesta página) no
     lugar do hidden global, que transforma html/body em área de rolagem e anula o sticky */
  html:has(.am9-ck-modos), body:has(.am9-ck-modos) { overflow-x: clip; }
  #am9-ck-lista .am9-ck-busca { position: sticky; top: 64px; z-index: 19; margin: 0 -12px 10px; padding: 8px 12px; background: rgb(223, 234, 254); }
  #am9-ck-lista .am9-ck-busca i { left: 26px; }
  #am9-ck-lista .am9-ck-busca input { box-shadow: 0 6px 16px rgba(15,23,42,.08); }
  /* Hub no check-in: topo do evento compacto */
  .am9-hub-hero.is-compacto .am9-chips, .am9-hub-hero.is-compacto .am9-hub-actions, .am9-hub-hero.is-compacto .am9-hub-side { display: none; }
  .am9-hub-hero.is-compacto .am9-hub-hero-in { padding: 12px 16px; }
  .am9-hub-hero.is-compacto .am9-hub-title { font-size: 18px; margin: 2px 0 0; }
}

/* Impressora térmica (assets/js/am9-termica.js) */
.am9-termica-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; background: #fff; border-radius: 14px; padding: 10px 14px; box-shadow: var(--am9-shadow-sm); margin-bottom: 14px; font-size: 13px; }
.am9-termica-status { display: inline-flex; align-items: center; gap: 6px; font-weight: 700; color: #475467; }
.am9-termica-status.is-on { color: #15803d; }
.am9-termica-status.is-on i::after { content: ''; display: inline-block; width: 7px; height: 7px; background: #22c55e; border-radius: 50%; margin-left: 4px; vertical-align: middle; }
.am9-termica-op { display: inline-flex; align-items: center; gap: 5px; margin: 0; color: #344054; cursor: pointer; }
.am9-termica-txt { color: #6b7280; }
.am9-termica-sep { color: #98a2b3; font-size: 12px; margin-left: 4px; }
.am9-ck-btn-print { display: inline-flex; align-items: center; justify-content: center; gap: 5px; border: 1px solid #e5e7eb; background: #fff; color: #344054; border-radius: 12px; font-size: 12px; font-weight: 600; padding: 6px 10px; }
/* Etiqueta: imprimir + lápis para corrigir o nome */
.am9-ck-etq { display: flex; gap: 4px; }
.am9-ck-etq .am9-ck-btn-print { flex: 1; }
.am9-ck-btn-nome { border: 1px solid #e5e7eb; background: #fff; color: #667085; border-radius: 10px; width: 32px; flex-shrink: 0; display: grid; place-items: center; font-size: 13px; padding: 0; }
.am9-ck-btn-nome:hover { color: var(--am9-primary); border-color: var(--am9-primary); }
/* Coluna opcional de impressões: pontinho + "2x impressa" e filtros próprios */
.am9-ck-impr, .am9-ck-f-impr { display: none !important; }
.am9-ck-com-impr .am9-ck-impr { display: inline-flex !important; align-items: center; gap: 4px; color: #98a2b3; }
.am9-ck-com-impr .am9-ck-f-impr { display: inline-block !important; }
.am9-ck-impr i { width: 8px; height: 8px; border-radius: 50%; background: #d0d5dd; }
.am9-ck-impr b { font-weight: 600; }
.am9-ck-impr.is-on { color: #1d4ed8; } .am9-ck-impr.is-on i { background: #2563eb; box-shadow: 0 0 0 3px rgba(37,99,235,.15); }
.am9-ck-impr-toggle { border: 1px dashed #d0d5dd !important; color: #667085 !important; display: inline-flex; align-items: center; gap: 4px; }
.am9-ck-impr-toggle[aria-pressed="true"] { border-style: solid !important; border-color: #2563eb !important; color: #1d4ed8 !important; background: #eff6ff !important; }
.am9-scan-conf.is-editar .am9-scan-conf-topo { background: var(--am9-primary); }

/* Scanner — tela de confirmação do ingresso lido */
.am9-scan-conf { position: fixed; inset: 0; z-index: 2000; background: rgba(15,23,42,.55); display: flex; align-items: center; justify-content: center; padding: 16px; }
.am9-scan-conf[hidden] { display: none; }
.am9-scan-conf-caixa { width: 100%; max-width: 420px; background: #fff; border-radius: 22px; overflow: hidden; box-shadow: 0 24px 60px rgba(0,0,0,.3); }
.am9-scan-conf-topo { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 18px; font-size: 20px; font-weight: 800; color: #fff; background: #64748b; }
.am9-scan-conf-topo i { font-size: 26px; }
.am9-scan-conf.is-valido .am9-scan-conf-topo, .am9-scan-conf.is-feito .am9-scan-conf-topo { background: #16a34a; }
.am9-scan-conf.is-invalido .am9-scan-conf-topo { background: #dc2626; }
.am9-scan-conf.is-usado .am9-scan-conf-topo { background: #d97706; }
.am9-scan-conf-corpo { padding: 20px 20px 8px; text-align: center; }
.am9-scan-conf-nome { font-size: 24px; font-weight: 800; color: #101828; line-height: 1.2; overflow-wrap: anywhere; }
.am9-scan-conf-info { font-size: 14px; color: #475467; margin-top: 6px; }
.am9-scan-conf-acoes { display: flex; flex-direction: column; gap: 10px; padding: 16px 20px 20px; }
.am9-scan-conf-acoes:empty { padding: 8px; }
.am9-scan-conf-btn { border: 0; border-radius: 14px; padding: 16px; font-size: 18px; font-weight: 800; display: flex; align-items: center; justify-content: center; gap: 8px; }
.am9-scan-conf-btn.is-principal { background: #16a34a; color: #fff; }
.am9-scan-conf.is-invalido .am9-scan-conf-btn.is-principal, .am9-scan-conf.is-usado .am9-scan-conf-btn.is-principal { background: #101828; }
.am9-scan-conf-btn.is-sec { background: #f1f4f9; color: #344054; font-size: 15px; padding: 12px; }
.am9-scan-conf-btn:disabled { opacity: .7; }
/* Celular: a caixa fica embaixo, botão principal ao alcance do polegar */
@media (max-width: 767.98px) {
  .am9-scan-conf { align-items: flex-end; padding: 12px 12px calc(12px + env(safe-area-inset-bottom)); }
}

/* ── 14. BOTTOM NAVIGATION (mobile) ────────────────────────── */
.am9-bottom-nav {
  position: fixed;
  bottom: 0; left: 0; right: 0;
  height: var(--am9-bottom-h);
  background: #fff;
  border-top: 1px solid rgba(0,0,0,.08);
  box-shadow: 0 -4px 16px rgba(0,0,0,.07);
  z-index: 1030;
  display: flex;
  align-items: stretch;
}
.am9-bottom-nav-item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-decoration: none;
  font-size: 10px;
  font-weight: 500;
  color: #6c757d;
  gap: 3px;
  padding: 6px 4px;
  border-top: 2px solid transparent;
  transition: color var(--am9-transition), border-color var(--am9-transition);
  min-height: 44px;
  -webkit-tap-highlight-color: transparent;
}
.am9-bottom-nav-item i { font-size: 20px; line-height: 1; }
.am9-bottom-nav-item.active {
  color: var(--am9-primary);
  border-top-color: var(--am9-primary);
}
.am9-bottom-nav-item:hover { color: var(--am9-primary); }
.am9-bottom-nav-btn { background: transparent; border: 0; border-top: 2px solid transparent; font-family: inherit; }
/* Menu lateral do painel no celular: não ocupa a tela toda (toque fora fecha) e
   começa abaixo da barra de administrador do WordPress quando ela aparece */
@media (max-width: 991.98px) {
  .am9-side.offcanvas-lg { width: min(86vw, 340px) !important; }
  .admin-bar .am9-side.offcanvas-lg { top: 32px; height: calc(100% - 32px); }
}
@media (max-width: 782px) { .admin-bar .am9-side.offcanvas-lg { top: 46px; height: calc(100% - 46px); } }

/* Variante com CTA contextual (comprar / finalizar) em vez dos 5 ícones —
   ver footer.php ($GLOBALS['am9_bottom_nav_custom']). Mesma altura/fundo/
   sombra da barra padrão, só troca a distribuição interna. */
.am9-bottom-nav--custom {
  align-items: center;
  gap: 12px;
  padding: 0 16px;
}
.am9-bn-info {
  flex: 1;
  min-width: 0;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 1px;
}
.am9-bn-label {
  font-size: 11px;
  color: #6c757d;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.am9-bn-value {
  font-size: 15px;
  font-weight: 700;
  color: var(--am9-dark, #1a1a1a);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.am9-bottom-nav--custom .btn {
  flex-shrink: 0;
  padding: 10px 18px;
  font-size: 14px;
  font-weight: 600;
}

/* Body padding on mobile to prevent bottom nav overlap */
@media (max-width: 767px) {
  /* "html body" vence o "body { padding: 0 }" embutido que algumas páginas
     recebem — sem isso o rodapé fica escondido atrás da barra fixa. */
  html body { padding-bottom: var(--am9-bottom-h); }
}

/* ── 15. FOOTER ─────────────────────────────────────────────── */
.am9-footer-link {
  color: #6c757d;
  text-decoration: none;
  font-size: 13px;
  transition: color var(--am9-transition);
}
.am9-footer-link:hover { color: var(--am9-primary); }

/* ── 16. FORMS ──────────────────────────────────────────────── */
.am9-form-label { font-size: 13px; font-weight: 600; color: #495057; margin-bottom: 4px; }

/* Step indicator (multi-step form) */
.am9-steps { display: flex; gap: 8px; align-items: center; }
.am9-step-dot {
  width: 32px; height: 32px;
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 13px; font-weight: 700;
  background: #e9ecef; color: #6c757d;
  flex-shrink: 0;
  transition: background var(--am9-transition), color var(--am9-transition);
}
.am9-step-dot.active { background: var(--am9-primary); color: #fff; }
.am9-step-dot.done   { background: var(--am9-success); color: #fff; }
.am9-step-line { flex: 1; height: 2px; background: #e9ecef; }
.am9-step-line.done { background: var(--am9-success); }

/* ── 16b. CHECKOUT — CARDS DE PARTICIPANTE ─────────────────────
   Um card por lote/evento (cabeçalho com ícone + nome do evento),
   e dentro dele um bloco por participante com avatar numerado,
   inputs com ícone e feedback ao vivo (preenchido = borda/ícone
   verde) — pra ficar claro e rápido de preencher mesmo com vários
   ingressos de eventos diferentes na mesma compra. */
.am9-participante-card {
  border-radius: var(--am9-radius-lg);
  overflow: hidden;
  animation: am9ParticipanteIn .4s ease both;
}
@keyframes am9ParticipanteIn {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}

.am9-participante-lote-header {
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  padding: 14px 16px;
  background: linear-gradient(120deg, var(--am9-primary-light), rgba(56,189,248,.10));
  border-bottom: 1px solid #eef1f6;
}
.am9-participante-lote-icon {
  width: 38px; height: 38px; flex-shrink: 0;
  border-radius: 11px;
  background: linear-gradient(135deg, var(--am9-primary), var(--am9-highlight));
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 16px;
  box-shadow: 0 4px 10px rgba(37,99,235,.28);
}
.am9-participante-lote-titulo { font-weight: 700; font-size: 14px; color: var(--am9-dark); line-height: 1.3; }
.am9-participante-lote-evento { font-size: 12px; color: var(--am9-primary); font-weight: 600; }

.am9-participante-item { padding: 16px; border-top: 1px dashed #eef1f6; }
.am9-participante-item:first-of-type { border-top: none; }

.am9-participante-topo { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.am9-participante-rotulo { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: #495057; }
.am9-participante-avatar {
  width: 26px; height: 26px; flex-shrink: 0;
  border-radius: 50%;
  background: linear-gradient(135deg, var(--am9-primary), var(--am9-highlight));
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 800;
}

.am9-usar-meus-dados {
  display: inline-flex; align-items: center; gap: 5px;
  border: none; background: var(--am9-primary-light); color: var(--am9-primary);
  font-size: 12px; font-weight: 600;
  padding: 5px 12px; border-radius: 999px;
  transition: background var(--am9-transition), transform var(--am9-transition);
}
.am9-usar-meus-dados:hover { background: var(--am9-primary); color: #fff; transform: translateY(-1px); }
.am9-usar-meus-dados:active { transform: translateY(0) scale(.96); }

.am9-input-icon { position: relative; }
.am9-input-icon > i {
  position: absolute; left: 12px; top: 50%; transform: translateY(-50%);
  color: #adb5bd; font-size: 14px; pointer-events: none;
  transition: color var(--am9-transition);
}
.am9-input-icon .am9-input-check {
  position: absolute; right: 10px; top: 50%; transform: translateY(-50%) scale(.4);
  color: var(--am9-success); font-size: 14px; opacity: 0;
  transition: opacity .18s ease, transform .18s ease;
  pointer-events: none;
}
.am9-input-icon input {
  padding-left: 34px; padding-right: 28px;
  border-radius: var(--am9-radius-sm);
  border: 1.5px solid #e5e9f0;
  background: #fafbfc;
  transition: border-color var(--am9-transition), box-shadow var(--am9-transition), background var(--am9-transition);
}
.am9-input-icon input:focus {
  border-color: var(--am9-primary);
  box-shadow: 0 0 0 3px var(--am9-primary-light);
  background: #fff;
}
.am9-input-icon:focus-within > i { color: var(--am9-primary); }
.am9-input-icon.is-preenchido input { border-color: #b7e4c7; background: #fff; }
.am9-input-icon.is-preenchido .am9-input-check { opacity: 1; transform: translateY(-50%) scale(1); }

/* Campo "Nome na credencial" — botão pra copiar/ressincronizar com o
   Nome completo no lugar do check-circle padrão (mesma posição). */
.am9-input-icon--sync input { padding-right: 30px; }
.am9-input-icon--sync .am9-sync-credencial {
  position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
  border: none; background: transparent; color: #adb5bd; font-size: 15px;
  cursor: pointer; padding: 3px; line-height: 1; border-radius: 50%;
  transition: color var(--am9-transition), background var(--am9-transition);
}
.am9-input-icon--sync .am9-sync-credencial:hover { color: var(--am9-primary); background: var(--am9-primary-light); }
.am9-input-icon--sync .am9-sync-credencial:active { transform: translateY(-50%) rotate(180deg); }

/* ── Tabela de pedidos (dashboard organizador) — linhas clicáveis ── */
.am9-tabela-pedidos .am9-linha-clicavel { cursor: pointer; transition: background var(--am9-transition); }
.am9-tabela-pedidos .am9-linha-clicavel:hover { background: var(--am9-primary-light); }
/* Linha que é o 2º+ item do MESMO pedido (rowspan nas colunas do pedido) —
   sem borda superior, pra ficar visualmente "colada" na linha de cima em
   vez de parecer outro pedido igual. */
.am9-tabela-pedidos .am9-linha-mesmo-pedido td { border-top: none; }

/* ── 16c. CHECKOUT — FORMAS DE PAGAMENTO ───────────────────────
   Estilo "cards" clicáveis pra cada gateway (Pix, cartão...), no lugar
   da lista crua de rádio+label do WooCommerce — ativado só quando o
   wrapper tem a classe .am9-payment-cards (controlado pela opção
   am9tickets_checkout_payment_estilo, ver AM9 Tickets → Configurações
   → Checkout, e woocommerce/checkout/payment.php). Sem essa classe
   (estilo "Padrão"), fica só a aparência default do Bootstrap
   (.form-check), sem nada daqui.
   Markup: .am9-payment-method (.form-check) > input.form-check-input +
   label.form-check-label (título + ícone(s) do próprio gateway, ex.
   woocommerce-mercadopago) + .am9-payment-method-box (payment_fields()
   do gateway, ex. QR do Pix). */
.am9-payment-cards .am9-payment-method {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 12px;
  border: 1px solid #e2e8f0;
  border-radius: var(--am9-radius);
  padding: 14px 16px;
  margin-bottom: 12px;
  cursor: pointer;
  transition: border-color var(--am9-transition), box-shadow var(--am9-transition), background var(--am9-transition);
}
.am9-payment-cards .am9-payment-method:hover { border-color: var(--am9-highlight); }

/* Opção selecionada */
.am9-payment-cards .am9-payment-method:has(input.form-check-input:checked) {
  border-color: var(--am9-primary);
  background: var(--am9-primary-light, #eef2ff);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, .12);
}

.am9-payment-cards .am9-payment-method > input.form-check-input {
  width: 20px; height: 20px; margin: 0; flex: 0 0 auto;
}

.am9-payment-cards .am9-payment-method > label.form-check-label {
  display: flex; align-items: center; gap: 10px;
  flex: 1; margin: 0; font-weight: 600; cursor: pointer;
}

/* Ícone(s) do gateway — o WooCommerce pode devolver mais de uma <img>
   (ex.: bandeiras de cartão); a ordem -1 joga todas pro início do label,
   antes do título. */
.am9-payment-cards .am9-payment-method > label.form-check-label img {
  width: 40px; height: 40px; object-fit: contain; order: -1;
}

/* payment_fields() do gateway (ex.: QR do Pix) — ocupa a linha inteira,
   abaixo do título/ícone. */
.am9-payment-cards .am9-payment-method > .am9-payment-method-box {
  flex: 1 0 100%;
  margin-top: 10px;
}

/* ── 17. CHECK-IN ───────────────────────────────────────────── */
.am9-scan-wrap {
  position: relative;
  max-width: 340px;
  margin: 0 auto;
  border-radius: var(--am9-radius);
  overflow: hidden;
  background: #000;
}
.am9-scan-wrap video { width: 100%; display: block; border-radius: var(--am9-radius); }
.am9-scan-overlay {
  position: absolute; inset: 0;
  pointer-events: none;
  display: none;
}
.am9-scan-success { border: 2px solid #198754 !important; }
.am9-scan-error   { border: 2px solid #dc3545 !important; }

/* Check-in result card */
.am9-checkin-result {
  border-radius: var(--am9-radius);
  padding: 28px;
  text-align: center;
  transition: border-color .2s;
}

/* ── 18. ANIMATIONS ─────────────────────────────────────────── */
/* @keyframes am9FadeIn definido acima (bloco do hero slider) */
.am9-fade-in { animation: am9FadeIn .28s ease both; }

@keyframes am9Pulse {
  0%, 100% { transform: scale(1); }
  50%       { transform: scale(1.04); }
}
.am9-pulse-cta { animation: am9Pulse 2.2s ease-in-out infinite; }

@keyframes am9Shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
.am9-skeleton {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 200% 100%;
  animation: am9Shimmer 1.4s infinite;
  border-radius: 4px;
}

/* ── 19. PWA INSTALL PROMPT ────────────────────────────────── */
#am9-pwa-install { display: none; }

/* ── 20. RESPONSIVE ADJUSTMENTS ────────────────────────────── */
@media (max-width: 767px) {
  .am9-hero { min-height: 360px; }
  .am9-card-img-wrap,
  .am9-evento-banner-wrap { height: 150px; }
  .am9-evento-hero { max-height: 280px; }
  .am9-evento-hero img { max-height: 280px; }

  /* Quando o hero exibe o cartaz no mobile, respeita a proporção 3:4
     em vez do corte "paisagem" usado para o banner. */
  .am9-evento-hero.am9-evento-hero-tem-cartaz {
    max-height: none;
    aspect-ratio: 3/4;
  }
  .am9-evento-hero.am9-evento-hero-tem-cartaz img {
    max-height: none;
    height: 100%;
  }
  .am9-section { padding: 40px 0; }
  .am9-dashboard-content { padding: 16px 12px 80px; }
  .am9-search-hero { padding: 24px 0 20px; }
  .am9-cta-band { padding: 48px 0; }
}

@media (max-width: 575px) {
  .am9-section-title { font-size: 1.3rem; }
  .am9-evento-inforow .am9-info-item { font-size: 13px; }
  .am9-lote-item { flex-direction: column; align-items: flex-start; gap: 8px; }
}

/* ── 21. UTILITY HELPERS ────────────────────────────────────── */
.am9-ellipsis {
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.am9-clamp-2 {
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.am9-clamp-3 {
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.am9-ratio-16-9 { aspect-ratio: 16/9; overflow: hidden; }
.am9-ratio-4-3  { aspect-ratio: 4/3;  overflow: hidden; }
.am9-ratio-4-3 img,
.am9-ratio-16-9 img { width: 100%; height: 100%; object-fit: cover; }

/* Touch targets */
.am9-touch { min-height: 44px; min-width: 44px; display: flex; align-items: center; }

/* Content visibility for off-screen sections */
.am9-lazy-section { content-visibility: auto; contain-intrinsic-size: 0 400px; }

/* Swiper bullet color */
.swiper-pagination-bullet-active { background: var(--am9-primary) !important; }

/* ── 22. POSTER GRID CARD (listagem de eventos) ─────────────────
   Card estático (sem swiper) no formato pôster 3:4, reaproveitando
   a linguagem visual do .am9-movie-card do hero da home. */
.am9-poster-grid-card {
  display: block;
  background: #fff;
  border-radius: var(--am9-radius-lg);
  overflow: hidden;
  box-shadow: var(--am9-shadow);
  transition: transform var(--am9-transition), box-shadow var(--am9-transition);
  text-decoration: none;
  height: 100%;
}
.am9-poster-grid-card:hover {
  transform: translateY(-6px);
  box-shadow: var(--am9-shadow-lg);
}
.am9-poster-grid-img { position: relative; aspect-ratio: 3/4; overflow: hidden; background: #e9ecef; }
.am9-poster-grid-img img {
  width: 100%; height: 100%; object-fit: cover; display: block;
  transition: transform .4s ease;
}
.am9-poster-grid-card:hover .am9-poster-grid-img img { transform: scale(1.05); }
.am9-poster-grid-placeholder {
  width: 100%; height: 100%;
  display: flex; align-items: center; justify-content: center;
  background: linear-gradient(135deg, #e9ecef 0%, #dee2e6 100%);
  color: #adb5bd; font-size: 2.5rem;
}
.am9-poster-grid-badge {
  position: absolute; top: 10px; left: 10px;
  background: var(--am9-primary); color: #fff;
  font-size: 10px; font-weight: 700;
  padding: 3px 10px; border-radius: 20px;
  text-transform: uppercase; letter-spacing: .04em;
}
.am9-poster-grid-card--passado { cursor: not-allowed; }
.am9-poster-grid-card--passado:hover { transform: none; box-shadow: var(--am9-shadow); }
.am9-poster-grid-card--passado:hover .am9-poster-grid-img img { transform: none; }
.am9-poster-grid-card--passado .am9-poster-grid-img img { filter: grayscale(100%); }

/* Faixa diagonal — texto/cor compartilhados, posição varia por variante.
   .am9-poster-grid-img já tem overflow:hidden, então a faixa girada
   sempre fica recortada certinho nas bordas do card. */
.am9-poster-grid-ribbon {
  position: absolute; text-align: center;
  color: #fff; font-weight: 700; text-transform: uppercase; letter-spacing: .03em;
  box-shadow: 0 2px 8px rgba(0,0,0,.3);
  z-index: 2;
}
/* "Evento já realizado" — faixa grande, cruzando o meio do cartaz. */
.am9-poster-grid-ribbon--passado {
  top: 50%; left: 50%; width: 145%;
  background: #0059fe;
  font-size: 13px; padding: 9px 0;
  transform: translate(-50%, -50%) rotate(-18deg);
}
/* "Últimos ingressos" — faixa pequena, no canto (cor de urgência,
   diferente do vermelho de "já realizado") — estoque baixo, ver
   am9tickets_evento_ultimos_ingressos(). */
.am9-poster-grid-ribbon--ultimos {
  top: 18px; left: -38px; width: 150px;
  background: var(--am9-secondary);
  font-size: 10px; padding: 4px 0;
  transform: rotate(-45deg);
}
.am9-poster-grid-info { padding: 12px 14px 14px; }
.am9-poster-grid-title { font-size: 14px; font-weight: 800; color: #1a1a2e; margin: 0 0 6px; line-height: 1.3; }
.am9-poster-grid-meta { font-size: 11px; color: #888; display: flex; align-items: center; gap: 4px; margin-bottom: 2px; }
.am9-poster-grid-meta i { font-size: 10px; flex-shrink: 0; }
.am9-poster-grid-footer { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; }
.am9-poster-grid-preco { font-size: 13px; font-weight: 800; color: var(--am9-success); }
.am9-poster-grid-preco.gratis { color: #6c757d; }
.am9-poster-grid-btn {
  display: inline-flex; align-items: center;
  background: var(--am9-primary-light); color: var(--am9-primary);
  font-size: 11px; font-weight: 700;
  padding: 5px 12px; border-radius: 20px;
  text-transform: uppercase; letter-spacing: .03em;
}

/* ── 23. LOTE CARD (seleção de ingresso na página do evento) ─── */
.am9-lote-card {
  display: flex; align-items: center; justify-content: space-between;
  gap: 12px; flex-wrap: wrap;
  padding: 16px;
  border: 1px solid #eee;
  border-radius: var(--am9-radius);
  margin: 0 16px 12px;
  transition: border-color var(--am9-transition), box-shadow var(--am9-transition);
}
.am9-lote-card:last-child { margin-bottom: 16px; }
.am9-lote-card:hover { border-color: var(--am9-primary); box-shadow: var(--am9-shadow-sm); }
.am9-lote-card .am9-lote-nome { font-weight: 700; font-size: 14px; }
.am9-lote-card .am9-lote-tipo {
  font-size: 10px; color: var(--am9-primary); text-transform: uppercase;
  letter-spacing: .04em; font-weight: 700;
}
.am9-lote-card .am9-lote-preco { font-weight: 800; font-size: 16px; color: var(--am9-success); }
.am9-lote-card .am9-lote-preco.gratis { color: #6c757d; }
.am9-lote-card .btn { border-radius: 20px; }
.am9-lote-card { flex-wrap: nowrap; align-items: center; }
.am9-lote-card .am9-lote-info { min-width: 0; flex: 1; }
.am9-lote-card .am9-lote-acao { flex-shrink: 0; }
.am9-lote-card.is-indisponivel { background: #fafbfc; }
.am9-lote-card.is-indisponivel .am9-lote-preco { color: #98a2b3; }
.am9-lote-card.is-selecionado { border-color: var(--am9-primary); background: #f7f9ff; }
.am9-lote-card .am9-lote-preco { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 6px; margin-top: 2px; }
.am9-lote-taxa { font-size: 12px; font-weight: 500; color: #6b7280; }
.am9-lote-parcela { font-size: 12px; color: #15803d; font-weight: 600; }
.am9-lote-ate { font-size: 11px; color: #6b7280; margin-top: 2px; }
.am9-lote-fechado { font-size: 12px; color: #98a2b3; font-weight: 600; }

/* Seletor de quantidade do lote */
.am9-qty { display: inline-flex; align-items: center; gap: 4px; border: 1px solid #e2e8f0; border-radius: 999px; padding: 3px; background: #fff; }
.am9-qty output { min-width: 26px; text-align: center; font-weight: 800; font-size: 15px; font-variant-numeric: tabular-nums; }
.am9-qty-btn {
  width: 34px; height: 34px; border-radius: 50%; border: 0;
  background: var(--am9-primary); color: #fff; font-size: 18px; font-weight: 700; line-height: 1;
  display: inline-flex; align-items: center; justify-content: center; transition: opacity .15s;
}
.am9-qty-btn[data-acao="-1"] { background: #eef2ff; color: var(--am9-primary); }
.am9-qty-btn:disabled { opacity: .35; cursor: not-allowed; }

/* Resumo da seleção + botão único de compra */
.am9-compra-resumo { position: sticky; bottom: 0; background: #fff; border-top: 1px solid #eef0f4; padding: 14px 16px 16px; border-radius: 0 0 var(--am9-radius-lg, 16px) var(--am9-radius-lg, 16px); }
.am9-compra-total { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 2px 8px; margin-bottom: 10px; font-size: 13px; color: #6b7280; }
.am9-compra-total strong { font-size: 18px; color: #101828; }
.am9-compra-total small { flex-basis: 100%; text-align: right; font-size: 11px; }

/* Políticas do evento */
.am9-politica { display: flex; gap: 10px; padding: 8px 0; border-top: 1px solid #f1f3f6; font-size: 13px; }
.am9-politica:first-of-type { border-top: 0; }
.am9-politica > i { color: var(--am9-primary); font-size: 16px; margin-top: 1px; }
.am9-politica p { margin: 2px 0 0; color: #4b5563; line-height: 1.5; }

/* ── 24. CART ITEM (carrinho) ──────────────────────────────────── */
/* Item em grid: [ícone | nome (ocupa o espaço) | lixeira] e, abaixo do
   nome, [quantidade ··· subtotal]. No desktop o rodapé sobe pra mesma
   linha. O nome nunca disputa espaço com stepper/preço. */
.am9-cart-item {
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  grid-template-areas: "img body remove" "img footer footer";
  column-gap: 14px; row-gap: 12px;
  padding: 14px 16px; border-radius: var(--am9-radius);
  background: #fff; box-shadow: var(--am9-shadow-sm);
  margin-bottom: 12px;
}
.am9-cart-item:last-child { margin-bottom: 0; }
.am9-cart-item-img {
  grid-area: img; width: 48px; height: 48px; border-radius: var(--am9-radius-sm);
  display: flex; align-items: center; justify-content: center;
  background: #eef2ff; color: var(--am9-primary); font-size: 20px;
}
.am9-cart-item-body { grid-area: body; min-width: 0; }
.am9-cart-item-evento { font-size: 12px; color: #6b7280; line-height: 1.3; margin-bottom: 2px; overflow-wrap: anywhere; }
.am9-cart-item-title { font-weight: 700; font-size: 15px; line-height: 1.3; overflow-wrap: anywhere; }
.am9-cart-item-title a { color: inherit; text-decoration: none; }
.am9-cart-item-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-top: 6px; font-size: 12px; color: #6b7280; }
.am9-cart-item-lote { background: #f3f0ff; color: var(--am9-primary); font-weight: 600; border-radius: 999px; padding: 2px 10px; }
.am9-cart-item-sub { font-size: 12px; color: #888; margin-top: 4px; }
.am9-cart-item-footer {
  grid-area: footer; display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding-top: 12px; border-top: 1px dashed #e5e7eb;
}
.am9-cart-item-price { font-weight: 800; font-size: 16px; white-space: nowrap; }
.am9-cart-item-remove {
  grid-area: remove; align-self: start;
  width: 32px; height: 32px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  border: none; background: #f8f9fa; color: #dc3545;
  transition: background var(--am9-transition);
}
.am9-cart-item-remove:hover { background: #f8d7da; }
@media (min-width: 768px) {
  .am9-cart-item { grid-template-columns: 56px minmax(0, 1fr) auto auto; grid-template-areas: "img body footer remove"; align-items: center; }
  .am9-cart-item-img { width: 56px; height: 56px; }
  .am9-cart-item-footer { padding-top: 0; border-top: 0; gap: 24px; }
  .am9-cart-item-price { min-width: 100px; text-align: right; }
  .am9-cart-item-remove { align-self: center; }
}

/* Barra fixa com total + finalizar no celular, logo acima da navegação inferior */
.am9-cart-barra {
  position: fixed; left: 0; right: 0; bottom: var(--am9-bottom-h, 0px); z-index: 1029;
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 10px 16px; background: #fff;
  border-top: 1px solid rgba(0,0,0,.08); box-shadow: 0 -4px 16px rgba(0,0,0,.06);
}
.am9-cart-barra small { display: block; font-size: 11px; color: #6b7280; text-transform: uppercase; }
.am9-cart-barra strong { font-size: 18px; }
.am9-cart-barra .btn { white-space: nowrap; }
@media (max-width: 359.98px) { .am9-cart-barra .btn { padding-left: 14px !important; padding-right: 14px !important; font-size: 14px; } .am9-cart-barra strong { font-size: 16px; } }
@media (max-width: 991.98px) { .am9-carrinho-wrap { padding-bottom: 76px; } }
@media (min-width: 768px) and (max-width: 991.98px) { .am9-cart-barra { bottom: 0; } }

.am9-cart-item-qty { display: flex; align-items: center; gap: 10px; flex-shrink: 0; }
.am9-cart-item-qty button {
  width: 32px; height: 32px; border-radius: 50%; flex-shrink: 0;
  border: 1px solid #e2ddf5; background: #fff; color: var(--am9-primary);
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; line-height: 1; transition: background var(--am9-transition);
}
.am9-cart-item-qty button:hover:not(:disabled) { background: #f3f0ff; }
.am9-cart-item-qty button:disabled { opacity: .35; cursor: not-allowed; }
.am9-cart-item-qty span { min-width: 18px; text-align: center; font-weight: 700; font-size: 14px; }

.am9-cart-item-numeros { margin-top: 12px; padding-top: 12px; border-top: 1px dashed #eee; }
.am9-cart-item-numeros .am9-numero-btn { margin: 0 6px 6px 0; }

/* ── 25. TICKET VIEW (página "Baixar Ingresso") ───────────────────
   Ticket único e animado: papel com ruído sutil, brilho que varre
   o card, QR em destaque, faixa de status e canhoto que se rasga
   de verdade (clip-path serrilhado) e balança quando "usado". */
.am9-tv-page {
  background:
    radial-gradient(1200px 600px at 20% -10%, var(--am9-primary) 0%, transparent 60%),
    radial-gradient(900px 500px at 90% 110%, var(--am9-highlight) 0%, transparent 55%),
    linear-gradient(160deg, var(--am9-accent) 0%, var(--am9-dark) 100%);
  background-attachment: fixed;
  min-height: 100vh;
  overflow-x: hidden;
  position: relative;
}

.am9-tv-glow {
  position: fixed;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(56,189,248,.35), transparent 70%);
  pointer-events: none;
  animation: am9tvDrift 14s ease-in-out infinite alternate;
  z-index: 0;
}
.am9-tv-glow.d1 { width: 220px; height: 220px; top: 8%;  left: 6%;  animation-delay: 0s; }
.am9-tv-glow.d2 { width: 160px; height: 160px; top: 65%; left: 82%; animation-delay: -4s; }
.am9-tv-glow.d3 { width: 120px; height: 120px; top: 78%; left: 12%; animation-delay: -8s; }
@keyframes am9tvDrift {
  from { transform: translate(0, 0) scale(1); }
  to   { transform: translate(30px, -40px) scale(1.15); }
}

.am9-tv-stage { position: relative; z-index: 1; }

/* Escala fluida via container query — o ticket foi desenhado numa
   base de ~360px de largura e todas as medidas usam cqw (1cqw = 1%
   da largura do wrapper), então ele escala como uma imagem em
   qualquer tamanho de tela, sem precisar de breakpoints manuais. */
.am9-tv-col { container-type: inline-size; }

.am9-tv {
  width: 100%;
  max-width: 360px;
  margin-inline: auto;
  position: relative;
  opacity: 0;
  transform: translateY(40px) scale(.96);
  animation: am9tvEnter .9s cubic-bezier(.22,1,.36,1) forwards;
  transition: transform .4s ease;
}
@keyframes am9tvEnter { to { opacity: 1; transform: translateY(0) scale(1); } }

.am9-tv-float { animation: am9tvFloaty 5.5s ease-in-out infinite; }
@keyframes am9tvFloaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-2.5cqw); } }
.am9-tv:hover .am9-tv-float { animation-play-state: paused; }
.am9-tv:hover { transform: translateY(-6px); }

.am9-tv.is-cancelado { opacity: .8; }

.am9-tv-half {
  background: var(--am9-paper-noise), linear-gradient(180deg, #FBF8F2 0%, #f2efe6 100%);
  position: relative;
}

.am9-tv-top {
  border-radius: 7.2cqw 7.2cqw 0 0;
  padding: 6cqw 6cqw 0;
  text-align: center;
  box-shadow: 0 8cqw 16cqw -5cqw rgba(0,0,0,.55);
}

.am9-tv-banner {
  height: 36cqw;
  margin: -6cqw -6cqw 5cqw;
  border-radius: 7.2cqw 7.2cqw 0 0;
  background-size: cover;
  background-position: center;
}

.am9-tv-shine { position: absolute; inset: 0; border-radius: inherit; overflow: hidden; pointer-events: none; }
.am9-tv-shine::after {
  content: '';
  position: absolute; top: -60%; left: -80%;
  width: 55%; height: 220%;
  transform: rotate(20deg);
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0) 30%, rgba(255,255,255,.5) 50%, rgba(255,255,255,0) 70%, transparent 100%);
  animation: am9tvSweep 6s ease-in-out infinite;
  animation-delay: 1.2s;
}
@keyframes am9tvSweep { 0%, 55% { left: -80%; } 75%, 100% { left: 160%; } }

.am9-tv-event { font-weight: 900; font-size: 7.5cqw; color: #1a1a2e; line-height: 1.1; margin-bottom: .3cqw; }
.am9-tv-buyer { font-weight: 700; font-size: 5.4cqw; color: #8a8a99; margin-bottom: 4cqw; }

.am9-tv-qr {
  background: #f1f2f4;
  padding: 4cqw;
  display: inline-block;
  margin-bottom: 4cqw;
  border-radius: 3cqw;
  box-shadow: inset 0 2px 6px rgba(0,0,0,.08), 0 1px 0 rgba(255,255,255,.9);
  transition: transform .35s ease, box-shadow .35s ease;
  position: relative;
}
.am9-tv:hover .am9-tv-qr {
  transform: scale(1.03);
  box-shadow: inset 0 2px 6px rgba(0,0,0,.08), 0 6cqw 14cqw -6cqw rgba(37,99,235,.35);
}
.am9-tv-qr img, .am9-tv-qr canvas { width: 52cqw; height: 52cqw; max-width: 100%; display: block; }

/* Só aparece na imagem/PDF exportados (ver .am9-tv-capturing) — na tela
   normal fica escondida, é só um registro de quando o arquivo foi gerado. */
.am9-tv-download-stamp {
  display: none;
  font-size: 2.6cqw;
  letter-spacing: .04em;
  color: #9a9aa8;
  margin: -2.5cqw 0 4cqw;
}
.am9-tv.am9-tv-capturing .am9-tv-download-stamp { display: block; }

.am9-tv-status {
  letter-spacing: .45em; text-indent: .45em;
  font-weight: 800; font-size: 3.9cqw; color: #fff;
  padding: 2.4cqw 0; margin: 4cqw -6cqw 0;
  position: relative; overflow: hidden;
  text-shadow: 0 1px 2px rgba(0,0,0,.35);
}
.am9-tv-status--valido {
  background: linear-gradient(180deg, #2fa06a 0%, var(--am9-success) 60%, #145c3b 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.25), inset 0 -2px 4px rgba(0,0,0,.2);
  animation: am9tvPulse 2.6s ease-in-out infinite;
}
@keyframes am9tvPulse { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.12); } }
.am9-tv-status--usado {
  background: linear-gradient(180deg, #9b3830 0%, #7a2e2e 60%, #501d1d 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), inset 0 -2px 4px rgba(0,0,0,.3);
}
.am9-tv-status--cancelado {
  background: linear-gradient(180deg, #d5493a 0%, #c0392b 60%, #832a20 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18), inset 0 -2px 4px rgba(0,0,0,.3);
}

.am9-tv-code {
  color: #b0b0bd;
  font-family: monospace;
  font-weight: 700; font-size: 6cqw; letter-spacing: 2px;
  padding: 2.8cqw 0 4cqw;
}

.am9-tv-bottom {
  border-radius: 0 0 7.2cqw 7.2cqw;
  padding: 5cqw 6cqw 0;
  overflow: hidden;
  box-shadow: 0 9cqw 16cqw -4cqw rgba(0,0,0,.6);
}

/* Perfuração com furos de verdade — máscara única (SVG com o recorte
   já pronto via fill-rule:evenodd), sem depender de mask-composite
   pra combinar camadas. Como é um recorte real (não mais um círculo
   pintado na cor do fundo), mostra o que estiver atrás do ticket de
   verdade — não depende de bater com a cor da página. */
.am9-tv-perforation {
  background: var(--am9-paper-noise), linear-gradient(180deg, #f2efe6 0%, #FBF8F2 100%);
  height: 9cqw; position: relative;
  -webkit-mask-image: var(--am9-perf-mask-h);
  -webkit-mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-image: var(--am9-perf-mask-h);
  mask-size: 100% 100%;
  mask-repeat: no-repeat;
}

.am9-tv-date { color: #1a1a2e; font-weight: 800; font-size: 6cqw; text-align: center; margin: 1.5cqw 0 4.5cqw; }

.am9-tv-label { color: #8a8a99; font-size: 3.5cqw; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; margin-bottom: 0; }
.am9-tv-value { color: #1a1a2e; font-weight: 800; font-size: 4.4cqw; }

.am9-tv-participant { margin-bottom: 4cqw; }
.am9-tv-meta { margin-bottom: 1.5cqw; }
.am9-tv-checkin { color: var(--am9-success); font-size: 3.5cqw; font-weight: 700; margin: 2cqw 0 0; }

.am9-tv-footer {
  margin: 4.5cqw -6cqw 0;
  padding: 3.4cqw 0;
  text-align: center; color: #fff; font-weight: 700;
  letter-spacing: .45em; text-indent: .45em; font-size: 4.2cqw;
  text-shadow: 0 1px 2px rgba(0,0,0,.3);
  border-radius: 0 0 7.2cqw 7.2cqw;
}
.am9-tv-footer--valido {
  background: linear-gradient(180deg, #4c82ff 0%, var(--am9-primary) 55%, #1f4fd0 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.3);
}
.am9-tv-footer--usado {
  background: linear-gradient(180deg, #9b3830 0%, #7a2e2e 55%, #501d1d 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
}
.am9-tv-footer--cancelado {
  background: linear-gradient(180deg, #d5493a 0%, #c0392b 55%, #832a20 100%);
  box-shadow: inset 0 1px 0 rgba(255,255,255,.18);
}

/* ── Estado "usado": canhoto se solta, rasga e balança ──────────── */
.am9-tv.is-usado .am9-tv-top { border-radius: 7.2cqw 7.2cqw 2.4cqw 2.4cqw; }
.am9-tv.is-usado .am9-tv-perforation { background: transparent; }

.am9-tv-stub {
  background: var(--am9-paper-noise), linear-gradient(180deg, #FBF8F2 0%, #efece2 100%);
  border-radius: 4.5cqw 4.5cqw 7.2cqw 7.2cqw;
  padding: 5cqw 6cqw 0;
  overflow: hidden;
  transform-origin: top left;
  animation: am9tvDangle 4.5s ease-in-out infinite;
  filter: drop-shadow(0 8cqw 8cqw rgba(0,0,0,.5));
  --tear: 3cqw;
  clip-path: polygon(
    0 var(--tear), 4% 0, 8% var(--tear), 12% 0, 16% var(--tear), 20% 0,
    24% var(--tear), 28% 0, 32% var(--tear), 36% 0, 40% var(--tear), 44% 0,
    48% var(--tear), 52% 0, 56% var(--tear), 60% 0, 64% var(--tear), 68% 0,
    72% var(--tear), 76% 0, 80% var(--tear), 84% 0, 88% var(--tear), 92% 0,
    96% var(--tear), 100% 0, 100% 100%, 0 100%
  );
}
@keyframes am9tvDangle {
  0%, 100% { transform: rotate(5deg)   translate(3.5cqw, 2.5cqw); }
  50%      { transform: rotate(7.5deg) translate(4cqw, 3cqw); }
}

/* O carimbo agora fica dentro do .am9-tv-qr (não mais solto no topo do
   card) — assim ele estampa exatamente por cima do QR, que é o que
   faz sentido visualmente (".am9-tv-qr" já tem position:relative). */
.am9-tv-stamp {
  position: absolute; top: 40%; left: 50%;
  color: #7a2e2e; border: 1.4cqw solid #7a2e2e;
  border-radius: 3cqw; padding: 1cqw 4cqw;
  font-weight: 900; font-size: 8cqw;
  letter-spacing: .2em; text-indent: .2em; text-transform: uppercase;
  opacity: 0;
  transform: translate(-50%, -50%) rotate(-14deg) scale(2.4);
  animation: am9tvStampIn .5s cubic-bezier(.2,1.6,.4,1) forwards;
  animation-delay: 1.1s;
  mix-blend-mode: multiply;
  pointer-events: none;
}
@keyframes am9tvStampIn { to { opacity: .85; transform: translate(-50%, -50%) rotate(-14deg) scale(1); } }

/* Congela toda animação enquanto o html2canvas captura a imagem/PDF,
   pra não exportar um frame no meio do balanço/flutuação — e desliga
   os efeitos que essa biblioteca renderiza mal (textura via filtro
   SVG, clip-path junto com filter, mix-blend-mode), que podem travar
   a captura e "engolir" outros elementos junto. */
.am9-tv.am9-tv-capturing,
.am9-tv.am9-tv-capturing * { animation: none !important; transition: none !important; }
.am9-tv.am9-tv-capturing { opacity: 1 !important; transform: none !important; --am9-paper-noise: none; }
.am9-tv.am9-tv-capturing .am9-tv-stub {
  transform: rotate(6deg) translate(3.5cqw, 2.5cqw) !important;
  clip-path: none !important;
  filter: none !important;
  box-shadow: 0 14px 34px rgba(0,0,0,.45);
}
.am9-tv.am9-tv-capturing .am9-tv-stamp {
  opacity: .85 !important;
  transform: translate(-50%, -50%) rotate(-14deg) scale(1) !important;
  mix-blend-mode: normal !important;
}

@media (prefers-reduced-motion: reduce) {
  .am9-tv, .am9-tv-float, .am9-tv-stub, .am9-tv-shine::after,
  .am9-tv-status--valido, .am9-tv-glow, .am9-tv-stamp {
    animation: none !important;
  }
  .am9-tv { opacity: 1; transform: none; }
  .am9-tv-stub { transform: rotate(6deg) translate(3.5cqw, 2.5cqw); }
  .am9-tv-stamp { opacity: .85; transform: translate(-50%, -50%) rotate(-14deg) scale(1); }
}

/* ── 25b. TICKET HORIZONTAL (grid "Meus Ingressos") ───────────────
   Escala fluida via container queries: o ticket foi desenhado numa
   base de 680px de largura e todas as medidas usam cqw (1cqw = 1% da
   largura da COLUNA, não da viewport) — então o ticket inteiro
   escala como uma imagem, com as mesmas proporções em col-6, col-12
   ou mobile, sem precisar de breakpoints manuais.
   Canhoto/cartaz à esquerda, perfuração real no meio (furos de
   verdade via mask-image, não mais um truque de cor), corpo com os
   dados e faixa de status à direita — cada peça com o próprio papel
   texturizado; a sombra do conjunto vem de um único filter:drop-
   shadow no wrapper externo. Ingresso usado: o canhoto se solta de
   verdade (clip-path serrilhado nas duas bordas do rasgo) e balança. */
.am9-ticket-h-col { container-type: inline-size; }

.am9-ticket-h {
  display: flex;
  align-items: stretch;
  width: 100%;
  position: relative;
  border-radius: 3.5cqw;
  filter: drop-shadow(0 3.5cqw 4.5cqw rgba(0,0,0,.55));
  transition: transform .4s ease;
}
.am9-ticket-h:hover { transform: translateY(-5px); }
.am9-ticket-h.is-cancelado { opacity: .8; }

.am9-ticket-h-float {
  display: flex; align-items: stretch; width: 100%;
  animation: am9hFloaty 6s ease-in-out infinite;
}
@keyframes am9hFloaty { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-1.2cqw); } }
.am9-ticket-h:hover .am9-ticket-h-float { animation-play-state: paused; }

.am9-ticket-h-stub {
  background: var(--am9-paper-noise), linear-gradient(160deg, #FBF8F2 0%, #f2efe6 100%);
  border-radius: 3.5cqw 0 0 3.5cqw;
  padding: 3.2cqw;
  display: flex; align-items: center; justify-content: center;
  flex: 0 0 auto;
  transition: border-radius var(--am9-transition);
}

.am9-ticket-h-poster {
  width: 26.5cqw;
  aspect-ratio: 3 / 4;
  border-radius: 2.4cqw;
  background: #e9ecef;
  background-size: cover;
  background-position: center;
  overflow: hidden;
  position: relative;
  transition: filter var(--am9-transition);
}
.am9-ticket-h-poster::after {
  content: '';
  position: absolute; top: -60%; left: -80%;
  width: 55%; height: 220%;
  transform: rotate(20deg);
  background: linear-gradient(90deg, transparent 0%, rgba(255,255,255,0) 30%, rgba(255,255,255,.45) 50%, rgba(255,255,255,0) 70%, transparent 100%);
  animation: am9hSweep 6.5s ease-in-out infinite;
  animation-delay: 1.4s;
}
@keyframes am9hSweep { 0%, 55% { left: -80%; } 78%, 100% { left: 170%; } }

/* Perfuração com furos de verdade — máscara única (mesmo SVG em
   fill-rule:evenodd usado na página "Baixar Ingresso", só que
   girado pra orientação vertical). Sem mask-composite: esse valor
   tem suporte irregular entre navegadores e, quando não reconhecido,
   os furos somem por completo — por isso trocamos por um recorte
   já pronto num SVG só, que não precisa combinar camadas. */
.am9-ticket-h-perf {
  background: var(--am9-paper-noise), linear-gradient(160deg, #FBF8F2 0%, #f2efe6 100%);
  width: 5.9cqw;
  flex: 0 0 auto;
  position: relative;
  -webkit-mask-image: var(--am9-perf-mask-v);
  -webkit-mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-image: var(--am9-perf-mask-v);
  mask-size: 100% 100%;
  mask-repeat: no-repeat;
}

.am9-ticket-h-body {
  background: var(--am9-paper-noise), linear-gradient(160deg, #FBF8F2 0%, #f4f1e8 100%);
  flex: 1 1 auto; min-width: 0;
  padding: 3cqw 4.1cqw;
  display: flex;
  flex-direction: column;
  justify-content: center;
  text-align: center;
  transition: border-radius var(--am9-transition);
}
.am9-ticket-h-event {
  font-weight: 800; font-size: 3.5cqw; line-height: 1.2; color: #1a1a2e; margin-bottom: .2cqw;
  overflow: hidden; text-overflow: ellipsis; display: -webkit-box;
  -webkit-line-clamp: 1; -webkit-box-orient: vertical;
}
.am9-ticket-h-buyer { font-size: 2.6cqw; font-weight: 700; color: #8a8a99; margin-bottom: .5cqw; }

/* Código e data numa linha só, em vez de empilhados — poupa altura
   e deixa o cartaz (proporção 3:4) ditar a altura do card inteiro. */
.am9-ticket-h-codeline {
  display: flex; align-items: baseline; justify-content: center; gap: 1.2cqw;
  margin-bottom: 1.2cqw;
}
.am9-ticket-h-code {
  font-family: monospace; font-size: 2.7cqw; letter-spacing: 1.5px;
  color: #b0b0bd; margin: 0;
}
.am9-ticket-h-date { font-size: 2.8cqw; font-weight: 800; color: #1a1a2e; margin: 0; }
.am9-ticket-h-sep { color: #d8d5cc; font-size: 2cqw; }

.am9-ticket-h-participant {
  display: flex; align-items: baseline; gap: .7cqw;
  margin-bottom: 1.2cqw; text-align: left;
}
.am9-ticket-h-label { font-size: 1.85cqw; color: #9c9ca8; text-transform: uppercase; letter-spacing: .03em; margin-bottom: 0; }
.am9-ticket-h-value { font-size: 2.35cqw; font-weight: 700; color: #1a1a2e; margin-bottom: 0; }

.am9-ticket-h-meta { text-align: left; margin-top: .6cqw; }
.am9-ticket-h-meta .am9-ticket-h-value { display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

.am9-ticket-h-checkin { margin-top: 1.5cqw; font-size: 1.85cqw; color: var(--am9-success); text-align: left; }

.am9-ticket-h-status {
  flex: 0 0 8.2cqw;
  display: flex; align-items: center; justify-content: center;
  color: #fff;
  writing-mode: vertical-rl; text-orientation: upright;
  font-size: 1.9cqw; font-weight: 800; letter-spacing: .45em;
  text-transform: uppercase; text-align: center;
  border-radius: 0 3.5cqw 3.5cqw 0;
  text-shadow: 0 1px 2px rgba(0,0,0,.3);
  background: linear-gradient(90deg, #145c3b 0%, var(--am9-success) 45%, #2fa06a 100%);
  box-shadow: inset 2px 0 4px rgba(0,0,0,.2), inset -1px 0 0 rgba(255,255,255,.2);
  animation: am9hPulse 2.6s ease-in-out infinite;
  position: relative; overflow: hidden;
}
@keyframes am9hPulse { 0%, 100% { filter: brightness(1); } 50% { filter: brightness(1.12); } }
.am9-ticket-h-status--usado {
  background: linear-gradient(90deg, #501d1d 0%, #7a2e2e 45%, #9b3830 100%);
  box-shadow: inset 2px 0 4px rgba(0,0,0,.3), inset -1px 0 0 rgba(255,255,255,.15);
  animation: none;
}
.am9-ticket-h-status--cancelado {
  background: linear-gradient(90deg, #832a20 0%, #c0392b 45%, #d5493a 100%);
  box-shadow: inset 2px 0 4px rgba(0,0,0,.3), inset -1px 0 0 rgba(255,255,255,.15);
  animation: none;
}

/* ── Ingresso usado: canhoto se solta de verdade, rasgado e balançando ── */
.am9-ticket-h.is-usado .am9-ticket-h-stub {
  border-radius: 3.5cqw 1.8cqw 1.8cqw 3.5cqw;
  margin-right: 2cqw;
  transform-origin: bottom right;
  animation: am9hDangle 4.5s ease-in-out infinite;
  filter: drop-shadow(0 2.6cqw 3.2cqw rgba(0,0,0,.45));
  --tear: 1.5cqw;
  clip-path: polygon(
    0 0, 100% 0,
    calc(100% - var(--tear)) 4%, 100% 8%,
    calc(100% - var(--tear)) 12%, 100% 16%,
    calc(100% - var(--tear)) 20%, 100% 24%,
    calc(100% - var(--tear)) 28%, 100% 32%,
    calc(100% - var(--tear)) 36%, 100% 40%,
    calc(100% - var(--tear)) 44%, 100% 48%,
    calc(100% - var(--tear)) 52%, 100% 56%,
    calc(100% - var(--tear)) 60%, 100% 64%,
    calc(100% - var(--tear)) 68%, 100% 72%,
    calc(100% - var(--tear)) 76%, 100% 80%,
    calc(100% - var(--tear)) 84%, 100% 88%,
    calc(100% - var(--tear)) 92%, 100% 96%,
    calc(100% - var(--tear)) 100%, 0 100%
  );
}
@keyframes am9hDangle {
  0%, 100% { transform: rotate(-4deg) translateY(-.9cqw); }
  50%      { transform: rotate(-6deg) translateY(-.3cqw); }
}
.am9-ticket-h.is-usado .am9-ticket-h-poster { filter: saturate(.7) brightness(.95); }

.am9-ticket-h.is-usado .am9-ticket-h-body {
  border-radius: 1.8cqw 0 0 1.8cqw;
  --tear: 1.5cqw;
  clip-path: polygon(
    var(--tear) 0, 100% 0, 100% 100%, var(--tear) 100%,
    0 96%, var(--tear) 92%, 0 88%, var(--tear) 84%,
    0 80%, var(--tear) 76%, 0 72%, var(--tear) 68%,
    0 64%, var(--tear) 60%, 0 56%, var(--tear) 52%,
    0 48%, var(--tear) 44%, 0 40%, var(--tear) 36%,
    0 32%, var(--tear) 28%, 0 24%, var(--tear) 20%,
    0 16%, var(--tear) 12%, 0 8%, var(--tear) 4%, 0 0
  );
}

@media (prefers-reduced-motion: reduce) {
  .am9-ticket-h-float, .am9-ticket-h-poster::after,
  .am9-ticket-h-status, .am9-ticket-h.is-usado .am9-ticket-h-stub {
    animation: none !important;
  }
  .am9-ticket-h.is-usado .am9-ticket-h-stub { transform: rotate(-5deg) translateY(-.6cqw); }
}

/* Respiro entre cada ticket e a borda da coluna na grade "Meus
   Ingressos" — soma ao gutter padrão do .row.g-4, então os cards
   ficam bem mais afastados uns dos outros e da borda da tela. */
.am9-ticket-h-col { padding: 50px; }
@media (max-width: 767.98px) { .am9-ticket-h-col { padding: 24px; } }
@media (max-width: 400px)    { .am9-ticket-h-col { padding: 12px; } }

/* Fundo azul-escuro da marca, escopado à aba "Meus Ingressos" do
   dashboard do comprador — faz bleed sobre o padding do container
   pai (24px 20px 80px) sem alterar o shell do dashboard. Mesmo
   gradiente + glows da página "Baixar Ingresso", pra manter a
   identidade visual entre as duas telas de ingresso. */
.am9-ingressos-page {
  background:
    radial-gradient(900px 500px at 15% -10%, var(--am9-primary) 0%, transparent 60%),
    radial-gradient(700px 400px at 100% 100%, var(--am9-highlight) 0%, transparent 55%),
    linear-gradient(160deg, var(--am9-accent) 0%, var(--am9-dark) 65%);
  margin: -24px -20px -80px;
  padding: 24px 20px 80px;
  min-height: 100vh;
  position: relative;
  overflow: hidden;
}
.am9-ingressos-glow {
  position: absolute;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(56,189,248,.3), transparent 70%);
  pointer-events: none;
  animation: am9hDrift 14s ease-in-out infinite alternate;
  z-index: 0;
}
.am9-ingressos-glow.d1 { width: 200px; height: 200px; top: 6%;  left: 4%; }
.am9-ingressos-glow.d2 { width: 150px; height: 150px; top: 70%; right: 6%; animation-delay: -5s; }
@keyframes am9hDrift {
  from { transform: translate(0, 0) scale(1); }
  to   { transform: translate(24px, -30px) scale(1.12); }
}
@media (prefers-reduced-motion: reduce) {
  .am9-ingressos-glow { animation: none !important; }
}

/* ── 26. ABA INGRESSOS (organizador — Tipo de Ingresso + Lote) ──── */
.ed-tipo-card {
  border-radius: var(--am9-radius-lg) !important;
  overflow: hidden;
  transition: box-shadow var(--am9-transition);
}
.ed-tipo-card:hover { box-shadow: var(--am9-shadow); }

/* Cabeçalho do tipo de ingresso: ícone + nome editável + chips + ações,
   no mesmo espírito visual dos cards de participante do checkout. */
.ed-tipo-header {
  display: flex; align-items: center; gap: 14px;
  padding: 16px 18px;
  background: linear-gradient(120deg, var(--am9-primary-light), rgba(56,189,248,.08));
  border-bottom: 1px solid #eef1f6;
}
.ed-tipo-icon {
  width: 42px; height: 42px; flex-shrink: 0;
  border-radius: 12px;
  background: linear-gradient(135deg, var(--am9-primary), var(--am9-highlight));
  color: #fff; display: flex; align-items: center; justify-content: center;
  font-size: 18px;
  box-shadow: 0 4px 10px rgba(37,99,235,.28);
}
.ed-tipo-titlewrap { flex: 1 1 auto; min-width: 0; }
.ed-tipo-nome-visual {
  display: block; width: 100%;
  border: 1.5px solid transparent; background: transparent;
  font-size: 16px; font-weight: 700; color: var(--am9-dark);
  padding: 3px 8px; margin: -3px -8px 2px;
  border-radius: var(--am9-radius-sm);
  transition: border-color var(--am9-transition), background var(--am9-transition);
}
.ed-tipo-nome-visual:hover   { background: rgba(255,255,255,.6); }
.ed-tipo-nome-visual:focus   { outline: none; border-color: var(--am9-primary); background: #fff; }
.ed-tipo-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ed-chip {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; font-weight: 600; color: #666;
  background: rgba(255,255,255,.75); border: 1px solid rgba(0,0,0,.06);
  border-radius: 999px; padding: 3px 10px;
}
.ed-chip-info    { color: #0c5f7a; background: #e3f6fb; border-color: #cdeef7; }
.ed-chip-success { color: #14663f; background: #e4f7ec; border-color: #cdeedb; }
.ed-tipo-actions { display: flex; gap: 6px; flex-shrink: 0; }
.ed-tipo-action-btn {
  width: 34px; height: 34px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  border: none; border-radius: 10px;
  background: rgba(255,255,255,.7); color: #555;
  transition: background var(--am9-transition), color var(--am9-transition);
}
.ed-tipo-action-btn:hover { background: #fff; color: var(--am9-primary); }
.ed-tipo-action-btn--danger:hover { color: #dc3545; }

.ed-tipo-config-eyebrow {
  font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em;
  color: var(--am9-primary); margin-bottom: 10px;
}

.ed-lotes-do-tipo { background: #fbfbfd; }
.ed-lotes-vazio:empty { display: none; }

/* Card de lote: nome + status + ações no topo, campos organizados em
   grid, e estoque/numeração em blocos próprios — nada mais espremido
   numa única linha de 12 colunas. */
.am9-lote-ed {
  border-left: 3px solid #dee2e6;
  border-bottom: 1px solid #eef1f6;
  padding: 14px 18px;
  transition: background var(--am9-transition);
}
.am9-lote-ed:last-child { border-bottom: none; }
.am9-lote-ed:hover { background: #f7f6fc; }
.am9-lote-ed.ed-lote-ativo      { border-left-color: var(--am9-success); }
.am9-lote-ed.ed-lote-aguardando { border-left-color: var(--am9-warning); }
.am9-lote-ed.ed-lote-encerrado  { border-left-color: #adb5bd; background: #fafafa; }

.ed-lote-topo {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  margin-bottom: 12px;
}
.ed-lote-nome-visual {
  flex: 1 1 160px; min-width: 120px;
  border: 1.5px solid transparent; background: transparent;
  font-size: 14.5px; font-weight: 700; color: var(--am9-dark);
  padding: 3px 6px; margin: -3px -6px;
  border-radius: var(--am9-radius-sm);
  transition: border-color var(--am9-transition), background var(--am9-transition);
}
.ed-lote-nome-visual:hover { background: #fff; }
.ed-lote-nome-visual:focus { outline: none; border-color: var(--am9-primary); background: #fff; }
.ed-lote-status-badge { font-size: 11px; padding: 5px 10px; flex-shrink: 0; }
.ed-lote-toolbar { display: flex; align-items: center; gap: 6px; margin-left: auto; flex-shrink: 0; }
.ed-lote-icon-btn {
  width: 30px; height: 30px;
  display: flex; align-items: center; justify-content: center;
  border: 1px solid #e5e9f0; border-radius: 8px;
  background: #fff; color: #666;
  transition: background var(--am9-transition), color var(--am9-transition), border-color var(--am9-transition);
}
.ed-lote-icon-btn:hover { background: var(--am9-primary-light); border-color: var(--am9-primary); color: var(--am9-primary); }
.ed-lote-icon-btn--danger:hover { background: #fdecec; border-color: #f3b8b8; color: #dc3545; }
.ed-lote-btn-salvar { white-space: nowrap; }

.ed-lote-label { display: block; font-weight: 600; font-size: 11.5px; color: #666; margin-bottom: 3px; }

.ed-lote-estoque { margin-top: 12px; }
.ed-lote-progress { height: 6px; border-radius: 4px; }

.ed-lote-extra:empty { display: none; }
.ed-lote-extra:not(:empty) { margin-top: 12px; }

/* Aba Ingressos: resumo no topo e lotes recolhidos (abre um por vez o que for editar) */
.ed-ing-topo { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; margin-bottom: 10px; }
.ed-ing-resumo { display: grid; grid-template-columns: repeat(4, minmax(70px, auto)); gap: 8px; flex: 1 1 320px; }
.ed-ing-resumo > div { background: #f6f8fc; border-radius: 12px; padding: 8px 12px; display: flex; flex-direction: column; }
.ed-ing-resumo b { font-size: 18px; line-height: 1.15; font-variant-numeric: tabular-nums; }
.ed-ing-resumo em { font-style: normal; font-weight: 600; font-size: 12px; color: #667085; }
.ed-ing-resumo small { font-size: 10.5px; color: #667085; text-transform: uppercase; letter-spacing: .03em; }
.ed-ing-resumo .is-ok b { color: #15803d; }
.ed-lote-topo { margin-bottom: 0; flex-wrap: nowrap; }
.ed-lote-abrir { border: 0; background: transparent; color: #667085; width: 32px; height: 32px; flex-shrink: 0; border-radius: 8px; }
.ed-lote-abrir:hover { background: var(--am9-primary-light); color: var(--am9-primary); }
.ed-lote-abrir i { display: inline-block; transition: transform var(--am9-transition); }
.am9-lote-ed.is-aberto .ed-lote-abrir i { transform: rotate(180deg); }
.ed-lote-resumo { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 14px; font-size: 12.5px; color: #667085; cursor: pointer; margin-top: 4px; }
.ed-lote-resumo b { color: var(--am9-dark); font-size: 13.5px; }
.ed-lote-resumo-barra { flex: 1 0 100%; height: 4px; background: #e9edf4; border-radius: 4px; margin-top: 6px; overflow: hidden; }
.ed-lote-resumo-barra i { display: block; height: 100%; background: var(--am9-success); }
.ed-lote-corpo { display: none; margin-top: 14px; padding-top: 14px; border-top: 1px dashed #e5e9f0; }
.am9-lote-ed.is-aberto .ed-lote-corpo { display: block; }
/* Cada lote é um cartão separado: faixa e número (ordem de abertura) pela cor do status */
.ed-lotes-do-tipo { background: #f1f4fa; padding: 12px; display: flex; flex-direction: column; gap: 10px; counter-reset: ed-lote; }
.ed-lotes-do-tipo .am9-lote-ed { counter-increment: ed-lote; --lote-cor: #98a2b3; background: #fff; border: 1px solid #e3e8f1; border-left: 5px solid var(--lote-cor); border-radius: 12px; padding: 12px 14px; box-shadow: 0 1px 3px rgba(15,23,42,.06); }
.ed-lotes-do-tipo .am9-lote-ed:last-child { border-bottom: 1px solid #e3e8f1; }
.ed-lotes-do-tipo .am9-lote-ed:hover { background: #fff; border-color: #cfd6e4; border-left-color: var(--lote-cor); }
.ed-lotes-do-tipo .am9-lote-ed.ed-lote-ativo { --lote-cor: var(--am9-success); border-left-color: var(--lote-cor); }
.ed-lotes-do-tipo .am9-lote-ed.ed-lote-aguardando { --lote-cor: var(--am9-warning); border-left-color: var(--lote-cor); }
.ed-lotes-do-tipo .am9-lote-ed.ed-lote-encerrado { --lote-cor: #98a2b3; border-left-color: var(--lote-cor); background: #f8f9fb; }
.ed-lotes-do-tipo .am9-lote-ed.is-aberto { border-color: var(--am9-primary); border-left-color: var(--lote-cor); box-shadow: 0 6px 18px rgba(15,23,42,.1); }
.ed-lote-topo::before { content: counter(ed-lote); flex-shrink: 0; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; font-weight: 800; color: #fff; background: var(--lote-cor, #98a2b3); }
.ed-lote-resumo { padding-left: 34px; }
.ed-lote-resumo-barra { margin-right: 0; }
.ed-lotes-do-tipo .ed-lotes-vazio { background: transparent; }
.ed-lote-acoes { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 14px; }
.ed-lote-acoes button { display: inline-flex; align-items: center; gap: 5px; border: 1px solid #e5e9f0; background: #fff; color: #475467; border-radius: 9px; font-size: 12.5px; font-weight: 600; padding: 6px 10px; }
.ed-lote-acoes button:hover { border-color: var(--am9-primary); color: var(--am9-primary); background: var(--am9-primary-light); }
.ed-lote-acoes button.is-perigo { margin-left: auto; color: #b42318; }
.ed-lote-acoes button.is-perigo:hover { background: #fdecec; border-color: #f3b8b8; color: #dc3545; }
.ed-mover-numeros { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-bottom: 10px; }
.ed-mover-numeros > div { background: #f6f8fc; border-radius: 10px; padding: 8px; text-align: center; }
.ed-mover-numeros b { display: block; font-size: 20px; line-height: 1.1; } .ed-mover-numeros small { font-size: 11px; color: #667085; }
.ed-barra-salvar { position: fixed; left: 0; right: 0; bottom: var(--am9-bottom-h, 62px); z-index: 1020; background: #fff; box-shadow: 0 -6px 18px rgba(15,23,42,.12); padding: 8px 12px; display: flex; align-items: center; justify-content: space-between; gap: 10px; font-size: 13px; font-weight: 600; }
.ed-barra-salvar[hidden] { display: none; }
@media (min-width: 992px) { .ed-barra-salvar { display: none; } }
@media (max-width: 767.98px) {
  .ed-ing-resumo { grid-template-columns: repeat(4, 1fr); flex-basis: 100%; }
  .ed-ing-resumo > div { padding: 8px 6px; text-align: center; }
  .ed-ing-topo > .btn { width: 100%; }
  .ed-ing-resumo b { white-space: nowrap; font-size: 16px; } .ed-ing-resumo em { font-size: 11px; }
  .ed-tipo-icon { display: none; }
  .ed-chip { white-space: nowrap; }
  .ed-lotes-do-tipo { padding: 8px; }
  /* Datas e status inteiros, um embaixo do outro */
  .ed-lote-corpo > .row > .col-6 { flex: 0 0 100%; max-width: 100%; }
}

.ed-btn-add-lote {
  border: 2px dashed #d8cdf0;
  border-radius: var(--am9-radius-sm);
  color: var(--am9-primary);
  background: #fff;
  padding: 10px;
  font-weight: 600;
  transition: background var(--am9-transition), border-color var(--am9-transition);
}
.ed-btn-add-lote:hover { background: var(--am9-primary-light); border-color: var(--am9-primary); color: var(--am9-primary); }

/* ── 27. PÁGINA DE PEDIDO CONFIRMADO (thankyou.php) ──────────────
   Selo circular grande no topo (sucesso/erro/pendente), com anel de
   pulso sutil no estado de sucesso — sem depender de nenhuma lib
   externa, só CSS. */

.am9-ty-badge {
  position: relative;
  width: 92px; height: 92px; border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  font-size: 42px; color: #fff;
  box-shadow: var(--am9-shadow-lg);
}
.am9-ty-badge--success { background: linear-gradient(135deg, #4ade80, var(--am9-success)); }
.am9-ty-badge--danger  { background: linear-gradient(135deg, #f87171, #dc2626); }
.am9-ty-badge--warning { background: linear-gradient(135deg, #fbbf24, #d97706); }
.am9-ty-badge--muted   { background: linear-gradient(135deg, #cbd5e1, #94a3b8); }
.am9-ty-badge--success::after {
  content: ''; position: absolute; inset: -10px; border-radius: 50%;
  border: 2.5px solid rgba(55, 201, 86, .35);
  animation: am9-ty-pulso 2s ease-out infinite;
}
@keyframes am9-ty-pulso {
  0%   { transform: scale(.85); opacity: 1; }
  100% { transform: scale(1.25); opacity: 0; }
}

/* Mini bilhete (reaproveita .am9-ticket-h da seção 25b) ao lado do
   QR/nome/botão em cada linha de ingresso — largura fixa e pequena
   (o cqw do componente escala a partir da largura do próprio wrapper,
   então isso é o bastante pra deixá-lo compacto, sem tocar no
   tamanho usado em "Meus Ingressos"). Empilha abaixo do QR/botão em
   telas estreitas, já que a linha tem flex-wrap. */
/* .am9-ticket-h-col (seção 25b) tem padding:50px pro grid de "Meus
   Ingressos" — aqui ele só serve pra herdar o container-type, então
   zera esse padding explicitamente (seletor composto pra garantir
   prioridade sobre a regra de origem, independente da ordem no arquivo). */
.am9-ty-ticket-mini.am9-ticket-h-col { padding: 0; width: 100%; max-width: 300px; margin: 0 auto; }
@media (min-width: 480px) {
  .am9-ty-ticket-mini.am9-ticket-h-col { width: 300px; margin: 0; }
}

/* Cabeçalho de cada bloco "Evento" na lista de ingressos — mini capa
   do evento (ou ícone de fallback) + nome + selo com a quantidade. */
.am9-ty-evento-thumb {
  width: 40px; height: 40px; border-radius: var(--am9-radius-sm);
  object-fit: cover; flex-shrink: 0; background: var(--am9-primary-light);
}
.am9-ty-evento-thumb-fallback {
  width: 40px; height: 40px; border-radius: var(--am9-radius-sm);
  display: flex; align-items: center; justify-content: center;
  background: var(--am9-primary-light); color: var(--am9-primary); flex-shrink: 0;
}

/* Linha de ingresso individual dentro do bloco do evento */
.am9-ty-ticket-row { transition: background var(--am9-transition); }
.am9-ty-ticket-row:hover { background: #fafbfd; }
.am9-ty-ticket-qr {
  width: 60px; height: 60px; border-radius: var(--am9-radius-sm);
  border: 1.5px solid #eef0f4; object-fit: contain; background: #fff;
}
.am9-ty-ticket-code {
  font-size: 11px; color: #8a8fa3; background: #f4f5f8;
  border-radius: 999px; padding: 2px 9px; display: inline-flex; align-items: center; gap: 5px;
  cursor: pointer; border: none; transition: background var(--am9-transition), color var(--am9-transition);
}
.am9-ty-ticket-code:hover { background: var(--am9-primary-light); color: var(--am9-primary); }

/* CTA do grupo de WhatsApp — faixa esverdeada ao fim de cada bloco */
/* Recados do produtor na página "Pedido confirmado" (editar evento › Página de compra confirmada).
   Cor escolhida pelo produtor: --rc (forte), --rc-bg (fundo claro) */
.am9-ty-recado { --rc: #2563eb; --rc-bg: #eff6ff; background: #fff; border-radius: var(--am9-radius-lg); padding: 18px 20px; margin-bottom: 12px; box-shadow: var(--am9-shadow-sm); border-left: 5px solid var(--rc); }
.am9-ty-recado.cor-azul     { --rc: #2563eb; --rc-bg: #eff6ff; }
.am9-ty-recado.cor-amarelo  { --rc: #ca8a04; --rc-bg: #fefce8; }
.am9-ty-recado.cor-laranja  { --rc: #ea580c; --rc-bg: #fff7ed; }
.am9-ty-recado.cor-vermelho { --rc: #dc2626; --rc-bg: #fef2f2; }
.am9-ty-recado.cor-verde    { --rc: #16a34a; --rc-bg: #f0fdf4; }
.am9-ty-recado.is-topo { background: linear-gradient(135deg, var(--rc-bg), #fff); border: 2px solid var(--rc); box-shadow: 0 10px 30px color-mix(in srgb, var(--rc) 18%, transparent); }
.am9-ty-recado-titulo { display: flex; align-items: center; gap: 8px; font-weight: 800; font-size: 18px; color: #101828; margin-bottom: 6px; }
.am9-ty-recado-titulo i { color: var(--rc); }
.am9-ty-recado.is-rodape .am9-ty-recado-titulo { font-size: 16px; }
.am9-ty-recado-texto { font-size: 15px; color: #344054; line-height: 1.5; overflow-wrap: anywhere; }
.am9-ty-recado-texto p:last-child { margin-bottom: 0; }
.am9-ty-recado-btn { display: flex; align-items: center; justify-content: center; gap: 8px; margin-top: 14px; padding: 13px 18px; border-radius: 999px; background: var(--rc); color: #fff !important; font-weight: 700; text-decoration: none; font-size: 15px; }
.am9-ty-recado-btn.is-wpp { background: #25d366; }
.am9-ty-seta { text-align: center; font-weight: 700; color: #475467; margin: 4px 0 10px; font-size: 14px; }
.am9-ty-seta i { color: var(--am9-primary); }
.am9-ed-cores { display: flex; flex-wrap: wrap; gap: 6px; }
.am9-ed-cor { display: inline-flex; align-items: center; gap: 5px; border: 1.5px solid #e5e7eb; border-radius: 999px; padding: 4px 10px 4px 5px; cursor: pointer; font-size: 12px; }
.am9-ed-cor input { position: absolute; opacity: 0; pointer-events: none; }
.am9-ed-cor span { width: 18px; height: 18px; border-radius: 50%; background: var(--rc); }
.am9-ed-cor:has(input:checked) { border-color: var(--rc); background: var(--rc-bg); font-weight: 700; }
.am9-ed-cor:has(input:focus-visible) { outline: 2px solid var(--rc); outline-offset: 2px; }
.am9-ed-cor.cor-azul     { --rc: #2563eb; --rc-bg: #eff6ff; }
.am9-ed-cor.cor-amarelo  { --rc: #ca8a04; --rc-bg: #fefce8; }
.am9-ed-cor.cor-laranja  { --rc: #ea580c; --rc-bg: #fff7ed; }
.am9-ed-cor.cor-vermelho { --rc: #dc2626; --rc-bg: #fef2f2; }
.am9-ed-cor.cor-verde    { --rc: #16a34a; --rc-bg: #f0fdf4; }
.am9-ed-recado { border: 1px solid #e5e7eb; border-radius: 12px; padding: 14px; height: 100%; }
.am9-ty-wpp-cta {
  background: linear-gradient(135deg, #eafcef, #f7fef9);
  border-radius: 0 0 var(--am9-radius-lg) var(--am9-radius-lg);
}
.am9-ty-wpp-btn {
  background: linear-gradient(135deg, #25D366, #1da851); color: #fff; border: none;
  transition: transform var(--am9-transition), box-shadow var(--am9-transition);
  box-shadow: 0 4px 14px rgba(37, 211, 102, .35);
}
.am9-ty-wpp-btn:hover { transform: translateY(-1px); box-shadow: 0 6px 18px rgba(37, 211, 102, .45); color: #fff; }

/* Botão "Ingresso" (baixar) na linha do ingresso — a linha usa
   flex-wrap (mini bilhete + QR + botão nem sempre cabem numa linha só
   em telas estreitas), então sem isso o botão caía sozinho numa nova
   linha grudado à esquerda em vez de centralizado. */
.am9-ty-ticket-btn-wrap { width: 100%; text-align: center; }
@media (min-width: 480px) {
  .am9-ty-ticket-btn-wrap { width: auto; text-align: left; margin-left: auto; flex-shrink: 0; }
}

/* Linhas de resumo do pedido, com ícone à esquerda num círculo sutil */
.am9-ty-resumo-linha { font-size: 13px; }
.am9-ty-resumo-icon {
  width: 28px; height: 28px; border-radius: 50%; flex-shrink: 0;
  display: flex; align-items: center; justify-content: center;
  background: var(--am9-primary-light); color: var(--am9-primary); font-size: 13px;
}

/* Passo-a-passo do estado "pagamento pendente" */
.am9-ty-passo {
  display: flex; align-items: flex-start; gap: 10px; font-size: 12.5px; color: #667;
}
.am9-ty-passo-num {
  width: 22px; height: 22px; border-radius: 50%; flex-shrink: 0;
  background: var(--am9-primary-light); color: var(--am9-primary);
  display: flex; align-items: center; justify-content: center;
  font-size: 11px; font-weight: 700;
}

/* Mensagens › envios: quem recebeu, abriu e clicou (functions/envios.php) */
.am9-env-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(110px, 1fr)); gap: 8px; }
.am9-env-kpis > div { background: #f8fafc; border-radius: 12px; padding: 10px 12px; display: flex; flex-direction: column; }
.am9-env-kpis b { font-size: 22px; line-height: 1.1; font-variant-numeric: tabular-nums; }
.am9-env-kpis b em { font-style: normal; font-size: 13px; font-weight: 600; color: #667085; }
.am9-env-kpis small { font-size: 11px; color: #667085; text-transform: uppercase; letter-spacing: .03em; }
.am9-env-kpis .is-ok b { color: #15803d; } .am9-env-kpis .is-info b { color: #1d4ed8; } .am9-env-kpis .is-roxo b { color: #7c3aed; } .am9-env-kpis .is-erro b { color: #dc2626; }
.am9-env-st { display: inline-flex; align-items: center; gap: 4px; white-space: nowrap; color: #667085; }
.am9-env-st.is-ok { color: #15803d; } .am9-env-st.is-info { color: #1d4ed8; } .am9-env-st.is-roxo { color: #7c3aed; } .am9-env-st.is-erro { color: #dc2626; }
.am9-env-item { position: relative; } .am9-env-item:hover { background: #f8fafc; } .am9-env-item.is-ativo { background: #eff6ff; }
.am9-env-mini { display: flex; gap: 12px; font-size: 12px; margin-top: 4px; color: #667085; }
.am9-env-mini span { display: inline-flex; align-items: center; gap: 4px; }
.am9-env-mini .is-info { color: #1d4ed8; } .am9-env-mini .is-roxo { color: #7c3aed; }
@media (max-width: 575.98px) {
  /* Envios no celular: cada pessoa vira um bloco — nome em cima, envio/abriu/clicou numa linha */
  .am9-env-tabela thead { display: none; }
  .am9-env-tabela tbody tr { display: flex; flex-wrap: wrap; gap: 2px 12px; padding: 10px 14px; border-bottom: 1px solid #eef0f4; }
  .am9-env-tabela tbody tr[hidden] { display: none; }
  .am9-env-tabela tbody td { border: 0; padding: 0; background: none; }
  .am9-env-tabela tbody td:first-child { width: 100%; }
  .am9-env-tabela tbody td .text-muted:only-child { display: none; }
  #am9-env-q { max-width: none !important; margin-left: 0 !important; }
  #am9-envio form { width: 100%; } #am9-envio form .btn { width: 100%; }
}
