/*
Theme Name: Astra Child
Theme URI: https://wpastra.com/
Template: astra
Author: Brainstorm Force
Author URI: https://wpastra.com/about/?utm_source=theme_preview&utm_medium=author_link&utm_campaign=astra_theme
Description: The Astra WordPress theme is lightning-fast and highly customizable. It has over 1 million downloads and the only theme in the world with 6,000+ five-star reviews! It’s ideal for professional web designers, solopreneurs, small businesses, eCommerce, membership sites and any type of website. It offers special features and templates so it works perfectly with all page builders like Spectra, Elementor, Beaver Builder, etc. Fast performance, clean code, mobile-first design and schema markup are all built-in, making the theme exceptionally SEO-friendly. It’s fully compatible with WooCommerce, SureCart and other eCommerce plugins and comes with lots of store-friendly features and templates. Astra also provides expert support for free users. A dedicated team of fully trained WordPress experts are on hand to help with every aspect of the theme. Try the live demo of Astra: https://zipwp.org/themes/astra/
Tags: custom-menu,custom-logo,entertainment,one-column,two-columns,left-sidebar,e-commerce,right-sidebar,custom-colors,editor-style,featured-images,full-width-template,microformats,post-formats,rtl-language-support,theme-options,threaded-comments,translation-ready,blog
Version: 4.13.8.1785945384
Updated: 2026-08-05 15:56:24

*/

/* Fontes e tokens visuais residem em assets/css/ticket-design-system.css. */

/* ==========================================================================
   Newsletter do rodapé — formulário WPForms #85
   Seletores por ID de propósito: a folha do WPForms usa seletores de
   classe pesados (div.wpforms-container-full .wpforms-form input[type=email])
   que vencem qualquer regra só com classes, independentemente da ordem
   de carregamento.
   ========================================================================== */

#wpforms-85 {
    margin: 0;
}

#wpforms-form-85 {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-start;
}

#wpforms-form-85 .wpforms-field-container {
    flex: 1 1 240px;
    min-width: 0;
}

#wpforms-85-field_1-container {
    padding: 0;
    margin: 0;
}

#wpforms-form-85 .wpforms-submit-container {
    flex: 0 0 auto;
    align-self: flex-start;
    padding: 0;
    margin: 0;
}

/* Campo de e-mail --------------------------------------------------------- */
#wpforms-85-field_1 {
    width: 100%;
    max-width: 100%;
    height: 56px;
    margin: 0;
    padding: 0 20px;
    border: 0;
    border-radius: 0;
    background: var(--ticket-color-white);
    color: #263238;
    font-size: 15px;
    line-height: 56px;
    box-shadow: none;
}

#wpforms-85-field_1::placeholder {
    color: var(--ticket-color-muted);
    font-style: italic;
    opacity: 1;
}

/* Botão -------------------------------------------------------------------- */
#wpforms-submit-85 {
    height: 56px;
    margin: 0;
    padding: 0 36px;
    background: var(--ticket-color-red);
    color: var(--ticket-color-white) !important;
    border: 0;
    border-radius: 0;
    font-size: 15px;
    font-weight: 700;
    line-height: 1;
    cursor: pointer;
    transition: background-color .15s ease;
}

#wpforms-submit-85:hover,
#wpforms-submit-85:focus,
#wpforms-submit-85:active {
    background: var(--ticket-color-red-hover);
    color: var(--ticket-color-white) !important;
}

/* Mensagens do WPForms, legíveis sobre o fundo azul ------------------------ */
#wpforms-form-85 label.wpforms-error,
#wpforms-form-85 em.wpforms-error,
#wpforms-form-85 .wpforms-error-noscript {
    margin-top: 6px;
    color: #ffd9d6;
    font-size: 12px;
}

#wpforms-85 .wpforms-confirmation-container-full {
    background: rgba(255, 255, 255, .12);
    border: 0;
    color: var(--ticket-color-white);
    padding: 14px 18px;
}

/* Telemóvel: campo e botão empilhados ------------------------------------- */
@media (max-width: 640px) {
    #wpforms-form-85 {
        flex-direction: column;
        align-items: stretch;
    }

    #wpforms-form-85 .wpforms-field-container {
        flex: 1 1 auto;
        width: 100%;

    }

    #wpforms-form-85 .wpforms-submit-container {
        align-self: stretch;
    }

    #wpforms-submit-85 {
        width: 100%;
        margin-top: 8px;
    }
}

/* ==========================================================================
   Formulário de Contactos — WPForms #589
   Mesma estratégia do #85: seletores por ID para vencer o wpforms-full.css.
   Grelha de 12 colunas conforme o XD: Nome | Sobrenome | Telemóvel em terços,
   Email e Assunto com Benefícios e Distrito à direita, Mensagem a toda a
   largura, Enviar alinhado à direita e, depois dele, os consentimentos.
   ========================================================================== */

/* A grelha reage à largura do próprio formulário, que depende da coluna do
   Elementor e não só do ecrã: a 768 px a coluna tem cerca de 430 px. */
#wpforms-589 {
    container: tkt-contact / inline-size;
}

/* Medidas partilhadas pelos formulários Contactos e Aderentes. */
:is(#wpforms-form-589, #wpforms-form-3346) {
    --tkt-contact-gap-x: 16px;
    --tkt-contact-gap-y: 18px;
    --tkt-contact-height: 60px;
    --tkt-contact-pad-x: 36px;
    --tkt-contact-border: rgb(var(--ticket-color-text-rgb) / 25%);
}

#wpforms-form-589 {
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: var(--tkt-contact-gap-y) var(--tkt-contact-gap-x);
}

/* Sem caixa própria, campos e botão partilham a mesma grelha. A ordem visual
   põe o Enviar antes dos consentimentos; na tabulação os consentimentos
   continuam primeiro, como no HTML. */
#wpforms-form-589 .wpforms-field-container {
    display: contents;
}

