/* Tema comum das páginas públicas de visitantes. */
body.visitor-theme {
    --visitor-ink: #b7d2ff;
    --visitor-muted: #9aaac0;
    --visitor-accent: #8bc1ff;
    --visitor-border: #25303d;
    --visitor-card: #0b0e13;
    --visitor-field: #171c24;
    background: #000;
    color: #d4deec;
    color-scheme: dark;
}

body.visitor-theme .principal {
    background: #000;
    color: #d4deec;
    padding-top: 12px;
}

body.visitor-theme :is(.registration-details, .participant-dashboard,
    .registration-success, .add-ticket-page, .group-dashboard, .group-shop) {
    --details-ink: var(--visitor-ink);
    --details-muted: var(--visitor-muted);
    --details-accent: var(--visitor-accent);
    --details-border: var(--visitor-border);
    --participant-ink: var(--visitor-ink);
    --participant-muted: var(--visitor-muted);
    --participant-accent: var(--visitor-accent);
    --participant-border: var(--visitor-border);
    --success-ink: var(--visitor-ink);
    --success-muted: var(--visitor-muted);
    --success-accent: var(--visitor-accent);
    --ticket-ink: var(--visitor-ink);
    --ticket-muted: var(--visitor-muted);
    --ticket-accent: var(--visitor-accent);
    --group-ink: var(--visitor-ink);
    --group-muted: var(--visitor-muted);
    --group-accent: var(--visitor-accent);
    --shop-ink: var(--visitor-ink);
    --shop-muted: var(--visitor-muted);
    --shop-accent: var(--visitor-accent);
    color: var(--visitor-ink);
}

body.visitor-theme .registration-details { max-width: 960px; }
body.visitor-theme .add-ticket-page { max-width: 620px; }

body.visitor-theme .principal :is(h1, h2, h3, label, .cor_principal, .cor_secundaria) {
    color: var(--visitor-ink);
}

