/* ==========================================================================
   BMUP — Área de membro
   ==========================================================================

   A moldura (barra lateral escura + cabeçalho branco) e o Diretório.

   Medido em design-reference/src/app/components/layouts/DashboardLayout.tsx
   e .../pages/dashboard/DashboardDirectory.tsx.

   NOMES: tudo debaixo de .bmup-membro__ ou .bmup-dir__ / .bmup-anuncio__.
   Os quatro ficheiros de CSS carregam em TODAS as páginas do site — a
   separação em ficheiros não isola nada. Já colidimos duas vezes com nomes
   curtos (.bmup-passos, .bmup-passo). Ver ferramentas/colisoes.py.
   ========================================================================== */

.bmup-membro {
    /* O fundo da zona de conteúdo. Não é o --bmup-cinza-50 (#fafafa): o
       desenho usa #f8f9fa, meio ponto mais azulado. */
    --membro-fundo:     #f8f9fa;
    --membro-lateral:   var(--bmup-preto);
    --membro-borda:     var(--bmup-cinza-800);
    --membro-largura:   18rem;   /* w-72 */
    --membro-topo:      5rem;    /* h-20 */

    display: flex;
    min-height: 100vh;
    background: var(--membro-fundo);
    font-family: var(--bmup-font-corpo);
    color: var(--bmup-cinza-900);
}


/* ==========================================================================
   BARRA LATERAL
   ========================================================================== */

.bmup-membro__lateral {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 50;
    display: flex;
    flex-direction: column;
    width: var(--membro-largura);
    height: 100vh;
    background: var(--membro-lateral);
    color: var(--bmup-cinza-400);
    border-right: 1px solid var(--membro-borda);
    transform: translateX(-100%);
    transition: transform .3s ease-in-out;
}

.bmup-membro__lateral.esta-aberta { transform: translateX(0); }

.bmup-membro__cortina {
    position: fixed;
    inset: 0;
    z-index: 40;
    background: rgba(10, 10, 10, .4);
    backdrop-filter: blur(4px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .3s;
}

.bmup-membro__cortina.esta-aberta {
    opacity: 1;
    pointer-events: auto;
}

/* --- marca --- */

.bmup-membro__marca {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: var(--membro-topo);
    padding-inline: 1.5rem;
    border-bottom: 1px solid rgba(39, 39, 42, .6);
    flex-shrink: 0;
}

.bmup-membro__marca a {
    display: inline-flex;
    align-items: center;
    text-decoration: none;
}

/* O logótipo como no desenho: 48px de altura (h-12 na design reference de
   2026-09-25; era h-8), cresce 5% ao passar o rato */
.bmup-membro__marca img {
    display: block;
    width: auto;
    height: 3rem;
    object-fit: contain;
    transition: transform .3s;
}
.bmup-membro__marca a:hover img { transform: scale(1.05); }

.bmup-membro__fechar {
    display: inline-flex;
    padding: .5rem;
    border: 0;
    background: none;
    color: var(--bmup-cinza-500);
    cursor: pointer;
}

.bmup-membro__fechar:hover { color: var(--bmup-branco); }

/* --- quem está autenticado --- */

.bmup-membro__perfil {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 2rem 1.5rem;
    border-bottom: 1px solid rgba(39, 39, 42, .6);
    flex-shrink: 0;
}

/* O anel de cobre à volta da fotografia: um gradiente de 2px que se vê por
   baixo de um círculo preto ligeiramente menor. */
.bmup-membro__avatar {
    width: 3rem;
    height: 3rem;
    padding: 2px;
    border-radius: 50%;
    background: linear-gradient(to top right, var(--bmup-cobre), var(--bmup-cobre-claro));
    flex-shrink: 0;
}

.bmup-membro__avatar span,
.bmup-membro__avatar img {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background: var(--bmup-preto);
    color: var(--bmup-cobre-claro);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    object-fit: cover;
}

.bmup-membro__quem { min-width: 0; }

.bmup-membro__nome {
    margin: 0;
    font-family: var(--bmup-font-corpo);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-branco);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bmup-membro__plano {
    margin: .125rem 0 0;
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cobre);
}

/* --- navegação --- */

.bmup-membro__nav {
    flex: 1;
    padding: 1.5rem 1rem;
    overflow-y: auto;
}

.bmup-membro__nav-titulo {
    padding: 0 .75rem .5rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cinza-600);
}

.bmup-membro__link {
    position: relative;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .625rem .75rem;
    margin-bottom: .375rem;
    border-radius: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-400);
    text-decoration: none;
    transition: background-color .2s, color .2s;
}

.bmup-membro__link svg {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--bmup-cinza-500);
    flex-shrink: 0;
    transition: color .2s;
}

.bmup-membro__link:hover {
    background: rgba(39, 39, 42, .3);
    color: var(--bmup-branco);
}

.bmup-membro__link:hover svg { color: var(--bmup-cinza-300); }

.bmup-membro__link--activo,
.bmup-membro__link--activo:hover {
    background: rgba(39, 39, 42, .5);
    color: var(--bmup-branco);
}

.bmup-membro__link--activo svg,
.bmup-membro__link--activo:hover svg { color: var(--bmup-cobre); }

/* A barra de cobre colada à esquerda do item activo. */
.bmup-membro__link--activo::before {
    content: '';
    position: absolute;
    left: 0;
    top: 50%;
    transform: translateY(-50%);
    width: .25rem;
    height: 1.5rem;
    border-radius: 0 9999px 9999px 0;
    background: var(--bmup-cobre);
}

/* Entradas ainda por construir: visíveis mas sem link, como o desenho faz na
   lista de serviços do Perfil ("Upgrade necessário"). Esconder dava uma barra
   lateral que muda de tamanho à medida que se constrói. */
.bmup-membro__link--breve {
    opacity: .45;
    cursor: default;
    pointer-events: none;
}

.bmup-membro__breve {
    margin-left: auto;
    font-size: .625rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmup-cinza-600);
}

/* --- sair --- */

.bmup-membro__sair-caixa {
    padding: 1rem;
    border-top: 1px solid rgba(39, 39, 42, .6);
    flex-shrink: 0;
}

.bmup-membro__sair {
    display: flex;
    align-items: center;
    gap: .75rem;
    width: 100%;
    padding: .75rem;
    border-radius: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-400);
    text-decoration: none;
    transition: background-color .2s, color .2s;
}

.bmup-membro__sair svg {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--bmup-cinza-500);
}

.bmup-membro__sair:hover {
    background: rgba(39, 39, 42, .5);
    color: var(--bmup-branco);
}


/* ==========================================================================
   ZONA PRINCIPAL
   ========================================================================== */

.bmup-membro__principal {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    width: 100%;
}

.bmup-membro__topo {
    position: sticky;
    top: 0;
    z-index: 10;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    height: var(--membro-topo);
    padding-inline: 1rem;
    background: var(--bmup-branco);
    border-bottom: 1px solid var(--bmup-cinza-200);
    flex-shrink: 0;
}

.bmup-membro__abrir {
    display: inline-flex;
    padding: .625rem;
    margin-left: -.5rem;
    border: 0;
    border-radius: .75rem;
    background: none;
    color: var(--bmup-cinza-500);
    cursor: pointer;
}

.bmup-membro__abrir:hover { background: var(--bmup-cinza-100); }

.bmup-membro__migalhas {
    display: none;
    align-items: center;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
}

.bmup-membro__migalhas b {
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-900);
}

.bmup-membro__migalhas svg {
    width: 1rem;
    height: 1rem;
    margin-inline: .5rem;
    color: var(--bmup-cinza-300);
}

/* No telemóvel as migalhas dão lugar ao título simples. */
.bmup-membro__titulo-movel {
    margin: 0;
    font-size: 1.125rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-membro__accoes {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-left: auto;
}

.bmup-membro__pesquisa {
    display: none;
    position: relative;
}

.bmup-membro__pesquisa svg {
    position: absolute;
    left: .75rem;
    top: 50%;
    transform: translateY(-50%);
    width: 1rem;
    height: 1rem;
    color: var(--bmup-cinza-400);
    pointer-events: none;
}

.bmup-membro__pesquisa input {
    width: 16rem;
    padding: .5rem 1rem .5rem 2.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 9999px;
    background: var(--bmup-cinza-50);
    font: inherit;
    font-size: .875rem;
    color: var(--bmup-cinza-900);
    outline: none;
    transition: border-color .2s, background-color .2s, box-shadow .2s;
}

.bmup-membro__pesquisa input:focus {
    border-color: var(--bmup-cobre);
    background: var(--bmup-branco);
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .2);
}

.bmup-membro__sino {
    position: relative;
    display: inline-flex;
    padding: .5rem;
    border: 0;
    border-radius: 50%;
    background: none;
    color: var(--bmup-cinza-500);
    cursor: pointer;
}

.bmup-membro__sino:hover { background: var(--bmup-cinza-100); }
.bmup-membro__sino svg { width: 1.25rem; height: 1.25rem; }

.bmup-membro__sino--novo::after {
    content: '';
    position: absolute;
    top: .375rem;
    right: .375rem;
    width: .5rem;
    height: .5rem;
    border: 2px solid var(--bmup-branco);
    border-radius: 50%;
    background: #ef4444;
}

.bmup-membro__conta {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: .375rem .75rem .375rem .375rem;
    border: 1px solid transparent;
    border-radius: 9999px;
    text-decoration: none;
    transition: background-color .2s, border-color .2s;
}

.bmup-membro__conta:hover {
    background: var(--bmup-cinza-50);
    border-color: var(--bmup-cinza-200);
}

.bmup-membro__conta-foto {
    object-fit: cover;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 50%;
    background: var(--bmup-preto);
    color: var(--bmup-cobre-claro);
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    flex-shrink: 0;
}

/* A fotografia (2026-10-08): o ".bmup img { height: auto }" do bmup.css pesa
   mais do que uma classe só, e uma foto ao comprido ficava oval. */
.bmup-membro__conta img.bmup-membro__conta-foto {
    height: 2rem;
    max-width: none;
}

.bmup-membro__conta-texto { display: none; line-height: 1.2; }

.bmup-membro__conta-nome {
    margin: 0;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-membro__conta-plano {
    margin: 0;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
}

.bmup-membro__corpo {
    flex: 1;
    padding: 1rem;
}

.bmup-membro__dentro {
    width: 100%;
    max-width: 72rem;   /* max-w-6xl */
    margin-inline: auto;
    /* A entrada de cada página, como no DashboardLayout.tsx (motion.div:
       opacity 0 -> 1, y 14 -> 0, 0.35s easeOut). Só `backwards`: acabada a
       animação não fica transform nenhum — um transform aqui passava a ser o
       contentor de tudo o que é position: fixed lá dentro. */
    animation: bmup-membro-entra .35s ease-out backwards;
}

@keyframes bmup-membro-entra {
    from { opacity: 0; transform: translateY(14px); }
}

@media (prefers-reduced-motion: reduce) {
    .bmup-membro__dentro { animation: none; }
}


/* ==========================================================================
   DIRECTÓRIO
   ========================================================================== */

.bmup-dir__cabecalho {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin-bottom: 1.5rem;
}

.bmup-dir__cabecalho h2 {
    margin: 0;
    /* Sem serifa, como no desenho (medido: ui-sans-serif 24px 700) */
    font-family: var(--bmup-font-corpo);
    font-size: 1.5rem;
    font-weight: var(--bmup-peso-forte);
    letter-spacing: -.02em;
    color: var(--bmup-cinza-800);
}

.bmup-dir__cabecalho p {
    margin: .25rem 0 0;
    color: var(--bmup-cinza-500);
}

.bmup-dir__contador {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    align-self: flex-start;
    padding: .5rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
}

.bmup-dir__contador::before {
    content: '';
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: #22c55e;
}

/* --- separadores --- */

.bmup-dir__separadores {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .25rem;
    margin-bottom: 1.5rem;
    border-radius: .75rem;
    background: var(--bmup-cinza-100);
}

.bmup-dir__separador {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .5rem 1.25rem;
    border-radius: .5rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-500);
    text-decoration: none;
    transition: background-color .2s, color .2s;
}

.bmup-dir__separador:hover { color: var(--bmup-cinza-800); }

.bmup-dir__separador--activo,
.bmup-dir__separador--activo:hover {
    background: var(--bmup-branco);
    color: var(--bmup-cinza-900);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .06);
}

.bmup-dir__conta {
    padding: .125rem .375rem;
    border-radius: 9999px;
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
    font-size: .75rem;
}

/* --- barra de pesquisa e filtros --- */

.bmup-dir__barra {
    padding: 1rem;
    margin-bottom: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

/* A linha de cima da barra: a pesquisa a ocupar o que sobra, e à direita o
   botão dos Filtros e a troca grelha/lista (DashboardDirectory.tsx:207). */
.bmup-dir__linha {
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.bmup-dir__procura {
    display: flex;
    flex: 1;
    min-width: 0;
}

.bmup-dir__campo {
    position: relative;
    flex: 1;
}

.bmup-dir__campo svg {
    position: absolute;
    left: .875rem;
    top: 50%;
    transform: translateY(-50%);
    width: 1rem;
    height: 1rem;
    color: var(--bmup-cinza-400);
    pointer-events: none;
}

.bmup-dir__campo input {
    -webkit-appearance: none;
            appearance: none;
    width: 100%;
    padding: .625rem 1rem .625rem 2.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
    font: inherit;
    font-size: .875rem;
    color: var(--bmup-cinza-900);
    outline: none;
    transition: border-color .2s, background-color .2s, box-shadow .2s;
}

.bmup-dir__campo input:focus {
    border-color: var(--bmup-cobre);
    background: var(--bmup-branco);
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .3);
}

.bmup-dir__botoes {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.bmup-dir__campo input::-webkit-search-cancel-button { cursor: pointer; }

/* "Filtros" — contorno claro fechado, preto aberto */
.bmup-dir__filtrar {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .625rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-branco);
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
    text-decoration: none;
    white-space: nowrap;
    transition: background-color .2s, border-color .2s, color .2s;
}

.bmup-dir__filtrar:hover { background: var(--bmup-cinza-50); }
.bmup-dir__filtrar svg { width: .9375rem; height: .9375rem; }

.bmup-dir__filtrar.is-aberto,
.bmup-dir__filtrar.is-aberto:hover {
    border-color: var(--bmup-preto);
    background: var(--bmup-preto);
    color: var(--bmup-branco);
}

/* Quantos filtros estão escolhidos, para se saber com o painel fechado */
.bmup-dir__filtrar-conta {
    min-width: 1.125rem;
    padding: 0 .3rem;
    border-radius: 9999px;
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
    font-size: .6875rem;
    line-height: 1.125rem;
    text-align: center;
}

/* Grelha / lista */
.bmup-dir__vistas {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    padding: .25rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
}

.bmup-dir__vista {
    display: inline-flex;
    padding: .5rem;
    border-radius: .5rem;
    color: var(--bmup-cinza-400);
    transition: background-color .2s, color .2s, box-shadow .2s;
}

.bmup-dir__vista:hover { color: var(--bmup-cinza-700); }
.bmup-dir__vista svg { width: .9375rem; height: .9375rem; }

.bmup-dir__vista.is-activa,
.bmup-dir__vista.is-activa:hover {
    background: var(--bmup-branco);
    color: var(--bmup-cinza-900);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .06);
}

.bmup-dir__submeter {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .625rem 1rem;
    border: 1px solid var(--bmup-preto);
    border-radius: .75rem;
    background: var(--bmup-preto);
    color: var(--bmup-branco);
    font: inherit;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    cursor: pointer;
    transition: background-color .2s;
}

.bmup-dir__submeter:hover { background: var(--bmup-cobre); border-color: var(--bmup-cobre); }
.bmup-dir__submeter svg { width: .9375rem; height: .9375rem; }

.bmup-dir__filtros {
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--bmup-cinza-100);
}

.bmup-dir__filtros[hidden] { display: none; }

.bmup-dir__grupo + .bmup-dir__grupo { margin-top: 1rem; }

.bmup-dir__grupo p {
    margin: 0 0 .625rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cinza-500);
}

.bmup-dir__pilulas {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.bmup-dir__pilula {
    padding: .375rem .875rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 9999px;
    background: var(--bmup-branco);
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-600);
    text-decoration: none;
    transition: border-color .2s, background-color .2s, color .2s;
}

.bmup-dir__pilula:hover { border-color: var(--bmup-cinza-300); }

.bmup-dir__pilula--activa,
.bmup-dir__pilula--activa:hover {
    border-color: var(--bmup-cobre);
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
}

/* A localização escolhida é a preto — no desenho a categoria é cobre e a
   localização preta, para não se confundirem as duas linhas. */
.bmup-dir__pilula--local.bmup-dir__pilula--activa,
.bmup-dir__pilula--local.bmup-dir__pilula--activa:hover {
    border-color: var(--bmup-preto);
    background: var(--bmup-preto);
}

.bmup-dir__limpar {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    margin-top: 1rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: #ef4444;
    text-decoration: none;
}

.bmup-dir__limpar:hover { color: #b91c1c; }
.bmup-dir__limpar svg { width: .8125rem; height: .8125rem; }

/* --- cabeçalho dos resultados --- */

.bmup-dir__resultados {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1.5rem;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-dir__resultados { flex-wrap: wrap; }
/* Numa linha só; no telemóvel é o Ordenar que desce, não o texto que parte. */
.bmup-dir__resultados p { margin: 0; white-space: nowrap; }
.bmup-dir__resultados b { font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }

.bmup-dir__ordenar {
    display: flex;
    align-items: center;
    gap: .5rem;
}

.bmup-dir__ordenar label { color: var(--bmup-cinza-400); }

.bmup-dir__ordenar-caixa { position: relative; display: inline-flex; }

.bmup-dir__ordenar-caixa svg {
    position: absolute;
    right: .625rem;
    top: 50%;
    width: .8125rem;
    height: .8125rem;
    transform: translateY(-50%) rotate(90deg);
    color: var(--bmup-cinza-400);
    pointer-events: none;
}

.bmup-dir__ordenar-ok {
    padding: .375rem .75rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .5rem;
    background: var(--bmup-branco);
    font: inherit;
    font-size: .875rem;
    cursor: pointer;
}

.bmup-dir__ordenar select {
    -webkit-appearance: none;
            appearance: none;
    min-width: 12.75rem;
    padding: .375rem 2rem .375rem .75rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .5rem;
    background: var(--bmup-branco);
    font: inherit;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-700);
    cursor: pointer;
    outline: none;
}

.bmup-dir__ordenar select:focus { border-color: var(--bmup-cobre); }

/* --- grelha --- */

.bmup-dir__grelha {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
}

.bmup-dir__vazio {
    padding: 4rem 2rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    text-align: center;
    color: var(--bmup-cinza-500);
}

/* O ícone solto (Os Meus Anúncios vazio, Anúncio não encontrado) — como era
   antes de 2026-09-24. O Diretório usa a caixa .bmup-dir__vazio-icone. */
.bmup-dir__vazio > svg {
    width: 2.5rem;
    height: 2.5rem;
    margin-bottom: 1rem;
    color: var(--bmup-cinza-300);
}

.bmup-dir__vazio-icone + p { margin: 0; font-weight: var(--bmup-peso-medio); }

.bmup-dir__vazio-icone {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    margin: 0 auto 1rem;
    border-radius: 1rem;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-400);
}

.bmup-dir__vazio-icone svg { width: 1.375rem; height: 1.375rem; }

.bmup-dir__vazio-limpar {
    display: inline-block;
    margin-top: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cobre);
    text-decoration: none;
}

.bmup-dir__vazio-limpar:hover { color: var(--bmup-cobre-escuro, #8a5d40); }

/* --- paginação (DashboardDirectory.tsx:369) --- */

.bmup-dir__paginas {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    margin-top: 1.5rem;
    padding-top: 1rem;
}

.bmup-dir__pagina {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-700);
    text-decoration: none;
    transition: background-color .2s;
}

a.bmup-dir__pagina:hover { background: var(--bmup-cinza-50); }

.bmup-dir__pagina.is-actual {
    border-color: var(--bmup-preto);
    background: var(--bmup-preto);
    color: var(--bmup-branco);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .12);
}

.bmup-dir__pagina--seta { color: var(--bmup-cinza-500); }
.bmup-dir__pagina--seta svg { width: 1rem; height: 1rem; transform: rotate(180deg); }
.bmup-dir__pagina--seguinte svg { transform: none; }
.bmup-dir__pagina.is-desligada { opacity: .4; }

.bmup-dir__reticencias {
    padding-inline: .25rem;
    color: var(--bmup-cinza-300);
}


/* ==========================================================================
   CARTÃO DE ANÚNCIO
   ========================================================================== */

.bmup-anuncio {
    /* O relative e' para o link esticado do titulo: um ::after com inset: 0
       cobre o cartao inteiro, para se clicar em qualquer sitio sem meter um
       <a> dentro de outro <a> — o marcador de guardar ja e' um link, e links
       aninhados sao HTML invalido. */
    position: relative;
    display: flex;
    flex-direction: column;
    overflow: hidden;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    text-decoration: none;
    transition: border-color .2s, box-shadow .2s;
}

.bmup-anuncio:hover {
    border-color: var(--bmup-cinza-300);
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .07);
}

.bmup-anuncio__foto {
    position: relative;
    height: 12rem;
    overflow: hidden;
    background: var(--bmup-cinza-100);
    flex-shrink: 0;
}

.bmup-anuncio__foto img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .5s;
}

.bmup-anuncio:hover .bmup-anuncio__foto img { transform: scale(1.05); }

/* O véu que escurece a fotografia por baixo ao passar o rato (bg-gradient-to-t
   from-black/40, opacity-0 -> 100 no desenho). */
.bmup-anuncio__foto::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(to top, rgba(0, 0, 0, .4), transparent);
    opacity: 0;
    transition: opacity .2s;
    pointer-events: none;
}

.bmup-anuncio:hover .bmup-anuncio__foto::after { opacity: 1; }

/* Sem fotografia: o ícone ao centro em vez de um buraco branco. Enquanto os
   anúncios vierem da semente, é o que se vê em todos. */
.bmup-anuncio__sem-foto {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-300);
}

.bmup-anuncio__sem-foto svg { width: 2.5rem; height: 2.5rem; }

.bmup-anuncio__selo {
    position: absolute;
    top: .75rem;
    left: .75rem;
    padding: .25rem .625rem;
    border-radius: 9999px;
    background: rgba(255, 255, 255, .9);
    backdrop-filter: blur(4px);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .08);
    font-size: .75rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-anuncio__marcador {
    position: absolute;
    /* Por cima do link esticado do titulo (z-index: 1), senao era impossivel
       guardar: o clique caia sempre no cartao. */
    z-index: 2;
    top: .75rem;
    right: .75rem;
    display: inline-flex;
    padding: .5rem;
    border: 1px solid rgba(255, 255, 255, .5);
    border-radius: .75rem;
    background: rgba(255, 255, 255, .8);
    backdrop-filter: blur(4px);
    color: var(--bmup-cinza-600);
    cursor: pointer;
    transition: background-color .2s, border-color .2s, color .2s;
}

.bmup-anuncio__marcador svg { width: .8125rem; height: .8125rem; }
.bmup-anuncio__marcador:hover { background: var(--bmup-branco); }

.bmup-anuncio__marcador--guardado,
.bmup-anuncio__marcador--guardado:hover {
    border-color: var(--bmup-cobre);
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
}

.bmup-anuncio__marcador--guardado svg { fill: currentColor; }

.bmup-anuncio__corpo {
    display: flex;
    flex: 1;
    flex-direction: column;
    padding: 1rem;
}