#wpforms-form-589 > *,
#wpforms-form-589 .wpforms-field-container > * {
    grid-column: span var(--tkt-contact-span, 12);
}

#wpforms-589-field_1-container {
    --tkt-contact-span: 8; /* Nome + Sobrenome */
}

#wpforms-589-field_2-container {
    --tkt-contact-span: 4; /* Telemóvel */
}

#wpforms-589-field_3-container,
#wpforms-589-field_5-container {
    --tkt-contact-span: 9; /* Email, Assunto */
}

#wpforms-589-field_4-container,
#wpforms-589-field_6-container {
    --tkt-contact-span: 3; /* Benefícios, Distrito */
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field {
    padding: 0;
}

#wpforms-form-589 .wpforms-submit-container {
    order: 1;
    display: flex;
    justify-content: flex-end;
    padding: 0;
}

#wpforms-589-field_8-container,
#wpforms-589-field_9-container,
#wpforms-589-field_10-container {
    order: 2;
}

/* Nome e Sobrenome dividem os dois terços com o mesmo espaçamento. */
:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-row {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--tkt-contact-gap-y) var(--tkt-contact-gap-x);
    margin: 0;
}

/* Clearfix do WPForms: numa grelha ocuparia uma célula. */
:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-row::before,
:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-row::after {
    content: none;
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-row-block {
    width: auto;
    margin: 0;
}

/* Campos ------------------------------------------------------------------- */
/* :where() deixa a especificidade num só ID, para que as variantes de
   select, textarea e telefone abaixo prevaleçam sem !important. */
:is(#wpforms-form-589, #wpforms-form-3346) :where(input[type="text"], input[type="email"], input[type="tel"], select, textarea) {
    width: 100%;
    max-width: 100%;
    height: var(--tkt-contact-height);
    padding: 0 var(--tkt-contact-pad-x);
    border: 1px solid var(--tkt-contact-border);
    border-radius: var(--ticket-radius-control);
    background-color: var(--ticket-color-white);
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-16);
    line-height: 1.3;
    box-shadow: none;
    -webkit-appearance: none;
    appearance: none;
    transition: border-color var(--ticket-transition-fast), box-shadow var(--ticket-transition-fast);
}

:is(#wpforms-form-589, #wpforms-form-3346) :where(input[type="text"], input[type="email"], input[type="tel"], select, textarea):focus {
    border-color: var(--ticket-color-focus);
    box-shadow: 0 0 0 1px var(--ticket-color-focus);
    outline: none;
}

:is(#wpforms-form-589, #wpforms-form-3346) ::placeholder {
    color: var(--ticket-color-muted);
    opacity: 1;
}

:is(#wpforms-form-589, #wpforms-form-3346) textarea {
    height: 270px;
    min-height: 140px;
    padding: var(--tkt-contact-pad-x);
    resize: vertical;
}

/* Selects: seta desenhada com os tokens e cor de placeholder até à escolha. */
:is(#wpforms-form-589, #wpforms-form-3346) select {
    padding-right: 48px;
    padding-left: 24px;
    cursor: pointer;
    text-overflow: ellipsis;
}

:is(#wpforms-form-589, #wpforms-form-3346) select:has(> option.placeholder:checked) {
    color: var(--ticket-color-muted);
}