body.visitor-theme .principal a { color: var(--visitor-accent); }
body.visitor-theme .principal a:hover { color: #d4e7ff; }

body.visitor-theme .principal :is(.details-card, .success-card, .participant-account,
    .participant-tickets, .add-ticket-card, .group-orders, .group-order-card,
    .panel, .well, .modal-content) {
    background: var(--visitor-card);
    border-color: var(--visitor-border);
    box-shadow: 0 8px 28px rgba(73, 116, 165, 0.09);
}

body.visitor-theme .principal .group-stats > div {
    background: var(--visitor-card);
    border-color: var(--visitor-border);
}

body.visitor-theme .principal :is(.details-card, .success-card, .participant-account,
    .add-ticket-card) { border-top-color: var(--visitor-accent); }

body.visitor-theme .principal :is(.details-terms, .participant-ticket-card,
    .participant-empty, .participant-id, .participant-ticket-count, .success-notice,
    .add-ticket-product, .group-account, .group-number, .group-total, .group-empty,
    .group-order-empty, .group-order-count, .group-order-quantity, .group-view-switch,
    .group-type-metrics > div, .shop-summary, .shop-empty, .panel-heading,
    .panel-footer, .modal-header, .modal-footer, .alert-default) {
    background: #111720;
    border-color: var(--visitor-border);
    color: #d4deec;
}

body.visitor-theme .principal :is(.details-section-icon, .participant-section-icon,
    .add-ticket-icon, .group-order-heading-icon, .group-tip, .group-ticket-icon,
    .group-type-stat-icon) {
    background: #142131;
    color: var(--visitor-accent);
}

body.visitor-theme .principal :is(.details-section-heading, .participant-data-grid,
    .participant-ticket-code, .add-ticket-code, .shop-total, .shop-summary-item,
    .group-order-card header, hr) { border-color: var(--visitor-border); }

body.visitor-theme .principal :is(.form-control, .group-ticket-link input) {
    background: var(--visitor-field);
    border: 1px solid #364354;
    border-radius: 9px;
    color: #edf3ff;
    box-shadow: none;
}

body.visitor-theme .principal .form-control::placeholder { color: #9aaac0; opacity: 1; }
body.visitor-theme .principal .form-control:hover { border-color: #637c9a; }
body.visitor-theme .principal .form-control:focus {
    border-color: var(--visitor-accent);
    outline: 0;
    box-shadow: 0 0 0 3px rgba(139, 193, 255, 0.18);
}

body.visitor-theme .principal .form-control[readonly],
body.visitor-theme .principal .form-control[disabled] {
    background: #111720;
    border-color: var(--visitor-border);
    color: #afbdd0;
}

body.visitor-theme .principal :is(.info, .gray, .details-terms > p,
    .success-redirect, .group-ticket-link small, .group-participant strong i) {
    color: var(--visitor-muted);
}

body.visitor-theme .principal :is(.details-submit, .success-action, .add-ticket-primary,
    .participant-action-accent, .group-primary, .shop-primary, .bg-botao) {
    border-color: var(--visitor-accent);
    background: var(--visitor-accent);
    color: #081422;
    border-radius: 9px;
    font-weight: 700;
}

body.visitor-theme .principal :is(.details-submit, .success-action, .add-ticket-primary,
    .participant-action-accent, .group-primary, .shop-primary, .bg-botao):is(:hover, :focus) {
    border-color: #afd4ff;
    background: #afd4ff;
    color: #081422;
}

body.visitor-theme .principal :is(.participant-action:not(.participant-action-accent),
    .add-ticket-secondary, .group-secondary, .shop-secondary, .bg-gray, .inverse) {
    background: var(--visitor-field);
    border-color: #364354;
    color: var(--visitor-accent);
}

body.visitor-theme .principal :is(.participant-logout, .group-logout,
    .add-ticket-back, .group-secondary, .shop-secondary, .add-ticket-secondary,
    .participant-action:not(.participant-action-accent)):is(:hover, :focus) {
    background: #202d3d;
    color: var(--visitor-ink);
}

body.visitor-theme .principal :is(a, button, input[type="checkbox"]):focus-visible {
    outline: 3px solid var(--visitor-accent);
    outline-offset: 3px;
}

body.visitor-theme input[type="checkbox"] { accent-color: var(--visitor-accent); }

/* O widget usa data-theme; evita o canvas branco do iframe no tema escuro. */
body.visitor-theme .g-recaptcha iframe {
    color-scheme: light;
    display: block;
    border: 0;
    background: transparent;
}

/* Substitui os destaques claros dos controles legados. */
body.visitor-theme .principal :is(.label-checkbox, .label-radio):is(:hover, :focus-within) {
    background: #202d3d;
    border-color: #364354;
    color: var(--visitor-ink);
}

body.visitor-theme .principal :is(.label-checkbox, .label-radio).checked {
    background: #142131 !important;
    border-color: #637c9a !important;
    color: var(--visitor-ink);
}

body.visitor-theme .principal :is(.success-icon, .participant-ticket-status,
    .add-ticket-free, .group-status.available, .alert-success) {
    background: #102b25;
    border-color: #29564b;
    color: #8edbc2;
}

body.visitor-theme .principal :is(.group-issued, .group-order-status,
    .group-order-complimentary, .green) { color: #8edbc2; }

body.visitor-theme .principal :is(.group-status.invited, .alert-warning) {
    background: #302516;
    border-color: #6b5230;
    color: #f0cd91;
}

body.visitor-theme .principal :is(.group-status.registered, .alert-info) {
    background: #182740;
    border-color: #344c71;
    color: var(--visitor-ink);
}

body.visitor-theme .principal :is(.alert-danger, .group-danger) {
    background: #321a21;
    border-color: #713c48;
    color: #ffb1bf;
}

body.visitor-theme .principal :is(.group-ticket, .group-type-stat) {
    --ticket-accent: #8bc1ff;
    --ticket-tint: #142131;
    border-color: #364354;
    background: linear-gradient(135deg, #142131, #0b0e13 60%);
}

body.visitor-theme .principal .group-ticket-grid.is-list-view .group-ticket {
    background: linear-gradient(90deg, #142131, #0b0e13 410px);
}

body.visitor-theme .principal .group-view-switch button.is-active,
body.visitor-theme .principal .group-ticket-link summary::before {
    background: #202d3d;
    color: var(--visitor-accent);
    border-color: #364354;
}

body.visitor-theme .principal .group-shop #tbcompra tr {
    background: var(--visitor-card);
    border-color: var(--visitor-border);
}

body.visitor-theme .principal .group-shop #tbcompra tr.shop-selected {
    background: #142131;
    border-color: var(--visitor-accent);
}

body.visitor-theme .principal .table > :is(thead, tbody, tfoot) > tr > :is(th, td) {
    border-color: #364354;
}
body.visitor-theme .principal .table-striped > tbody > tr:nth-of-type(odd) { background: #111720; }
body.visitor-theme .principal .table-hover > tbody > tr:hover { background: #202d3d; }

/* Formulários auxiliares que ainda utilizam o helper antigo. */
body.visitor-theme .principal > .container > form:not([class]),
body.visitor-theme .principal #recuperar_senha,
body.visitor-theme #novo_cadastro_grupo,
body.visitor-theme #ja_cadastrado {
    margin: 22px auto;
    padding: 26px;
    border: 1px solid var(--visitor-border);
    border-top: 4px solid var(--visitor-accent);
    border-radius: 16px;
    background: var(--visitor-card);
}

body.visitor-theme .modal-content {
    background: var(--visitor-card);
    color: #d4deec;
    border: 1px solid var(--visitor-border);
}
body.visitor-theme :is(.modal-header, .modal-footer) { border-color: var(--visitor-border); }
body.visitor-theme .modal-content .close { color: #d4deec; opacity: 0.8; text-shadow: none; }

body.visitor-theme .principal .bg-gray {
    background: var(--visitor-field) !important;
    color: var(--visitor-accent) !important;
}

@media (max-width: 650px) {
    body.visitor-theme .principal { padding: 5px 16px; }
    body.visitor-theme .principal > .container { width: 100%; padding: 0; }
    body.visitor-theme .details-header { flex-wrap: wrap; gap: 14px; }
    body.visitor-theme .details-progress { text-align: left; }
    body.visitor-theme .principal > .container > form:not([class]),
    body.visitor-theme .principal #recuperar_senha,
    body.visitor-theme #novo_cadastro_grupo,
    body.visitor-theme #ja_cadastrado { padding: 20px 17px; }
}