.bmup-anuncio__cimo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
}

.bmup-anuncio__etiquetas {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .375rem;
    min-width: 0;
}

/* Arrendamento e Procura — a venda é o normal e não leva etiqueta */
.bmup-anuncio__tipo {
    padding: .125rem .5rem;
    border-radius: .375rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
}

.bmup-anuncio__tipo--arrendamento { background: #ecfdf5; color: #047857; }
.bmup-anuncio__tipo--procura      { background: rgba(172, 116, 80, .12); color: #8a5d40; }

.bmup-anuncio__categoria {
    padding: .125rem .5rem;
    border-radius: .375rem;
    background: var(--bmup-cinza-100);
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
}

.bmup-anuncio__vistas {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-anuncio__vistas svg { width: .625rem; height: .625rem; }

.bmup-anuncio__titulo {
    margin: .5rem 0 .375rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: color .2s;
}

.bmup-anuncio:hover .bmup-anuncio__titulo { color: var(--bmup-cobre); }

.bmup-anuncio__local {
    display: flex;
    align-items: center;
    gap: .25rem;
    margin: 0 0 1rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-anuncio__local svg { width: .625rem; height: .625rem; flex-shrink: 0; }

.bmup-anuncio__rodape {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    margin-top: auto;
    padding-top: .75rem;
    border-top: 1px solid var(--bmup-cinza-100);
}

.bmup-anuncio__preco {
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cobre);
}

.bmup-anuncio__ver {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-500);
    transition: color .2s;
}

.bmup-anuncio__ver svg { width: .75rem; height: .75rem; }
.bmup-anuncio:hover .bmup-anuncio__ver { color: var(--bmup-cobre); }

/* Marca o anúncio que ainda não passou pela moderação. Só aparece em
   Os Meus Anúncios — no Directório só entram os activos. */
.bmup-anuncio__estado {
    padding: .125rem .5rem;
    border-radius: .375rem;
    background: #fef3c7;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: #92400e;
}


/* ==========================================================================
   ECRÃS MAIORES
   ==========================================================================
   O ponto de quebra é o mesmo do resto do site (768px). Acima dele a barra
   lateral deixa de ser gaveta e passa a ocupar espaço na grelha.
   ========================================================================== */

@media (min-width: 768px) {

    .bmup-membro__lateral {
        position: sticky;
        transform: none;
        flex-shrink: 0;
    }

    .bmup-membro__cortina,
    .bmup-membro__fechar,
    .bmup-membro__abrir,
    .bmup-membro__titulo-movel { display: none; }

    .bmup-membro__migalhas,
    .bmup-membro__conta-texto { display: block; }

    .bmup-membro__migalhas { display: flex; }

    .bmup-membro__topo  { padding-inline: 2rem; }
    .bmup-membro__corpo { padding: 2rem; }

    .bmup-dir__cabecalho {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    .bmup-dir__contador { align-self: auto; }

    .bmup-dir__linha { flex-direction: row; align-items: center; }
}

/* Colunas como no desenho: 2 a partir do sm (640px), 3 a partir do xl
   (1280px). Com a barra lateral, 3 colunas a 1024px davam cartões de 210px. */
@media (min-width: 640px) {
    .bmup-dir__grelha { grid-template-columns: repeat(2, 1fr); }
}

@media (min-width: 1024px) {
    .bmup-membro__pesquisa { display: block; }
}

@media (min-width: 1280px) {
    .bmup-dir__grelha { grid-template-columns: repeat(3, 1fr); }
}

/* No Diretório o título do cartão é o h3 do desenho: 18px (medido). Só aqui
   — os cartões das outras páginas ficam como estão. */
.bmup-dir__grelha .bmup-anuncio__titulo { font-size: 1.125rem; }

/* --- vista em lista (DashboardDirectory.tsx:27) ---
   O mesmo cartão, deitado: a fotografia à esquerda, e no corpo o título e o
   local primeiro, a categoria e as visualizações a seguir. */
.bmup-dir__grelha.bmup-dir__grelha--lista {
    grid-template-columns: 1fr;
    gap: 1rem;
}

.bmup-dir__grelha--lista .bmup-anuncio { flex-direction: row; }

.bmup-dir__grelha--lista .bmup-anuncio__foto {
    width: 7rem;
    height: auto;
    min-height: 10rem;
}

.bmup-dir__grelha--lista .bmup-anuncio__foto img { position: absolute; inset: 0; }

/* Na fotografia estreita da lista o marcador tapava a etiqueta ("Exclusivo"):
   desce para o canto de baixo. */
.bmup-dir__grelha--lista .bmup-anuncio__marcador { top: auto; bottom: .5rem; right: .5rem; }

.bmup-dir__grelha--lista .bmup-anuncio__corpo { min-width: 0; padding: .75rem; }
.bmup-dir__grelha--lista .bmup-anuncio__titulo { order: 1; margin: 0 0 .25rem; padding-right: .5rem; font-size: .875rem; }
.bmup-dir__grelha--lista .bmup-anuncio__local  { order: 2; margin-bottom: .75rem; }
.bmup-dir__grelha--lista .bmup-anuncio__cimo   { order: 3; justify-content: flex-start; gap: .75rem; }
.bmup-dir__grelha--lista .bmup-anuncio__rodape { order: 4; margin-top: 1rem; padding-top: 1rem; }

@media (min-width: 640px) {
    .bmup-dir__grelha--lista .bmup-anuncio__titulo { font-size: 1rem; }
    .bmup-dir__grelha--lista .bmup-anuncio__foto { width: 12rem; }
    .bmup-dir__grelha--lista .bmup-anuncio__corpo { padding: 1.25rem; }
}

@media (min-width: 1280px) {
    .bmup-dir__grelha.bmup-dir__grelha--lista { grid-template-columns: 1fr; }
}


/* ==========================================================================
   VISÃO GERAL
   ==========================================================================
   Menos blocos do que o desenho, de propósito: só os que têm dados. A razão
   está no cabeçalho do views/Utilizadores/membro-painel.tpl.
   ========================================================================== */

.bmup-painel__boas-vindas {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-painel__boas-vindas h2 {
    margin: 0 0 .5rem;
    font-family: var(--bmup-font-titulo);
    font-size: 1.5rem;
    font-weight: var(--bmup-peso-forte);
    letter-spacing: -.02em;
    color: var(--bmup-cinza-900);
}

.bmup-painel__boas-vindas p {
    margin: 0;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
}

.bmup-painel__accao {
    align-self: flex-start;
    padding: .625rem 1.5rem;
    border-radius: .75rem;
    background: var(--bmup-preto-botao);
    color: var(--bmup-branco);
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    text-decoration: none;
    transition: background-color .2s;
}

.bmup-painel__accao:hover { background: var(--bmup-cobre); }

.bmup-painel__indicadores {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
    margin-bottom: 1.5rem;
}

.bmup-painel__cartao {
    display: block;
    padding: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    text-decoration: none;
    transition: box-shadow .2s, transform .2s;
}

a.bmup-painel__cartao:hover {
    box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .07);
    transform: translateY(-3px);
}

.bmup-painel__cartao--parado { cursor: default; }

.bmup-painel__icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: 1rem;
    border-radius: 1rem;
}

.bmup-painel__icone svg { width: 1.375rem; height: 1.375rem; }

.bmup-painel__icone--escuro { background: var(--bmup-preto); color: var(--bmup-branco); }
.bmup-painel__icone--cobre  { background: rgba(172, 116, 80, .1); color: var(--bmup-cobre); }
.bmup-painel__icone--claro  { background: var(--bmup-cinza-100); color: var(--bmup-cinza-600); }

.bmup-painel__cartao strong {
    display: block;
    font-size: 1.875rem;
    font-weight: var(--bmup-peso-forte);
    letter-spacing: -.02em;
    color: var(--bmup-cinza-900);
}

/* O nome do plano é texto, não um número: não leva o mesmo corpo. */
.bmup-painel__plano { font-size: 1.25rem !important; }

.bmup-painel__legenda {
    display: block;
    margin-top: .25rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
}

.bmup-painel__meus {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-painel__meus .bmup-painel__icone { margin-bottom: 0; flex-shrink: 0; }

.bmup-painel__meus h3 {
    margin: 0 0 .25rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-painel__meus p { margin: 0; font-size: .875rem; color: var(--bmup-cinza-500); }

.bmup-painel__breve {
    margin-left: auto;
    padding: .25rem .625rem;
    border-radius: 9999px;
    background: var(--bmup-cinza-100);
    font-size: .6875rem;
    font-style: normal;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmup-cinza-500);
}

@media (min-width: 768px) {

    .bmup-painel__boas-vindas {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
        padding: 2rem;
    }

    .bmup-painel__accao { align-self: auto; }

    .bmup-painel__indicadores { grid-template-columns: repeat(3, 1fr); }
}


/* ==========================================================================
   DETALHE DO ANÚNCIO
   ==========================================================================
   Corresponde ao DirectoryDetail.tsx.
   ========================================================================== */

.bmup-anuncio__titulo a {
    color: inherit;
    text-decoration: none;
}

.bmup-anuncio__titulo a::after {
    content: '';
    position: absolute;
    inset: 0;
    z-index: 1;
}

.bmup-detalhe__voltar {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: 1.5rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
    text-decoration: none;
    transition: color .2s;
}

.bmup-detalhe__voltar:hover { color: var(--bmup-cinza-900); }
.bmup-detalhe__voltar svg { width: 1rem; height: 1rem; transition: transform .2s; }
.bmup-detalhe__voltar:hover svg { transform: translateX(-2px); }


/* --- galeria --- */

.bmup-detalhe__galeria {
    display: grid;
    grid-template-columns: 1fr;
    /* A linha fica com a altura da galeria, e nem um píxel mais. Sem isto as
       três miniaturas (221px cada) esticavam a linha para 680px: a fotografia
       principal crescia com ela e a galeria cortava-a em baixo — via-se só o
       cimo da fotografia, e só duas miniaturas (2026-09-24). Assim o cover
       centra cada fotografia na sua caixa. */
    grid-template-rows: minmax(0, 1fr);
    gap: .5rem;
    height: 20rem;
    margin-bottom: 1.5rem;
    border-radius: 1rem;
    overflow: hidden;
}

.bmup-detalhe__principal {
    position: relative;
    overflow: hidden;
    background: var(--bmup-cinza-100);
}

.bmup-detalhe__principal img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    object-position: center;
}

.bmup-detalhe__miniaturas {
    display: none;
    flex-direction: column;
    gap: .5rem;
    min-height: 0;
}

/* --- a galeria a mexer (2026-09-24, DirectoryDetail.tsx:80) --- */

.bmup-detalhe__ampliar {
    display: block;
    width: 100%;
    height: 100%;
    cursor: zoom-in;
}

.bmup-detalhe__ampliar img { transition: transform .5s; }
.bmup-detalhe__principal:hover .bmup-detalhe__ampliar img { transform: scale(1.05); }

.bmup-detalhe__seta {
    position: absolute;
    top: 50%;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(0, 0, 0, .4);
    backdrop-filter: blur(4px);
    color: var(--bmup-branco);
    cursor: pointer;
    opacity: 0;
    transform: translateY(-50%);
    transition: opacity .2s, background-color .2s;
}

.bmup-detalhe__seta svg { width: 1.125rem; height: 1.125rem; }
.bmup-detalhe__seta--antes  { left: .75rem; }
.bmup-detalhe__seta--antes svg { transform: rotate(180deg); }
.bmup-detalhe__seta--depois { right: .75rem; }
.bmup-detalhe__seta:hover { background: rgba(0, 0, 0, .7); }

/* Aparecem ao passar o rato; com o teclado, quando se chega lá; num ecrã
   de toque (sem hover) ficam sempre à vista. */
.bmup-detalhe__principal:hover .bmup-detalhe__seta,
.bmup-detalhe__seta:focus-visible { opacity: 1; }

@media (hover: none) {
    .bmup-detalhe__seta { opacity: 1; }
}

.bmup-detalhe__pontos {
    position: absolute;
    bottom: .75rem;
    left: 50%;
    z-index: 1;
    display: flex;
    gap: .375rem;
    transform: translateX(-50%);
    pointer-events: none;
}

.bmup-detalhe__ponto {
    width: .375rem;
    height: .375rem;
    border-radius: 9999px;
    background: rgba(255, 255, 255, .4);
    transition: width .2s, background-color .2s;
}

.bmup-detalhe__ponto.is-actual { width: 1.5rem; background: var(--bmup-branco); }

.bmup-detalhe__principal .bmup-anuncio__selo { top: 1rem; left: 1rem; z-index: 1; pointer-events: none; }

.bmup-detalhe__foto-mini {
    position: relative;
    display: block;
    flex: 1 1 0;
    min-height: 0;
    overflow: hidden;
    border-radius: .25rem;
    opacity: .8;
    transition: opacity .2s;
}

.bmup-detalhe__foto-mini:hover { opacity: 1; }

/* A que está na grande: anel cobre, como o ring-2 do desenho */
.bmup-detalhe__foto-mini.is-actual {
    opacity: 1;
    outline: 2px solid var(--bmup-cobre);
    outline-offset: -2px;
}

.bmup-detalhe__foto-mini img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.bmup-detalhe__mais {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    background: rgba(0, 0, 0, .5);
    color: var(--bmup-branco);
    font-size: .875rem;
    font-weight: var(--bmup-peso-forte);
}

/* --- ecrã inteiro --- */

.bmup-ecra {
    width: 100vw;
    max-width: none;
    height: 100vh;
    max-height: none;
    margin: 0;
    padding: 0;
    border: 0;
    background: rgba(10, 10, 10, .96);
    color: var(--bmup-branco);
}

.bmup-ecra::backdrop { background: rgba(0, 0, 0, .6); }
.bmup-ecra[open] { display: flex; align-items: center; justify-content: center; }

.bmup-ecra__foto {
    max-width: calc(100vw - 8rem);
    max-height: calc(100vh - 7rem);
    object-fit: contain;
    border-radius: .5rem;
    user-select: none;
}

.bmup-ecra__botao {
    position: absolute;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .1);
    color: var(--bmup-branco);
    cursor: pointer;
    transition: background-color .2s;
}

.bmup-ecra__botao:hover { background: rgba(255, 255, 255, .22); }
.bmup-ecra__botao svg { width: 1.25rem; height: 1.25rem; }
.bmup-ecra__fechar { top: 1.25rem; right: 1.25rem; }
.bmup-ecra__antes  { left: 1.25rem; top: 50%; transform: translateY(-50%); }
.bmup-ecra__antes svg { transform: rotate(180deg); }
.bmup-ecra__depois { right: 1.25rem; top: 50%; transform: translateY(-50%); }

.bmup-ecra__conta {
    position: absolute;
    bottom: 1.25rem;
    left: 50%;
    transform: translateX(-50%);
    font-size: .875rem;
    font-variant-numeric: tabular-nums;
    color: rgba(255, 255, 255, .7);
}

@media (max-width: 639px) {
    .bmup-ecra__foto { max-width: 100vw; max-height: calc(100vh - 8rem); border-radius: 0; }
    .bmup-ecra__antes, .bmup-ecra__depois { top: auto; bottom: 1rem; transform: none; }
}

.bmup-detalhe__miniaturas img {
    flex: 1 1 0;
    object-position: center;
    width: 100%;
    min-height: 0;
    border-radius: .25rem;
    object-fit: cover;
}


/* --- estrutura --- */

.bmup-detalhe__grelha {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    padding-bottom: 2rem;
}

.bmup-detalhe__coluna,
.bmup-detalhe__lado {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    min-width: 0;
}

.bmup-detalhe__caixa {
    padding: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-detalhe__caixa h2 {
    margin: 0 0 1rem;
    font-family: var(--bmup-font-corpo);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cinza-900);
}


/* --- cabeçalho --- */

.bmup-detalhe__cabecalho {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}

.bmup-detalhe__etiquetas {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: .75rem;
}

.bmup-detalhe__titulo {
    margin: 0;
    font-family: var(--bmup-font-titulo);
    font-size: 1.5rem;
    font-weight: var(--bmup-peso-forte);
    letter-spacing: -.02em;
    color: var(--bmup-cinza-900);
}

.bmup-detalhe__local {
    display: flex;
    align-items: center;
    gap: .375rem;
    margin: .5rem 0 0;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-detalhe__local svg { width: .875rem; height: .875rem; color: var(--bmup-cinza-400); }

.bmup-detalhe__marcador {
    display: inline-flex;
    padding: .625rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    color: var(--bmup-cinza-500);
    transition: border-color .2s, background-color .2s, color .2s;
}

.bmup-detalhe__marcador svg { width: 1.0625rem; height: 1.0625rem; }
.bmup-detalhe__marcador:hover { border-color: var(--bmup-cobre); color: var(--bmup-cobre); }

.bmup-detalhe__marcador--guardado,
.bmup-detalhe__marcador--guardado:hover {
    border-color: var(--bmup-cobre);
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
}

.bmup-detalhe__marcador--guardado svg { fill: currentColor; }

.bmup-detalhe__texto {
    margin: 0;
    line-height: 1.75;
    color: var(--bmup-cinza-600);
}


/* --- pontos fortes --- */

.bmup-detalhe__destaques { margin: 0; padding: 0; list-style: none; }

.bmup-detalhe__destaques li {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    font-size: .875rem;
    color: var(--bmup-cinza-700);
}

.bmup-detalhe__destaques li + li { margin-top: .75rem; }

.bmup-detalhe__visto {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    margin-top: .125rem;
    border-radius: 50%;
    background: rgba(172, 116, 80, .1);
    color: var(--bmup-cobre);
    flex-shrink: 0;
}

.bmup-detalhe__visto svg { width: .6875rem; height: .6875rem; stroke-width: 3; }


/* --- ficha técnica --- */

.bmup-detalhe__ficha {
    display: grid;
    grid-template-columns: 1fr;
    margin: 0;
}

.bmup-detalhe__ficha > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem .5rem;
    border-radius: .5rem;
}

.bmup-detalhe__ficha > div:hover { background: var(--bmup-cinza-50); }

.bmup-detalhe__ficha dt { font-size: .875rem; color: var(--bmup-cinza-400); }

.bmup-detalhe__ficha dd {
    margin: 0;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
    text-align: right;
}


/* --- semelhantes --- */

.bmup-detalhe__semelhantes {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
}

.bmup-detalhe__semelhantes a {
    display: flex;
    min-width: 0;
    gap: 1rem;
    padding: .75rem;
    border: 1px solid var(--bmup-cinza-100);
    border-radius: .75rem;
    text-decoration: none;
    transition: border-color .2s, background-color .2s;
}

.bmup-detalhe__semelhantes a:hover {
    border-color: var(--bmup-cinza-200);
    background: var(--bmup-cinza-50);
}

.bmup-detalhe__miniatura {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 4rem;
    height: 4rem;
    border-radius: .5rem;
    overflow: hidden;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-300);
    flex-shrink: 0;
}

.bmup-detalhe__miniatura img { width: 100%; height: 100%; object-fit: cover; }
.bmup-detalhe__miniatura svg { width: 1.25rem; height: 1.25rem; }

.bmup-detalhe__semelhante-texto { min-width: 0; }

.bmup-detalhe__semelhante-texto b {
    display: block;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bmup-detalhe__semelhante-texto em {
    display: flex;
    align-items: center;
    gap: .25rem;
    margin-top: .125rem;
    font-size: .75rem;
    font-style: normal;
    color: var(--bmup-cinza-400);
}

.bmup-detalhe__semelhante-texto em svg { width: .625rem; height: .625rem; flex-shrink: 0; }

.bmup-detalhe__semelhante-texto strong {
    display: block;
    margin-top: .25rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cobre);
}


/* --- coluna do lado --- */

.bmup-detalhe__preco-rotulo {
    margin: 0 0 .25rem;
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cinza-400);
}

.bmup-detalhe__preco {
    margin: 0 0 1.25rem;
    font-size: 1.875rem;
    font-weight: var(--bmup-peso-forte);
    letter-spacing: -.02em;
    color: var(--bmup-cinza-900);
}

.bmup-detalhe__pedir,
.bmup-detalhe__favorito {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    padding: .75rem;
    border-radius: .75rem;
    font-size: .875rem;
    text-decoration: none;
    transition: background-color .2s, border-color .2s, color .2s;
}

.bmup-detalhe__pedir {
    background: var(--bmup-preto);
    color: var(--bmup-branco);
    font-weight: var(--bmup-peso-semi);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .05);
}

.bmup-detalhe__pedir:hover { background: var(--bmup-cobre); }

.bmup-detalhe__favorito {
    margin-top: .625rem;
    border: 1px solid var(--bmup-cinza-200);
    color: var(--bmup-cinza-700);
    font-weight: var(--bmup-peso-medio);
}

.bmup-detalhe__favorito:hover { background: var(--bmup-cinza-50); }

.bmup-detalhe__favorito--guardado {
    border-color: var(--bmup-cobre);
    color: var(--bmup-cobre);
}

.bmup-detalhe__favorito--guardado svg { fill: currentColor; }

.bmup-detalhe__pedir svg,
.bmup-detalhe__favorito svg { width: 1rem; height: 1rem; }

.bmup-detalhe__factos {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: .75rem;
}

.bmup-detalhe__factos > div {
    padding: .75rem;
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
}