:is(#wpforms-form-589, #wpforms-form-3346) select option {
    color: var(--ticket-color-text);
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-select {
    position: relative;
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-select::after {
    position: absolute;
    top: calc(var(--tkt-contact-height) / 2);
    right: 20px;
    width: 10px;
    height: 10px;
    margin-top: -8px;
    border-right: 1.5px solid var(--ticket-color-muted);
    border-bottom: 1.5px solid var(--ticket-color-muted);
    content: "";
    pointer-events: none;
    transform: rotate(45deg);
}

/* Telemóvel: o seletor de país do WPForms mantém-se, com seta discreta. */
:is(#wpforms-form-589, #wpforms-form-3346) .iti {
    display: block;
}

:is(#wpforms-form-589, #wpforms-form-3346) .iti--allow-dropdown input[type="tel"] {
    padding-left: 68px;
}

:is(#wpforms-form-589, #wpforms-form-3346) .iti__selected-flag {
    padding: 0 10px 0 18px;
}

:is(#wpforms-form-589, #wpforms-form-3346) .iti__selected-flag:focus-visible {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: -2px;
}

:is(#wpforms-form-589, #wpforms-form-3346) .iti__arrow {
    border-top-color: var(--ticket-color-muted);
}

:is(#wpforms-form-589, #wpforms-form-3346) .iti__arrow--up {
    border-bottom-color: var(--ticket-color-muted);
}

:is(#wpforms-form-589, #wpforms-form-3346) .iti__country-list {
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-14);
}

/* Botão -------------------------------------------------------------------- */
:is(#wpforms-submit-589, #wpforms-submit-3346) {
    min-width: 145px;
    height: var(--tkt-contact-height);
    padding: 0 36px;
    border: 0;
    border-radius: var(--ticket-radius-control);
    background: var(--ticket-color-red);
    color: var(--ticket-color-white) !important;
    font-size: var(--ticket-font-size-16);
    font-weight: var(--ticket-font-weight-bold);
    line-height: 1;
    cursor: pointer;
    transition: background-color var(--ticket-transition-fast);
}

:is(#wpforms-submit-589, #wpforms-submit-3346):hover,
:is(#wpforms-submit-589, #wpforms-submit-3346):focus-visible,
:is(#wpforms-submit-589, #wpforms-submit-3346):active {
    background: var(--ticket-color-red-hover);
    color: var(--ticket-color-white) !important;
}

:is(#wpforms-submit-589, #wpforms-submit-3346):focus-visible {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: 2px;
}

:is(#wpforms-submit-589, #wpforms-submit-3346):disabled {
    cursor: progress;
    opacity: .75;
}

/* Consentimentos ----------------------------------------------------------- */
:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-checkbox ul {
    display: grid;
    gap: var(--tkt-contact-gap-y);
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-checkbox li {
    display: flex;
    align-items: flex-start;
    gap: 9px;
    margin: 0 !important; /* o WPForms separa as opções com 5px !important */
}

:is(#wpforms-form-589, #wpforms-form-3346) input[type="checkbox"] {
    flex: none;
    width: 16px;
    height: 16px;
    margin: 1px 0 0;
    border: 1px solid var(--ticket-color-text);
    border-radius: var(--ticket-radius-control);
    background-color: var(--ticket-color-white);
    -webkit-appearance: none;
    appearance: none;
    cursor: pointer;
}

:is(#wpforms-form-589, #wpforms-form-3346) input[type="checkbox"]:checked {
    border-color: var(--ticket-color-blue);
    background: var(--ticket-color-blue) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M3.5 8.5l3 3 6-7' fill='none' stroke='%23fff' stroke-width='2'/%3E%3C/svg%3E") center / 12px no-repeat;
}

:is(#wpforms-form-589, #wpforms-form-3346) input[type="checkbox"]:focus-visible {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: 2px;
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-label-inline {
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-14);
    line-height: var(--ticket-line-height-18);
    cursor: pointer;
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-field-label-inline a {
    color: inherit;
    text-decoration: underline;
    text-underline-offset: 2px;
}

/* Nota legal (campo HTML) --------------------------------------------------- */
#wpforms-589-field_10-container {
    margin-top: 10px;
}

#wpforms-589-field_10 {
    max-width: 710px;
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-13);
    line-height: var(--ticket-line-height-18);
}

/* Validação e confirmação ---------------------------------------------------- */
:is(#wpforms-form-589, #wpforms-form-3346) input.wpforms-error,
:is(#wpforms-form-589, #wpforms-form-3346) select.wpforms-error,
:is(#wpforms-form-589, #wpforms-form-3346) textarea.wpforms-error {
    border-color: var(--ticket-color-red);
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-error:focus {
    box-shadow: 0 0 0 1px var(--ticket-color-red);
}

:is(#wpforms-form-589, #wpforms-form-3346) label.wpforms-error {
    margin-top: 6px;
    color: var(--ticket-color-red);
    font-size: 12px;
    line-height: 1.4;
}

:is(#wpforms-form-589, #wpforms-form-3346) .wpforms-error-container {
    color: var(--ticket-color-red);
}

:is(#wpforms-589, #wpforms-3346) .wpforms-confirmation-container-full {
    padding: 20px 24px;
    border: 1px solid var(--ticket-color-blue-soft);
    border-radius: var(--ticket-radius-control);
    background: var(--ticket-color-surface-soft);
    color: var(--ticket-color-text);
}

/* Formulário estreito: Benefícios e Distrito ganham espaço para texto e seta. */
@container tkt-contact (max-width: 760px) {
    #wpforms-589-field_3-container,
    #wpforms-589-field_5-container {
        --tkt-contact-span: 8;
    }

    #wpforms-589-field_4-container,
    #wpforms-589-field_6-container {
        --tkt-contact-span: 4;
    }
}

/* Um campo por linha; Nome e Sobrenome continuam lado a lado. */
@container tkt-contact (max-width: 540px) {
    #wpforms-form-589 {
        --tkt-contact-pad-x: 20px;
    }

    #wpforms-form-589 .wpforms-field {
        --tkt-contact-span: 12;
    }

    #wpforms-submit-589 {
        width: 100%;
    }
}

@container tkt-contact (max-width: 320px) {
    #wpforms-form-589 .wpforms-field-row {
        grid-template-columns: minmax(0, 1fr);
    }
}

/* ==========================================================================
   Formulário de Aderentes — WPForms #3346
   Campos, telefone, consentimentos e botão usam o visual partilhado acima.
   A disposição própria conserva a ordem dos campos/consentimentos no WPForms.
   ========================================================================== */

/* A margem Elementor de 150 px alargava este contentor em desktop. */
body.page-id-3347 .elementor-element.elementor-element-1283682 {
    --margin-left: auto;
    --margin-right: auto;
    --padding-left: var(--ticket-content-gutter, 32px);
    --padding-right: var(--ticket-content-gutter, 32px);
    width: 100%;
    max-width: var(--ticket-content-width, 1400px);
    min-width: 0;
    margin-inline: auto;
}

#wpforms-3346 {
    container: tkt-aderentes / inline-size;
}

#wpforms-form-3346 {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    display: grid;
    grid-template-columns: repeat(12, minmax(0, 1fr));
    gap: var(--tkt-contact-gap-y) var(--tkt-contact-gap-x);
}

#wpforms-form-3346 .wpforms-field-container {
    display: contents;
}

#wpforms-form-3346 > *,
#wpforms-form-3346 .wpforms-field-container > * {
    min-width: 0;
    grid-column: span var(--tkt-aderentes-span, 12);
}

#wpforms-3346-field_2-container {
    --tkt-aderentes-span: 8; /* Nome + Sobrenome. */
}

#wpforms-3346-field_3-container {
    --tkt-aderentes-span: 4; /* Telemóvel. */
}

#wpforms-3346-field_7-container,
#wpforms-3346-field_8-container {
    --tkt-aderentes-span: 6; /* Estabelecimento + ramo de atividade. */
}

#wpforms-form-3346 .wpforms-field-row {
    width: 100%;
    max-width: 100%;
}

/* O ramo de atividade tem rótulo visível; alinhar os dois controlos. */
#wpforms-3346-field_7-container {
    align-self: end;
}

#wpforms-form-3346 .wpforms-field-label {
    margin-bottom: 10px;
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-14);
    font-weight: var(--ticket-font-weight-bold);
}

#wpforms-form-3346 .wpforms-field-divider {
    margin-top: 14px;
}

#wpforms-form-3346 .wpforms-field-divider h3,
#wpforms-form-3346 #wpforms-3346-field_1-container > .wpforms-field-label,
#wpforms-form-3346 #wpforms-3346-field_13-container > .wpforms-field-label {
    margin: 0;
    color: var(--ticket-color-heading);
    font-size: 24px;
    font-weight: var(--ticket-font-weight-bold);
    line-height: 1.3;
}

#wpforms-form-3346 #wpforms-3346-field_1-container > .wpforms-field-label,
#wpforms-form-3346 #wpforms-3346-field_13-container > .wpforms-field-label {
    margin-bottom: var(--tkt-contact-gap-y);
}

/* Morada completa; cidade, distrito e código postal na mesma linha. */
#wpforms-3346-field_9-container {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--tkt-contact-gap-y) var(--tkt-contact-gap-x);
}

#wpforms-3346-field_9-container > .wpforms-field-label,
#wpforms-3346-field_9-container .wpforms-field-row:first-of-type > div {
    grid-column: 1 / -1;
}

#wpforms-3346-field_9-container > .wpforms-field-label {
    margin-bottom: calc(10px - var(--tkt-contact-gap-y));
}

#wpforms-3346-field_9-container .wpforms-field-row {
    display: contents;
}

#wpforms-3346-field_9-container .wpforms-field-row > div {
    min-width: 0;
}

#wpforms-form-3346 .wpforms-submit-container {
    display: flex;
    justify-content: flex-end;
    padding: 0;
}

/* Produtos: logótipos brancos sobre o azul oficial, com seleção vermelha. */
#wpforms-form-3346 .wpforms-image-choices {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(104px, 1fr));
    gap: 16px;
}

#wpforms-form-3346 .wpforms-image-choices .wpforms-image-choices-item {
    display: block;
    min-width: 0;
    width: auto;
    margin: 0 !important; /* A lista inline do WPForms impõe margens !important. */
    padding: 0;
}

#wpforms-form-3346 .wpforms-image-choices label:not(.wpforms-error) {
    display: flex;
    flex-direction: column;
    height: 100%;
    margin: 0;
    padding: 0;
    border: 0;
    border-radius: var(--ticket-radius-control);
    background: transparent;
    box-shadow: none;
    text-align: center;
    transition: none;
}

#wpforms-form-3346 .wpforms-image-choices-image {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 96px;
    padding: 16px 10px;
    border: 2px solid transparent;
    border-radius: var(--ticket-radius-control);
    background: var(--ticket-color-blue);
    transition: background-color var(--ticket-transition-fast), border-color var(--ticket-transition-fast);
}

#wpforms-form-3346 .wpforms-image-choices-image img {
    display: block;
    width: 100%;
    max-width: 140px;
    height: auto;
    margin: 0;
}

#wpforms-form-3346 .wpforms-image-choices-label {
    margin-top: 10px;
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-14);
    font-weight: var(--ticket-font-weight-normal);
    line-height: 1.4;
    overflow-wrap: anywhere;
}

#wpforms-form-3346 .wpforms-image-choices label:hover .wpforms-image-choices-image {
    background: var(--ticket-color-blue-hover);
}

#wpforms-form-3346 .wpforms-image-choices label:focus-visible {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: 4px;
}

#wpforms-form-3346 .wpforms-image-choices label:has(input:checked) .wpforms-image-choices-image,
#wpforms-form-3346 .wpforms-image-choices .wpforms-selected .wpforms-image-choices-image {
    border-color: var(--ticket-color-red);
}

/* Substitui o visto verde central do WPForms sem tapar o logótipo. */
#wpforms-form-3346 .wpforms-image-choices-image::after {
    top: 6px;
    right: 6px;
    bottom: auto;
    left: auto;
    width: 22px;
    height: 22px;
    margin: 0;
    background: var(--ticket-color-red);
    color: var(--ticket-color-white);
    font-size: 14px;
    line-height: 22px;
    transition: opacity var(--ticket-transition-fast);
}

#wpforms-form-3346 .wpforms-image-choices label:has(input:checked) .wpforms-image-choices-image::after {
    opacity: 1;
}

#wpforms-form-3346 .wpforms-image-choices label:has(input:checked) .wpforms-image-choices-label,
#wpforms-form-3346 .wpforms-image-choices .wpforms-selected .wpforms-image-choices-label {
    font-weight: var(--ticket-font-weight-bold);
}

/* O contentor exterior já fornece os 20 px de margem nos ecrãs pequenos. */
@media (max-width: 1200px) {
    body.page-id-3347 .elementor-element.elementor-element-1283682 {
        --padding-left: 0px;
        --padding-right: 0px;
    }
}

/* Carrossel nativo: deslize, roda/trackpad e foco por teclado, sem JS extra. */
@container tkt-aderentes (max-width: 1080px) {
    #wpforms-form-3346 .wpforms-image-choices {
        grid-template-columns: none;
        grid-auto-flow: column;
        grid-auto-columns: clamp(148px, 28%, 220px);
        max-width: 100%;
        padding: 6px 6px 12px;
        box-sizing: border-box;
        overflow-x: auto;
        overflow-y: hidden;
        overscroll-behavior-x: contain;
        scroll-snap-type: x mandatory;
        scroll-padding-inline: 6px;
        scrollbar-width: thin;
        scrollbar-color: var(--ticket-color-blue) var(--ticket-color-blue-soft);
    }

    #wpforms-form-3346 .wpforms-image-choices-item {
        scroll-snap-align: start;
    }
}

@container tkt-aderentes (max-width: 760px) {
    #wpforms-3346-field_2-container,
    #wpforms-3346-field_3-container,
    #wpforms-3346-field_7-container,
    #wpforms-3346-field_8-container {
        --tkt-aderentes-span: 12;
    }
}