.bmup-detalhe__factos p {
    margin: 0 0 .25rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-detalhe__factos b {
    font-size: .875rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-detalhe__activo {
    display: flex;
    align-items: center;
    gap: .25rem;
    color: #16a34a;
}

.bmup-detalhe__activo::before {
    content: '';
    width: .375rem;
    height: .375rem;
    border-radius: 50%;
    background: #22c55e;
}

.bmup-detalhe__vendedor > div {
    display: flex;
    align-items: center;
    gap: .75rem;
}

.bmup-detalhe__vendedor b {
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

/* A caixa de vazio serve as duas páginas: "nada encontrado" no Directório e
   "anúncio não encontrado" no detalhe. Só esta leva título. */
.bmup-dir__vazio h2 {
    margin: 0 0 .5rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1.25rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}


@media (min-width: 768px) {

    .bmup-detalhe__galeria {
        /* minmax(0, ...): sem isto a fotografia grande (1600px, dentro do
           link) impunha a sua largura e as miniaturas ficavam com 64px. */
        grid-template-columns: minmax(0, 2fr) minmax(0, 1fr);
        height: 24rem;
    }

    .bmup-detalhe__miniaturas { display: flex; }

    .bmup-detalhe__ficha { grid-template-columns: repeat(2, 1fr); }

    .bmup-detalhe__ficha > div:nth-child(odd)  { padding-right: 1.5rem; }
    .bmup-detalhe__ficha > div:nth-child(even) {
        padding-left: 1.5rem;
        border-left: 1px solid var(--bmup-cinza-100);
    }

    /* minmax(0, ...): com 1fr cada coluna não encolhia abaixo do título mais
       comprido (que não quebra linha) e a segunda saía da caixa (2026-10-08). */
    .bmup-detalhe__semelhantes { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (min-width: 1024px) {

    .bmup-detalhe__grelha { grid-template-columns: 2fr 1fr; }

}

/* A coluna do preço acompanha o scroll — a decisão de contactar toma-se a
   ler a ficha técnica, que fica bem mais abaixo.

   A COLUNA TODA, não só o cartão do preço (como no desenho): sozinho, o
   cartão passava por cima dos factos e do anunciante, que continuavam a
   deslizar por baixo dele. Só em ecrãs altos o bastante para a coluna
   caber inteira — senão o fundo dela (o anunciante) nunca se via. E por
   baixo do topo da área de membro, que também é sticky (5rem): com só
   1.5rem ficava cortada por trás dele. */
@media (min-width: 1024px) and (min-height: 820px) {   /* um investimento tem mais 2 factos (ROI, Prazo): ~690px de coluna */
    .bmup-detalhe__lado {
        position: sticky;
        top: calc(var(--membro-topo) + 1.5rem);
        align-self: start;
    }
}


/* ==========================================================================
   OS MEUS ANÚNCIOS
   ==========================================================================
   Corresponde ao MyAds.tsx.
   ========================================================================== */

.bmup-meus__criar {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    align-self: flex-start;
    padding: .625rem 1.25rem;
    border-radius: .75rem;
    background: var(--bmup-preto-botao);
    color: var(--bmup-branco);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    text-decoration: none;
    transition: background-color .2s;
}

.bmup-meus__criar:hover { background: var(--bmup-cobre); }
.bmup-meus__criar svg { width: 1.125rem; height: 1.125rem; }

/* --- avisos --- */

.bmup-meus__aviso {
    display: block;
    padding: .875rem 1.25rem;
    margin: 0 0 1.5rem;
    border: 1px solid rgba(34, 197, 94, .3);
    border-radius: .75rem;
    background: #f0fdf4;
    font-size: .875rem;
    color: #15803d;
}

.bmup-meus__aviso--atencao {
    border-color: rgba(245, 158, 11, .35);
    background: #fffbeb;
    color: #92400e;
}

.bmup-meus__aviso--erro {
    border-color: rgba(239, 68, 68, .3);
    background: #fef2f2;
    color: #b91c1c;
}

/* os links dentro de um aviso (2026-10-16 — o do limite de pedidos): da cor
   do aviso, sublinhados, para se verem como links */
.bmup-meus__aviso a { color: inherit; font-weight: var(--bmup-peso-semi); text-decoration: underline; text-underline-offset: 2px; }
.bmup-meus__aviso a:hover { text-decoration-thickness: 2px; }

.bmup-meus__plano {
    margin: 0 0 1.5rem;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-meus__plano b { font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900); }

.bmup-meus__cheio {
    display: block;
    margin-top: .25rem;
    font-weight: var(--bmup-peso-medio);
    color: #b45309;
}

/* --- tabela --- */

.bmup-meus__caixa {
    overflow-x: auto;   /* a tabela tem seis colunas; no telemóvel arrasta-se */
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-meus__tabela {
    width: 100%;
    min-width: 44rem;
    border-collapse: collapse;
    font-size: .875rem;
    text-align: left;
    color: var(--bmup-cinza-600);
}

.bmup-meus__tabela thead {
    background: var(--bmup-cinza-50);
    color: var(--bmup-cinza-500);
}

.bmup-meus__tabela th {
    padding: 1rem 1.5rem;
    font-weight: var(--bmup-peso-medio);
    white-space: nowrap;
}

.bmup-meus__tabela td {
    padding: 1rem 1.5rem;
    border-top: 1px solid var(--bmup-cinza-100);
    vertical-align: middle;
}

.bmup-meus__tabela tbody tr:hover { background: rgba(250, 250, 250, .6); }

.bmup-meus__tabela td b {
    display: block;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-meus__tabela td em {
    display: block;
    margin-top: .125rem;
    font-size: .75rem;
    font-style: normal;
    color: var(--bmup-cinza-400);
}

.bmup-meus__discreto { font-size: .75rem; color: var(--bmup-cinza-500); }
.bmup-meus__centro   { text-align: center; }
.bmup-meus__direita  { text-align: right; }

.bmup-meus__estado {
    display: inline-block;
    padding: .25rem .75rem;
    border-radius: 9999px;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .03em;
    white-space: nowrap;
}

.bmup-meus__estado--activo   { background: #dcfce7; color: #15803d; }
.bmup-meus__estado--pendente { background: #fef3c7; color: #b45309; }
.bmup-meus__estado--inactivo { background: var(--bmup-cinza-100); color: var(--bmup-cinza-500); }
/* Em espera pelo limite do plano: laranja, para não se confundir nem com o
   âmbar do pendente nem com o cinzento do inactivo. */
.bmup-meus__estado--espera   { background: #ffedd5; color: #c2410c; }

/* O aviso do limite, com a lista dos que ficaram em espera. */
.bmup-meus__espera ul {
    margin: .5rem 0;
    padding-left: 1.25rem;
}

.bmup-meus__espera li { line-height: 1.7; }

.bmup-meus__espera a {
    color: inherit;
    font-weight: var(--bmup-peso-medio);
    text-decoration: underline;
}

.bmup-meus__accoes {
    display: inline-flex;
    align-items: center;
    justify-content: flex-end;
    gap: .25rem;
}

.bmup-meus__accoes a,
.bmup-meus__accoes button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    padding: 0;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .5rem;
    background: var(--bmup-branco);
    color: var(--bmup-cinza-500);
    cursor: pointer;
    transition: border-color .2s, color .2s, background-color .2s;
}

.bmup-meus__accoes a:hover,
.bmup-meus__accoes button:hover {
    border-color: var(--bmup-cobre);
    color: var(--bmup-cobre);
}

.bmup-meus__accoes button:hover {
    border-color: #ef4444;
    background: #fef2f2;
    color: #b91c1c;
}

.bmup-meus__accoes svg { width: .875rem; height: .875rem; }

.bmup-meus__apagar { display: inline-flex; margin: 0; }


/* ==========================================================================
   FORMULÁRIO DO ANÚNCIO
   ========================================================================== */

.bmup-forma {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding-bottom: 2rem;
}

.bmup-forma fieldset {
    border: 1px solid var(--bmup-cinza-200);
    margin: 0;
}

.bmup-forma legend {
    padding: 0 .5rem;
    margin-left: -.5rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cinza-900);
}

.bmup-forma__campo { margin-top: 1.25rem; }

.bmup-forma__campo label,
.bmup-forma__rotulo {
    display: block;
    margin-bottom: .375rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmup-cinza-500);
}

.bmup-forma__campo input[type="text"],
.bmup-forma__campo input[type="email"],
.bmup-forma__campo input[type="tel"],
.bmup-forma__campo input[type="date"],
.bmup-forma__campo input[type="password"],
.bmup-forma__campo select,
.bmup-forma__campo textarea {
    display: block;
    width: 100%;
    padding: .625rem .875rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-branco);
    font: inherit;
    font-size: .875rem;
    color: var(--bmup-cinza-900);
    outline: none;
    transition: border-color .2s, box-shadow .2s;
}

.bmup-forma__campo textarea { resize: vertical; line-height: 1.6; }

/* Só de leitura (o email do Perfil, 2026-10-08): vê-se que não se escreve. */
.bmup-forma__campo input[readonly] {
    background: var(--bmup-cinza-50);
    color: var(--bmup-cinza-500);
    cursor: default;
}
.bmup-forma__campo input[readonly]:focus {
    border-color: var(--bmup-cinza-200);
    box-shadow: none;
}

.bmup-forma__campo input[type="text"]:focus,
.bmup-forma__campo input[type="email"]:focus,
.bmup-forma__campo input[type="tel"]:focus,
.bmup-forma__campo input[type="date"]:focus,
.bmup-forma__campo input[type="password"]:focus,
.bmup-forma__campo select:focus,
.bmup-forma__campo textarea:focus {
    border-color: var(--bmup-cobre);
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .2);
}

.bmup-forma__par {
    display: grid;
    grid-template-columns: 1fr;
    gap: 0 1.25rem;
}

/* O tipo de negócio: três botões de rádio que se lêem como pastilhas. O rádio
   fica escondido mas continua lá — é ele que dá a navegação por teclado e o
   agrupamento por nome. */
.bmup-forma__opcoes { display: flex; flex-wrap: wrap; gap: .5rem; }

/* --- destaques e especificações no formulário do anúncio --- */

.bmup-forma__intro {
    margin: 0 0 1rem;
    font-size: .8125rem;
    color: var(--bmup-cinza-500);
}

.bmup-forma__linhas { display: grid; gap: .5rem; }
.bmup-forma__campo--linha { margin: 0; }

.bmup-forma__pares { display: grid; gap: .5rem; }

.bmup-forma__par-titulos,
.bmup-forma__par-linha {
    display: grid;
    grid-template-columns: minmax(0, 2fr) minmax(0, 3fr);
    gap: .5rem;
}

.bmup-forma__par-titulos span {
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--bmup-cinza-500);
}

/* Os campos dos pares com o mesmo aspecto dos outros do formulário */
.bmup-forma__par-linha input {
    width: 100%;
    padding: .625rem .875rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-branco);
    font: inherit;
    font-size: .875rem;
    color: var(--bmup-cinza-900);
    outline: none;
    transition: border-color .2s, background-color .2s, box-shadow .2s;
}

.bmup-forma__par-linha input:focus {
    border-color: var(--bmup-cobre);
    background: var(--bmup-branco);
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .2);
}

.bmup-forma__mais {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    margin-top: .75rem;
    padding: .5rem .875rem;
    border: 1px dashed var(--bmup-cinza-300);
    border-radius: .75rem;
    background: none;
    font: inherit;
    font-size: .8125rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
    cursor: pointer;
    transition: border-color .2s, color .2s;
}

.bmup-forma__mais:hover { border-color: var(--bmup-cobre); color: var(--bmup-cobre); }
.bmup-forma__mais svg { width: .875rem; height: .875rem; }
.bmup-forma__mais[hidden] { display: none; }

/* Caixa simples de marcar ("Preço sob consulta") */
.bmup-forma__marca {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    margin-top: .625rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-700);
    cursor: pointer;
}

/* O rotulo dos campos e' em maiusculas pequenas; esta caixa e' uma frase. */
.bmup-forma__campo label.bmup-forma__marca {
    display: inline-flex;
    margin-bottom: 0;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    letter-spacing: normal;
    text-transform: none;
    color: var(--bmup-cinza-700);
}

.bmup-forma__marca input {
    width: 1rem;
    height: 1rem;
    margin: 0;
    accent-color: var(--bmup-cobre);
    cursor: pointer;
}

.bmup-forma__campo input:disabled {
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-400);
    cursor: not-allowed;
}

.bmup-forma__ajuda[hidden] { display: none; }

.bmup-forma__opcao input {
    position: absolute;
    opacity: 0;
    width: 0;
    height: 0;
}

.bmup-forma__opcao span {
    display: inline-block;
    padding: .5rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
    cursor: pointer;
    transition: border-color .2s, background-color .2s, color .2s;
}

.bmup-forma__opcao span:hover { border-color: var(--bmup-cinza-300); }

.bmup-forma__opcao input:checked + span {
    border-color: var(--bmup-cobre);
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
}

/* O anel de foco tem de aparecer no <span>, já que o <input> está escondido —
   senão quem navega por teclado não vê onde está. */
.bmup-forma__opcao input:focus-visible + span {
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .35);
}

.bmup-forma__ajuda,
.bmup-forma__erro {
    display: block;
    margin-top: .375rem;
    font-size: .75rem;
    font-style: normal;
}

.bmup-forma__ajuda { color: var(--bmup-cinza-400); }
.bmup-forma__erro  { font-weight: var(--bmup-peso-medio); color: #b91c1c; }

.bmup-forma__nota {
    display: flex;
    align-items: center;
    gap: .625rem;
    padding: .875rem 1rem;
    margin: 1.25rem 0 0;
    border: 1px dashed var(--bmup-cinza-300);
    border-radius: .75rem;
    font-size: .8125rem;
    color: var(--bmup-cinza-500);
}

.bmup-forma__nota svg {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--bmup-cinza-400);
    flex-shrink: 0;
}

.bmup-forma__accoes {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: .75rem;
}

.bmup-forma__accoes .bmup-detalhe__pedir {
    width: auto;
    padding-inline: 1.75rem;
    border: 0;
    font: inherit;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    cursor: pointer;
}

.bmup-forma__cancelar {
    padding: .75rem 1.25rem;
    border-radius: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
    text-decoration: none;
}

.bmup-forma__cancelar:hover { background: var(--bmup-cinza-100); color: var(--bmup-cinza-900); }


@media (min-width: 768px) {
    .bmup-forma__par { grid-template-columns: 1fr 1fr; }
}


/* ==========================================================================
   FOTOGRAFIAS DO ANÚNCIO
   ==========================================================================
   A zona de carregamento no formulário de editar. No desenho é uma área de
   arrastar ficheiros; aqui é um <input type="file"> normal, que funciona em
   todo o lado — incluindo no telemóvel, onde abre a câmara e a galeria.
   ========================================================================== */

.bmup-fotos { margin-bottom: 2rem; }

.bmup-fotos__grelha {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(8rem, 1fr));
    gap: .75rem;
    margin-bottom: 1rem;
}

.bmup-fotos__uma {
    position: relative;
    margin: 0;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-100);
}

.bmup-fotos__uma img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

.bmup-fotos__capa {
    position: absolute;
    left: .5rem;
    bottom: .5rem;
    padding: .125rem .5rem;
    border-radius: 9999px;
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
    font-size: .6875rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .04em;
}

.bmup-fotos__uma form { position: absolute; top: .5rem; right: .5rem; margin: 0; }

.bmup-fotos__uma button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.75rem;
    height: 1.75rem;
    padding: 0;
    border: 0;
    border-radius: .5rem;
    background: rgba(10, 10, 10, .55);
    backdrop-filter: blur(4px);
    color: var(--bmup-branco);
    cursor: pointer;
    transition: background-color .2s;
}

.bmup-fotos__uma button:hover { background: #b91c1c; }
.bmup-fotos__uma button svg { width: .75rem; height: .75rem; }

.bmup-fotos__nota {
    margin: 0 0 1.25rem;
    font-size: .8125rem;
    color: var(--bmup-cinza-500);
}

.bmup-fotos__enviar {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--bmup-cinza-100);
}

.bmup-fotos__enviar .bmup-forma__campo { margin-top: 0; }

.bmup-fotos__enviar .bmup-detalhe__pedir {
    align-self: flex-start;
    width: auto;
    padding-inline: 1.75rem;
    border: 0;
    font: inherit;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    cursor: pointer;
}


/* ==========================================================================
   PERFIL & DEFINIÇÕES
   ==========================================================================
   Corresponde ao Profile.tsx: coluna estreita (um terço) à esquerda com o
   cartão do membro, os contactos e o cartão do plano; coluna larga à direita
   com os formulários. Em ecrã pequeno empilha, a estreita primeiro.

   NOMES: tudo debaixo de .bmup-perfil__ — ver a nota de colisões no cimo do
   ficheiro. Os campos reutilizam .bmup-forma__campo / __par / __accoes.
   ========================================================================== */

.bmup-perfil {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    align-items: start;
    padding-bottom: 2rem;
}

.bmup-perfil__lado,
.bmup-perfil__principal {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    min-width: 0;
}

/* --- os cartões da coluna estreita --- */

.bmup-perfil__cartao {
    padding: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-perfil__cartao--membro {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
}

/* O anel de cobre à volta da fotografia, como na barra lateral mas maior
   (w-28 no desenho): gradiente de 4px por baixo de um círculo branco. */
.bmup-perfil__avatar {
    width: 7rem;
    height: 7rem;
    padding: 4px;
    margin-bottom: 1rem;
    border-radius: 50%;
    background: linear-gradient(to top right, var(--bmup-cobre), var(--bmup-cobre-claro));
}

.bmup-perfil__avatar span,
.bmup-perfil__avatar img {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    height: 100%;
    border: 4px solid var(--bmup-branco);
    border-radius: 50%;
    background: var(--bmup-preto);
    color: var(--bmup-cobre-claro);
    font-size: 1.75rem;
    font-weight: var(--bmup-peso-semi);
    object-fit: cover;
}

.bmup-perfil__nome {
    margin: 0;
    font-family: var(--bmup-font-corpo);
    font-size: 1.25rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-perfil__desde {
    margin: .25rem 0 1rem;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-perfil__nivel {
    display: inline-block;
    padding: .375rem 1rem;
    border: 1px solid rgba(172, 116, 80, .2);
    border-radius: 9999px;
    background: rgba(172, 116, 80, .1);
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cobre);
}

.bmup-perfil__nivel--sem {
    border-color: var(--bmup-cinza-200);
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-500);
}

/* --- carregar a fotografia (um <details>) --- */

.bmup-perfil__foto {
    width: 100%;
    margin-top: 1.25rem;
    text-align: left;
}

.bmup-perfil__foto summary {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    margin: 0 auto;
    font-size: .8125rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cobre);
    cursor: pointer;
    list-style: none;
}

.bmup-perfil__foto summary::-webkit-details-marker { display: none; }

.bmup-perfil__foto summary svg { width: 1rem; height: 1rem; }

.bmup-perfil__foto summary:hover { color: var(--bmup-cobre-escuro); }

.bmup-perfil__foto[open] summary { color: var(--bmup-cinza-500); }

.bmup-forma__accoes--esq { justify-content: flex-start; margin-top: 1rem; }

.bmup-perfil__remover {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    margin-top: .75rem;
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    font-size: .8125rem;
    color: var(--bmup-cinza-500);
    cursor: pointer;
}

.bmup-perfil__remover svg { width: .875rem; height: .875rem; }

.bmup-perfil__remover:hover { color: #b91c1c; }

/* --- contactos --- */

.bmup-perfil__rotulo {
    margin: 0 0 1rem;
    font-family: var(--bmup-font-corpo);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cinza-900);
}

.bmup-perfil__contactos {
    display: flex;
    flex-direction: column;
    gap: 1rem;
    margin: 0;
    padding: 0;
    list-style: none;
}

.bmup-perfil__contactos li {
    display: flex;
    align-items: center;
    gap: .75rem;
    min-width: 0;
}

.bmup-perfil__contacto-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--bmup-cinza-50);
    color: var(--bmup-cinza-500);
    flex-shrink: 0;
}

.bmup-perfil__contacto-icone svg { width: 1.125rem; height: 1.125rem; }

.bmup-perfil__contacto-texto { min-width: 0; }

.bmup-perfil__contacto-texto small {
    display: block;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
}

.bmup-perfil__contacto-texto strong {
    display: block;
    overflow: hidden;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-900);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-perfil__vazio { font-weight: var(--bmup-peso-normal) !important; color: var(--bmup-cinza-400) !important; font-style: italic; }

/* --- o cartão do plano: escuro, como o desenho --- */

.bmup-perfil__cartao--plano {
    border: 0;
    background: linear-gradient(to bottom right, var(--bmup-preto), var(--bmup-cinza-800));
    color: var(--bmup-branco);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1);
}

.bmup-perfil__plano-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: 1rem;
}

.bmup-perfil__plano-nome {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--bmup-cobre);
}

.bmup-perfil__plano-nome svg { width: 1.125rem; height: 1.125rem; }

.bmup-perfil__plano-chave {
    padding: .25rem .625rem;
    border-radius: 9999px;
    background: var(--bmup-cinza-800);
    font-size: .75rem;
    text-transform: uppercase;
    color: var(--bmup-cinza-400);
}

.bmup-perfil__plano-data {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0 0 .25rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-perfil__plano-data svg { width: .75rem; height: .75rem; flex-shrink: 0; }

.bmup-perfil__plano-data--forte {
    margin-bottom: 1.25rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-300);
}

.bmup-perfil__plano-data--forte svg { width: .875rem; height: .875rem; color: var(--bmup-cobre); }