@container tkt-aderentes (max-width: 540px) {
    #wpforms-form-3346 {
        --tkt-contact-pad-x: 20px;
    }

    #wpforms-3346-field_9-container {
        grid-template-columns: minmax(0, 1fr);
    }

    #wpforms-submit-3346 {
        width: 100%;
    }
}

@container tkt-aderentes (max-width: 320px) {
    #wpforms-form-3346 .wpforms-field-row {
        grid-template-columns: minmax(0, 1fr);
    }
}

@media (prefers-reduced-motion: reduce) {
    #wpforms-form-3346 .wpforms-image-choices-image,
    #wpforms-form-3346 .wpforms-image-choices-image::after {
        transition: none;
    }
}

/* Novos campos de Aderentes: adesão/sugestão, localização e nota legal. */
#wpforms-3346-field_15-container,
#wpforms-3346-field_16-container {
    --tkt-aderentes-span: 6;
}

/* Na sugestão não existem Telemóvel/Ramo: evitar meias linhas vazias. */
#wpforms-form-3346:has(#wpforms-3346-field_13_2:checked) #wpforms-3346-field_2-container,
#wpforms-form-3346:has(#wpforms-3346-field_13_2:checked) #wpforms-3346-field_7-container {
    --tkt-aderentes-span: 12;
}

#wpforms-form-3346 .wpforms-field-radio ul {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: var(--tkt-contact-gap-x);
}

#wpforms-form-3346 .wpforms-field-radio li {
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr);
    align-items: start;
    gap: 12px;
    width: auto;
    min-width: 0;
    margin: 0 !important; /* Margens !important das opções nativas do WPForms. */
    padding: 18px 20px !important; /* O reset WPForms impõe padding/border/background. */
    border: 1px solid var(--tkt-contact-border) !important;
    border-radius: var(--ticket-radius-control);
    background: var(--ticket-color-white) !important;
}

#wpforms-form-3346 .wpforms-field-radio li:has(input:checked) {
    border-color: var(--ticket-color-blue) !important;
    background: var(--ticket-color-surface-soft) !important;
}

#wpforms-form-3346 .wpforms-field-radio input[type="radio"] {
    width: 18px;
    height: 18px;
    margin: 2px 0 0;
    padding: 0;
    border: 1px solid var(--ticket-color-text);
    border-radius: 50%;
    background: var(--ticket-color-white);
    -webkit-appearance: none;
    appearance: none;
    cursor: pointer;
}

#wpforms-form-3346 .wpforms-field-radio input[type="radio"]:checked {
    border-color: var(--ticket-color-blue);
    background: var(--ticket-color-blue);
    box-shadow: inset 0 0 0 4px var(--ticket-color-white);
}

#wpforms-form-3346 .wpforms-field-radio input[type="radio"]:focus-visible {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: 3px;
}

#wpforms-form-3346 .wpforms-field-radio .wpforms-field-label-inline {
    display: block;
    margin: 0;
    line-height: 1.5;
}

#wpforms-form-3346 .wpforms-field-radio .wpforms-field-label-inline::first-line {
    font-weight: var(--ticket-font-weight-bold);
}

/* A seta segue o próprio select, mesmo com rótulo ou erro por cima/baixo. */
#wpforms-form-3346 .wpforms-field-select::after {
    content: none;
}

#wpforms-form-3346 select {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%239D9D9D' stroke-width='1.5'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 20px center;
    background-size: 12px 8px;
}

/* Aplica-se ao HTML atual e ao texto formatado para colar no WPForms. */
#wpforms-form-3346 .wpforms-field-html {
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-13);
    line-height: 1.6;
    overflow-wrap: anywhere;
}

#wpforms-3346-field_17,
#wpforms-form-3346 .tkt-form-legal {
    max-width: 710px;
}

#wpforms-form-3346 .wpforms-field-html p {
    margin: 0 0 12px;
    font-size: inherit;
    line-height: inherit;
}

#wpforms-form-3346 .wpforms-field-html p:last-child {
    margin-bottom: 0;
}

#wpforms-form-3346 .wpforms-field-html a {
    color: var(--ticket-color-blue);
    text-decoration: underline;
    text-underline-offset: 2px;
}

#wpforms-form-3346 .wpforms-field-html a:hover {
    color: var(--ticket-color-blue-hover);
}

#wpforms-form-3346 .wpforms-field-html a:focus-visible {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: 2px;
}

@container tkt-aderentes (max-width: 760px) {
    #wpforms-form-3346 .wpforms-field-radio ul {
        grid-template-columns: minmax(0, 1fr);
    }
}

@container tkt-aderentes (max-width: 540px) {
    #wpforms-3346-field_15-container,
    #wpforms-3346-field_16-container {
        --tkt-aderentes-span: 12;
    }
}

@media (forced-colors: active) {
    #wpforms-form-3346 .wpforms-field-radio input[type="radio"] {
        -webkit-appearance: auto;
        appearance: auto;
        box-shadow: none;
    }
}

/* ==========================================================================
   Contactos — delegações, telefone e email (widget HTML do Elementor)
   Markup sem estilos inline: <address class="tkt-contacts">.
   Sem container queries: a coluna alinha o widget ao início, a largura dele
   vem do conteúdo e a containment reduzia-o a 0 px.
   ========================================================================== */

.tkt-contacts {
    --tkt-contacts-dot: 14px;
    --tkt-contacts-indent: 24px;
    --tkt-contacts-icon: 24px;
    margin: 0;
    color: var(--ticket-color-text);
    font-size: var(--ticket-font-size-16);
    font-style: normal;
    line-height: 1.5;
}

.tkt-contacts__offices {
    display: grid;
    gap: 36px;
    margin: 0;
    padding: 0;
    list-style: none;
}

/* O Astra repõe margens e recuo das listas dentro de .entry-content. */
.entry-content .tkt-contacts__offices {
    margin: 0;
    padding: 0;
}

.tkt-contacts__office {
    position: relative;
    margin: 0;
    padding-left: var(--tkt-contacts-indent);
}

.tkt-contacts__office::before {
    position: absolute;
    top: .6em;
    left: 0;
    width: var(--tkt-contacts-dot);
    height: var(--tkt-contacts-dot);
    border-radius: 50%;
    background: var(--ticket-color-red);
    content: "";
    transform: translateY(-50%);
}

.tkt-contacts__name {
    display: block;
    color: var(--ticket-color-heading);
    font-weight: var(--ticket-font-weight-bold);
    line-height: 1.2;
}

/* Texto corrido do design system (14/18), para as moradas não quebrarem nos hífenes. */
.tkt-contacts__address {
    display: block;
    margin-top: 4px;
    font-size: var(--ticket-font-size-14);
    line-height: var(--ticket-line-height-18);
}

.tkt-contacts__channels {
    display: flex;
    flex-wrap: wrap;
    gap: 18px 40px;
    margin-top: 56px;
}

.tkt-contacts__link {
    display: inline-flex;
    align-items: center;
    gap: 14px;
    color: var(--ticket-color-link);
    text-decoration: none;
    transition: color var(--ticket-transition-fast);
}

.tkt-contacts__link:hover,
.tkt-contacts__link:focus-visible {
    color: var(--ticket-color-link-hover);
}

.tkt-contacts__link:focus-visible {
    border-radius: var(--ticket-radius-control);
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: 4px;
}

/* O email quebra no <wbr> após o @ numa coluna estreita; o telefone nunca. */
.tkt-contacts__link span {
    min-width: 0;
    overflow-wrap: anywhere;
}

.tkt-contacts__link[href^="tel:"] span {
    white-space: nowrap;
}

.tkt-contacts__link:hover span {
    text-decoration: underline;
    text-underline-offset: 3px;
}