.bmup-perfil__barra-legenda {
    display: flex;
    justify-content: space-between;
    margin-bottom: .375rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-perfil__barra {
    height: .375rem;
    margin-bottom: 1.25rem;
    border-radius: 9999px;
    background: var(--bmup-cinza-700);
    overflow: hidden;
}

.bmup-perfil__barra span {
    display: block;
    height: 100%;
    border-radius: 9999px;
    background: linear-gradient(to right, var(--bmup-cobre), var(--bmup-cobre-claro));
}

.bmup-perfil__plano-renova {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0 0 1.25rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-perfil__plano-renova svg { width: .75rem; height: .75rem; color: var(--bmup-cinza-500); }

.bmup-perfil__plano-renova--sim svg { color: var(--bmup-verde); }

/* O botão de renovar, apagado até a Fase 7 (mesma pastilha "em breve" da
   barra lateral). */
.bmup-perfil__renovar {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    padding: .75rem;
    border-radius: .75rem;
    background: rgba(172, 116, 80, .35);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: rgba(255, 255, 255, .6);
    cursor: not-allowed;
}

.bmup-perfil__renovar svg { width: .9375rem; height: .9375rem; }

.bmup-perfil__renovar .bmup-membro__breve { margin-left: .25rem; }

/* --- as caixas da coluna larga --- */

.bmup-perfil__forma {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.bmup-perfil__caixa {
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    overflow: hidden;
}

.bmup-perfil__caixa-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 1.5rem;
    border-bottom: 1px solid var(--bmup-cinza-100);
}

.bmup-perfil__caixa-topo h3 {
    margin: 0;
    font-family: var(--bmup-font-corpo);
    font-size: 1.125rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

/* O primeiro campo da caixa não leva a margem de cima dos outros. */
.bmup-perfil__caixa-corpo { padding: .25rem 1.5rem 1.5rem; }

.bmup-perfil__caixa-corpo .bmup-forma__accoes { margin-top: 1.5rem; }

/* --- as linhas da Segurança (um <details> cada) --- */

.bmup-perfil__linha summary {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1.5rem;
    cursor: pointer;
    list-style: none;
    transition: background-color .2s;
}

.bmup-perfil__linha summary::-webkit-details-marker { display: none; }

.bmup-perfil__linha summary:hover { background: var(--bmup-cinza-50); }

.bmup-perfil__linha-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: rgba(172, 116, 80, .1);
    color: var(--bmup-cobre);
    flex-shrink: 0;
}

.bmup-perfil__linha-icone svg { width: 1.125rem; height: 1.125rem; }

.bmup-perfil__linha-texto { flex: 1; min-width: 0; }

.bmup-perfil__linha-texto strong {
    display: block;
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-900);
}

.bmup-perfil__linha-texto small {
    display: block;
    margin-top: .125rem;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
}

/* (0,2,0): o reset `.bmup svg { height: auto }` (0,1,1) ganhava a uma classe
   sozinha e esticava a seta para 150px — a linha ficava com 198px de altura. */
.bmup-perfil__linha .bmup-perfil__linha-seta {
    width: 1.125rem;
    height: 1.125rem;
    color: var(--bmup-cinza-400);
    transition: transform .2s, color .2s;
}

.bmup-perfil__linha summary:hover .bmup-perfil__linha-seta { color: var(--bmup-cobre); }

.bmup-perfil__linha[open] .bmup-perfil__linha-seta { transform: rotate(90deg); }

/* Eliminar a conta (2026-10-06): o mesmo desenho das outras linhas, com o
   ícone e o botão a vermelho — é a única acção da página que não se faz por
   engano. */
.bmup-perfil__linha--perigo .bmup-perfil__linha-icone { background: rgba(185, 28, 28, .08); color: #b91c1c; }
.bmup-perfil__linha--perigo summary:hover .bmup-perfil__linha-seta { color: #b91c1c; }
.bmup-detalhe__pedir.bmup-perfil__eliminar { background: #b91c1c; }
.bmup-detalhe__pedir.bmup-perfil__eliminar:hover { background: #991b1b; }

.bmup-perfil__linha .bmup-perfil__forma {
    gap: 0;
    padding: 0 1.5rem 1.5rem;
    border-top: 1px solid var(--bmup-cinza-100);
}
/* o botão afastado do último campo, como nas caixas (2026-10-15): com o
   gap a 0 ficava colado ao select */
.bmup-perfil__linha .bmup-forma__accoes { margin-top: 1.5rem; }

@media (min-width: 768px) {
    /* md:w-1/3 + md:w-2/3 no desenho */
    .bmup-perfil { grid-template-columns: minmax(0, 1fr) minmax(0, 2fr); }
}


/* ==========================================================================
   SEM PLANO VÁLIDO — a Visão Geral e a barra lateral (2026-09-16)
   ==========================================================================
   Quem ainda não pagou, ou deixou expirar, só vê a Visão Geral (com o estado
   da conta) e o Perfil. As outras entradas da barra lateral ficam à vista e
   trancadas. Ver Planos_Membro.
   ========================================================================== */

.bmup-painel__estado {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-left: 4px solid var(--bmup-cobre);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-painel__estado--expirada { border-left-color: #d97706; }
.bmup-painel__estado--nenhuma  { border-left-color: var(--bmup-cinza-400); }

.bmup-painel__estado .bmup-painel__icone { margin-bottom: 0; flex-shrink: 0; }

.bmup-painel__estado h2 {
    margin: 0 0 .5rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1.5rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-painel__estado p {
    max-width: 40rem;
    margin: 0;
    font-size: .9375rem;
    line-height: 1.6;
    color: var(--bmup-cinza-600);
}

.bmup-painel__estado-accoes {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .75rem 1.25rem;
    margin-top: 1.25rem;
}

.bmup-painel__secundaria {
    font-size: .875rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.bmup-painel__secundaria:hover { color: var(--bmup-cobre); }

/* A pastilha "após ativação" distingue-se da "em breve": não é o portal que
   falta, é a conta que ainda não abriu. */
.bmup-membro__link--bloqueado .bmup-membro__breve {
    background: rgba(172, 116, 80, .18);
    color: var(--bmup-cobre-claro);
}

@media (min-width: 768px) {
    .bmup-painel__estado { flex-direction: row; align-items: flex-start; padding: 2rem; }
}


/* ==========================================================================
   CAMPO DE FICHEIRO — a zona tracejada do desenho (2026-09-16)
   ==========================================================================
   MyAds.tsx:393: borda tracejada de 2px, fundo zinc-50, ícone de imagem,
   "Clique para carregar imagens" e a nota dos formatos por baixo.

   É um <label> com o <input type="file"> lá dentro. O input fica escondido
   mas NÃO com display:none — assim continua focável e o Enter/Espaço abre o
   seletor, e o anel de foco passa para a zona pelo `:focus-visible +`.
   Sem JavaScript funciona na mesma; o bmup.js acrescenta o nome do ficheiro,
   a pré-visualização e o arrastar.

   Usado no Perfil (fotografia do membro) e nas fotografias do anúncio.
   ========================================================================== */

/* (0,2,0): tem de ganhar ao `.bmup-forma__campo label` (0,1,1), que põe os
   rótulos em maiúsculas pequenas. */
.bmup-forma__campo .bmup-ficheiro {
    display: block;
    margin: 0;
    font-size: inherit;
    font-weight: inherit;
    text-transform: none;
    letter-spacing: normal;
    color: inherit;
    cursor: pointer;
}

/* O campo escondido fica preso à sua zona (2026-10-08). Sem isto, o
   position:absolute agarrava-se à janela inteira: ao escolher as
   fotografias o browser dava-lhe o foco e fazia scroll à janela. */
.bmup-ficheiro { position: relative; }

.bmup-ficheiro__input {
    position: absolute;
    top: 0;
    left: 0;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
    opacity: 0;
}

.bmup-ficheiro__zona {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .25rem;
    padding: 1.5rem 1rem;
    border: 2px dashed var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
    text-align: center;
    transition: border-color .2s, background-color .2s, box-shadow .2s;
}

.bmup-ficheiro:hover .bmup-ficheiro__zona,
.bmup-ficheiro.esta-sobre .bmup-ficheiro__zona {
    border-color: rgba(172, 116, 80, .4);
    background: rgba(172, 116, 80, .04);
}

.bmup-ficheiro__input:focus-visible + .bmup-ficheiro__zona {
    border-color: var(--bmup-cobre);
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .2);
}

/* (0,2,0): o reset `.bmup svg { height: auto }` (0,1,1) ganhava a uma classe
   sozinha e esticava o ícone para 150px de altura. */
.bmup-ficheiro__zona .bmup-ficheiro__icone {
    width: 1.375rem;
    height: 1.375rem;
    margin-bottom: .25rem;
    color: var(--bmup-cinza-300);
    transition: color .2s;
}

.bmup-ficheiro__texto {
    max-width: 100%;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
    overflow-wrap: anywhere;
}

.bmup-ficheiro__texto b {
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cobre);
}

.bmup-ficheiro__ajuda {
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

/* Escolhido: a borda passa a contínua e cor de cobre, e o ícone dá lugar às
   miniaturas. */
.bmup-ficheiro.tem-ficheiro .bmup-ficheiro__zona {
    border-style: solid;
    border-color: var(--bmup-cobre);
    background: rgba(172, 116, 80, .05);
}

.bmup-ficheiro.tem-ficheiro .bmup-ficheiro__icone { display: none; }

.bmup-ficheiro__previas {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .5rem;
    margin-bottom: .375rem;
}

.bmup-ficheiro__previas[hidden] { display: none; }

.bmup-ficheiro__previas img {
    width: 3.5rem;
    height: 3.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .5rem;
    object-fit: cover;
}

/* No Perfil a pré-visualização é redonda, como a fotografia vai ficar. */
.bmup-ficheiro--avatar .bmup-ficheiro__previas img {
    width: 4.5rem;
    height: 4.5rem;
    border: 2px solid var(--bmup-branco);
    border-radius: 50%;
    box-shadow: 0 0 0 2px var(--bmup-cobre);
}


/* ==========================================================================
   MENSAGENS — Chat.tsx (2026-09-16)
   ==========================================================================
   Lista à esquerda (w-80), conversa à direita. Em ecrã pequeno uma de cada
   vez: o servidor põe .bmup-chat--aberta quando há conversa no endereço.
   ========================================================================== */

/* O número de mensagens por ler, na barra lateral. */
.bmup-membro__contador {
    margin-left: auto;
    min-width: 1.25rem;
    padding: .125rem .4rem;
    border-radius: 9999px;
    background: var(--bmup-cobre);
    font-size: .6875rem;
    font-weight: var(--bmup-peso-forte);
    line-height: 1.2;
    text-align: center;
    color: var(--bmup-branco);
}

.bmup-chat__so-leitor {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    clip: rect(0 0 0 0);
    white-space: nowrap;
}

.bmup-chat {
    display: flex;
    height: calc(100vh - 12rem);
    min-height: 30rem;
    margin-bottom: 2rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    overflow: hidden;
}

/* --- a lista --- */

.bmup-chat__lista {
    display: flex;
    flex-direction: column;
    width: 100%;
    background: rgba(250, 250, 250, .5);
}

.bmup-chat--aberta .bmup-chat__lista { display: none; }

.bmup-chat__procura {
    position: relative;
    padding: 1rem;
    border-bottom: 1px solid var(--bmup-cinza-200);
}

.bmup-chat__procura .bmup-chat__lupa,
.bmup-chat__procura svg {
    position: absolute;
    top: 50%;
    left: 1.75rem;
    width: 1rem;
    height: 1rem;
    color: var(--bmup-cinza-400);
    transform: translateY(-50%);
    pointer-events: none;
}

.bmup-chat__procura input {
    width: 100%;
    padding: .5rem 1rem .5rem 2.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .5rem;
    background: var(--bmup-branco);
    font: inherit;
    font-size: .875rem;
    color: var(--bmup-cinza-900);
    outline: none;
}

.bmup-chat__procura input:focus {
    border-color: var(--bmup-cobre);
    box-shadow: 0 0 0 1px var(--bmup-cobre);
}

.bmup-chat__lista-vazia {
    padding: 2rem 1.25rem;
    font-size: .875rem;
    line-height: 1.6;
    text-align: center;
    color: var(--bmup-cinza-500);
}

.bmup-chat__lista-vazia p { margin: 0 0 .5rem; }
.bmup-chat__lista-vazia b { color: var(--bmup-cinza-800); }
.bmup-chat__lista-vazia a { color: var(--bmup-cobre); font-weight: var(--bmup-peso-medio); }

/* O invólucro que o bmup.js substitui. Continua a ser flexível, para a lista
   lá dentro ocupar o resto da altura e rolar sozinha. */
.bmup-chat__lista-conteudo {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-height: 0;
}

.bmup-chat__conversas {
    flex: 1;
    margin: 0;
    padding: 0;
    overflow-y: auto;
    list-style: none;
}

.bmup-chat__conversas li + li { border-top: 1px solid var(--bmup-cinza-100); }

.bmup-chat__item {
    display: flex;
    gap: .75rem;
    padding: .75rem 1rem;
    border-left: 4px solid transparent;
    color: inherit;
    text-decoration: none;
    transition: background-color .2s;
}

.bmup-chat__item:hover { background: var(--bmup-cinza-100); }

.bmup-chat__item--activa {
    border-left-color: var(--bmup-cobre);
    background: var(--bmup-cinza-100);
}

.bmup-chat__avatar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 50%;
    background: var(--bmup-cinza-200);
    font-size: .75rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-500);
    flex-shrink: 0;
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}

.bmup-chat__avatar--cobre {
    background: var(--bmup-cobre);
    font-size: .9375rem;
    color: var(--bmup-branco);
}

.bmup-chat__resumo {
    display: flex;
    flex: 1;
    flex-direction: column;
    min-width: 0;
}

.bmup-chat__linha {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: .5rem;
    min-width: 0;
}

.bmup-chat__titulo {
    overflow: hidden;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-chat__hora {
    font-size: .75rem;
    color: var(--bmup-cinza-400);
    flex-shrink: 0;
}

.bmup-chat__pessoa {
    margin: .125rem 0;
    overflow: hidden;
    font-size: .6875rem;
    color: var(--bmup-cinza-400);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-chat__ultima {
    overflow: hidden;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-chat__item--por-ler .bmup-chat__ultima {
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-800);
}

.bmup-chat__contador {
    padding: .125rem .375rem;
    border-radius: 9999px;
    background: var(--bmup-cobre);
    font-size: .625rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-branco);
    flex-shrink: 0;
}

/* --- a conversa --- */

.bmup-chat__area {
    display: none;
    flex: 1;
    flex-direction: column;
    min-width: 0;
    background: var(--bmup-branco);
}

.bmup-chat--aberta .bmup-chat__area { display: flex; }

.bmup-chat__vazio {
    display: flex;
    flex: 1;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 1rem;
    color: var(--bmup-cinza-500);
}

.bmup-chat__vazio svg { width: 3rem; height: 3rem; color: var(--bmup-cinza-300); }
.bmup-chat__vazio p { margin: 0; }

.bmup-chat__cabecalho {
    display: flex;
    align-items: center;
    gap: .75rem;
    min-height: 4rem;
    padding: .5rem 1rem;
    border-bottom: 1px solid var(--bmup-cinza-200);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    z-index: 1;
}

.bmup-chat__voltar {
    display: flex;
    padding: .5rem;
    margin-left: -.5rem;
    color: var(--bmup-cinza-500);
}

.bmup-chat__voltar:hover { color: var(--bmup-cinza-800); }
.bmup-chat__voltar svg { width: 1.25rem; height: 1.25rem; }

.bmup-chat__quem { flex: 1; min-width: 0; }

.bmup-chat__quem h2 {
    margin: 0;
    overflow: hidden;
    font-family: var(--bmup-font-corpo);
    font-size: 1rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-chat__quem p {
    margin: 0;
    overflow: hidden;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-chat__ver-anuncio {
    padding: .375rem .75rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .5rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-700);
    text-decoration: none;
    white-space: nowrap;
    flex-shrink: 0;
}

.bmup-chat__ver-anuncio:hover { border-color: var(--bmup-cobre); color: var(--bmup-cobre); }

.bmup-chat__mensagens {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: 1rem;
    padding: 1rem;
    overflow-y: auto;
    background: rgba(250, 250, 250, .3);
    outline: none;
}

.bmup-chat__msg {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    max-width: 85%;
}

.bmup-chat__msg--minha { align-self: flex-end; align-items: flex-end; }

.bmup-chat__bolha {
    padding: .625rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem 1rem 1rem 0;
    background: var(--bmup-branco);
    font-size: .875rem;
    line-height: 1.5;
    color: var(--bmup-cinza-800);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
    overflow-wrap: anywhere;
}

.bmup-chat__msg--minha .bmup-chat__bolha {
    border-color: var(--bmup-cobre);
    border-radius: 1rem 1rem 0 1rem;
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
}

.bmup-chat__bolha p { margin: 0; }
.bmup-chat__bolha p + .bmup-chat__anexo { margin-top: .5rem; }

.bmup-chat__anexo {
    display: flex;
    align-items: center;
    gap: .5rem;
    padding: .5rem .625rem;
    border-radius: .5rem;
    background: var(--bmup-cinza-100);
    font-size: .8125rem;
    color: inherit;
    text-decoration: none;
}

.bmup-chat__msg--minha .bmup-chat__anexo { background: rgba(255, 255, 255, .18); }
.bmup-chat__anexo:hover { text-decoration: underline; }

.bmup-chat__anexo svg { width: 1.125rem; height: 1.125rem; flex-shrink: 0; }
.bmup-chat__anexo span { min-width: 0; overflow-wrap: anywhere; }
.bmup-chat__anexo small { opacity: .75; white-space: nowrap; }

.bmup-chat__meta {
    margin: .25rem .25rem 0;
    font-size: .625rem;
    color: var(--bmup-cinza-400);
}

.bmup-chat__erro {
    margin: 0;
    padding: .625rem 1rem;
    border-top: 1px solid rgba(239, 68, 68, .3);
    background: #fef2f2;
    font-size: .8125rem;
    color: #b91c1c;
}

/* O outro sem acesso (2026-10-08): informativo, não é um erro. */
.bmup-chat__semacesso {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    padding: .625rem 1rem;
    border-top: 1px solid rgba(172, 116, 80, .2);
    background: rgba(172, 116, 80, .06);
    font-size: .8125rem;
    line-height: 1.4;
    color: var(--bmup-cinza-700);
}
.bmup-chat__semacesso svg {
    flex-shrink: 0;
    width: 1rem;
    height: 1rem;
    color: var(--bmup-cobre);
}

/* --- escrever --- */

.bmup-chat__forma {
    display: flex;
    align-items: flex-end;
    gap: .5rem;
    padding: .75rem;
    border-top: 1px solid var(--bmup-cinza-200);
    background: var(--bmup-branco);
}

.bmup-chat__clip {
    position: relative;
    display: flex;
    padding: .625rem .5rem;
    color: var(--bmup-cinza-400);
    cursor: pointer;
    transition: color .2s;
}

.bmup-chat__clip:hover { color: var(--bmup-cinza-600); }
.bmup-chat__clip svg { width: 1.25rem; height: 1.25rem; }

.bmup-chat__clip:focus-within {
    border-radius: .5rem;
    box-shadow: 0 0 0 2px var(--bmup-cobre);
}

.bmup-chat__escrever {
    display: flex;
    flex: 1;
    flex-direction: column;
    gap: .375rem;
    min-width: 0;
}

.bmup-chat__anexo-escolhido {
    align-self: flex-start;
    max-width: 100%;
    padding: .25rem .625rem;
    border-radius: 9999px;
    background: rgba(172, 116, 80, .1);
    overflow: hidden;
    font-size: .75rem;
    color: var(--bmup-cobre);
    text-overflow: ellipsis;
    white-space: nowrap;
}

.bmup-chat__anexo-escolhido[hidden] { display: none; }

.bmup-chat__entrada {
    width: 100%;
    max-height: 8.5rem;
    padding: .625rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.25rem;
    background: var(--bmup-cinza-50);
    font: inherit;
    font-size: .875rem;
    line-height: 1.4;
    color: var(--bmup-cinza-900);
    outline: none;
    resize: none;
    /* Sem barra até passar do máximo — o bmup.js liga-a (2026-10-08). */
    overflow-y: hidden;
    scrollbar-width: thin;
    scrollbar-color: var(--bmup-cinza-300) transparent;
}

.bmup-chat__entrada:focus {
    border-color: var(--bmup-cobre);
    box-shadow: 0 0 0 1px var(--bmup-cobre);
}

.bmup-chat__enviar {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 2.625rem;
    height: 2.625rem;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: #161616;
    color: var(--bmup-branco);
    cursor: pointer;
    flex-shrink: 0;
    transition: background-color .2s;
}

.bmup-chat__enviar:hover { background: var(--bmup-preto); }
.bmup-chat__enviar svg { width: 1.125rem; height: 1.125rem; margin-left: -.125rem; }

@media (min-width: 768px) {

    .bmup-chat__lista {
        display: flex;
        width: 20rem;
        border-right: 1px solid var(--bmup-cinza-200);
        flex-shrink: 0;
    }

    .bmup-chat--aberta .bmup-chat__lista { display: flex; }

    .bmup-chat__area { display: flex; }

    .bmup-chat__voltar { display: none; }

    .bmup-chat__cabecalho { padding: .5rem 1.5rem; }

    .bmup-chat__mensagens { padding: 1.5rem; }

    .bmup-chat__msg { max-width: 70%; }

    .bmup-chat__forma { gap: .75rem; padding: 1rem; }
}

/* --- "Pedir Informação" no detalhe do anúncio --- */

.bmup-detalhe__contactar summary {
    list-style: none;
    cursor: pointer;
}

.bmup-detalhe__contactar summary::-webkit-details-marker { display: none; }

.bmup-detalhe__contactar[open] summary {
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-700);
    box-shadow: none;
}

.bmup-detalhe__contactar form {
    display: flex;
    flex-direction: column;
    gap: .5rem;
    margin-top: .875rem;
}

.bmup-detalhe__contactar label {
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-700);
}

.bmup-detalhe__contactar textarea {
    width: 100%;
    padding: .75rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    font: inherit;
    font-size: .875rem;
    line-height: 1.5;
    color: var(--bmup-cinza-900);
    outline: none;
    resize: vertical;
}

.bmup-detalhe__contactar textarea:focus {
    border-color: var(--bmup-cobre);
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .2);
}

.bmup-detalhe__contactar-nota {
    margin: 0;
    font-size: .75rem;
    line-height: 1.5;
    color: var(--bmup-cinza-500);
}

.bmup-detalhe__contactar button.bmup-detalhe__pedir {
    border: 0;
    font: inherit;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    cursor: pointer;
}


/* ==========================================================================
   ADESÃO & PLANOS  —  views/Utilizadores/membro-plano.tpl
   ==========================================================================
   O DashboardPlans.tsx, com três separadores.

   PORQUE É QUE O PREFIXO É `bmup-meuplano__` E NÃO `bmup-plano__`
   A página pública dos planos já usa `.bmup-plano`, `.bmup-plano__lista`,
   `.bmup-planos__grelha` — no bmup-paginas.css, que carrega em TODAS as
   páginas, esta incluída. Reaproveitar os nomes dava a terceira colisão do
   projecto (ver ferramentas/colisoes.py): a folha das páginas desenha cartões
   escuros, esta desenha cartões brancos, e ganhava quem tivesse o selector
   mais específico.

   O QUE SE REAPROVEITA DE PROPÓSITO
   Os separadores (`.bmup-dir__separador*`), o cabeçalho (`.bmup-dir__cabecalho`)
   e a caixa de estado da Visão Geral (`.bmup-painel__estado`) são o mesmo
   componente, na mesma folha — copiá-los era ter dois sítios para corrigir.
   Dos tons dos níveis usam-se só `--p-acento` e `--p-tira`, que são cores; os
   outros tokens do `.bmup-tons` são para fundo escuro e aqui o fundo é branco.
   ========================================================================== */

/* --- a pílula do estado, no cabeçalho --- */

.bmup-meuplano__estado {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    align-self: flex-start;
    padding: .5rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    font-size: .8125rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-600);
    white-space: nowrap;
}

.bmup-meuplano__estado--activo {
    border-color: rgba(22, 163, 74, .2);
    background: rgba(22, 163, 74, .06);
    color: #15803d;
}

.bmup-meuplano__estado--expirada {
    border-color: rgba(217, 119, 6, .25);
    background: rgba(217, 119, 6, .07);
    color: var(--bmup-ambar);
}

.bmup-meuplano__ponto {
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--bmup-cinza-400);
    flex-shrink: 0;
}

.bmup-meuplano__estado--activo .bmup-meuplano__ponto,
.bmup-meuplano__ponto--verde { background: #22c55e; }

.bmup-meuplano__estado--expirada .bmup-meuplano__ponto { background: var(--bmup-ambar); }


/* --- a faixa do plano em vigor ---
   O gradiente escuro do desenho, com a mancha de cobre à direita feita com um
   gradiente em vez de um elemento só para isso. */

.bmup-meuplano__faixa {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 1.5rem;
    margin-bottom: 1.5rem;
    border-radius: 1rem;
    background:
        linear-gradient(90deg, transparent 60%, rgba(172, 116, 80, .12) 100%),
        linear-gradient(to right, var(--bmup-preto), var(--bmup-cinza-800));
    color: var(--bmup-branco);
    box-shadow: 0 10px 15px -3px rgba(0, 0, 0, .1);
}

.bmup-meuplano__faixa-esq {
    display: flex;
    align-items: center;
    gap: 1rem;
}

.bmup-meuplano__faixa-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3.5rem;
    height: 3.5rem;
    flex-shrink: 0;
    border: 1px solid rgba(172, 116, 80, .3);
    border-radius: 1rem;
    background: rgba(172, 116, 80, .2);
}

.bmup-meuplano__faixa-icone svg {
    width: 1.625rem;
    height: 1.625rem;
    color: var(--bmup-cobre);
}

.bmup-meuplano__faixa-rotulo {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: .25rem;
    font-size: .6875rem;
    font-weight: var(--bmup-peso-forte);
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--bmup-cobre);
}

.bmup-meuplano__faixa h3 {
    margin: 0;
    font-family: var(--bmup-font-corpo);
    font-size: 1.25rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-branco);
}

.bmup-meuplano__faixa p {
    margin: .125rem 0 0;
    font-size: .875rem;
    color: var(--bmup-cinza-400);
}

/* Renovar: Fase 7. É um <span>, não um botão — não se carrega no que não faz
   nada. Fica com o ar do botão do desenho, apagado. */
.bmup-meuplano__renovar {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    align-self: flex-start;
    padding: .625rem 1.25rem;
    border-radius: .75rem;
    background: rgba(255, 255, 255, .08);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-400);
    cursor: not-allowed;
}

.bmup-meuplano__renovar svg {
    width: .9375rem;
    height: .9375rem;
}

.bmup-meuplano__renovar .bmup-membro__breve {
    margin-left: .25rem;
    color: var(--bmup-cinza-500);
}


/* --- os dois cartões do primeiro separador --- */

.bmup-meuplano__grelha {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    align-items: start;
}

.bmup-meuplano__cartao {
    padding: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}

.bmup-meuplano__titulo {
    margin: 0 0 1.25rem;
    font-family: var(--bmup-font-corpo);
    font-size: .8125rem;
    font-weight: var(--bmup-peso-semi);
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--bmup-cinza-900);
}

/* Uma <dl>: são pares rótulo/valor, e é isso que a lista de definições é. */
.bmup-meuplano__linhas {
    margin: 0;
}

.bmup-meuplano__linhas > div {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .5rem 0;
    border-bottom: 1px solid var(--bmup-cinza-100);
}