.tkt-contacts__icon {
    flex: none;
    width: var(--tkt-contacts-icon);
    height: var(--tkt-contacts-icon);
    fill: none;
    stroke: currentColor;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

/* Tablet: com a grelha atual do Elementor (coluna a 30% e padding de 50 px)
   ficam menos de ~130 px úteis. */
@media (min-width: 768px) and (max-width: 1024px) {
    .tkt-contacts {
        --tkt-contacts-dot: 10px;
        --tkt-contacts-indent: 18px;
        --tkt-contacts-icon: 20px;
        font-size: var(--ticket-font-size-14);
    }

    .tkt-contacts__offices {
        gap: 24px;
    }

    .tkt-contacts__address {
        font-size: var(--ticket-font-size-13);
        line-height: var(--ticket-line-height-16);
    }

    .tkt-contacts__channels {
        gap: 14px;
        margin-top: 32px;
    }

    .tkt-contacts__link {
        gap: 10px;
    }

    .tkt-contacts__name {
        hyphens: auto;
    }
}

.titulo-centro::after {
	content:"";
	display:block; 
	width:72px; 
	height:4px; 
	background:var(--ticket-color-red); 
	margin:4px auto 0; 
}
.titulo-esq::after { 
	content:""; 
	display:block; 
	width:72px; 
	height:4px; 
	background:var(--ticket-color-red); 
	margin:4px 0 0; 
}

/* Lista de áreas do Grupo Trivalor ---------------------------------------- */
.tkt-story__benefits {
    --tkt-benefit-columns: 3;
    --tkt-benefit-color: var(--ticket-color-white);
    --tkt-benefit-weight: 700;
    --tkt-benefit-dot-size: 7px;
    display: grid;
    grid-template-columns: repeat(var(--tkt-benefit-columns), minmax(0, 1fr));
    gap: 38px clamp(42px, 7vw, 100px);
    margin: 44px 0;
    padding: 0;
    list-style: none;
}

.entry-content .tkt-story__benefits {
    padding-left: 0;
}

.tkt-story__benefits li {
    position: relative;
    margin: 0;
    padding-left: 20px;
    color: var(--tkt-benefit-color);
    font-size: 16px;
    font-weight: var(--tkt-benefit-weight);
    line-height: 1.35;
}

.tkt-story__benefits li::before {
    position: absolute;
    top: 0.675em;
    left: 0;
    width: var(--tkt-benefit-dot-size);
    height: var(--tkt-benefit-dot-size);
    border-radius: 50%;
    background: var(--ticket-color-red);
    content: "";
    transform: translateY(-50%);
}

@media (max-width: 1200px) {
    .tkt-story__benefits {
        --tkt-benefit-columns: 2;
        gap: 28px 48px;
    }
}

@media (max-width: 767px) {
    .tkt-story__benefits {
        --tkt-benefit-columns: 1;
        gap: 18px;
        margin-block: 32px;
    }

    .tkt-story__benefits li {
        font-size: 15px;
    }
}

/* =========================================================
   TICKET - CARDS
   Widget HTML Elementor
   ========================================================= */

.ticket-solutions {
    width: 100%;

    --ticket-blue: #005189;
    --ticket-blue-hover: #03426D;
    --ticket-white: #FFFFFF;
}

.ticket-solutions *,
.ticket-solutions *::before,
.ticket-solutions *::after {
    box-sizing: border-box;
}


/* =========================================================
   GRID
   ========================================================= */

.ticket-solutions__grid {
    display: grid;

    grid-template-columns: repeat(3, minmax(0, 1fr));

    width: 100%;

    gap: 22px;
}


/* =========================================================
   CARD
   ========================================================= */

.ticket-card {
    position: relative;

    display: flex;
    flex-direction: column;

    width: 100%;
    min-width: 0;



    padding: 30px 30px 26px;

    overflow: hidden;

    color: #FFFFFF;

    background:
        linear-gradient(
            145deg,
            #005189 0%,
            #005B94 55%,
            #0874AC 100%
        );
}


/* ligeiro efeito luminoso */

.ticket-card::after {
    content: "";

    position: absolute;



    background:
        radial-gradient(
            circle,
            rgba(255,255,255,0.07) 0%,
            rgba(255,255,255,0) 70%
        );

    pointer-events: none;
}


/* =========================================================
   HEADER
   ========================================================= */

.ticket-card__header {
    position: relative;
    z-index: 2;

    display: flex;
    align-items: flex-start;
    justify-content: space-between;

    width: 100%;

    gap: clamp(16px, 1.4vw, 24px);

    /*
     * Espaçamento ligeiramente menor entre
     * logo/ícone e texto.
     */
    margin-bottom: clamp(20px, 1.5vw, 28px);
}


/* =========================================================
   LOGO TICKET + NOME DO PRODUTO
   Maior e responsivo
   ========================================================= */

.ticket-card__product-logo {
    display: block;

    width: auto;

    /*
     * Em vez dos antigos 62px,
     * o logo pode crescer até 80px de altura.
     */
    height: clamp(64px, 4.5vw, 80px);

    max-width: 62%;
    max-height: none;

    object-fit: contain;
    object-position: left top;

    flex-shrink: 1;
}


/* =========================================================
   ÍCONE SUPERIOR DIREITO
   Maior e responsivo
   ========================================================= */

.ticket-card__icon {
    display: block;

    width: clamp(54px, 4vw, 72px);
    height: clamp(54px, 4vw, 72px);

    min-width: clamp(54px, 4vw, 72px);

    object-fit: contain;
    object-position: center;

    flex:
        0
        0
        clamp(54px, 4vw, 72px);
}


/* =========================================================
   CONTEÚDO
   ========================================================= */

.ticket-card__content {
    position: relative;
    z-index: 2;

    /*
     * Mantém os botões alinhados no fundo.
     */
    flex: 1;

    width: 100%;
    min-width: 0;
}


/* =========================================================
   TEXTO
   Responsivo com clamp()
   ========================================================= */

.ticket-card__text {
    margin: 0;

    font-family: "Montserrat", Arial, sans-serif;

    font-style: normal;
    font-weight: 400;

    /*
     * Desktop:
     * mínimo 15px
     * fluido conforme o ecrã
     * máximo 21px
     */
    font-size: clamp(15px, 1vw, 16px);

    /*
     * Line-height também fluido.
     */
    line-height: clamp(23px, 1.65vw, 30px);

    letter-spacing: 0;

    color: #FFFFFF;
}


/* =========================================================
   FOOTER
   ========================================================= */

.ticket-card__footer {
    position: relative;
    z-index: 2;

    width: 100%;

    /*
     * Antes era sempre 28px.
     * Agora adapta-se e aproxima ligeiramente
     * o botão do conteúdo.
     */
    margin-top: clamp(14px, 1.2vw, 22px);
}


/* =========================================================
   BOTÃO SABER MAIS
   ========================================================= */

.ticket-card__button {
    display: flex;

    align-items: center;
    justify-content: center;

    width: 100%;

    min-height: clamp(48px, 3.1vw, 54px);

    padding:
        clamp(12px, 0.8vw, 14px)
        20px;

    border: 1px solid #FFFFFF;
    border-radius: 2px;

    background: transparent;

    color: #FFFFFF;

    font-family: "Montserrat", Arial, sans-serif;

    font-size: clamp(13px, 0.9vw, 16px);
    line-height: 1.2;

    font-weight: 700;

    text-align: center;
    text-decoration: none;

    transition:
        background-color 0.2s ease,
        color 0.2s ease,
        border-color 0.2s ease;
}


/* hover */

.ticket-card__button:hover,
.ticket-card__button:focus {
    background: #FFFFFF;

    color: #005189;

    border-color: #FFFFFF;

    text-decoration: none;
}


/* =========================================================
   TABLET
   2 COLUNAS
   ========================================================= */

@media (max-width: 1024px) {

    .ticket-solutions__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));

        gap: 20px;
    }


    .ticket-card {
        padding: 28px 26px 24px;
    }


    .ticket-card__header {
        gap: clamp(16px, 2vw, 22px);

        margin-bottom: clamp(20px, 2.5vw, 26px);
    }


    .ticket-card__product-logo {
        height: clamp(62px, 7vw, 76px);

        max-width: 62%;
    }


    .ticket-card__icon {
        width: clamp(52px, 6vw, 66px);
        height: clamp(52px, 6vw, 66px);

        min-width: clamp(52px, 6vw, 66px);

        flex-basis: clamp(52px, 6vw, 66px);
    }


    .ticket-card__text {
        font-size: clamp(15px, 1.75vw, 18px);

        line-height: clamp(23px, 2.55vw, 27px);
    }


    .ticket-card__footer {
        margin-top: clamp(14px, 2vw, 20px);
    }


    .ticket-card__button {
        font-size: clamp(13px, 1.5vw, 15px);
    }

}


/* =========================================================
   MOBILE
   1 COLUNA
   ========================================================= */

@media (max-width: 767px) {

    .ticket-solutions__grid {
        grid-template-columns: 1fr;

        gap: 18px;
    }


    .ticket-card {
        /*
         * Mantemos a tua regra original:
         * sem aspect-ratio fixo no mobile.
         */
        aspect-ratio: auto;

        min-height: 390px;

        padding: 26px 24px 22px;
    }


    .ticket-card__header {
        gap: clamp(14px, 4vw, 20px);

        margin-bottom: clamp(18px, 5vw, 24px);
    }


    .ticket-card__product-logo {
        /*
         * Cresce proporcionalmente no mobile.
         */
        height: clamp(62px, 18vw, 74px);

        max-width: 62%;
    }


    .ticket-card__icon {
        width: clamp(50px, 14vw, 62px);
        height: clamp(50px, 14vw, 62px);

        min-width: clamp(50px, 14vw, 62px);

        flex-basis: clamp(50px, 14vw, 62px);
    }


    .ticket-card__text {
        font-size: clamp(14px, 4vw, 17px);

        line-height: clamp(21px, 6vw, 26px);
    }


    .ticket-card__footer {
        margin-top: clamp(14px, 4vw, 18px);
    }


    .ticket-card__button {
        min-height: clamp(48px, 13vw, 54px);

        font-size: clamp(13px, 3.8vw, 15px);
    }

}


/* =========================================================
   MOBILE PEQUENO
   ========================================================= */

@media (max-width: 420px) {

    .ticket-card {
        min-height: 380px;

        padding: 24px 21px 20px;
    }


    .ticket-card__header {
        gap: 14px;

        margin-bottom: 18px;
    }


    .ticket-card__product-logo {
        height: clamp(58px, 17vw, 68px);

        max-width: 62%;
    }


    .ticket-card__icon {
        width: clamp(48px, 13vw, 54px);
        height: clamp(48px, 13vw, 54px);

        min-width: clamp(48px, 13vw, 54px);

        flex-basis: clamp(48px, 13vw, 54px);
    }


    .ticket-card__text {
        font-size: clamp(14px, 4.2vw, 16px);

        line-height: clamp(21px, 6vw, 24px);
    }


    .ticket-card__footer {
        margin-top: 14px;
    }


    .ticket-card__button {
        font-size: clamp(13px, 3.8vw, 14px);
    }

}


/* ==========================================================================
   Página 404 (404.php)
   ========================================================================== */

/* #primary: as regras do Astra para #primary limitam a largura e o espaçamento. */
#primary.ticket-404 {
    flex: 1 1 100%;
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0;
    color: var(--ticket-color-text);
    font-family: var(--ticket-font-family);
}

.ticket-404__shell {
    width: min(100%, var(--ticket-content-width));
    margin-inline: auto;
    padding-inline: var(--ticket-content-gutter);
}

.ticket-404__intro {
    padding-block: clamp(56px, 8vw, 104px);
    background: var(--ticket-color-surface-soft);
    text-align: center;
}

.ticket-404__intro .ticket-404__shell {
    max-width: 820px;
}

.ticket-404__code {
    margin: 0 0 8px;
    color: var(--ticket-color-red);
    font-size: clamp(56px, 9vw, 96px);
    font-weight: var(--ticket-font-weight-bold);
    line-height: 1;
}

.ticket-404__title {
    position: relative;
    margin: 0 0 24px;
    padding-bottom: 16px;
    color: var(--ticket-color-heading);
    font-size: clamp(28px, 3vw, 38px);
    font-weight: var(--ticket-font-weight-bold);
    line-height: 1.2;
}

.ticket-404__title::after {
    position: absolute;
    bottom: 0;
    left: 50%;
    width: 58px;
    height: 4px;
    background: var(--ticket-color-red);
    content: "";
    transform: translateX(-50%);
}

.ticket-404__text {
    margin: 0 auto 32px;
    font-size: 16px;
    line-height: 1.7;
}

.ticket-404__search {
    margin: 0 auto 32px;
    text-align: left;
}

.ticket-404__search-label {
    display: block;
    margin-bottom: 8px;
    color: var(--ticket-color-heading);
    font-size: 14px;
    font-weight: var(--ticket-font-weight-bold);
}

.ticket-404__search-row {
    display: flex;
}

.ticket-404 .ticket-404__search-input {
    flex: 1 1 auto;
    min-width: 0;
    min-height: 52px;
    margin: 0;
    padding: 12px 18px;
    border: 1px solid var(--ticket-color-border);
    border-right: 0;
    border-radius: var(--ticket-radius-control) 0 0 var(--ticket-radius-control);
    background: var(--ticket-color-white);
    color: var(--ticket-color-text);
    font-size: 15px;
}

.ticket-404 .ticket-404__search-input:focus {
    outline: 2px solid var(--ticket-color-focus);
    outline-offset: -2px;
}

.ticket-404 .ticket-404__search-button {
    min-height: 52px;
    margin: 0;
    padding: 12px 26px;
    border: 0;
    border-radius: 0 var(--ticket-radius-control) var(--ticket-radius-control) 0;
    background: var(--ticket-color-red);
    color: var(--ticket-color-white);
    font-size: 14px;
    font-weight: var(--ticket-font-weight-bold);
    cursor: pointer;
    transition: background-color var(--ticket-transition-fast);
}

.ticket-404 .ticket-404__search-button:hover,
.ticket-404 .ticket-404__search-button:focus-visible {
    background: var(--ticket-color-red-hover);
}

.ticket-404__links {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
}

.ticket-404 .ticket-404__button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 160px;
    min-height: 48px;
    padding: 12px 24px;
    border: 1px solid transparent;
    border-radius: var(--ticket-radius-control);
    font-size: 14px;
    font-weight: var(--ticket-font-weight-bold);
    text-decoration: none;
    transition: background-color var(--ticket-transition-fast), border-color var(--ticket-transition-fast);
}

.ticket-404__home {
    margin: 28px 0 0;
    font-size: 14px;
}

.ticket-404__home a {
    color: var(--ticket-color-link);
    text-decoration: underline;
}

.ticket-404__home a:hover,
.ticket-404__home a:focus-visible {
    color: var(--ticket-color-link-hover);
}

.ticket-404__benefits {
    padding-block: clamp(48px, 6vw, 80px);
    background: var(--ticket-color-white);
}

.ticket-404__subtitle {
    margin: 0 0 32px;
    color: var(--ticket-color-heading);
    font-size: clamp(24px, 2.4vw, 30px);
    font-weight: var(--ticket-font-weight-bold);
    line-height: 1.2;
    text-align: center;
}


@media (max-width: 767px) {

    .ticket-404__links {
        flex-direction: column;
        align-items: stretch;
    }


    .ticket-404 .ticket-404__button {
        width: 100%;
    }


    .ticket-404 .ticket-404__search-button {
        padding-inline: 16px;
    }

}