.bmup-meuplano__linhas > div:last-child { border-bottom: 0; }

.bmup-meuplano__linhas dt {
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-meuplano__linhas dd {
    margin: 0;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
    text-align: right;
}

.bmup-meuplano__selo {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    padding: .25rem .625rem;
    border-radius: 9999px;
    background: rgba(22, 163, 74, .1);
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: #15803d;
}

/* A barra dos dias. A do Perfil vive em cartão escuro e esta em cartão
   branco — o que muda é o fundo do carril. */
.bmup-meuplano__barra-legenda {
    display: flex;
    justify-content: space-between;
    margin: 1.25rem 0 .375rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-meuplano__barra {
    height: .5rem;
    border-radius: 9999px;
    background: var(--bmup-cinza-100);
    overflow: hidden;
}

.bmup-meuplano__barra span {
    display: block;
    height: 100%;
    border-radius: 9999px;
    background: linear-gradient(to right, var(--bmup-cobre), var(--bmup-cobre-claro));
}

.bmup-meuplano__renovacao {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 1.25rem 0 0;
    padding-top: 1rem;
    border-top: 1px solid var(--bmup-cinza-100);
    font-size: .875rem;
    color: var(--bmup-cinza-600);
}

.bmup-meuplano__renovacao svg {
    width: .875rem;
    height: .875rem;
    color: var(--bmup-cinza-400);
}

.bmup-meuplano__renovacao b {
    margin-left: auto;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
}

.bmup-meuplano__sim { color: var(--bmup-verde); }
.bmup-meuplano__nao { color: var(--bmup-cinza-400); }


/* --- benefícios --- */

.bmup-meuplano__beneficios {
    margin: 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: .75rem;
}

.bmup-meuplano__beneficios li {
    display: flex;
    align-items: center;
    gap: .75rem;
    font-size: .875rem;
    color: var(--bmup-cinza-700);
}

.bmup-meuplano__marca {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.25rem;
    height: 1.25rem;
    flex-shrink: 0;
    border-radius: 50%;
    background: rgba(172, 116, 80, .1);
}

.bmup-meuplano__marca svg {
    width: .6875rem;
    height: .6875rem;
    color: var(--bmup-cobre);
}

.bmup-meuplano__vazio {
    margin: 0;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-meuplano__nota {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: 1rem;
    margin-top: 1.5rem;
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
}

.bmup-meuplano__nota svg {
    width: .9375rem;
    height: .9375rem;
    flex-shrink: 0;
    margin-top: .125rem;
    color: var(--bmup-cobre);
}

.bmup-meuplano__nota p {
    margin: 0;
    font-size: .75rem;
    line-height: 1.6;
    color: var(--bmup-cinza-500);
}

.bmup-meuplano__nota b { color: var(--bmup-cinza-700); }

.bmup-meuplano__ver {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    padding: .625rem;
    margin-top: .75rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-700);
    text-decoration: none;
    transition: border-color .2s, color .2s;
}

.bmup-meuplano__ver:hover {
    border-color: var(--bmup-cobre);
    color: var(--bmup-cobre);
}

.bmup-meuplano__ver svg {
    width: .9375rem;
    height: .9375rem;
    transform: rotate(-90deg);   /* o chevron do sprite aponta para baixo */
}


/* --- separador dos planos disponíveis --- */

.bmup-meuplano__aviso {
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 1rem;
    margin-bottom: 1.5rem;
    border: 1px solid rgba(172, 116, 80, .2);
    border-radius: 1rem;
    background: rgba(172, 116, 80, .05);
}

.bmup-meuplano__aviso svg {
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
    color: var(--bmup-cobre);
}

.bmup-meuplano__aviso p {
    margin: 0;
    font-size: .875rem;
    line-height: 1.6;
    color: var(--bmup-cinza-700);
}

.bmup-meuplano__aviso a {
    color: var(--bmup-cobre);
    font-weight: var(--bmup-peso-semi);
    text-decoration: none;
}

.bmup-meuplano__aviso a:hover { text-decoration: underline; }

.bmup-meuplano__planos {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.25rem;
    margin-bottom: 1.5rem;
}

/* O cartão herda `--p-acento` e `--p-tira` do .bmup-tons--<nivel> que o
   template lhe põe (bmup-paginas.css). Aqui só se usam essas duas. */
.bmup-meuplano__plano {
    position: relative;
    display: flex;
    flex-direction: column;
    padding: 2rem 1.5rem 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    overflow: hidden;
}

.bmup-meuplano__plano--actual {
    border-color: rgba(172, 116, 80, .4);
    box-shadow: 0 0 0 1px rgba(172, 116, 80, .2);
}

.bmup-meuplano__tira {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    background: var(--p-tira, var(--bmup-cinza-300));
}

.bmup-meuplano__etiqueta {
    position: absolute;
    top: .75rem;
    right: 1rem;
    padding: .1875rem .625rem;
    border-radius: 9999px;
    background: var(--bmup-cobre);
    font-size: .625rem;
    font-weight: var(--bmup-peso-forte);
    text-transform: uppercase;
    letter-spacing: .06em;
    color: var(--bmup-branco);
}

.bmup-meuplano__etiqueta--preta { background: var(--bmup-preto); }

.bmup-meuplano__plano-topo {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin-bottom: .75rem;
}

.bmup-meuplano__plano-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.75rem;
    height: 2.75rem;
    flex-shrink: 0;
    border-radius: .75rem;
    background: var(--bmup-cinza-100);
}

.bmup-meuplano__plano-icone svg {
    width: 1.375rem;
    height: 1.375rem;
    color: var(--p-acento, var(--bmup-cinza-500));
}

.bmup-meuplano__plano-nivel {
    padding: .1875rem .625rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 9999px;
    font-size: .625rem;
    font-weight: var(--bmup-peso-forte);
    text-transform: uppercase;
    letter-spacing: .12em;
    color: var(--bmup-cinza-600);
}

.bmup-meuplano__plano-nome {
    margin: 0 0 .25rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-meuplano__plano-descricao {
    margin: 0 0 1.25rem;
    font-size: .75rem;
    line-height: 1.6;
    color: var(--bmup-cinza-500);
}

.bmup-meuplano__plano-preco {
    margin: 0;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--bmup-cinza-100);
}

.bmup-meuplano__plano-preco b {
    font-size: 1.875rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-meuplano__plano-preco span {
    font-size: .875rem;
    color: var(--bmup-cinza-400);
}

.bmup-meuplano__plano-acesso {
    margin: 1rem 0 0;
    font-size: .8125rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--p-acento, var(--bmup-cinza-600));
}

.bmup-meuplano__plano-lista {
    flex: 1;
    margin: 1.25rem 0;
    padding: 0;
    list-style: none;
    display: flex;
    flex-direction: column;
    gap: .625rem;
}

.bmup-meuplano__plano-lista li {
    display: flex;
    align-items: flex-start;
    gap: .625rem;
    font-size: .75rem;
    line-height: 1.5;
    color: var(--bmup-cinza-700);
}

.bmup-meuplano__plano-lista .bmup-meuplano__marca {
    width: 1rem;
    height: 1rem;
    margin-top: .0625rem;
}

.bmup-meuplano__plano-lista .bmup-meuplano__marca svg {
    width: .625rem;
    height: .625rem;
}

.bmup-meuplano__fora {
    color: var(--bmup-cinza-300);
    text-decoration: line-through;
}

.bmup-meuplano__fora .bmup-meuplano__marca {
    background: var(--bmup-cinza-100);
}

.bmup-meuplano__fora .bmup-meuplano__marca svg { color: var(--bmup-cinza-300); }

/* Mudar de plano é a Fase 7: <span> apagado, como o Renovar da faixa. */
.bmup-meuplano__plano-botao {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .125rem;
    padding: .625rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-400);
    text-align: center;
    cursor: not-allowed;
}

.bmup-meuplano__plano-botao .bmup-membro__breve { margin-left: 0; }

.bmup-meuplano__plano-botao--actual {
    border-color: rgba(172, 116, 80, .3);
    background: rgba(172, 116, 80, .05);
    color: var(--bmup-cobre);
    cursor: default;
}

.bmup-meuplano__personalizada {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    padding: 1.5rem;
    border-radius: 1rem;
    background:
        linear-gradient(90deg, transparent 70%, rgba(172, 116, 80, .12) 100%),
        var(--bmup-cinza-900);
}

.bmup-meuplano__personalizada h3 {
    margin: 0 0 .25rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-branco);
}

.bmup-meuplano__personalizada p {
    margin: 0;
    font-size: .875rem;
    color: var(--bmup-cinza-400);
}

.bmup-meuplano__personalizada a {
    display: inline-flex;
    align-items: center;
    align-self: flex-start;
    padding: .625rem 1.5rem;
    border-radius: .75rem;
    background: var(--bmup-branco);
    font-size: .875rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
    text-decoration: none;
    white-space: nowrap;
    transition: background-color .2s;
}

.bmup-meuplano__personalizada a:hover { background: var(--bmup-cinza-200); }


/* --- separador do histórico --- */

.bmup-meuplano__cartao--largo .bmup-meuplano__titulo { margin-bottom: .375rem; }

.bmup-meuplano__nota-topo {
    margin: 0 0 1.25rem;
    font-size: .8125rem;
    line-height: 1.6;
    color: var(--bmup-cinza-500);
}

.bmup-meuplano__historico {
    margin: 0;
    padding: 0;
    list-style: none;
}

.bmup-meuplano__historico li {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem 0;
    border-top: 1px solid var(--bmup-cinza-100);
}

.bmup-meuplano__historico-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.5rem;
    height: 2.5rem;
    flex-shrink: 0;
    border-radius: .75rem;
    background: var(--bmup-cinza-100);
}

.bmup-meuplano__historico-icone svg {
    width: 1.0625rem;
    height: 1.0625rem;
    color: var(--bmup-cinza-500);
}

.bmup-meuplano__historico-icone--activa {
    background: rgba(22, 163, 74, .1);
}

.bmup-meuplano__historico-icone--activa svg { color: var(--bmup-verde); }

.bmup-meuplano__historico-icone--pendente {
    background: rgba(217, 119, 6, .1);
}

.bmup-meuplano__historico-icone--pendente svg { color: var(--bmup-ambar); }

.bmup-meuplano__historico-texto {
    flex: 1;
    min-width: 0;
}

.bmup-meuplano__historico-texto strong {
    display: block;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-meuplano__historico-texto small {
    display: block;
    margin-top: .125rem;
    font-size: .75rem;
    color: var(--bmup-cinza-400);
}

.bmup-meuplano__historico-valor {
    flex-shrink: 0;
    text-align: right;
}

.bmup-meuplano__historico-valor b {
    display: block;
    font-size: .9375rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-meuplano__historico-estado {
    display: block;
    margin-top: .125rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-400);
}

.bmup-meuplano__historico-estado--activa   { color: var(--bmup-verde); }
.bmup-meuplano__historico-estado--pendente { color: var(--bmup-ambar); }


/* --- ecrãs largos: o mesmo ponto de quebra do resto da área de membro --- */

@media (min-width: 768px) {

    .bmup-meuplano__faixa,
    .bmup-meuplano__personalizada {
        flex-direction: row;
        align-items: center;
        justify-content: space-between;
    }

    .bmup-meuplano__grelha { grid-template-columns: repeat(2, 1fr); }

    .bmup-meuplano__planos { grid-template-columns: repeat(3, 1fr); }
}


/* ==========================================================================
   ALERTAS DE NEGÓCIO  —  Perfil (views/Utilizadores/membro-perfil.tpl)
   ==========================================================================
   Profile.tsx:662 (a lista) e :314 (a janela, AlertModal). A janela é um
   <dialog> nativo que o bmup.js abre; o fundo escurecido é o ::backdrop.

   As pílulas da janela são caixas de marcar escondidas dentro de um <label>:
   o formulário envia-se como qualquer outro, e o teclado chega a cada uma.
   ========================================================================== */

/* O formulário do anúncio esconde o distrito fora de Portugal (bmup.js). */
.bmup-forma__campo[hidden] { display: none; }

/* --- o topo da caixa: título, frase e o botão --- */

.bmup-alertas__topo { gap: 1rem; flex-wrap: wrap; }

.bmup-alertas__topo p {
    margin: .125rem 0 0;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-alertas__novo {
    display: inline-flex;
    align-items: center;
    gap: .5rem;
    padding: .5rem 1rem;
    border: 0;
    border-radius: .75rem;
    background: var(--bmup-preto);
    font: inherit;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-branco);
    cursor: pointer;
    transition: background-color .2s;
}

.bmup-alertas__novo:hover { background: var(--bmup-cobre); }

.bmup-alertas__novo svg { width: .9375rem; height: .9375rem; }

/* --- sem alertas --- */

.bmup-alertas__vazio {
    margin: 0;
    padding: 3rem 1.5rem;
    text-align: center;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

.bmup-alertas__vazio p { margin: 0; }

.bmup-alertas__vazio-icone {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin: 0 auto .75rem;
    border-radius: 1rem;
    background: var(--bmup-cinza-100);
}

.bmup-alertas__vazio-icone svg { width: 1.25rem; height: 1.25rem; color: var(--bmup-cinza-400); }

/* --- a lista --- */

.bmup-alertas__lista {
    margin: 0;
    padding: 0;
    list-style: none;
}

.bmup-alertas__linha {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.5rem;
    border-top: 1px solid var(--bmup-cinza-100);
    transition: background-color .2s;
}

.bmup-alertas__linha:first-child { border-top: 0; }

.bmup-alertas__linha:hover { background: rgba(250, 250, 250, .5); }

.bmup-alertas__info { flex: 1; min-width: 0; }

.bmup-alertas__nome {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
    margin-bottom: .5rem;
}

.bmup-alertas__nome h4 {
    margin: 0;
    font-family: var(--bmup-font-corpo);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-alertas__estado {
    padding: .125rem .5rem;
    border-radius: 9999px;
    background: var(--bmup-cinza-100);
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
}

.bmup-alertas__estado--activo { background: #dcfce7; color: #15803d; }

.bmup-alertas__etiquetas {
    display: flex;
    flex-wrap: wrap;
    gap: .375rem;
}

.bmup-alertas__etiqueta {
    padding: .125rem .5rem;
    border-radius: .375rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
}

.bmup-alertas__etiqueta--cobre { background: rgba(172, 116, 80, .1); color: var(--bmup-cobre); }
.bmup-alertas__etiqueta--azul  { background: #eff6ff; color: #2563eb; }
.bmup-alertas__etiqueta--verde { background: #ecfdf5; color: #047857; }

.bmup-alertas__accoes {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-shrink: 0;
}

.bmup-alertas__accoes form { margin: 0; }

/* O interruptor: um botão que submete. Desenho: w-10 h-5, bola de 16px. */
.bmup-alertas__interruptor {
    position: relative;
    display: block;
    width: 2.5rem;
    height: 1.25rem;
    padding: 0;
    border: 0;
    border-radius: 9999px;
    background: var(--bmup-cinza-200);
    cursor: pointer;
    transition: background-color .2s;
}

.bmup-alertas__interruptor span {
    position: absolute;
    top: .125rem;
    left: .125rem;
    width: 1rem;
    height: 1rem;
    border-radius: 50%;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .2);
    transition: left .2s;
}

.bmup-alertas__interruptor--ligado { background: var(--bmup-cobre); }

.bmup-alertas__interruptor--ligado span { left: 1.375rem; }

.bmup-alertas__icone {
    display: inline-flex;
    padding: .375rem;
    border: 0;
    border-radius: .5rem;
    background: transparent;
    color: var(--bmup-cinza-400);
    cursor: pointer;
    transition: background-color .2s, color .2s;
}

.bmup-alertas__icone svg { width: .875rem; height: .875rem; }

.bmup-alertas__icone:hover { background: rgba(172, 116, 80, .05); color: var(--bmup-cobre); }

.bmup-alertas__icone--apagar:hover { background: #fef2f2; color: #ef4444; }

/* --- a janela --- */

.bmup-alertas__janela {
    width: calc(100% - 2rem);
    max-width: 32rem;
    max-height: 90vh;
    padding: 0;
    border: 0;
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);
    color: var(--bmup-cinza-900);
    overflow-y: auto;
}

.bmup-alertas__janela::backdrop {
    background: rgba(0, 0, 0, .5);
    backdrop-filter: blur(4px);
}

.bmup-alertas__janela form { margin: 0; }

.bmup-alertas__janela-topo,
.bmup-alertas__janela-rodape {
    position: sticky;
    z-index: 1;
    display: flex;
    align-items: center;
    background: var(--bmup-branco);
}

.bmup-alertas__janela-topo {
    top: 0;
    justify-content: space-between;
    padding: 1.5rem;
    border-bottom: 1px solid var(--bmup-cinza-100);
}

.bmup-alertas__janela-topo h3 {
    margin: 0;
    font-family: var(--bmup-font-corpo);
    font-size: 1.125rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-alertas__fechar {
    display: inline-flex;
    padding: .5rem;
    border: 0;
    border-radius: .75rem;
    background: transparent;
    color: var(--bmup-cinza-400);
    cursor: pointer;
}

.bmup-alertas__fechar:hover { background: var(--bmup-cinza-100); color: var(--bmup-cinza-900); }

.bmup-alertas__fechar svg { width: 1.25rem; height: 1.25rem; }

.bmup-alertas__janela-corpo { padding: .25rem 1.5rem 1.5rem; }

.bmup-alertas__janela-corpo .bmup-meus__aviso { margin: 1.25rem 0 0; }

.bmup-alertas__grupo {
    margin: 1.5rem 0 0;
    padding: 0;
    border: 0;
}

.bmup-alertas__grupo legend {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: .75rem;
    padding: 0;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-700);
}

.bmup-alertas__grupo legend svg { width: .875rem; height: .875rem; color: var(--bmup-cobre); }

.bmup-alertas__sub {
    margin: .75rem 0 .5rem;
    font-size: .75rem;
    color: var(--bmup-cinza-500);
}

.bmup-alertas__pilulas {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}

.bmup-alertas__pilula {
    position: relative;
    display: inline-flex;
    margin: 0;
    cursor: pointer;
}

/* A caixa fica lá — para o teclado e para o formulário — mas não se vê. */
.bmup-alertas__pilula input {
    position: absolute;
    opacity: 0;
    width: 1px;
    height: 1px;
    margin: 0;
}

.bmup-alertas__pilula span {
    padding: .375rem .75rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 9999px;
    background: var(--bmup-branco);
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
    transition: background-color .2s, border-color .2s, color .2s;
}

.bmup-alertas__pilula:hover span { border-color: var(--bmup-cinza-300); }

.bmup-alertas__pilula input:checked + span {
    border-color: var(--bmup-cobre);
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
}

.bmup-alertas__pilula input:focus-visible + span {
    box-shadow: 0 0 0 3px rgba(172, 116, 80, .3);
}

.bmup-alertas__email {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    margin: 1.5rem 0 0;
    padding: 1rem;
    border: 1px solid #fef3c7;
    border-radius: .75rem;
    background: #fffbeb;
    font-size: .75rem;
    line-height: 1.5;
    color: #b45309;
}

.bmup-alertas__email svg {
    width: 1rem;
    height: 1rem;
    flex-shrink: 0;
    margin-top: .125rem;
    color: #d97706;
}

.bmup-alertas__janela-rodape {
    bottom: 0;
    gap: .75rem;
    padding: 1.5rem;
    border-top: 1px solid var(--bmup-cinza-100);
}

.bmup-alertas__cancelar,
.bmup-alertas__guardar {
    flex: 1;
    padding: .75rem;
    border-radius: .75rem;
    font: inherit;
    font-size: .875rem;
    cursor: pointer;
    transition: background-color .2s;
}

.bmup-alertas__cancelar {
    border: 1px solid var(--bmup-cinza-200);
    background: var(--bmup-branco);
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-600);
}

.bmup-alertas__cancelar:hover { background: var(--bmup-cinza-50); }

.bmup-alertas__guardar {
    border: 0;
    background: var(--bmup-preto);
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-branco);
}

.bmup-alertas__guardar:hover { background: var(--bmup-cobre); }


/* --- Visão Geral: "Os Meus Anúncios" passou a ser ligação (2026-09-17) --- */

a.bmup-painel__meus {
    color: inherit;
    text-decoration: none;
    transition: border-color .2s, box-shadow .2s;
}

a.bmup-painel__meus:hover {
    border-color: rgba(172, 116, 80, .4);
    box-shadow: 0 4px 12px rgba(0, 0, 0, .06);
}

.bmup-painel__seta {
    width: 1rem;
    height: 1rem;
    margin-left: auto;
    flex-shrink: 0;
    color: var(--bmup-cinza-400);
    /* O i-chevron já aponta para a direita (ChevronRight do desenho). A
       rotação que aqui estava punha-o a apontar para cima. */
}

/* --- Diretório de Ativos: venda, investimento, reservado (2026-09-25) ------
   Da design reference nova (DashboardDirectory.tsx): */

/* o número do separador Investimento, cinzento (bg-zinc-200 text-zinc-600) */
.bmup-dir__conta--cinza { background: var(--bmup-cinza-200); color: var(--bmup-cinza-600); }

/* os selos: Reservado a âmbar (bg-amber-100 text-amber-800), Destaque a azul
   (bg-blue-100 text-blue-800) — tagStyle() */
.bmup-anuncio__selo--reservado { background: #fef3c7; color: #92400e; }
.bmup-anuncio__selo--destaque  { background: #dbeafe; color: #1e40af; }
/* "Em negociação" (2026-10-12) a violeta (bg-violet-100 text-violet-800):
   não se confunde com o âmbar do Reservado, o azul do Destaque nem o amarelo
   do Pendente. Sem fotografia esbatida — ainda não está reservado. */
.bmup-anuncio__selo--negociacao { background: #ede9fe; color: #5b21b6; }

/* o reservado com a fotografia esbatida (opacity-70) */
.bmup-anuncio--reservado .bmup-anuncio__foto img { opacity: .7; }

/* o tipo Investimento a cobre (bg-[#ac7450]/10 text-[#ac7450]) */
.bmup-anuncio__tipo--investimento { background: rgba(172, 116, 80, .1); color: var(--bmup-cobre); }

/* "↗ ROI: 11,5%/ano" por cima do valor (text-[10px] text-zinc-400 mb-1) */
.bmup-anuncio__valor { display: flex; flex-direction: column; min-width: 0; }
.bmup-anuncio__roi {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    margin-bottom: .25rem;
    font-size: .625rem;
    color: var(--bmup-cinza-400);
}
.bmup-anuncio__roi svg { width: 9px; height: 9px; flex-shrink: 0; }
/* com o ROI, o "Ver" alinha com o preço, em baixo */
.bmup-anuncio__rodape:has(.bmup-anuncio__roi) { align-items: flex-end; }

/* Detalhe: o ícone no título do ROI e do prazo (Retorno Est. / Duração do
   desenho: TrendingUp e Clock a 11px), e o estado Reservado a âmbar. */
.bmup-detalhe__factos p { display: flex; align-items: center; gap: .25rem; }
.bmup-detalhe__factos p svg { width: 11px; height: 11px; flex-shrink: 0; }
.bmup-detalhe__reservado { display: flex; align-items: center; gap: .25rem; color: #b45309; }
.bmup-detalhe__reservado svg { width: 12px; height: 12px; }
.bmup-detalhe__negociacao { display: flex; align-items: center; gap: .25rem; color: #6d28d9; }
.bmup-detalhe__negociacao svg { width: 14px; height: 14px; }
/* 2026-10-12: o ".bmup-detalhe__factos b" (cinza-900) ganhava a estas três
   cores — o Ativo verde e o Reservado âmbar saíam pretos. */
.bmup-detalhe__factos b.bmup-detalhe__activo     { color: #16a34a; }
.bmup-detalhe__factos b.bmup-detalhe__reservado  { color: #b45309; }
.bmup-detalhe__factos b.bmup-detalhe__negociacao { color: #6d28d9; }

/* Com quatro separadores, no telemóvel não cabem (no protótipo também não:
   450px num ecrã de 400, e o "Guardados" fica fora). Aqui a barra desliza
   para o lado, sem barra de deslocamento à vista, e os separadores apertam. */
@media (max-width: 639px) {
    .bmup-dir__separadores {
        display: flex;
        max-width: 100%;
        overflow-x: auto;
        scrollbar-width: none;
        -webkit-overflow-scrolling: touch;
    }
    .bmup-dir__separadores::-webkit-scrollbar { display: none; }
    .bmup-dir__separador { flex-shrink: 0; padding-inline: .875rem; }
}

/* ==========================================================================
   OS MEUS ANÚNCIOS — design reference de 2026-09-25 (MyAds.tsx)
   ========================================================================== */

/* o botão "Criar Anúncio": bg-[#161616] hover:bg-black, px-5 py-2.5 rounded-xl,
   e sem text-sm — a letra fica nos 16px da página (medido no protótipo) */
.bmup-meus__criar { background: #161616; font-size: 1rem; }
.bmup-meus__criar:hover { background: #000; }

/* o filtro por categoria: "Todos 5" (px-3.5 py-1.5 rounded-full text-xs) */
.bmup-meus__filtro { display: flex; flex-wrap: wrap; gap: .5rem; margin-bottom: 1.5rem; }
.bmup-meus__pilula {
    padding: .375rem .875rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 9999px;
    background: var(--bmup-branco);
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-600);
    text-decoration: none;
    transition: border-color .2s, background-color .2s, color .2s;
}
.bmup-meus__pilula:hover { border-color: var(--bmup-cinza-300); }
.bmup-meus__pilula span { margin-left: .25rem; opacity: .6; }
.bmup-meus__pilula.is-activa { border-color: #0a0a0a; background: #0a0a0a; color: var(--bmup-branco); }

/* a tabela: a caixa arredonda, o rolar é por dentro */
.bmup-meus__caixa { overflow: hidden; }
.bmup-meus__rolar { overflow-x: auto; }
.bmup-meus__titulo { display: block; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900); text-decoration: none; }
a.bmup-meus__titulo:hover { color: var(--bmup-cobre); }
.bmup-meus__categoria {
    display: inline-flex;
    padding: .25rem .625rem;
    border-radius: 9999px;
    background: var(--bmup-cinza-100);
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-500);
    white-space: nowrap;
}
.bmup-meus__visitas { display: inline-flex; align-items: center; gap: .25rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }
.bmup-meus__visitas svg { width: 14px; height: 14px; color: var(--bmup-cinza-400); }
.bmup-meus__tabela td.bmup-meus__discreto { font-size: .875rem; }

/* os estados, com as cores do desenho */
.bmup-meus__estado--pendente  { background: #fef9c3; color: #a16207; }
.bmup-meus__estado--reservado { background: #fef3c7; color: #92400e; }
.bmup-meus__estado--negociacao { background: #ede9fe; color: #5b21b6; }
/* Recusado pela BMUP (2026-10-08), com o motivo por baixo do título */
.bmup-meus__estado--recusado  { background: #fee2e2; color: #b91c1c; }
.bmup-meus__motivo {
    display: flex;
    gap: .375rem;
    align-items: flex-start;
    margin: .375rem 0 0;
    max-width: 28rem;
    font-size: .75rem;
    line-height: 1.5;
    color: #b91c1c;
}
.bmup-meus__motivo svg { width: 14px; height: 14px; flex-shrink: 0; margin-top: .125rem; }
/* o motivo numa linha e o que fazer na seguinte, em cinzento: o motivo é
   escrito pela BMUP e pode vir sem ponto final (2026-10-15) */
.bmup-meus__dica { display: block; font-size: inherit; color: var(--bmup-cinza-500); }

/* as ações: sem moldura, p-1.5 rounded-lg, ícone 16px, cada uma com a cor
   dela ao passar (reservar âmbar, editar azul, eliminar vermelho) */
.bmup-meus__accoes form { display: inline-flex; margin: 0; }
.bmup-meus__accoes .bmup-meus__accao {
    width: auto;
    height: auto;
    padding: .375rem;
    border: 0;
    border-radius: .5rem;
    background: transparent;
    color: var(--bmup-cinza-400);
}
.bmup-meus__accoes .bmup-meus__accao svg { width: 16px; height: 16px; }
.bmup-meus__accoes .bmup-meus__accao--reservar:hover,
.bmup-meus__accoes .bmup-meus__accao--reservar.is-ligado { background: #fffbeb; color: #d97706; }
.bmup-meus__accoes .bmup-meus__accao--negociacao:hover,
.bmup-meus__accoes .bmup-meus__accao--negociacao.is-ligado { background: #f5f3ff; color: #6d28d9; }
.bmup-meus__accoes .bmup-meus__accao--pausar:hover,
.bmup-meus__accoes .bmup-meus__accao--pausar.is-ligado { background: var(--bmup-cinza-100); color: var(--bmup-cinza-700); }
.bmup-meus__accoes .bmup-meus__accao--editar:hover  { background: #eff6ff; color: #2563eb; }
.bmup-meus__accoes .bmup-meus__accao--apagar:hover  { background: #fef2f2; color: #dc2626; }

/* sem anúncios (p-12, caixa w-16 h-16 rounded-2xl bg-zinc-100) */
.bmup-meus__vazio { padding: 3rem; text-align: center; }
.bmup-meus__vazio-icone {
    display: flex; align-items: center; justify-content: center;
    width: 4rem; height: 4rem; margin: 0 auto 1rem;
    border-radius: 1rem; background: var(--bmup-cinza-100); color: var(--bmup-cinza-400);
}
.bmup-meus__vazio-icone svg { width: 24px; height: 24px; }
.bmup-meus__vazio p { margin: 0; font-weight: var(--bmup-peso-medio); color: var(--bmup-cinza-500); }
.bmup-meus__vazio .bmup-meus__vazio-nota { margin-top: .25rem; font-size: .875rem; font-weight: 400; color: var(--bmup-cinza-400); }

/* --------------------------------------------------------------------------
   AS JANELAS (<dialog>) — criar/editar, eliminar, "Anúncio criado!"
   fixed inset-0 bg-black/50 backdrop-blur-sm; o painel bg-white rounded-2xl
   shadow-2xl max-w-lg max-h-[90vh]
   -------------------------------------------------------------------------- */
.bmup-janela {
    width: calc(100% - 2rem);
    max-width: 32rem;
    max-height: 90vh;
    padding: 0;
    border: 0;
    border-radius: 1rem;
    background: var(--bmup-branco);
    color: var(--bmup-cinza-900);
    box-shadow: 0 25px 50px -12px rgba(0, 0, 0, .25);
}
.bmup-janela[open] { display: flex; flex-direction: column; overflow: hidden; animation: bmup-janela-entra .2s ease-out; }
/* clip, e não só hidden (2026-10-08): o hidden ainda deixa o browser fazer
   scroll à janela quando dá o foco a um campo — o topo sumia e ficava um
   vazio por baixo dos botões. */
@supports (overflow: clip) { .bmup-janela[open] { overflow: clip; } }
.bmup-janela::backdrop { background: rgba(0, 0, 0, .5); backdrop-filter: blur(4px); }
@keyframes bmup-janela-entra { from { opacity: 0; transform: translateY(10px) scale(.96); } }
@media (prefers-reduced-motion: reduce) { .bmup-janela[open] { animation: none; } }
.bmup-janela--pequena { max-width: 24rem; }

.bmup-janela__forma { display: flex; flex-direction: column; flex: 1; min-height: 0; margin: 0; }
/* só o corpo rola; o topo e os botões ficam sempre à vista */

.bmup-janela__topo {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem;
    padding: 1.5rem 1.5rem 1rem;
    border-bottom: 1px solid var(--bmup-cinza-100);
    flex-shrink: 0;
}
.bmup-janela__topo h3 { margin: 0; font-family: var(--bmup-font-corpo, inherit); font-size: 1rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }
.bmup-janela__fechar {
    display: inline-flex; padding: .5rem; border-radius: .75rem;
    color: var(--bmup-cinza-400); transition: background-color .2s, color .2s;
}
.bmup-janela__fechar:hover { background: var(--bmup-cinza-100); color: var(--bmup-cinza-700); }
.bmup-janela__fechar svg { width: 18px; height: 18px; }

/* a barra de progresso: h-1 rounded-full, a primeira w-8, as outras w-6 */
.bmup-janela__progresso { display: flex; align-items: center; gap: .5rem; margin-top: .375rem; }
.bmup-janela__progresso span { width: 1.5rem; height: .25rem; border-radius: 9999px; background: var(--bmup-cinza-200); transition: background-color .2s; }
.bmup-janela__progresso span:first-child { width: 2rem; }
.bmup-janela__progresso span.is-feito { background: var(--bmup-cobre); }
.bmup-janela__progresso small { margin-left: .25rem; font-size: .75rem; color: var(--bmup-cinza-400); }
.bmup-janela__progresso small b { font-weight: inherit; }

.bmup-janela__corpo { flex: 1; min-height: 0; overflow-y: auto; padding: 1.25rem 1.5rem; }
.bmup-janela__corpo > .bmup-meus__aviso { margin: 0 0 1rem; }

.bmup-janela__passo + .bmup-janela__passo { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--bmup-cinza-100); }
.js-passos .bmup-janela__passo { display: none; }
.js-passos .bmup-janela__passo.is-actual { display: block; margin-top: 0; padding-top: 0; border-top: 0; animation: bmup-passo-entra .2s ease-out; }
@keyframes bmup-passo-entra { from { opacity: 0; transform: translateX(16px); } }

.bmup-janela__passo-titulo {
    display: flex; align-items: center; gap: .5rem;
    margin: 0 0 .75rem;
    font-size: .875rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-700);
}
.bmup-janela__passo-titulo svg { width: 15px; height: 15px; color: var(--bmup-cobre); }
.bmup-janela .bmup-forma__campo { margin-top: 1rem; border: 0; padding: 0; min-width: 0; }
.bmup-janela__passo-titulo + .bmup-forma__campo { margin-top: 0; }
.bmup-janela fieldset.bmup-forma__campo legend { padding: 0; }

/* os campos da janela: bg-zinc-50, rounded-xl, px-4 py-2.5 */
.bmup-janela input[type="text"],
.bmup-janela select,
.bmup-janela textarea { background: var(--bmup-cinza-50); }
.bmup-janela input[type="text"]:focus,
.bmup-janela select:focus,
.bmup-janela textarea:focus { background: var(--bmup-branco); }
.bmup-janela textarea { resize: none; }

/* a categoria em mosaicos (grid-cols-2 gap-2, border-2, rounded-xl) */
.bmup-janela__mosaicos { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .5rem; }
.bmup-janela__mosaico { position: relative; display: block; margin: 0 !important; cursor: pointer; text-transform: none !important; letter-spacing: 0 !important; }
.bmup-janela__mosaico input { position: absolute; opacity: 0; pointer-events: none; }
.bmup-janela__mosaico > span {
    display: flex; align-items: center; gap: .5rem;
    padding: .625rem .75rem;
    border: 2px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    font-size: .75rem; font-weight: var(--bmup-peso-medio); color: var(--bmup-cinza-600);
    transition: border-color .2s, background-color .2s, color .2s;
}
.bmup-janela__mosaico:hover > span { border-color: var(--bmup-cinza-300); background: var(--bmup-cinza-50); }
.bmup-janela__mosaico b { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: inherit; }
.bmup-janela__mosaico-icone {
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    width: 1.5rem; height: 1.5rem; border-radius: .5rem;
}
.bmup-janela__mosaico-icone svg { width: 13px; height: 13px; }
.bmup-janela__mosaico input:checked + span { border-color: var(--bmup-cobre); background: rgba(172, 116, 80, .05); color: var(--bmup-cobre); }
.bmup-janela__mosaico input:checked + span .bmup-janela__mosaico-icone { background: rgba(172, 116, 80, .1); color: var(--bmup-cobre); }
.bmup-janela__mosaico input:focus-visible + span { box-shadow: 0 0 0 3px rgba(172, 116, 80, .35); }

/* as cores das categorias (text-X-600 bg-X-50 do desenho) */
.bmup-cor--azul     { background: #eff6ff; color: #2563eb; }
.bmup-cor--cinza    { background: var(--bmup-cinza-100); color: var(--bmup-cinza-600); }
.bmup-cor--rosa     { background: #fff1f2; color: #e11d48; }
.bmup-cor--vermelho { background: #fef2f2; color: #dc2626; }
.bmup-cor--laranja  { background: #fff7ed; color: #ea580c; }
.bmup-cor--ceu      { background: #f0f9ff; color: #0284c7; }
.bmup-cor--roxo     { background: #faf5ff; color: #9333ea; }

/* o tipo e o estado em pílulas (flex-1 py-2.5 rounded-xl text-xs) */
.bmup-janela__pilulas { display: flex; flex-wrap: wrap; gap: .5rem; }
.bmup-janela__pilula { position: relative; flex: 1 1 0; min-width: 5rem; margin: 0 !important; cursor: pointer; text-transform: none !important; letter-spacing: 0 !important; }
.bmup-janela__pilula input { position: absolute; opacity: 0; pointer-events: none; }
.bmup-janela__pilula > span {
    display: block; padding: .625rem .5rem;
    border: 1px solid var(--bmup-cinza-200); border-radius: .75rem;
    background: var(--bmup-cinza-50);
    font-size: .75rem; font-weight: var(--bmup-peso-semi); text-align: center; color: var(--bmup-cinza-500);
    transition: border-color .2s, background-color .2s, color .2s;
}
.bmup-janela__pilula:hover > span { border-color: var(--bmup-cinza-300); }
.bmup-janela__pilula input:checked + span,
.bmup-janela__pilula.is-aceso > span { border-color: rgba(172, 116, 80, .5); background: rgba(172, 116, 80, .1); color: var(--bmup-cobre); }
.bmup-janela__pilula input:focus-visible + span { box-shadow: 0 0 0 3px rgba(172, 116, 80, .35); }
.bmup-janela__pilula.is-so-leitura { cursor: default; }
.bmup-janela__pilula.is-so-leitura:not(.is-aceso) > span { opacity: .55; }
/* O estado tem cinco (com o "Em negociação", 2026-10-12): cada uma do
   tamanho do texto, numa linha; se não couberem, passam à linha seguinte
   inteiras em vez de partir o texto. */
.bmup-janela__pilulas--estado .bmup-janela__pilula { flex: 1 1 auto; min-width: 0; }
.bmup-janela__pilulas--estado .bmup-janela__pilula > span { white-space: nowrap; padding-inline: .625rem; }

/* "Detalhes de Imobiliário de Luxo" (pt-3 border-t, o título a zinc-400) */
.bmup-janela__detalhes { margin-top: 1.25rem; padding-top: .75rem; border-top: 1px solid var(--bmup-cinza-100); }
.bmup-janela__detalhes[hidden] { display: none; }
.bmup-janela__detalhes-titulo { margin: 0; font-size: .75rem; font-weight: var(--bmup-peso-semi); text-transform: uppercase; letter-spacing: .04em; color: var(--bmup-cinza-400); }
.bmup-janela__detalhes .bmup-forma__campo { margin-top: .75rem; }
.js-passos [data-so-investimento][data-escondido] { display: none; }

/* as fotografias que o anúncio já tem: marcar = tirar */
.bmup-janela__fotos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: .5rem; }
.bmup-janela__foto { position: relative; display: block; margin: 0 !important; overflow: hidden; border-radius: .625rem; aspect-ratio: 1; cursor: pointer; text-transform: none !important; }
.bmup-janela__foto img { width: 100%; height: 100%; object-fit: cover; transition: opacity .2s, filter .2s; }
.bmup-janela__foto input { position: absolute; opacity: 0; pointer-events: none; }
.bmup-janela__capa { position: absolute; top: .25rem; left: .25rem; padding: .0625rem .375rem; border-radius: 9999px; background: rgba(255, 255, 255, .9); font-size: .625rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900); }
.bmup-janela__foto-tirar {
    position: absolute; inset: auto 0 0 0;
    display: flex; align-items: center; justify-content: center; gap: .25rem;
    padding: .25rem; background: rgba(0, 0, 0, .55);
    font-size: .625rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-branco);
    opacity: 0; transition: opacity .2s;
}
.bmup-janela__foto-tirar svg { width: 10px; height: 10px; }
.bmup-janela__foto:hover .bmup-janela__foto-tirar,
.bmup-janela__foto input:focus-visible ~ .bmup-janela__foto-tirar { opacity: 1; }
.bmup-janela__foto:has(input:checked) img { opacity: .35; filter: grayscale(1); }
.bmup-janela__foto:has(input:checked) .bmup-janela__foto-tirar { opacity: 1; background: #dc2626; }

/* o aviso das 24h (p-3 bg-amber-50 border-amber-100 rounded-xl text-xs amber-700) */
.bmup-janela__aviso-24h { margin: 1rem 0 0; padding: .75rem; border: 1px solid #fef3c7; border-radius: .75rem; background: #fffbeb; font-size: .75rem; color: #b45309; }

/* os botões do fundo: Voltar / Continuar / Publicar (flex-1 py-3 rounded-xl) */
.bmup-janela__rodape { display: flex; gap: .75rem; padding: 1rem 1.5rem 1.5rem; flex-shrink: 0; }
.bmup-janela__rodape [hidden] { display: none; }
.bmup-janela__principal,
.bmup-janela__secundario,
.bmup-janela__perigo {
    flex: 1; display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
    padding: .75rem 1rem; border-radius: .75rem;
    font: inherit; font-size: .875rem; cursor: pointer;
    transition: background-color .2s, color .2s, border-color .2s;
}
.bmup-janela__principal { border: 0; background: #0a0a0a; font-weight: var(--bmup-peso-semi); color: var(--bmup-branco); }
.bmup-janela__principal:hover { background: var(--bmup-cobre); }
.bmup-janela__principal:disabled { background: var(--bmup-cinza-100); color: var(--bmup-cinza-400); cursor: not-allowed; }
.bmup-janela__principal svg { width: 15px; height: 15px; }
.bmup-janela__secundario { border: 1px solid var(--bmup-cinza-200); background: var(--bmup-branco); font-weight: var(--bmup-peso-medio); color: var(--bmup-cinza-600); }
.bmup-janela__secundario:hover { background: var(--bmup-cinza-50); }
.bmup-janela__perigo { border: 0; background: #dc2626; font-weight: var(--bmup-peso-semi); color: var(--bmup-branco); }
.bmup-janela__perigo:hover { background: #b91c1c; }

/* eliminar e "criado!": p-8 ao centro, o ícone numa caixa */
.bmup-janela__confirmar { padding: 2rem; text-align: center; }
.bmup-janela__confirmar h3 { margin: 0 0 .5rem; font-family: var(--bmup-font-corpo, inherit); font-size: 1rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }
.bmup-janela__confirmar p { margin: 0 0 1.5rem; font-size: .875rem; color: var(--bmup-cinza-500); }
.bmup-janela__confirmar .bmup-janela__nota { margin-top: -1rem; font-size: .75rem; color: var(--bmup-cinza-400); }
.bmup-janela__botoes { display: flex; gap: .75rem; }
.bmup-janela__icone-apagar,
.bmup-janela__icone-certo { display: flex; align-items: center; justify-content: center; margin: 0 auto 1rem; }
.bmup-janela__icone-apagar { width: 3.5rem; height: 3.5rem; border-radius: 1rem; background: #fef2f2; color: #ef4444; }
.bmup-janela__icone-apagar svg { width: 24px; height: 24px; }
.bmup-janela__icone-certo { width: 4rem; height: 4rem; border-radius: 50%; background: #dcfce7; color: #22c55e; }
.bmup-janela__icone-certo svg { width: 30px; height: 30px; }
.bmup-janela__confirmar > .bmup-janela__principal { flex: none; padding-inline: 1.5rem; }

@media (max-width: 480px) {
    .bmup-janela { width: calc(100% - 1rem); max-height: 94vh; }
    .bmup-janela__topo { padding: 1.25rem 1.25rem .875rem; }
    .bmup-janela__corpo { padding: 1rem 1.25rem; }
    .bmup-janela__rodape { padding: .875rem 1.25rem 1.25rem; }
    .bmup-janela__fotos { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

/* ==========================================================================
   OPORTUNIDADES — PEDIDOS DE PROCURA (Opportunities.tsx, 2026-09-25)
   ========================================================================== */

/* "Publicar Pedido": bg-[#0a0a0a] hover:bg-[#ac7450] shadow-sm */
.bmup-pedidos__publicar { background: #0a0a0a; box-shadow: 0 1px 2px rgba(0, 0, 0, .05); }
.bmup-pedidos__publicar:hover { background: var(--bmup-cobre); }

/* a pesquisa e as categorias numa caixa (bg-white rounded-2xl border p-4 space-y-4) */
.bmup-pedidos__filtros {
    display: grid; gap: 1rem;
    margin-bottom: 2rem; padding: 1rem;
    border: 1px solid var(--bmup-cinza-200); border-radius: 1rem;
    background: var(--bmup-branco); box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
}
.bmup-pedidos__filtros form { margin: 0; }
.bmup-pedidos__categorias { margin: 0; }

.bmup-pedidos__conta { margin: 0 0 2rem; font-size: .875rem; color: var(--bmup-cinza-500); }
.bmup-pedidos__conta b { font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }

.bmup-pedidos__lista { display: grid; gap: 1rem; }

/* o cartão (bg-white rounded-2xl border shadow-sm p-5, hover:shadow-md) */
.bmup-pedido {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem;
    padding: 1.25rem;
    border: 1px solid var(--bmup-cinza-200); border-radius: 1rem;
    background: var(--bmup-branco); box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    transition: box-shadow .2s, border-color .2s;
    animation: bmup-pedido-entra .3s ease-out backwards;
    animation-delay: var(--bmup-atraso, 0ms);
}
.bmup-pedido:hover { border-color: var(--bmup-cinza-300); box-shadow: 0 4px 6px -1px rgba(0, 0, 0, .08), 0 2px 4px -2px rgba(0, 0, 0, .06); }
@keyframes bmup-pedido-entra { from { opacity: 0; transform: translateY(12px); } }
@media (prefers-reduced-motion: reduce) { .bmup-pedido { animation: none; } }

.bmup-pedido__corpo { display: flex; align-items: flex-start; gap: .75rem; flex: 1; min-width: 0; }
.bmup-pedido__avatar {
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    width: 2.5rem; height: 2.5rem; border-radius: 50%;
    border: 1px solid var(--bmup-cinza-200); background: var(--bmup-cinza-100);
    font-size: .875rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-500);
}
.bmup-pedido__texto { flex: 1; min-width: 0; }
.bmup-pedido__selos { display: flex; flex-wrap: wrap; align-items: center; gap: .5rem; margin-bottom: .375rem; }
.bmup-pedido__plano {
    padding: .125rem .5rem; border-radius: 9999px;
    font-size: .625rem; font-weight: var(--bmup-peso-forte); text-transform: uppercase; letter-spacing: .025em;
}
.bmup-pedido__plano--platina { background: var(--bmup-cinza-800); color: var(--bmup-cinza-200); }
.bmup-pedido__plano--gold    { background: #fef3c7; color: #b45309; }
.bmup-pedido__plano--prata   { background: var(--bmup-cinza-100); color: var(--bmup-cinza-600); }
.bmup-pedido__categoria {
    padding: .125rem .5rem; border-radius: 9999px; background: var(--bmup-cinza-100);
    font-size: .625rem; font-weight: var(--bmup-peso-semi); text-transform: uppercase; letter-spacing: .05em; color: var(--bmup-cinza-400);
}
.bmup-pedido h3 {
    margin: 0 0 .375rem;
    font-family: var(--bmup-font-corpo, inherit); font-size: .875rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900);
}
.bmup-pedido__descricao {
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
    margin: 0; font-size: .75rem; line-height: 1.625; color: var(--bmup-cinza-500);
}
.bmup-pedido__meta { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem; margin: .75rem 0 0; font-size: .75rem; color: var(--bmup-cinza-400); }
.bmup-pedido__meta span { display: inline-flex; align-items: center; gap: .25rem; }
.bmup-pedido__meta svg { width: 11px; height: 11px; }

.bmup-pedido__accao { margin: 0; flex-shrink: 0; }
.bmup-pedido__contactar {
    display: inline-flex; align-items: center; gap: .375rem;
    padding: .5rem .75rem; border: 0; border-radius: .75rem;
    background: #0a0a0a; font: inherit; font-size: .75rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-branco);
    cursor: pointer; transition: background-color .2s;
}
.bmup-pedido__contactar:hover { background: var(--bmup-cobre); }
.bmup-pedido__contactar svg { width: 12px; height: 12px; }
.bmup-pedido__meu { flex-shrink: 0; font-size: .75rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cobre); text-decoration: none; }
.bmup-pedido__meu:hover { text-decoration: underline; }

@media (max-width: 560px) {
    .bmup-pedido { flex-direction: column; }
    .bmup-pedido__accao, .bmup-pedido__meu { align-self: flex-end; }
}

/* sem pedidos (bg-white rounded-2xl border py-16) */
.bmup-pedidos__vazio {
    padding: 4rem 1rem; text-align: center;
    border: 1px solid var(--bmup-cinza-200); border-radius: 1rem; background: var(--bmup-branco);
}
.bmup-pedidos__vazio p { margin: 0; font-weight: var(--bmup-peso-medio); color: var(--bmup-cinza-500); }
.bmup-pedidos__vazio .bmup-dir__vazio-limpar { display: inline-block; margin-top: .75rem; }

/* os Meus Anúncios, separador dos pedidos */
.bmup-meus__barra-pedidos { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1rem; margin-bottom: 1.5rem; }
.bmup-meus__barra-pedidos .bmup-meus__plano { margin: 0; }
.bmup-meus__barra-pedidos .bmup-meus__plano + .bmup-meus__plano { margin-top: .25rem; }
.bmup-meus__estado--encontrado { background: #dbeafe; color: #1d4ed8; }

/* --------------------------------------------------------------------------
   a janela do pedido (CreateModal do Opportunities.tsx)
   -------------------------------------------------------------------------- */
.bmup-janela__titulo-grande { font-size: 1.125rem !important; }
.bmup-janela__passo-texto { margin: .125rem 0 0; font-size: .75rem; color: var(--bmup-cinza-400); }
.bmup-janela__passo-texto b { font-weight: inherit; }

.bmup-pedido__campo { display: block; margin: 1.25rem 0 0; padding: 0; border: 0; min-width: 0; }
.bmup-janela__passo > .bmup-pedido__campo:first-child,
.bmup-janela__passo > .bmup-meus__aviso + .bmup-pedido__campo { margin-top: 0; }
.bmup-pedido__campo > label,
.bmup-pedido__campo > legend {
    display: block; margin: 0 0 .375rem; padding: 0;
    font-size: .875rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-700);
}
.bmup-pedido__campo > legend { margin-bottom: .5rem; }
.bmup-pedido__obrigatorio { color: #f87171; }
.bmup-pedido__campo input[type="text"],
.bmup-pedido__campo textarea {
    display: block; width: 100%;
    padding: .75rem 1rem;
    border: 1px solid var(--bmup-cinza-200); border-radius: .75rem;
    background: var(--bmup-cinza-50);
    font: inherit; font-size: .875rem; color: var(--bmup-cinza-900);
    outline: none; transition: border-color .2s, background-color .2s, box-shadow .2s;
}
.bmup-pedido__campo textarea { resize: none; }
.bmup-pedido__campo input[type="text"]:focus,
.bmup-pedido__campo textarea:focus { border-color: var(--bmup-cobre); background: var(--bmup-branco); box-shadow: 0 0 0 2px rgba(172, 116, 80, .2); }
.bmup-pedido__com-icone { position: relative; display: block; }
.bmup-pedido__com-icone svg { position: absolute; top: 50%; left: .875rem; width: 15px; height: 15px; transform: translateY(-50%); color: var(--bmup-cinza-400); pointer-events: none; }
.bmup-pedido__com-icone input[type="text"] { padding-left: 2.5rem; }

/* o orçamento em números (2026-10-16): "De" e "Até" lado a lado; um por
   baixo do outro no telemóvel */
.bmup-pedido__valores { display: grid; grid-template-columns: minmax(0, 1fr); gap: .75rem; }
@media (min-width: 480px) { .bmup-pedido__valores { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.bmup-pedido__valores label {
    display: block; margin: 0 0 .375rem; padding: 0;
    font-size: .75rem; font-weight: var(--bmup-peso-medio); color: var(--bmup-cinza-500);
    text-transform: none; letter-spacing: 0;
}
.bmup-pedido__campo > .bmup-forma__ajuda { display: block; margin-top: .5rem; }

/* os mosaicos das categorias (grid-cols-2 sm:grid-cols-3, px-3 py-3, ícone w-7) */
@media (min-width: 640px) { .bmup-janela__mosaicos--tres { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.bmup-janela__mosaico--alto > span { gap: .625rem; padding: .75rem; font-size: .875rem; }
.bmup-janela__mosaico--alto b { font-size: .75rem; }
.bmup-janela__mosaico--alto .bmup-janela__mosaico-icone { width: 1.75rem; height: 1.75rem; }
.bmup-janela__mosaico--alto .bmup-janela__mosaico-icone svg { width: 14px; height: 14px; }

/* a nota (p-4 bg-[#ac7450]/5 border-[#ac7450]/20 rounded-xl text-xs) */
.bmup-pedido__nota {
    margin: 1.25rem 0 0; padding: 1rem;
    border: 1px solid rgba(172, 116, 80, .2); border-radius: .75rem; background: rgba(172, 116, 80, .05);
    font-size: .75rem; color: var(--bmup-cinza-600);
}

/* o fundo da janela (px-6 py-4 border-t bg-zinc-50/50), botões py-2.5 */
.bmup-janela__rodape--cinza { padding: 1rem 1.5rem; border-top: 1px solid var(--bmup-cinza-100); background: rgba(250, 250, 250, .5); }
.bmup-janela__rodape--cinza .bmup-janela__principal,
.bmup-janela__rodape--cinza .bmup-janela__secundario { padding-block: .625rem; }
.bmup-janela__secundario--curto { flex: none; padding-inline: 1rem; }
.bmup-janela__principal--cobre { background: var(--bmup-cobre); }
.bmup-janela__principal--cobre:hover { background: #925f3f; }

/* "Pedido Enviado!" — o visto com dois anéis (w-20 h-20, text-2xl) */
.bmup-janela__confirmar--pedido { padding: 3.5rem 2rem; }
.bmup-janela__confirmar--pedido h3 { font-size: 1.5rem; }
.bmup-janela__icone-aneis {
    position: relative; display: flex; align-items: center; justify-content: center;
    width: 5rem; height: 5rem; margin: 0 auto 1.5rem;
    border-radius: 50%; background: #dcfce7; color: #16a34a;
}
.bmup-janela__icone-aneis svg { width: 36px; height: 36px; stroke-width: 2.5; }
.bmup-janela__icone-aneis::before,
.bmup-janela__icone-aneis::after { content: ""; position: absolute; inset: 0; border-radius: 50%; border: 4px solid; }
.bmup-janela__icone-aneis::before { border-color: #bbf7d0; transform: scale(1.1); opacity: .5; }
.bmup-janela__icone-aneis::after  { border-color: #dcfce7; transform: scale(1.25); opacity: .3; }

/* ==========================================================================
   SERVIÇOS BMUP — área de membro (DashboardServices.tsx, 2026-09-25)
   As cores e a caixa do ícone (.bmup-svc--*, .bmup-svc__icone) estão no
   bmup-paginas.css, partilhadas com a página pública.
   ========================================================================== */

.bmup-servicos-membro__cabecalho { margin-bottom: 1.5rem; }
.bmup-servicos-membro__cabecalho h2 { margin: 0; font-family: var(--bmup-font-titulo); font-size: 1.5rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }
.bmup-servicos-membro__cabecalho p { margin: .25rem 0 0; font-size: .875rem; color: var(--bmup-cinza-500); }

.bmup-servicos-membro { display: grid; gap: 1.5rem; margin: 0; align-items: start; }
@media (min-width: 1280px) { .bmup-servicos-membro { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); } }

.bmup-servicos-membro__lista { display: grid; gap: .75rem; }
.bmup-servicos-membro__cartao { position: relative; display: block; cursor: pointer; animation: bmup-pedido-entra .3s ease-out backwards; animation-delay: var(--bmup-atraso, 0ms); }
.bmup-servicos-membro__cartao input { position: absolute; opacity: 0; pointer-events: none; }
.bmup-servicos-membro__cartao-dentro {
    display: flex; align-items: flex-start; gap: 1rem;
    padding: 1rem; border: 1px solid var(--bmup-cinza-200); border-radius: 1rem; background: var(--bmup-branco);
    transition: border-color .2s, box-shadow .2s;
}
@media (min-width: 640px) { .bmup-servicos-membro__cartao-dentro { padding: 1.25rem; } }
.bmup-servicos-membro__cartao:hover .bmup-servicos-membro__cartao-dentro { border-color: var(--bmup-cinza-300); box-shadow: 0 1px 2px rgba(0, 0, 0, .05); }
.bmup-servicos-membro__cartao input:checked + .bmup-servicos-membro__cartao-dentro {
    border-color: rgba(172, 116, 80, .4);
    box-shadow: 0 0 0 1px rgba(172, 116, 80, .2), 0 4px 6px -1px rgba(0, 0, 0, .08);
}
.bmup-servicos-membro__cartao input:focus-visible + .bmup-servicos-membro__cartao-dentro { box-shadow: 0 0 0 3px rgba(172, 116, 80, .35); }
.bmup-servicos-membro__texto { flex: 1; min-width: 0; }
.bmup-servicos-membro__linha { display: flex; align-items: center; justify-content: space-between; gap: .5rem; }
.bmup-servicos-membro__linha b { font-size: .875rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900); }
.bmup-servicos-membro__bola {
    display: flex; align-items: center; justify-content: center; flex-shrink: 0;
    width: 1.25rem; height: 1.25rem; border: 2px solid var(--bmup-cinza-300); border-radius: 50%;
    transition: border-color .2s, background-color .2s;
}
.bmup-servicos-membro__bola svg { width: 11px; height: 11px; color: var(--bmup-branco); opacity: 0; stroke-width: 3; }
.bmup-servicos-membro__cartao input:checked + .bmup-servicos-membro__cartao-dentro .bmup-servicos-membro__bola { border-color: var(--bmup-cobre); background: var(--bmup-cobre); }
.bmup-servicos-membro__cartao input:checked + .bmup-servicos-membro__cartao-dentro .bmup-servicos-membro__bola svg { opacity: 1; }
.bmup-servicos-membro__texto small { display: block; font-size: .625rem; font-weight: var(--bmup-peso-semi); text-transform: uppercase; letter-spacing: .05em; background: none !important; }
.bmup-servicos-membro__resumo { display: block; margin-top: .375rem; font-size: .75rem; line-height: 1.625; color: var(--bmup-cinza-500); }

.bmup-servicos-membro__lado { position: relative; }
/* O formulário acompanha o scroll da lista de serviços. Tem de ser a COLUNA
   a colar: o painel sozinho está dentro dela, que tem a altura dele — não
   havia espaço para deslizar. E por baixo do topo sticky (5rem). */
@media (min-width: 1280px) { .bmup-servicos-membro__lado { position: sticky; top: calc(var(--membro-topo) + 1.5rem); } }
.bmup-servicos-membro__painel {
    display: grid; gap: 1rem; padding: 1.25rem;
    border: 1px solid var(--bmup-cinza-200); border-radius: 1rem; background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}
@media (min-width: 640px) { .bmup-servicos-membro__painel { padding: 1.5rem; } }
.bmup-servicos-membro__painel h3 { margin: 0 0 .125rem; font-family: var(--bmup-font-titulo); font-size: 1rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }
.bmup-servicos-membro__sobre { margin: 0; font-size: .75rem; color: var(--bmup-cinza-400); }
.bmup-servicos-membro__sobre b { font-weight: var(--bmup-peso-semi); color: var(--bmup-cobre); }
.bmup-servicos-membro__campo { display: grid; gap: .375rem; }
.bmup-servicos-membro__campo label { font-size: .75rem; font-weight: var(--bmup-peso-semi); text-transform: uppercase; letter-spacing: .05em; color: var(--bmup-cinza-600); }
.bmup-servicos-membro__campo input,
.bmup-servicos-membro__campo textarea {
    width: 100%; padding: .625rem .75rem;
    border: 1px solid var(--bmup-cinza-200); border-radius: .75rem; background: var(--bmup-cinza-50);
    font: inherit; font-size: .875rem; color: var(--bmup-cinza-900); outline: none;
    transition: border-color .2s, box-shadow .2s;
}
.bmup-servicos-membro__campo textarea { resize: none; }
.bmup-servicos-membro__campo input:focus,
.bmup-servicos-membro__campo textarea:focus { border-color: var(--bmup-cobre); box-shadow: 0 0 0 2px rgba(172, 116, 80, .2); }
.bmup-servicos-membro__falta { margin: 0; padding: .5rem .75rem; border: 1px solid #fde68a; border-radius: .5rem; background: #fffbeb; font-size: .75rem; color: #d97706; }
.bmup-servicos-membro__falta[hidden] { display: none; }
.bmup-servicos-membro__enviar {
    display: flex; align-items: center; justify-content: center; gap: .5rem; width: 100%;
    padding: .75rem; border: 0; border-radius: .75rem; background: #0a0a0a;
    font: inherit; font-size: .875rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05); cursor: pointer; transition: background-color .2s;
}
.bmup-servicos-membro__enviar:hover { background: var(--bmup-cobre); }
.bmup-servicos-membro__enviar:disabled { background: var(--bmup-cinza-100); color: var(--bmup-cinza-400); box-shadow: none; cursor: not-allowed; }
.bmup-servicos-membro__enviar svg { width: 14px; height: 14px; }
.bmup-servicos-membro__para { margin: 0; font-size: .625rem; text-align: center; color: var(--bmup-cinza-400); }
.bmup-servicos-membro__para b { font-weight: var(--bmup-peso-medio); }
.bmup-servicos-membro__enviado { padding: 1rem .5rem; text-align: center; }
.bmup-servicos-membro__enviado .bmup-janela__icone-certo { width: 3.5rem; height: 3.5rem; }
.bmup-servicos-membro__enviado .bmup-janela__icone-certo svg { width: 26px; height: 26px; }
.bmup-servicos-membro__enviado h3 { margin: 0 0 .5rem; font-size: 1.125rem; }
.bmup-servicos-membro__enviado p { margin: 0 0 1.25rem; font-size: .75rem; line-height: 1.625; color: var(--bmup-cinza-500); }
.bmup-servicos-membro__novo { display: inline-block; padding: .625rem 1.25rem; border-radius: .75rem; background: #0a0a0a; font-size: .75rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-branco); text-decoration: none; transition: background-color .2s; }
.bmup-servicos-membro__novo:hover { background: var(--bmup-cobre); }


/* ==========================================================================
   SINO — o painel das notificações no topo da área de membro (2026-09-25)
   ==========================================================================
   O desenho (DashboardLayout.tsx) tem só o botão com o ponto vermelho. O
   painel segue o resto da área: cartão branco, cantos de 1rem, cobre para o
   que é novo. Em ecrãs pequenos ocupa a largura toda, por baixo do topo. */

.bmup-sino { position: relative; }

a.bmup-membro__sino { text-decoration: none; }
.bmup-membro__sino[aria-expanded="true"] { background: var(--bmup-cinza-100); color: var(--bmup-cinza-900); }

.bmup-sino__painel {
    position: absolute;
    top: calc(100% + .5rem);
    right: -4rem;
    z-index: 60;
    width: 23rem;
    max-width: calc(100vw - 2rem);
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    box-shadow: var(--bmup-sombra-lg);
    overflow: hidden;
    animation: bmup-sino-abre .18s ease-out;
}
.bmup-sino__painel[hidden] { display: none; }

@keyframes bmup-sino-abre {
    from { opacity: 0; transform: translateY(-4px); }
    to   { opacity: 1; transform: none; }
}

@media (max-width: 639px) {
    .bmup-sino__painel { position: fixed; top: calc(var(--membro-topo, 5rem) + .5rem); left: 1rem; right: 1rem; width: auto; max-width: none; }
}

.bmup-sino__topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .875rem 1.25rem;
    border-bottom: 1px solid var(--bmup-cinza-100);
}
.bmup-sino__topo b { font-size: .9375rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900); }
.bmup-sino__novas {
    padding: .125rem .5rem;
    border-radius: 999px;
    background: rgba(172, 116, 80, .1);
    color: var(--bmup-cobre);
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
}

.bmup-sino__lista { margin: 0; padding: 0; list-style: none; }
.bmup-sino__painel .bmup-sino__lista { max-height: min(26rem, 60vh); overflow-y: auto; }
.bmup-sino__lista li + li { border-top: 1px solid var(--bmup-cinza-100); }

.bmup-sino__item {
    position: relative;
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: .875rem 1.25rem;
    color: inherit;
    text-decoration: none;
    transition: background-color .15s;
}
.bmup-sino__item:hover,
.bmup-sino__item:focus-visible { background: var(--bmup-cinza-50); }

/* Por ler: fundo cobre muito leve e o ponto à direita */
.bmup-sino__item--novo { background: rgba(172, 116, 80, .05); }
.bmup-sino__item--novo::after {
    content: '';
    position: absolute;
    top: 1.125rem;
    right: 1rem;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--bmup-cobre);
}

.bmup-sino__icone {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2.25rem;
    height: 2.25rem;
    border-radius: 50%;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-600);
}
.bmup-sino__item--novo .bmup-sino__icone { background: rgba(172, 116, 80, .12); color: var(--bmup-cobre); }
.bmup .bmup-sino__icone svg { width: 1rem; height: 1rem; }

.bmup-sino__texto { display: flex; flex-direction: column; gap: .125rem; min-width: 0; padding-right: .75rem; }
.bmup-sino__texto b { font-size: .875rem; font-weight: var(--bmup-peso-semi); line-height: 1.35; color: var(--bmup-cinza-900); }
.bmup-sino__texto span {
    font-size: .8125rem;
    line-height: 1.45;
    color: var(--bmup-cinza-500);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    overflow-wrap: anywhere;
}
.bmup-sino__texto time { margin-top: .125rem; font-size: .75rem; color: var(--bmup-cinza-400); }

.bmup-sino__vazio { padding: 2rem 1.5rem; text-align: center; }
.bmup-sino__vazio-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    margin-bottom: .75rem;
    border-radius: 50%;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-400);
}
.bmup .bmup-sino__vazio-icone svg { width: 1.25rem; height: 1.25rem; }
.bmup-sino__vazio p { margin: 0; font-size: .875rem; font-weight: var(--bmup-peso-semi); color: var(--bmup-cinza-900); }
.bmup-sino__vazio small { display: block; margin-top: .25rem; font-size: .8125rem; line-height: 1.5; color: var(--bmup-cinza-500); }

.bmup-sino__todas {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: .375rem;
    padding: .75rem;
    border-top: 1px solid var(--bmup-cinza-100);
    color: var(--bmup-cobre);
    font-size: .8125rem;
    font-weight: var(--bmup-peso-semi);
    text-decoration: none;
}
.bmup-sino__todas:hover { background: var(--bmup-cinza-50); }

/* A página "Ver todas" — os mesmos itens, num cartão da largura do conteúdo */
.bmup-avisos { max-width: 48rem; }
.bmup-avisos__cabecalho { margin-bottom: 1.5rem; }
.bmup-avisos__cabecalho h2 { margin: 0; font-family: var(--bmup-font-titulo); font-size: 1.5rem; font-weight: var(--bmup-peso-forte); color: var(--bmup-cinza-900); }
.bmup-avisos__cabecalho p { margin: .25rem 0 0; font-size: .875rem; color: var(--bmup-cinza-500); }
.bmup-avisos__cartao {
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1rem;
    background: var(--bmup-branco);
    overflow: hidden;
}
.bmup-avisos .bmup-sino__item { align-items: center; padding: 1rem 1.25rem; }
.bmup-avisos .bmup-sino__item--novo::after { top: 50%; right: 2.75rem; margin-top: -.25rem; }
.bmup-avisos__seta { flex-shrink: 0; margin-left: auto; color: var(--bmup-cinza-300); }


/* ==========================================================================
   BARRA LATERAL EM ECRÃS BAIXOS (2026-09-25)
   ==========================================================================
   Com oito entradas (Oportunidades e Serviços BMUP entraram), a barra
   lateral mede ~714px: num portátil, com as barras do browser, a lista
   passava a ter a barra de deslocamento cinzenta do sistema. Primeiro
   aperta-se o espaço para caber; o que ainda sobrar desliza com uma barra
   fina e escura, que só aparece com o rato por cima. */

@media (max-height: 800px) {
    .bmup-membro__perfil { padding-block: 1.25rem; }
    .bmup-membro__nav { padding-block: 1rem; }
    .bmup-membro__link { padding-block: .5rem; margin-bottom: .25rem; }
    .bmup-membro__sair-caixa { padding-block: .75rem; }
}

/* Muito baixo: o nome e o plano já estão no topo, à direita — o bloco da
   fotografia sai da barra lateral para a lista caber. */
@media (max-height: 660px) {
    .bmup-membro__perfil { display: none; }
}

.bmup-membro__nav,
.bmup-sino__lista {
    scrollbar-width: thin;
    scrollbar-color: transparent transparent;
}
.bmup-membro__nav:hover,
.bmup-membro__nav:focus-within { scrollbar-color: rgba(255, 255, 255, .18) transparent; }
.bmup-sino__lista:hover { scrollbar-color: var(--bmup-cinza-300) transparent; }

.bmup-membro__nav::-webkit-scrollbar,
.bmup-sino__lista::-webkit-scrollbar { width: 6px; }
.bmup-membro__nav::-webkit-scrollbar-track,
.bmup-sino__lista::-webkit-scrollbar-track { background: transparent; }
.bmup-membro__nav::-webkit-scrollbar-thumb,
.bmup-sino__lista::-webkit-scrollbar-thumb { border-radius: 999px; background: transparent; }
.bmup-membro__nav:hover::-webkit-scrollbar-thumb { background: rgba(255, 255, 255, .18); }
.bmup-sino__lista:hover::-webkit-scrollbar-thumb { background: var(--bmup-cinza-300); }


/* Os Meus Anúncios sem recarregar (2026-09-25): as zonas que o bmup.js troca
   não mexem na disposição, e a linha a enviar fica esbatida até chegar a
   resposta. */
.bmup-meus__zona { display: contents; }
.bmup-meus__tabela tr.is-a-enviar { opacity: .45; transition: opacity .2s; pointer-events: none; }


/* O sino abana quando chega uma notificação com a página aberta
   (2026-09-25). Curto, e nada para quem pediu menos movimento. */
@keyframes bmup-sino-abana {
    0%, 100% { transform: rotate(0); }
    15% { transform: rotate(14deg); }
    30% { transform: rotate(-12deg); }
    45% { transform: rotate(8deg); }
    60% { transform: rotate(-6deg); }
    75% { transform: rotate(3deg); }
}
.bmup-membro__sino--abana svg { transform-origin: 50% 10%; animation: bmup-sino-abana .8s ease-in-out; }
@media (prefers-reduced-motion: reduce) {
    .bmup-membro__sino--abana svg { animation: none; }
}


/* Navegar sem recarregar (2026-09-25): enquanto chega a vista nova, a lista
   esbate-se um pouco — sinal de que o clique foi ouvido. */
.is-a-navegar .bmup-dir__grelha,
.is-a-navegar .bmup-pedidos__lista,
.is-a-navegar .bmup-meus__caixa,
.is-a-navegar .bmup-dir__vazio,
.is-a-navegar .bmup-pedidos__vazio {
    opacity: .5;
    transition: opacity .15s .1s;   /* só se demorar: um clique rápido não pisca */
}


/* ==========================================================================
   PAGAMENTOS DOS PLANOS (2026-10-02)
   ==========================================================================
   Renovar, subir e escolher plano passaram a funcionar: os botões que eram
   <span> apagados (Fase 7) são agora ligações e botões a sério, a cobre. O
   quadro escuro dos dados para pagar é o do passo 3 do registo
   (bmup-conta.css, .bmup-pagamento) — o mesmo nos dois sítios. */

a.bmup-meuplano__renovar {
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
    text-decoration: none;
    cursor: pointer;
    transition: background var(--bmup-trans);
}
a.bmup-meuplano__renovar:hover { background: var(--bmup-cobre-escuro); }
a.bmup-meuplano__renovar:focus-visible { outline: 2px solid var(--bmup-cobre-claro); outline-offset: 2px; }

.bmup-meuplano__renovar--feito {
    background: rgba(16, 185, 129, .12);
    color: #6ee7b7;
    cursor: default;
}

/* Os botões de cada plano: <a> e <button> com o ar do <span> antigo. */
a.bmup-meuplano__plano-botao,
button.bmup-meuplano__plano-botao {
    width: 100%;
    font-family: inherit;
    text-decoration: none;
    cursor: pointer;
    color: var(--bmup-cinza-700);
    background: var(--bmup-branco);
    transition: border-color var(--bmup-trans), background var(--bmup-trans), color var(--bmup-trans);
}
a.bmup-meuplano__plano-botao:hover,
button.bmup-meuplano__plano-botao:hover {
    border-color: var(--bmup-cinza-400);
    color: var(--bmup-cinza-900);
}
.bmup-meuplano__plano-botao--accao {
    border-color: var(--bmup-cobre) !important;
    background: var(--bmup-cobre) !important;
    color: var(--bmup-branco) !important;
}
.bmup-meuplano__plano-botao--accao:hover {
    background: var(--bmup-cobre-escuro) !important;
    border-color: var(--bmup-cobre-escuro) !important;
}

/* A descida agendada: o aviso dos planos, com o "Desmarcar" à direita. */
/* Em baixo o mesmo espaço da faixa até aos cartões (2026-10-08): colava-se. */
.bmup-meuplano__aviso--agendado { margin: 1rem 0 1.5rem; }
.bmup-meuplano__aviso--agendado p { flex: 1; }
.bmup-meuplano__aviso--agendado form { margin: 0; flex-shrink: 0; }
.bmup-meuplano__desmarcar {
    padding: .375rem .875rem;
    border: 1px solid rgba(172, 116, 80, .4);
    border-radius: .5rem;
    background: transparent;
    font: inherit;
    font-size: .8125rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cobre);
    cursor: pointer;
}
.bmup-meuplano__desmarcar:hover { background: rgba(172, 116, 80, .08); }

/* O pagamento em aberto e o passo de confirmar. */
.bmup-meuplano__pagar { margin-bottom: 1.5rem; }
.bmup-meuplano__confirmar { max-width: 40rem; }
.bmup-meuplano__confirmar .bmup-meuplano__linhas { margin-bottom: 1.5rem; }
.bmup-meuplano__confirmar .bmup-meuplano__ver { margin-top: 1rem; }
.bmup-meuplano__subtitulo {
    margin: 0 0 .75rem;
    font-family: inherit;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--bmup-cinza-500);
}

.bmup .bmup-pagamento__ajuda {
    margin: 1rem 0 0;
    font-size: .8125rem;
    line-height: 1.55;
    color: var(--bmup-cinza-400);
}
.bmup .bmup-pagamento__anular { margin: .75rem 0 0; }
.bmup .bmup-pagamento__anular button {
    padding: 0;
    border: 0;
    background: none;
    font: inherit;
    font-size: .8125rem;
    color: var(--bmup-cinza-400);
    text-decoration: underline;
    cursor: pointer;
}
.bmup .bmup-pagamento__anular button:hover { color: var(--bmup-branco); }

/* Os meios: quatro em grelha de dois; os que ainda não estão ligados
   ficam apagados, com "em breve". */
.bmup .bmup-metodos { border: 0; padding: 0; min-width: 0; }
.bmup .bmup-metodos__opcao { flex-wrap: wrap; }
.bmup .bmup-metodos__opcao--off {
    opacity: .5;
    cursor: not-allowed;
}
.bmup .bmup-metodos__opcao .bmup-membro__breve { flex-basis: 100%; text-align: center; margin: 0; }

.bmup .bmup-pagar__botao {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .5rem;
    width: 100%;
    padding: .875rem 1.25rem;
    border: 0;
    border-radius: .75rem;
    background: var(--bmup-cinza-900);
    font: inherit;
    font-size: .9375rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-branco);
    cursor: pointer;
    transition: background var(--bmup-trans);
}
.bmup .bmup-pagar__botao:hover { background: var(--bmup-preto); }
.bmup .bmup-pagar__botao:disabled { background: var(--bmup-cinza-200); color: var(--bmup-cinza-400); cursor: not-allowed; }
.bmup .bmup-pagar__botao svg { width: 1rem; height: 1rem; }

/* O "Renovar Plano" do Perfil, agora ligado (o desenho: cobre cheio). */
.bmup-perfil__renovar--activo {
    background: var(--bmup-cobre);
    color: var(--bmup-branco);
    text-decoration: none;
    cursor: pointer;
    transition: background var(--bmup-trans);
}
.bmup-perfil__renovar--activo:hover { background: var(--bmup-cobre-escuro); }

/* Dois cartões largos seguidos (o histórico e os pagamentos) não se colam. */
.bmup-meuplano__cartao--largo + .bmup-meuplano__cartao--largo { margin-top: 1.5rem; }

/* "−€1.130" não parte em duas linhas no telemóvel. */
.bmup-meuplano__confirmar .bmup-meuplano__linhas dd { white-space: nowrap; }
.bmup-meuplano__confirmar .bmup-meuplano__linhas > div:last-child dd { white-space: normal; }

/* ==========================================================================
   MENSAGENS — apagar e o prazo do apagar automático (2026-10-06)
   ========================================================================== */

.bmup-chat__apagar { display: flex; margin: 0; flex-shrink: 0; }

.bmup-chat__apagar button {
    display: flex;
    padding: .5rem;
    border: 0;
    border-radius: .5rem;
    background: none;
    color: var(--bmup-cinza-400);
    cursor: pointer;
}

.bmup-chat__apagar button:hover,
.bmup-chat__apagar button:focus-visible { background: #fef2f2; color: #dc2626; }
.bmup-chat__apagar svg { width: 1.125rem; height: 1.125rem; }

.bmup-chat__prazo {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin: 0;
    padding: .5rem 1rem;
    border-bottom: 1px solid var(--bmup-cinza-200);
    background: var(--bmup-cinza-50);
    font-size: .75rem;
    color: var(--bmup-cinza-500);
}

.bmup-chat__prazo svg { width: .875rem; height: .875rem; flex-shrink: 0; }

.bmup-chat__vazio .bmup-chat__feito {
    padding: .5rem 1rem;
    border-radius: .5rem;
    background: #f0fdf4;
    font-size: .875rem;
    color: #15803d;
}

.bmup-perfil__nota {
    margin: 1.25rem 0 .25rem;
    font-size: .8125rem;
    line-height: 1.5;
    color: var(--bmup-cinza-500);
}

/* ==========================================================================
   PAGAR — MB WAY (IfThenPay, 2026-10-06)
   ========================================================================== */

/* Três meios (sem cartão): o último ocupa a linha toda. */
.bmup .bmup-metodos .bmup-metodos__opcao:last-child:nth-child(odd) { grid-column: 1 / -1; }

.bmup .bmup-pagar__mbway { margin: 0 0 1.25rem; }
.bmup .bmup-pagar__mbway[hidden] { display: none; }

.bmup .bmup-pagar__mbway label {
    display: block;
    margin-bottom: .375rem;
    font-size: .8125rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-700);
}

.bmup .bmup-pagar__mbway input {
    width: 100%;
    box-sizing: border-box;
    padding: .625rem .875rem;
    border: 1px solid var(--bmup-pedra-200, #e7e5e4);
    border-radius: var(--bmup-raio-md, .5rem);
    font: inherit;
    font-size: 1rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: .02em;
}

.bmup .bmup-pagar__mbway input:focus {
    outline: 2px solid var(--bmup-cobre);
    outline-offset: 1px;
    border-color: transparent;
}

.bmup .bmup-pagar__mbway p {
    margin: .5rem 0 0;
    font-size: .75rem;
    line-height: 1.5;
    color: var(--bmup-cinza-500);
}

/* "Aceite na app" — com um ponto a pulsar enquanto espera. */
.bmup .bmup-pagamento__espera {
    display: block;
    padding-left: 1.25rem;
    position: relative;
    color: var(--bmup-branco);
}

.bmup .bmup-pagamento__espera::before {
    content: '';
    position: absolute;
    left: 0;
    top: .4em;
    width: .5rem;
    height: .5rem;
    border-radius: 50%;
    background: var(--bmup-cobre);
    animation: bmup-pulsa 1.4s ease-in-out infinite;
}

@keyframes bmup-pulsa {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%      { opacity: .35; transform: scale(.7); }
}

@media (prefers-reduced-motion: reduce) {
    .bmup .bmup-pagamento__espera::before { animation: none; }
}

/* ==========================================================================
   VISÃO GERAL — frases dos indicadores, Serviços e apoio (2026-10-06)
   Como o DashboardHome.tsx: text-xs zinc-400 com o ícone; grelha de 4
   serviços; faixa cobre clara com "Contactar Equipa".
   ========================================================================== */

.bmup-painel__tendencia {
    display: flex;
    align-items: center;
    gap: .375rem;
    margin-top: .75rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-400);
}

.bmup-painel__tendencia svg { width: .875rem; height: .875rem; flex-shrink: 0; }
.bmup-painel__tendencia--aviso { color: #b45309; }

.bmup-painel__servicos {
    margin-bottom: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    overflow: hidden;
}

.bmup-painel__servicos-topo {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1.25rem 1.25rem;
    border-bottom: 1px solid var(--bmup-cinza-100);
    background: rgba(250, 250, 250, .5);
}

.bmup-painel__servicos-topo h3 {
    margin: 0;
    font-family: var(--bmup-font-titulo);
    font-size: 1.25rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cinza-900);
}

.bmup-painel__servicos-topo p { margin: .25rem 0 0; font-size: .875rem; color: var(--bmup-cinza-500); }

.bmup-painel__servicos-topo a {
    display: flex;
    align-items: center;
    gap: .25rem;
    flex-shrink: 0;
    font-size: .875rem;
    font-weight: var(--bmup-peso-forte);
    color: var(--bmup-cobre);
    text-decoration: none;
}

.bmup-painel__servicos-topo a:hover { color: #925f3f; }
.bmup-painel__servicos-topo a svg { width: 1rem; height: 1rem; }

.bmup-painel__servicos-grelha {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;
    padding: 1.25rem;
}

.bmup-painel__servico {
    display: flex;
    flex-direction: column;
    text-decoration: none;
    color: inherit;
}

.bmup-painel__servico .bmup-svc__icone { margin-bottom: .75rem; transition: transform var(--bmup-trans, .2s); }
.bmup-painel__servico:hover .bmup-svc__icone { transform: scale(1.05); }

.bmup-painel__servico small {
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--bmup-cinza-400);
}

.bmup-painel__servico b {
    margin: .25rem 0 .5rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-painel__servico:hover b { color: var(--bmup-cobre); }

.bmup-painel__servico span:last-child {
    font-size: .75rem;
    font-weight: 300;
    line-height: 1.6;
    color: var(--bmup-cinza-500);
}

.bmup-painel__apoio {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: .75rem;
    margin: 0 1.25rem 1.25rem;
    padding: 1rem;
    border: 1px solid rgba(172, 116, 80, .2);
    border-radius: 1rem;
    background: rgba(172, 116, 80, .05);
}

.bmup-painel__apoio p { margin: 0; font-size: .875rem; color: var(--bmup-cinza-600); }
.bmup-painel__apoio b { color: var(--bmup-cinza-900); }

.bmup-painel__apoio a {
    flex-shrink: 0;
    padding: .625rem 1.25rem;
    border-radius: .75rem;
    background: var(--bmup-preto);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-branco);
    text-decoration: none;
    white-space: nowrap;
    transition: background var(--bmup-trans, .2s);
}

.bmup-painel__apoio a:hover { background: var(--bmup-cobre); }

@media (min-width: 640px) {
    .bmup-painel__servicos-grelha { grid-template-columns: repeat(2, 1fr); padding: 2rem; }
    .bmup-painel__servicos-topo { padding: 1.25rem 2rem; }
    .bmup-painel__apoio { flex-direction: row; align-items: center; justify-content: space-between; margin: 0 2rem 1.5rem; }
}

@media (min-width: 1024px) {
    .bmup-painel__servicos-grelha { grid-template-columns: repeat(4, 1fr); }
}

/* ==========================================================================
   VISÃO GERAL — Atividade Recente (2026-10-07)
   Como o DashboardHome.tsx:165-208: 2/3 da largura no computador, linhas
   com ícone, etiqueta cobre em maiúsculas, título e "há 2 h", e o círculo
   com a seta. Na coluna da direita fica "Os Meus Anúncios".
   ========================================================================== */

.bmup-painel__duas {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 1.5rem;
    align-items: start;
    margin-bottom: 1.5rem;
}

.bmup-painel__duas .bmup-painel__meus { margin-bottom: 0; }

.bmup-painel__actividade {
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    overflow: hidden;
}

.bmup-painel__actividade-lista { margin: 0; padding: 0; list-style: none; }
.bmup-painel__actividade-lista li + li { border-top: 1px solid var(--bmup-cinza-100); }

.bmup-painel__actividade-lista a {
    display: flex;
    align-items: center;
    gap: 1rem;
    padding: 1rem;
    color: inherit;
    text-decoration: none;
    transition: background-color .2s;
}

.bmup-painel__actividade-lista a:hover { background: rgba(250, 250, 250, .8); }

.bmup-painel__actividade-icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 2.5rem;
    height: 2.5rem;
    border-radius: 1rem;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-500);
    transition: background-color .2s, color .2s;
}

.bmup-painel__actividade-icone svg { width: 1.125rem; height: 1.125rem; }

.bmup-painel__actividade-lista a:hover .bmup-painel__actividade-icone {
    background: rgba(172, 116, 80, .1);
    color: var(--bmup-cobre);
}

.bmup-painel__actividade-texto {
    display: flex;
    flex-direction: column;
    flex: 1 1 auto;
    min-width: 0;
}

.bmup-painel__actividade-texto small,
.bmup-painel__actividade-texto b {
    overflow: hidden;
    white-space: nowrap;
    text-overflow: ellipsis;
}

.bmup-painel__actividade-texto small {
    margin-bottom: .25rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-forte);
    letter-spacing: .05em;
    text-transform: uppercase;
    color: var(--bmup-cobre);
}

.bmup-painel__actividade-texto b {
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-painel__actividade-texto time {
    margin-top: .125rem;
    font-size: .75rem;
    font-weight: var(--bmup-peso-medio);
    color: var(--bmup-cinza-400);
}

.bmup-painel__actividade-seta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 2rem;
    height: 2rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 9999px;
    color: var(--bmup-cinza-400);
    transition: border-color .2s, color .2s;
}

.bmup-painel__actividade-seta svg { width: 1rem; height: 1rem; }

.bmup-painel__actividade-lista a:hover .bmup-painel__actividade-seta {
    border-color: var(--bmup-cobre);
    color: var(--bmup-cobre);
}

.bmup-painel__actividade-vazia {
    margin: 0;
    padding: 1.5rem 1.25rem;
    font-size: .875rem;
    color: var(--bmup-cinza-500);
}

@media (min-width: 640px) {
    .bmup-painel__actividade-lista a { gap: 1.25rem; padding: 1.25rem 2rem; }
    .bmup-painel__actividade-icone { width: 3rem; height: 3rem; }
    .bmup-painel__actividade-vazia { padding: 1.5rem 2rem; }
}

@media (min-width: 1024px) {
    .bmup-painel__duas { grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 2rem; }
}

/* ==========================================================================
   INDIQUE A BMUP — o código de indicação (2026-10-07)
   Na Visão Geral (coluna da direita, por baixo de "Os Meus Anúncios") e na
   coluna estreita do Perfil. O botão do código é o CopyCode do desenho
   (DashboardHome.tsx:84): letra mono, fundo zinc-100, e o ícone de copiar
   que passa a um visto verde.
   ========================================================================== */

.bmup-painel__coluna {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
    min-width: 0;
}

.bmup-indicar {
    padding: 1.5rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: 1.5rem;
    background: var(--bmup-branco);
    box-shadow: 0 1px 2px rgba(0, 0, 0, .04);
    scroll-margin-top: calc(var(--membro-topo, 5rem) + 1.5rem);
}

/* No Perfil, como os outros cartões da coluna estreita. */
.bmup-perfil__lado .bmup-indicar { border-radius: 1rem; }

.bmup-indicar__topo {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.25rem;
}

.bmup-indicar__icone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: 3rem;
    height: 3rem;
    border-radius: 1rem;
    background: rgba(172, 116, 80, .1);
    color: var(--bmup-cobre);
}

.bmup-indicar__icone svg { width: 1.375rem; height: 1.375rem; }

.bmup-indicar h3 {
    margin: 0 0 .25rem;
    font-family: var(--bmup-font-corpo);
    font-size: 1rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-indicar p {
    margin: 0;
    font-size: .875rem;
    line-height: 1.5;
    color: var(--bmup-cinza-500);
}

.bmup-indicar__accoes {
    display: flex;
    flex-direction: column;
    gap: .625rem;
}

.bmup-indicar__codigo,
.bmup-indicar__link {
    display: flex;
    align-items: center;
    width: 100%;
    margin: 0;
    font: inherit;
    cursor: pointer;
    transition: background-color .2s, border-color .2s, color .2s;
}

.bmup-indicar__codigo {
    justify-content: space-between;
    gap: .75rem;
    padding: .625rem .875rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-100);
    color: var(--bmup-cinza-700, #3f3f46);
    text-align: left;
}

.bmup-indicar__codigo:hover,
.bmup-indicar__codigo:focus-visible {
    border-color: rgba(172, 116, 80, .3);
    background: rgba(172, 116, 80, .1);
}

.bmup-indicar__valor {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 1rem;
    font-weight: var(--bmup-peso-semi);
    letter-spacing: .06em;
    color: var(--bmup-cinza-900);
    user-select: all;
}

.bmup-indicar__codigo:hover .bmup-indicar__valor { color: var(--bmup-cobre); }

.bmup-indicar__copiar {
    display: inline-flex;
    align-items: center;
    gap: .375rem;
    flex-shrink: 0;
    font-size: .75rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-500);
}

.bmup-indicar__codigo:hover .bmup-indicar__copiar { color: var(--bmup-cobre); }

.bmup-indicar__link {
    justify-content: center;
    gap: .5rem;
    padding: .625rem 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-branco);
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-indicar__link:hover,
.bmup-indicar__link:focus-visible {
    border-color: var(--bmup-cobre);
    color: var(--bmup-cobre);
}

.bmup-indicar svg.bmup-indicar__copiar-icone,
.bmup-indicar svg.bmup-indicar__feito-icone { width: .875rem; height: .875rem; flex-shrink: 0; }

.bmup-indicar__link svg.bmup-indicar__copiar-icone,
.bmup-indicar__link svg.bmup-indicar__feito-icone { width: 1rem; height: 1rem; }

.bmup-indicar .bmup-indicar__feito-icone { display: none; color: #16a34a; }
.bmup-indicar .is-copiado .bmup-indicar__feito-icone { display: inline-block; }
.bmup-indicar .is-copiado .bmup-indicar__copiar-icone { display: none; }
.bmup-indicar .is-copiado,
.bmup-indicar .is-copiado .bmup-indicar__copiar { color: #15803d; }

/* --- Perfil: Serviços Disponíveis (Profile.tsx) --- */

.bmup-perfil__servicos {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1rem;
    padding: 1.5rem;
}

@media (min-width: 640px) {
    .bmup-perfil__servicos { grid-template-columns: repeat(2, 1fr); }
}

.bmup-perfil__servico {
    display: flex;
    align-items: flex-start;
    gap: .75rem;
    padding: 1rem;
    border: 1px solid var(--bmup-cinza-200);
    border-radius: .75rem;
    background: var(--bmup-cinza-50);
    color: inherit;
    text-decoration: none;
    transition: border-color var(--bmup-trans, .2s);
}

.bmup-perfil__servico:hover { border-color: rgba(172, 116, 80, .4); }

.bmup-perfil__servico-ponto {
    width: .5rem;
    height: .5rem;
    margin-top: .4rem;
    border-radius: 50%;
    background: var(--bmup-cobre);
    flex-shrink: 0;
}

.bmup-perfil__servico b {
    display: block;
    margin-bottom: .25rem;
    font-size: .875rem;
    font-weight: var(--bmup-peso-semi);
    color: var(--bmup-cinza-900);
}

.bmup-perfil__servico small {
    display: block;
    font-size: .75rem;
    font-weight: 300;
    line-height: 1.6;
    color: var(--bmup-cinza-500);
}

/* --- FOTOGRAFIAS: <picture> e fade ao chegar (2026-10-07) ---------------
   O <picture> só serve para dar o .webp a quem o lê: display: contents faz
   com que a <img> continue a medir-se pela caixa, como antes (os 100% de
   altura e o object-fit: cover não mudam).
   O fade é só para as que ainda não tinham chegado (bmup.js). Apenas o
   estado "a carregar" mexe na opacidade: assim, quando acaba, a fotografia
   volta à opacidade que a regra dela der — a do anúncio reservado é .7. */
picture.bmup-foto { display: contents; }

img.bmup-foto-aparece { transition: opacity .35s ease, transform .5s; }
img.bmup-foto-aparece:not(.is-pronta) { opacity: 0; }

@media (prefers-reduced-motion: reduce) {
    img.bmup-foto-aparece { transition: none; }
}
