/* Identidade visual do site público (manual da marca K-Invest):
   Montserrat nos títulos, Open Sans no texto; preto, branco e cinzas; o amarelo só em chamadas à ação e destaques.
   Carregado depois do tema; as regras "body.kv ..." substituem o aspeto do tema nas páginas que ainda usam a marcação dele. */
/* Fontes da marca servidas pelo próprio site (public/fonts), sem pedidos à Google: Montserrat e Open Sans variáveis
   (um ficheiro por família e alfabeto, todos os pesos), só latim e latim estendido. A Montserrat latina tem preload no layout. */
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 500 800; font-display: swap; src: url('../../fonts/montserrat-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Montserrat'; font-style: normal; font-weight: 500 800; font-display: swap; src: url('../../fonts/montserrat-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300 600; font-display: swap; src: url('../../fonts/open-sans-latin-ext.woff2') format('woff2'); unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C4, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: 'Open Sans'; font-style: normal; font-weight: 300 600; font-display: swap; src: url('../../fonts/open-sans-latin.woff2') format('woff2'); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

:root {
    --kv-black: #000000;
    --kv-white: #ffffff;
    --kv-yellow: #e3a625;
    --kv-grey: #333333;
    --kv-neutral: #f2f2f2;
    --kv-line: #dddddd;
    --kv-title: Montserrat, "Helvetica Neue", Arial, sans-serif;
    --kv-body: "Open Sans", "Helvetica Neue", Arial, sans-serif;
    --kv-ease: cubic-bezier(.2, .7, .2, 1);
    /* As cores do tema passam a preto: sem roxos nem degradês */
    --theme-default: #000000; --theme-default2: #000000; --theme-default3: #000000; --theme-default4: #000000;
    --theme-default5: #000000; --theme-default6: #000000; --theme-default7: #000000; --theme-default8: #000000;
    --theme-default9: #000000; --theme-default10: #000000;
    --theme-gradient1: #000000; --theme-gradient2: #000000; --theme-gradient3: #000000; --theme-gradient4: #000000;
}

/* ---------- Base */
body.kv { font-family: var(--kv-body); font-size: 16px; line-height: 1.6; color: var(--kv-grey); background: #fff; overflow-x: clip; }
body.kv h1, body.kv h2, body.kv h3, body.kv h4, body.kv h5, body.kv h6 { font-family: var(--kv-title); letter-spacing: -.02em; text-transform: none; }
/* :where() mantém estas regras de base fracas, para os componentes definirem a sua própria cor sem lutar com elas */
:where(body.kv) :is(h1, h2, h3, h4, h5, h6) { color: #000; }
:where(body.kv) :is(p, li, span, label, input, select, textarea) { font-family: inherit; }
:where(body.kv) p { color: var(--kv-grey); }
body.kv .font-roboto, body.kv .font-rubik { font-family: var(--kv-body) !important; }
:where(body.kv) a { color: inherit; }
/* Foco do teclado: contorno preto com folga branca sobre fundos claros (o amarelo sobre branco só dá 2,15:1);
   nos blocos pretos (.kv-dark) o contorno passa a amarelo, que sobre preto dá 9,75:1 */
body.kv { --kv-focus: #000; --kv-focus-halo: #fff; }
body.kv :focus-visible { outline: 2px solid var(--kv-focus); outline-offset: 2px; box-shadow: 0 0 0 4px var(--kv-focus-halo); }
body.kv :focus:not(:focus-visible) { outline: none; }
.kv-dark, .kv-cover, .kv-news, .kv-feat, .kv-sub, .kv-menu, .kc-footer, .kv-success { --kv-focus: var(--kv-yellow); --kv-focus-halo: transparent; }
/* O conteúdo principal recebe foco pela ligação "Saltar para o conteúdo", mas não mostra contorno */
#conteudo:focus { outline: none; box-shadow: none; }
/* Com o cabeçalho fixo (e o aviso de cookies em baixo), o elemento com foco nunca fica tapado */
html { scroll-padding-top: 96px; scroll-padding-bottom: var(--kc-cookies-h, 0px); }
/* Saltar para o conteúdo: escondida até receber foco */
.kv-skip { position: absolute; left: 16px; top: -100px; transition: none; z-index: 2000; padding: 12px 18px; background: #000; color: #fff !important; font-family: var(--kv-title); font-size: 14px; font-weight: 600; text-decoration: none; }
.kv-skip:focus { top: 16px; --kv-focus: var(--kv-yellow); --kv-focus-halo: transparent; }
.kv-wrap { max-width: 1320px; margin: 0 auto; padding-inline: 24px; }
.kv-caps { font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
.kv-i { width: 18px; height: 18px; flex: none; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.kv-i--fill { fill: currentColor; stroke: none; }

/* ---------- Botões */
.kv-btn, body.kv .btn.btn-gradient, body.kv .btn.btn-solid, body.kv .btn.btn-dashed, body.kv button.btn-dark {
    display: inline-block; padding: 15px 28px; border: 1px solid var(--kv-yellow); border-radius: 0; background: var(--kv-yellow); background-image: none;
    box-shadow: none; color: #000; font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; line-height: 1.3; letter-spacing: .2em; text-transform: uppercase;
    cursor: pointer; transition: background-color .25s ease, color .25s ease, border-color .25s ease;
}
.kv-btn:hover, body.kv .btn.btn-gradient:hover, body.kv .btn.btn-solid:hover, body.kv .btn.btn-dashed:hover, body.kv button.btn-dark:hover { background: #000; border-color: #000; color: #fff; }
.kv-btn--ghost { background: none; border-color: currentColor; color: inherit; }
.kv-btn--ghost:hover { background: #000; border-color: #000; color: #fff; }
.kv-btn--black { background: #000; border-color: #000; color: #fff; }
.kv-btn--black:hover { background: #fff; border-color: #fff; color: #000; }
.kv-on-black .kv-btn:hover { background: #fff; border-color: #fff; color: #000; }
.kv-on-black .kv-btn--ghost:hover { background: #fff; border-color: #fff; color: #000; }
.kv-more { display: inline-block; padding-bottom: 4px; border-bottom: 2px solid var(--kv-yellow); color: #000; }

/* ---------- Cabeçalho: menu partido em dois e logótipo ao centro */
.kv-top { position: sticky; top: 0; z-index: 1000; background: #fff; color: #000; border-bottom: 1px solid transparent; transition: transform .45s var(--kv-ease), border-color .3s ease; }
.kv-top.is-stuck { border-bottom-color: var(--kv-line); }
.kv-top.is-hidden { transform: translateY(-100%); }
.kv-top-in { display: grid; grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr); align-items: center; gap: 24px; padding-block: 20px; transition: padding .3s ease; }
.kv-top.is-stuck .kv-top-in { padding-block: 12px; }
.kv-nav { display: flex; align-items: center; gap: 28px; margin: 0; padding: 0; list-style: none; white-space: nowrap; }
.kv-nav--right { justify-content: flex-end; }
.kv-nav > li { position: relative; }
.kv-nav a, .kv-nav button { display: inline-block; font: inherit; letter-spacing: inherit; text-transform: inherit; line-height: 1.4; padding: 6px 0 4px; border: 0; border-bottom: 2px solid transparent; background: none; color: #000; cursor: pointer; }
.kv-nav a:hover, .kv-nav button:hover { border-bottom-color: var(--kv-yellow); color: #000; }
.kv-nav a[aria-current="page"], .kv-nav button[aria-expanded="true"] { border-bottom-color: #000; color: #000; }
.kv-logo { display: block; padding: 0 16px; line-height: 0; }
.kv-logo img { display: block; height: 46px; width: auto; }
.kv-sub { position: absolute; right: 0; top: 100%; min-width: 250px; margin: 0; padding: 14px 22px; list-style: none; background: #000; opacity: 0; visibility: hidden; transform: translateY(8px); transition: opacity .25s ease, transform .25s ease, visibility .25s; }
/* Abre com o rato por cima ou com o botão (aria-expanded, kinvest.js); Esc fecha */
.kv-nav li:hover > .kv-sub, .kv-sub.is-open { opacity: 1; visibility: visible; transform: none; }
.kv-sub a { display: block; padding: 9px 0; border: 0; color: #fff; font-family: var(--kv-body); font-size: 14px; font-weight: 400; letter-spacing: 0; text-transform: none; }
.kv-sub a:hover { color: var(--kv-yellow); }
.kv-sub .gtranslate_wrapper { display: flex; gap: 6px; margin-top: 8px; padding-top: 14px; border-top: 1px solid #333; line-height: 0; }
.kv-sub .gtranslate_wrapper a { display: inline-flex; align-items: center; justify-content: center; min-width: 28px; min-height: 28px; padding: 0; }
.kv-tools { display: flex; align-items: center; gap: 12px; }
.kv-tools a { display: inline-flex !important; align-items: center; justify-content: center; min-width: 32px; min-height: 32px; padding: 0 !important; border: 0 !important; line-height: 0; }
.kv-tools .gtranslate_wrapper { display: flex; align-items: center; gap: 3px; line-height: 0; }
.kv-burger { display: none; width: 44px; height: 44px; padding: 0; border: 0; background: none; color: #000; cursor: pointer; }
.kv-burger span { display: block; width: 26px; height: 2px; margin: 6px auto; background: currentColor; transition: transform .3s ease, opacity .3s ease; }
.kv-menu { display: none; }

/* O tema dá 90px de espaço a todas as <section>; estes blocos tratam do seu próprio espaço */
body.kv section.kv-cover, body.kv section.kv-say, body.kv section.kv-news { padding: 0; }

/* ---------- Capa da página inicial: painel preto e fotografia */
/* Mais baixa que o ecrã: com 1440×900 a pesquisa fica à vista sem scroll */
.kv-cover { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); min-height: min(60vh, 580px); background: #000; color: #fff; overflow: hidden; }
.kv-cover-copy { position: relative; z-index: 2; display: flex; flex-direction: column; justify-content: space-between; padding: 34px 0 44px max(24px, calc((100vw - 1272px) / 2)); }
body.kv .kv-cover h1.kv-cover-h1 { margin: 0; color: #fff; font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; line-height: 1.4; letter-spacing: .2em; text-transform: uppercase; }
/* Slogan: parte em linhas dentro do painel preto, sem atravessar a fotografia */
body.kv .kv-cover-slogan { margin: 0; color: #fff; font-family: var(--kv-title); font-weight: 700; font-size: clamp(48px, 7vw, 112px); line-height: .9; letter-spacing: -.05em; text-transform: uppercase; overflow-wrap: break-word; }
.kv-cover-slogan span, .kv-cover-slogan b { display: block; padding-bottom: .08em; margin-bottom: -.08em; clip-path: inset(-.2em 0 0 -1em); }
.kv-cover-slogan b { color: var(--kv-yellow); font-weight: 700; }
.kv-cover-slogan i { display: block; font-style: normal; }
body.kv .kv-cover-lead { max-width: 34ch; margin: 26px 0 0; color: #ddd; font-size: 17px; }
.kv-cover-ph { position: relative; overflow: hidden; }
.kv-cover .kv-cover-ph img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; will-change: transform; }
.kv-cover-ph::after { content: ""; position: absolute; inset: 0; background: linear-gradient(to right, rgba(0,0,0,.55), rgba(0,0,0,0) 45%); }
.kv-credit { position: absolute; right: max(24px, calc((100vw - 1272px) / 2)); bottom: 28px; z-index: 2; padding-bottom: 3px; border-bottom: 1px solid rgba(255,255,255,.6); color: #fff !important; }
.kv-credit:hover { border-bottom-color: var(--kv-yellow); }

/* ---------- Pesquisa numa linha */
.kv-search { display: grid; grid-template-columns: auto 1.5fr 1fr 1fr 1fr auto; gap: 0 30px; align-items: end; padding-block: 32px; border-bottom: 2px solid #000; color: #000; }
.kv-seg { display: flex; gap: 20px; padding-bottom: 9px; }
.kv-seg label { margin: 0; padding-bottom: 4px; border-bottom: 2px solid transparent; color: #666; cursor: pointer; }
.kv-seg input { position: absolute; opacity: 0; pointer-events: none; }
.kv-seg input:checked + label { color: #000; border-bottom-color: var(--kv-yellow); }
.kv-seg input:focus-visible + label { outline: 2px solid #000; outline-offset: 3px; }
.kv-field { min-width: 0; }
body.kv .kv-field label { display: block; margin: 0; color: #555; font-family: var(--kv-title); }
body.kv .kv-seg label { font-family: var(--kv-title); }
.kv-field input, .kv-field select { width: 100%; height: auto; margin-top: 6px; padding: 0 0 8px; border: 0; border-bottom: 1px solid var(--kv-line); border-radius: 0; background-color: transparent; box-shadow: none; color: #000; font: 600 17px var(--kv-title); }
.kv-field input::placeholder { color: #999; font-weight: 500; }
.kv-field input:focus, .kv-field select:focus { border-bottom-color: #000; }

/* ---------- Lugares em letra gigante */
/* Cada lugar é uma ligação para a pesquisa nessa zona. A faixa para com o rato por cima, com o foco lá dentro
   ou no botão de pausa; com "reduzir movimento" fica parada e os lugares partem em linhas. */
.kv-places { position: relative; padding-block: 22px; border-bottom: 2px solid #000; white-space: nowrap; overflow: hidden; color: #000; }
.kv-places-track { display: inline-flex; animation: kv-slide 50s linear infinite; }
.kv-places:hover .kv-places-track, .kv-places:focus-within .kv-places-track, .kv-places.is-paused .kv-places-track { animation-play-state: paused; }
.kv-places-list { display: flex; margin: 0; padding: 0; list-style: none; font-family: var(--kv-title); font-weight: 800; font-size: clamp(38px, 7vw, 104px); line-height: 1; letter-spacing: -.045em; text-transform: uppercase; }
body.kv .kv-places-list li { display: block; margin-right: .42em; font: inherit; letter-spacing: inherit; }
body.kv .kv-places-list a { color: #000; font: inherit; letter-spacing: inherit; text-decoration: none; }
body.kv .kv-places-list li:nth-child(even) a { color: #6b6b6b; }
.kv-places-list a:hover { text-decoration: underline; text-decoration-color: var(--kv-yellow); text-decoration-thickness: .06em; text-underline-offset: .1em; }
.kv-places-pause { position: absolute; right: 16px; bottom: 10px; z-index: 2; display: inline-flex; align-items: center; justify-content: center; width: 36px; height: 36px; padding: 0; border: 1px solid #000; border-radius: 0; background: #fff; color: #000; cursor: pointer; }
.kv-places-pause .kv-i { width: 16px; height: 16px; }
.kv-places-pause .kv-i--play, .kv-places.is-paused .kv-places-pause .kv-i--pause { display: none; }
.kv-places.is-paused .kv-places-pause .kv-i--play { display: block; }
@keyframes kv-slide { to { transform: translateX(-50%); } }

/* ---------- Secções e títulos */
.kv-sec { padding-block: 84px 96px; }
.kv-sec--tight { padding-top: 0; }
.kv-sec--grey { background: var(--kv-neutral); }
.kv-head { display: grid; grid-template-columns: 1fr auto; align-items: end; gap: 16px 40px; margin-bottom: 44px; color: #000; }
.kv-head h1, .kv-head h2, body.kv .kv-head h1, body.kv .kv-head h2 { margin: 0; font-family: var(--kv-title); font-weight: 600; font-size: clamp(34px, 5.6vw, 84px); line-height: .92; letter-spacing: -.05em; text-transform: uppercase; text-wrap: balance; }
.kv-head p { grid-column: 1 / -1; max-width: 60ch; margin: 0; }

/* ---------- Cartão de imóvel */
.kv-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
/* min-width: 0 impede o carrossel de fotos (Slick) de alargar a coluna sem fim */
.kv-grid > [class*="col-"] { width: auto; min-width: 0; max-width: none; flex: none; padding: 0; margin: 0; display: flex; }
.kv-card { min-width: 0; }
.kv-card-ph .slick-list { width: 100%; }
.kv-card { position: relative; display: flex; flex-direction: column; width: 100%; background: #fff; border: 1px solid var(--kv-line); border-radius: 0; box-shadow: none; color: var(--kv-grey); transition: border-color .2s ease; }
.kv-card::before { content: ""; position: absolute; left: -1px; right: -1px; top: -1px; height: 4px; background: var(--kv-yellow); transform: scaleX(0); transform-origin: left; transition: transform .35s ease; z-index: 3; }
.kv-card:hover { border-color: #000; }
.kv-card:hover::before { transform: scaleX(1); }
.kv-card-ph { position: relative; aspect-ratio: 4 / 3; overflow: hidden; background: var(--kv-neutral); }
.kv-card-ph .property-slider, .kv-card-ph .slick-list, .kv-card-ph .slick-track, .kv-card-ph .slick-slide, .kv-card-ph .slick-slide > div { height: 100%; }
.kv-card-ph .property-slider:not(.slick-initialized) > a:not(:first-child) { display: none; }
.kv-card-ph a { display: block; height: 100%; }
.kv-card-ph img.image-imoveis { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.kv-card:hover .kv-card-ph img.image-imoveis { transform: scale(1.04); }
.kv-card--closed .kv-card-ph img.image-imoveis { filter: grayscale(1); opacity: .8; }
.kv-tags { position: absolute; left: 14px; top: 14px; z-index: 2; display: flex; flex-wrap: wrap; gap: 6px; pointer-events: none; }
.kv-tag { padding: 6px 10px; background: #000; color: #fff; font-family: var(--kv-title); font-size: 10.5px; font-weight: 600; line-height: 1.2; letter-spacing: .14em; text-transform: uppercase; }
/* "Exclusivo" é um selo, não uma ação: branco com contorno preto (o amarelo fica para os botões) */
.kv-tag--cta { background: #fff; color: #000; box-shadow: inset 0 0 0 1px #000; }
.kv-tag--off { background: #fff; color: #000; }
.kv-count { position: absolute; right: 14px; bottom: 14px; z-index: 2; display: flex; align-items: center; gap: 6px; padding: 5px 9px; background: rgba(0,0,0,.66); color: #fff; font-size: 12.5px; line-height: 1.3; pointer-events: none; }
.kv-count .kv-i { width: 15px; height: 15px; }
.kv-360 { position: absolute; left: 14px; bottom: 14px; z-index: 2; width: 36px; height: 36px; border-radius: 50%; }
.kv-card-body { position: relative; display: flex; flex-direction: column; flex: 1; padding: 22px 22px 20px; }
.kv-card-deal { font-weight: 300; font-size: 12.5px; letter-spacing: .04em; }
body.kv .kv-card-price { margin: 2px 0 0; font-family: var(--kv-title); font-weight: 700; font-size: 27px; line-height: 1.1; letter-spacing: -.03em; color: #000; font-variant-numeric: tabular-nums; }
.kv-card-price small { font-family: var(--kv-body); font-weight: 400; font-size: 14px; letter-spacing: 0; }
.kv-card-price--off { color: var(--kv-grey); opacity: .6; }
body.kv .kv-card h3 { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; min-height: 2.5em; margin: 12px 0 0; font-family: var(--kv-title); font-weight: 600; font-size: 17px; line-height: 1.25; letter-spacing: -.015em; color: #000; }
/* O cartão todo abre o imóvel; o carrossel de fotos continua a responder por cima */
.kv-card-link::after { content: ""; position: absolute; inset: 0; }
.kv-card-place { display: flex; align-items: center; gap: 6px; margin: 8px 0 0; font-size: 14px; }
.kv-card-place .kv-i { width: 16px; height: 16px; }
.kv-specs { display: grid; grid-template-columns: repeat(3, 1fr); margin: auto 0 0; padding: 18px 0 0; list-style: none; }
.kv-specs li { display: flex; flex-direction: column; gap: 4px; padding-left: 14px; border-left: 1px solid var(--kv-line); font-size: 12.5px; line-height: 1.3; }
.kv-specs li:first-child { padding-left: 0; border-left: 0; }
.kv-specs strong { display: flex; align-items: center; gap: 7px; font-family: var(--kv-title); font-weight: 600; font-size: 16px; color: #000; white-space: nowrap; }
.kv-card-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 13px 22px; border-top: 1px solid var(--kv-line); font-size: 12.5px; font-weight: 300; }
.kv-card-foot span:last-child { display: flex; align-items: center; gap: 6px; font-family: var(--kv-title); font-weight: 600; font-size: 12px; letter-spacing: .12em; text-transform: uppercase; color: #000; }
.kv-card-foot .kv-i { width: 15px; height: 15px; transition: transform .2s ease; }
.kv-card:hover .kv-card-foot .kv-i { transform: translateX(4px); }

/* ---------- Imóvel em destaque */
.kv-feat { display: grid; grid-template-columns: 1.45fr 1fr; background: #000; color: #fff; }
.kv-feat-ph { position: relative; display: block; min-height: 440px; overflow: hidden; }
.kv-feat .kv-feat-ph img { position: absolute; inset: 0; width: 100%; height: 100%; max-width: none; object-fit: cover; }
.kv-feat-in { display: flex; flex-direction: column; justify-content: center; padding: clamp(28px, 4.4vw, 64px); }
.kv-feat-in > .kv-caps { color: var(--kv-yellow); }
body.kv .kv-feat h3 { margin: 14px 0 0; color: #fff; font-family: var(--kv-title); font-weight: 700; font-size: clamp(26px, 3vw, 42px); line-height: 1.02; letter-spacing: -.04em; text-transform: uppercase; text-wrap: balance; }
body.kv .kv-feat .kv-card-place { margin-top: 12px; color: #ddd; }
body.kv .kv-feat-price { margin: 18px 0 0; font-family: var(--kv-title); font-weight: 700; font-size: 30px; letter-spacing: -.03em; color: #fff; font-variant-numeric: tabular-nums; }
.kv-feat-specs { display: flex; flex-wrap: wrap; gap: 10px 26px; margin: 20px 0 0; padding: 18px 0; border-block: 1px solid #333; list-style: none; font-size: 14px; color: #ddd; }
.kv-feat-specs li { display: flex; align-items: center; gap: 8px; }
.kv-feat-specs strong { font-family: var(--kv-title); font-weight: 600; color: #fff; }
.kv-agent { display: flex; align-items: center; gap: 12px; margin-top: 20px; font-size: 14px; line-height: 1.4; }
.kv-agent b { display: grid; place-items: center; width: 42px; height: 42px; flex: none; background: #fff; color: #000; font-family: var(--kv-title); font-size: 14px; }
.kv-agent img { width: 42px; height: 42px; flex: none; object-fit: cover; }
.kv-agent strong { display: block; font-family: var(--kv-title); font-weight: 600; }
.kv-acts { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px; }

/* ---------- Três serviços */
.kv-trio { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); border-top: 2px solid #000; }
.kv-trio a { display: block; padding: 34px 30px 38px 0; border-right: 1px solid var(--kv-line); color: var(--kv-grey); }
.kv-trio a + a { padding-left: 30px; }
.kv-trio a:last-child { border-right: 0; }
body.kv .kv-trio h3 { margin: 0 0 12px; font-family: var(--kv-title); font-weight: 600; font-size: clamp(24px, 2.6vw, 38px); letter-spacing: -.04em; text-transform: uppercase; }
.kv-trio p { margin: 0 0 20px; font-size: 15px; }
.kv-trio a:hover h3 { text-decoration: underline; text-decoration-color: var(--kv-yellow); text-underline-offset: 6px; text-decoration-thickness: 3px; }

/* ---------- Bloco amarelo de chamada à ação */
.kv-say { background: #000; color: #fff; }
.kv-say-in { display: grid; grid-template-columns: 1.5fr 1fr; gap: 30px 60px; align-items: end; padding-block: 96px; }
body.kv .kv-say h2 { margin: 0; color: #fff; font-family: var(--kv-title); font-weight: 700; font-size: clamp(38px, 6.6vw, 104px); line-height: .9; letter-spacing: -.05em; text-transform: uppercase; text-wrap: balance; }
body.kv .kv-say p { max-width: 40ch; margin: 0 0 24px; color: var(--kv-line); font-size: 16px; }

/* ---------- Consultores e artigos */
.kv-people { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 28px; }
.kv-person { display: block; color: var(--kv-grey); }
.kv-person .kv-ph { aspect-ratio: 4 / 5; overflow: hidden; background: var(--kv-neutral); }
.kv-person img { display: block; width: 100%; height: 100%; object-fit: cover; filter: grayscale(1); transition: filter .5s ease, transform .8s ease; }
.kv-person:hover img { filter: none; transform: scale(1.04); }
body.kv .kv-person h3 { margin: 16px 0 2px; font-family: var(--kv-title); font-weight: 600; font-size: 18px; }
.kv-person span { font-size: 14px; }
.kv-posts { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 28px; }
.kv-post { display: flex; flex-direction: column; color: var(--kv-grey); }
.kv-post .kv-ph { aspect-ratio: 16 / 10; overflow: hidden; background: var(--kv-neutral); }
.kv-post img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform .8s ease; }
.kv-post:hover img { transform: scale(1.04); }
.kv-post time { display: block; margin-top: 18px; }
body.kv .kv-post h3 { margin: 8px 0 10px; font-family: var(--kv-title); font-weight: 600; font-size: 20px; line-height: 1.2; }
.kv-post p { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 3; overflow: hidden; margin: 0 0 16px; font-size: 15px; }
.kv-post .kv-more { align-self: flex-start; margin-top: auto; }

/* ---------- Newsletter em fundo preto */
.kv-news { background: #000; color: #ddd; }
.kv-news-in { display: grid; grid-template-columns: 1fr 1fr; gap: 30px 60px; align-items: start; padding-block: 84px; }
body.kv .kv-news h2 { margin: 0; color: #fff; font-family: var(--kv-title); font-weight: 600; font-size: clamp(30px, 4.4vw, 64px); line-height: .95; letter-spacing: -.05em; text-transform: uppercase; }
body.kv .kv-news p { margin: 16px 0 0; color: #ddd; }
.kv-news form { display: grid; gap: 14px; }
.kv-news input[type="email"] { width: 100%; padding: 14px 0; border: 0; border-bottom: 1px solid #666; border-radius: 0; background: transparent; color: #fff; font: 500 18px var(--kv-title); }
.kv-news input[type="email"]::placeholder { color: #999; }
.kv-news input[type="email"]:focus { border-bottom-color: var(--kv-yellow); outline: none; }
.kv-news label, .kv-news .form-check-label, .kv-news a { color: #ddd; }
.kv-news a { text-decoration: underline; }
.kv-news .kv-btn { justify-self: start; }
.kv-news .kc-error { color: #fff; background: #7a1010; padding: 8px 12px; }

/* ---------- Movimento (só com a classe .kv-motion, posta por script quando o visitante não pediu movimento reduzido) */
.kv-motion .kv-cover-ph img { animation: kv-settle 2.6s var(--kv-ease) both; }
.kv-motion .kv-cover-slogan i { animation: kv-rise 1.1s var(--kv-ease) both; }
.kv-motion .kv-cover-slogan b i { animation-delay: .16s; }
.kv-motion .kv-cover-lead, .kv-motion .kv-credit { animation: kv-fade 1.2s ease .6s both; }
@keyframes kv-settle { from { scale: 1.14; } to { scale: 1; } }
@keyframes kv-rise { from { transform: translateY(108%); } to { transform: none; } }
@keyframes kv-fade { from { opacity: 0; } to { opacity: 1; } }
/* O conteúdo com data-reveal está sempre visível; o kinvest.js só marca com .kv-pre o que ainda está abaixo do ecrã,
   e é só esse que entra com movimento (sem JavaScript, ao imprimir ou para os leitores de ecrã, nada fica escondido) */
.kv-motion [data-reveal] { transition: opacity .9s ease, transform 1s var(--kv-ease); transition-delay: var(--d, 0s); }
.kv-motion .kv-pre:not(.in) { opacity: 0; transform: translateY(34px); }
.kv-motion [data-curtain] { transition: clip-path 1.25s cubic-bezier(.7, 0, .2, 1); transition-delay: var(--d, 0s); }
.kv-motion .kv-pre:not(.in)[data-curtain], .kv-motion .kv-pre:not(.in) [data-curtain] { clip-path: inset(100% 0 0 0); }
@media print { .kv-pre { opacity: 1 !important; transform: none !important; } .kv-pre [data-curtain], .kv-pre[data-curtain] { clip-path: none !important; } }

/* ---------- Páginas que ainda usam a marcação do tema: mesmo aspeto */
body.kv .title-1 h2, body.kv .title-2 h2, body.kv .title-3 h2 { font-family: var(--kv-title); font-weight: 600; font-size: clamp(30px, 4vw, 56px); line-height: .95; letter-spacing: -.045em; text-transform: uppercase; color: #000; }
body.kv .title-1 h2::before, body.kv .title-1 h2::after, body.kv .title-2 h2::before, body.kv .title-2 h2::after, body.kv .title-3 h2::before, body.kv .title-3 h2::after, body.kv .title-3 hr, body.kv .title-1 hr, body.kv .title-2 hr { display: none; }
body.kv .title-3 h2 span, body.kv .title-1 h2 span { color: #000; -webkit-text-fill-color: currentColor; background: none; }
body.kv h1.h2 { font-size: clamp(30px, 4vw, 56px); font-weight: 600; line-height: .95; letter-spacing: -.045em; text-transform: uppercase; }
body.kv .theme-card, body.kv .blog-wrap, body.kv .about-box, body.kv .property-box:not(.kv-card), body.kv .contact_wrap, body.kv .log-in, body.kv .advance-card, body.kv .page-section .desc-box, body.kv .feature-wrap { border-radius: 0; box-shadow: none; }
body.kv .theme-card, body.kv .advance-card, body.kv .blog-wrap, body.kv .log-in { border: 1px solid var(--kv-line); }
body.kv .form-control, body.kv .form-select { border-radius: 0; border-color: var(--kv-line); box-shadow: none; font-family: var(--kv-body); color: #000; }
body.kv .form-control:focus, body.kv .form-select:focus { border-color: #000; box-shadow: none; }
body.kv .label, body.kv .label-shadow, body.kv .label-gradient, body.kv .label-light { border-radius: 0; background: #000; background-image: none; box-shadow: none; color: #fff; font-family: var(--kv-title); font-weight: 600; letter-spacing: .1em; text-transform: uppercase; }
body.kv .breadcrumb-section { background: #000; }
body.kv .breadcrumb-section .bg-img { opacity: .35; filter: grayscale(1); }
body.kv .breadcrumb-section h2 { color: #fff; font-family: var(--kv-title); font-weight: 700; font-size: clamp(34px, 5vw, 72px); letter-spacing: -.05em; text-transform: uppercase; }
body.kv .breadcrumb-section .breadcrumb-item, body.kv .breadcrumb-section .breadcrumb-item a { color: #ddd; font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; }
/* Voltar ao topo */
.kv-totop { position: fixed; right: 20px; bottom: 20px; z-index: 990; display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; padding: 0; border: 1px solid #fff; border-radius: 0; background: #000; color: #fff; cursor: pointer; --kv-focus: var(--kv-yellow); }
.kv-totop[hidden] { display: none; }
.kv-totop:hover { background: var(--kv-yellow); border-color: var(--kv-yellow); color: #000; }
body.kv .theme-pagination .page-link { border-radius: 0; color: #000; }
body.kv .theme-pagination .page-item.active .page-link { background: #000; border-color: #000; color: #fff; }
body.kv .text-success { color: #000 !important; }
body.kv .nav-tabs .nav-link, body.kv .nav-pills .nav-link { border-radius: 0; font-family: var(--kv-title); font-weight: 600; color: #000; }
body.kv .nav-tabs .nav-link.active, body.kv .nav-pills .nav-link.active { background: #000; background-image: none; color: #fff; }

/* ---------- Ecrãs menores */
@media (max-width: 1100px) {
    .kv-search { grid-template-columns: 1fr 1fr 1fr; gap: 22px 24px; }
    .kv-seg, .kv-field--wide { grid-column: 1 / -1; }
    .kv-search .kv-btn { grid-column: 1 / -1; }
}
/* ---------- Linha de cima (só no computador): telefone com a nota do custo da chamada e área reservada */
.kv-util { background: var(--kv-neutral); color: var(--kv-grey); font-size: 13px; line-height: 1.3; }
.kv-util-in { display: flex; align-items: center; justify-content: flex-end; gap: 28px; min-height: 36px; }
.kv-util a { display: inline-flex; align-items: center; gap: 8px; min-height: 28px; color: var(--kv-grey); text-decoration: none; }
.kv-util a:hover { color: #000; text-decoration: underline; }
.kv-util-places { margin-right: auto; }
.kv-util .kv-i { width: 15px; height: 15px; }
.kv-util-phone strong { color: #000; font-family: var(--kv-title); font-weight: 600; font-variant-numeric: tabular-nums; }
.kv-util-phone small { font-size: 12px; }
/* Botão do cabeçalho: o amarelo da chamada à ação, mais baixo que os outros */
.kv-btn--sm { padding: 11px 18px; }
.kv-nav a.kv-top-cta, .kv-nav a.kv-top-cta:hover { padding: 11px 18px; border: 1px solid var(--kv-yellow); }
.kv-nav a.kv-top-cta { background: var(--kv-yellow); color: #000; }
.kv-nav a.kv-top-cta:hover { background: #000; border-color: #000; color: #fff; }
.kv-menu-top { display: flex; flex-direction: column; align-items: flex-start; gap: 18px; margin-bottom: 26px; padding-bottom: 24px; border-bottom: 1px solid #333; }
.kv-menu-phone { display: inline-flex; align-items: flex-start; gap: 10px; color: #fff; text-decoration: none; }
.kv-menu-phone .kv-i { margin-top: 3px; }
.kv-menu-phone strong { display: block; font-family: var(--kv-title); font-size: 18px; font-weight: 600; }
.kv-menu-phone small { display: block; color: #ddd; font-size: 13px; }
.kv-menu .gtranslate_wrapper { display: flex; gap: 8px; padding-top: 12px; }
.kv-menu .gtranslate_wrapper a { display: inline-flex; align-items: center; justify-content: center; min-width: 32px; min-height: 32px; padding: 0 !important; }

/* Menu do telemóvel até 1140 px: abaixo disto as duas metades do menu e o botão já não cabem ao lado do logótipo */
@media (max-width: 1139.98px) {
    .kv-util { display: none; }
    .kv-top-in { grid-template-columns: auto 1fr auto; padding-block: 12px; }
    .kv-nav { display: none; }
    .kv-logo { padding: 0; }
    .kv-logo img { height: 40px; }
    .kv-burger { display: block; justify-self: end; grid-column: 3; }
    .kv-top.is-open .kv-burger span:first-child { transform: translateY(8px) rotate(45deg); }
    .kv-top.is-open .kv-burger span:nth-child(2) { opacity: 0; }
    .kv-top.is-open .kv-burger span:last-child { transform: translateY(-8px) rotate(-45deg); }
    .kv-menu { position: fixed; inset: 64px 0 0; z-index: 999; overflow-y: auto; padding: 28px 24px 40px; background: #000; color: #fff; }
    .kv-top.is-open .kv-menu { display: block; }
    .kv-menu ul { margin: 0; padding: 0; list-style: none; }
    .kv-menu-main a { display: block; padding: 8px 0; color: #fff; font-family: var(--kv-title); font-weight: 700; font-size: 34px; line-height: 1.1; letter-spacing: -.04em; text-transform: uppercase; }
    .kv-menu-main a:hover, .kv-menu-main a[aria-current="page"] { color: var(--kv-yellow); }
    .kv-menu-more { margin-top: 26px !important; padding-top: 22px !important; border-top: 1px solid #333; }
    .kv-menu-more a { display: block; padding: 8px 0; color: #ddd; font-size: 16px; }
}
@media (min-width: 1140px) and (max-width: 1320px) {
    .kv-nav { gap: 20px; }
    .kv-logo { padding: 0 8px; }
}

@media (max-width: 900px) {
    .kv-cover { grid-template-columns: 1fr; min-height: 0; }
    .kv-cover-copy { padding: 30px 24px 34px; order: 2; }
    body.kv .kv-cover-slogan { font-size: clamp(44px, 14vw, 96px); }
    .kv-cover-ph { order: 1; aspect-ratio: 4 / 3; }
    .kv-cover-ph::after { background: linear-gradient(to top, rgba(0,0,0,.6), rgba(0,0,0,0) 50%); }
    .kv-credit { position: absolute; left: 24px; right: 24px; top: calc(75vw - 44px); bottom: auto; border: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    .kv-sec { padding-block: 56px 64px; }
    .kv-sec--tight { padding-top: 0; }
    .kv-head { grid-template-columns: 1fr; margin-bottom: 30px; }
    .kv-grid, .kv-posts { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
    .kv-people { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 20px; }
    .kv-feat, .kv-say-in, .kv-news-in { grid-template-columns: 1fr; }
    .kv-feat-ph { min-height: 0; aspect-ratio: 4 / 3; }
    .kv-say-in { padding-block: 60px; }
    body.kv .kv-say h2 { line-height: .98; }
    .kv-trio { grid-template-columns: 1fr; }
    .kv-trio a, .kv-trio a + a { padding: 26px 0; border-right: 0; border-bottom: 1px solid var(--kv-line); }
}
@media (max-width: 620px) {
    .kv-search { grid-template-columns: 1fr 1fr; }
    .kv-grid, .kv-posts { grid-template-columns: minmax(0, 1fr); }
    .kv-card-body { padding: 18px 18px 16px; }
    .kv-card-foot { padding: 12px 18px; }
}
@media (prefers-reduced-motion: reduce) {
    .kv-places { white-space: normal; padding-inline: max(24px, calc((100vw - 1272px) / 2)); }
    .kv-places-track { display: block; animation: none; }
    .kv-places-list { flex-wrap: wrap; row-gap: .12em; font-size: clamp(28px, 4vw, 56px); }
    .kv-places-list[aria-hidden="true"], .kv-places-pause { display: none; }
    .kv-top, .kv-card, .kv-card::before, .kv-card-ph img.image-imoveis, .kv-person img, .kv-post img { transition: none; }
}

/* ---------- Listagens: cabeçalho e filtros */
body.kv section.property-section { padding-top: 64px; }
.kv-head--list { margin-bottom: 30px; }
.kv-head--list p { font-family: var(--kv-title); font-weight: 600; font-size: 14px; }
body.kv .filter-bottom-content { margin: 0 0 34px; padding: 26px; border: 1px solid #000; border-radius: 0; box-shadow: none; background: #fff; }
body.kv .filter-bottom-content .row { row-gap: 14px; }
body.kv .filter-bottom-content .form-control, body.kv .filter-bottom-content .form-select { height: 50px; font-size: 15px; }
body.kv .property-wrapper-grid { margin: 0; }
body.kv .property-grid.kv-grid { margin: 0; }
body.kv .theme-pagination { margin-top: 40px; }

/* ---------- Ficha do imóvel */
body.kv section.kv-sheet { padding: 44px 0 40px; border-bottom: 1px solid var(--kv-line); }
.kv-sheet-in { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); gap: 30px 60px; align-items: start; }
.kv-sheet-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.kv-sheet-meta .kv-tag { position: static; }
.kv-tag--line { background: #fff; color: #000; box-shadow: inset 0 0 0 1px #000; }
.kv-sheet-ref { margin-left: 6px; font-size: 13px; font-weight: 300; }
body.kv .kv-sheet h1 { margin: 16px 0 0; font-family: var(--kv-title); font-weight: 700; font-size: clamp(28px, 3.6vw, 52px); line-height: 1; letter-spacing: -.045em; text-transform: uppercase; text-wrap: balance; }
.kv-sheet .kv-card-place { margin-top: 14px; font-size: 16px; }
.kv-sheet-specs { display: flex; flex-wrap: wrap; gap: 0; margin: 26px 0 0; padding: 0; list-style: none; border-top: 1px solid var(--kv-line); }
.kv-sheet-specs li { display: flex; flex-direction: column; gap: 4px; padding: 16px 34px 0 0; margin-right: 34px; border-right: 1px solid var(--kv-line); font-size: 13px; line-height: 1.3; }
.kv-sheet-specs li:last-child { border-right: 0; margin-right: 0; }
.kv-sheet-specs strong { display: flex; align-items: center; gap: 8px; font-family: var(--kv-title); font-weight: 600; font-size: 20px; color: #000; white-space: nowrap; }
.kv-sheet-side { display: flex; flex-direction: column; align-items: flex-start; padding: 26px; border: 1px solid #000; }
body.kv .kv-sheet-price { margin: 0; font-family: var(--kv-title); font-weight: 700; font-size: clamp(32px, 3.2vw, 46px); line-height: 1; letter-spacing: -.04em; color: #000; font-variant-numeric: tabular-nums; }
.kv-sheet-price small { font-family: var(--kv-body); font-weight: 400; font-size: 16px; letter-spacing: 0; }
body.kv .kv-sheet-price--off { color: var(--kv-grey); opacity: .65; }
.kv-sheet-side .kv-acts { margin-top: 22px; }
.kv-sheet-side .ks { margin-top: 14px; }
body.kv .ks-open { border-radius: 0; background: #fff; border-color: #000; color: #000; font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; padding: 14px 24px; }
body.kv .ks-open:hover { background: #000; color: #fff; }
body.kv .ks-panel { border-radius: 0; border-color: #000; box-shadow: none; }
body.kv .ks-copy, body.kv .ks-copy button { border-radius: 0; }
body.kv .ks-bar a, body.kv .ks-bar button { border-radius: 0; }
body.kv section.single-property { padding-top: 44px; }
body.kv .single-property .desc-box { padding: 0; border: 0; background: none; }
body.kv .single-property .content-title, body.kv .single-property .desc-box h4 { font-family: var(--kv-title); font-weight: 600; font-size: 22px; letter-spacing: -.03em; color: #000; text-transform: none; }
body.kv .single-property .line-tab { border-bottom: 2px solid #000; }
body.kv .single-property .line-tab .nav-link { padding: 12px 22px; border: 0; font-size: 11.5px; letter-spacing: .2em; text-transform: uppercase; }
body.kv .single-property .line-tab .nav-link::before, body.kv .single-property .line-tab .nav-link::after { display: none; }
body.kv .single-property .advance-card { padding: 26px; border: 1px solid #000; }
body.kv .single-property .advance-card h6 { font-family: var(--kv-title); font-weight: 600; font-size: 11.5px; letter-spacing: .2em; text-transform: uppercase; color: #000; }
body.kv #lightgallery img, body.kv #lightgallery .bg-size { border-radius: 0; }
/* Galeria do topo da ficha: cada foto num espaço 3:2 reservado antes de carregar */
.kv-gal { position: relative; display: block; aspect-ratio: 3 / 2; overflow: hidden; background: var(--kv-neutral, #F2F2F2); }
.kv-gal-img { display: block; width: 100%; height: 100%; object-fit: cover; }

@media (max-width: 900px) {
    .kv-sheet-in { grid-template-columns: 1fr; }
    .kv-sheet-specs li { padding-right: 20px; margin-right: 20px; }
    body.kv section.property-section { padding-top: 40px; }
}

/* ---------- Acertos sobre o tema */
body.kv .property-section .property-box.kv-card, body.kv .property-box.kv-card { border-radius: 0; box-shadow: none; overflow: visible; }
body.kv .property-box.kv-card:hover { box-shadow: none; }
.kv-card-ph .slick-dots { display: none !important; }
body.kv .btn, body.kv .btn-pill, body.kv .btn.btn-gradient.btn-pill { border-radius: 0 !important; box-shadow: none !important; }
body.kv .single-property .left-sidebar, body.kv .single-property .sticky-cls, body.kv .single-property .filter-cards { padding: 0; border: 0; border-radius: 0; box-shadow: none; background: none; }
body.kv .single-property .advance-card + .advance-card { margin-top: 24px; }
body.kv .single-property .description-details, body.kv .single-property .desc-box, body.kv .single-property .tab-description { border-radius: 0; box-shadow: none; }
body.kv .single-property .page-section, body.kv .single-property .tab-content { padding-inline: 0; }
.kv-cover-ph::before { content: ""; position: absolute; inset: auto 0 0 0; height: 30%; z-index: 1; background: linear-gradient(to top, rgba(0,0,0,.7), rgba(0,0,0,0)); }

/* Fontes do tema (Rubik, Roboto) que ainda apareciam em etiquetas e ligações */
:where(body.kv) :is(a, li) { font-family: inherit; }
body.kv label, body.kv .form-label, body.kv .form-check-label, body.kv .breadcrumb-item, body.kv .character { font-family: var(--kv-body); }

/* Caixas do tema: cantos vivos, sem sombras, com linha fina */
body.kv .service-box, body.kv .icon-round, body.kv .icons-square, body.kv .looking-icons li, body.kv .looking-icon, body.kv .single-sidebar, body.kv .blog-sidebar,
body.kv .video-details, body.kv .about-listing, body.kv .kc-legal-index, body.kv .page-link, body.kv .blog-wrap img, body.kv .about-main img, body.kv .img-fluid {
    border-radius: 0 !important; box-shadow: none !important;
}
body.kv .service-box, body.kv .blog-sidebar, body.kv .about-listing, body.kv .looking-icons li { border: 1px solid var(--kv-line); }
body.kv .icon-round, body.kv .icons-square { background: #000; background-image: none; color: #fff; }
body.kv .service-box:hover { border-color: #000; }

/* Topo das páginas interiores: faixa preta com o título, sem fotografia de fundo */
body.kv section.breadcrumb-section { position: relative; padding: 0; background: #000 !important; background-image: none !important; }
body.kv .breadcrumb-section .breadcrumb-content { display: block; min-height: 0; height: auto; padding: 64px 0 56px; text-align: left; }
body.kv .breadcrumb-section .breadcrumb-content > div { text-align: left; }
body.kv .breadcrumb-section h2 { margin: 0 0 14px; line-height: .95; }
body.kv .breadcrumb-section .breadcrumb { justify-content: flex-start; margin: 0; padding: 0; background: none; }
body.kv .breadcrumb-section .breadcrumb-item::before { color: #777; }

/* Página "Vender casa" */
body.kv .home-main h1 { font-family: var(--kv-title); font-weight: 700; font-size: clamp(34px, 4.4vw, 64px); line-height: .98; letter-spacing: -.045em; text-transform: uppercase; }
body.kv .home-main h6, body.kv .looking-icons h5 { font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: #000; }
body.kv .looking-icons li { background: #fff; }

/* Blog e consultores com o mesmo desenho dos outros cartões */
body.kv .blog-wrap, body.kv .about-box { border: 1px solid var(--kv-line); }
body.kv .blog-wrap .blog-details h3, body.kv .blog-wrap .blog-details h3 a { font-family: var(--kv-title); font-weight: 600; font-size: 19px; line-height: 1.2; letter-spacing: -.015em; text-transform: none; color: #000; }
body.kv .blog-wrap .blog-label { border-radius: 0; background: #000; }
body.kv .blog-wrap .blog-label h3, body.kv .blog-wrap .blog-label span { color: #fff; }
body.kv .blog-details > a { display: inline-block; padding-bottom: 4px; border-bottom: 2px solid var(--kv-yellow); font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; letter-spacing: .2em; text-transform: uppercase; color: #000; }

/* Os contentores do tema ficam com a mesma largura e a mesma margem dos blocos novos, para tudo alinhar pela mesma linha */
body.kv .container { max-width: 1320px; padding-inline: 24px; }
body.kv .btn-gradient::before, body.kv .btn-gradient::after, body.kv .btn-solid::before, body.kv .btn-solid::after { display: none; }
body.kv .btn-block { width: 100%; }
body.kv section.breadcrumb-section, body.kv .breadcrumb-section .breadcrumb-content { height: auto; min-height: 0; }
body.kv .agent-contact li:not(.show) .label { padding: 4px 8px; font-size: 10px; cursor: pointer; }
body.kv .agent-contact li .label { color: #fff !important; -webkit-text-fill-color: #fff; }

/* Contactos: as duas caixas lado a lado, sem se sobreporem */
body.kv .get-in-touch .log-in, body.kv .contact-2 .log-in { margin: 0; padding: 34px; }
body.kv .get-in-touch .contact-img, body.kv .contact-2 .contact_wrap { margin: 0; }
body.kv .get-in-touch .title-1, body.kv .get-in-touch .title-3, body.kv .log-in .title-1, body.kv .log-in .title-3 { margin-top: 0; }
body.kv .contact_wrap_2 .theme-card, body.kv .contact-detail.theme-card { margin: 0; padding: 34px; }
body.kv .contact-2 .row.gx-3 { --bs-gutter-x: 28px; align-items: stretch; }
body.kv .contact-2 .log-in, body.kv .contact-2 .contact-detail { height: 100%; }

/* Texto secundário do tema: cinzento da marca (os cinzentos claros do tema não tinham contraste suficiente) e as fontes da marca */
body.kv ul li, body.kv ol li, body.kv li a { font-family: inherit; }
body.kv .breadcrumb-section .breadcrumb .breadcrumb-item, body.kv .breadcrumb-section .breadcrumb .breadcrumb-item a { font-family: var(--kv-title) !important; }
body.kv .property-list-details li, body.kv .agent-contact li, body.kv .agent-contact .character, body.kv .blog-details p, body.kv .blog-sidebar a, body.kv .blog-sidebar li,
body.kv .text-muted, body.kv .font-roboto, body.kv .desc-box p, body.kv .single-property p { color: var(--kv-grey) !important; }
body.kv .form-control::placeholder, body.kv textarea::placeholder { color: #666; opacity: 1; }
body.kv textarea.form-control, body.kv .form-control { color: #000; }
body.kv .theme-pagination .pagination { flex-wrap: wrap; row-gap: 6px; }
body.kv .kc-legal table, body.kv .legal-content table, body.kv .theme-card table { display: block; max-width: 100%; overflow-x: auto; }
body.kv .property-list-details li, body.kv .agent-contact li, body.kv .blog-sidebar li, body.kv .blog-sidebar li a, body.kv .single-property li:not(.nav-item), body.kv .blog-details li, body.kv .category-property li, body.kv .category-property li a { font-family: var(--kv-body) !important; }
body.kv .pagination { flex-wrap: wrap; row-gap: 6px; }

/* Menus: um item por linha (o tema põe os <li> em linha) e a letra dos títulos nas entradas principais */
body.kv .kv-sub > li, body.kv .kv-menu li { display: block; }
body.kv .kv-nav > li { display: block; }
body.kv .kv-menu-main a { font-family: var(--kv-title); }
body.kv .kv-sub a, body.kv .kv-menu-more a { font-family: var(--kv-body); }
body.kv .kv-nav a, body.kv .kv-nav button { font-family: var(--kv-title); }

/* Fotografias dos consultores: são retratos 4:5 (images/avatars). Onde aparecem num quadrado ou num círculo,
   recortam sem deformar e mantêm a cara (que fica no terço superior) */
img[src*="/images/avatars/"] { object-fit: cover; object-position: 50% 28%; }
.agent-image .bg-size { background-position: 50% 28% !important; }

/* Ligações para os simuladores na ficha do imóvel, com o preço já preenchido */
.kv-sheet-sim {
    margin: 14px 0 0;
    font-size: 14px;
    line-height: 1.7;
}

.kv-sheet-sim a {
    display: block;
    color: var(--kv-black, #000);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.kv-sheet-sim a::after {
    content: " →";
    text-decoration: none;
}

.kv-sheet-sim a:hover {
    color: var(--kv-yellow, #e3a625);
}
.kv-energy { display: flex; align-items: center; gap: 10px; margin: 0; }
/* ---------- Páginas de erro (resources/views/errors/front.blade.php) */
.kv-error .kv-head { margin-bottom: 32px; }
.kv-error-search { max-width: 720px; }
.kv-error-search label { display: block; margin-bottom: 10px; }
.kv-error-search div { display: flex; gap: 0; }
.kv-error-search input { flex: 1; min-width: 0; padding: 14px 16px; border: 1px solid #DDDDDD; border-right: 0; font-size: 16px; }
.kv-error-links { display: flex; flex-wrap: wrap; gap: 10px 28px; margin: 28px 0 0; padding: 0; list-style: none; }
.kv-error-links a { color: #000; font-weight: 600; text-decoration: underline; text-underline-offset: 4px; }
/* Botão do vídeo na ficha (substitui a ligação do tema com o círculo laranja a pulsar) */
.icon-video button { display: flex; align-items: center; justify-content: center; width: 76px; height: 76px; border: 0; border-radius: 50%; background: var(--kv-yellow, #E3A625); color: #000; font-size: 22px; cursor: pointer; }
.icon-video button:focus-visible { outline: 2px solid #000; outline-offset: 3px; }

/* ---------- Aviso de cookies (front/partials/cookies.blade.php; era um <style> repetido em cada página)
   Cartão no canto inferior esquerdo; no telemóvel, folha presa ao fundo com no máximo 40% do ecrã, para não tapar o título.
   Botões retos como os outros do site; Recusar e Aceitar iguais. */
.kc-cookies {
    --kc-ink: #000;
    --kc-text: var(--kv-grey);
    --kc-line: var(--kv-line);
    position: fixed; left: 24px; bottom: 24px; z-index: 1050;
    box-sizing: border-box; width: 380px; max-width: calc(100vw - 48px); max-height: calc(100vh - 48px);
    overflow-y: auto; overscroll-behavior: contain;
    padding: 22px 22px 18px; background: #fff; color: var(--kc-text);
    border: 1px solid #000; border-radius: 0;
    box-shadow: 0 10px 30px -10px rgba(0, 0, 0, .25);
    font-family: var(--kv-body); font-size: 14px; line-height: 1.55; text-align: left;
}
.kc-cookies *, .kc-cookies *::before { box-sizing: border-box; }
.kc-cookies[hidden], .kc-cookies [hidden] { display: none !important; }
.kc-cookies:not([hidden]) { animation: kc-cookies-in .5s cubic-bezier(.16, 1, .3, 1) both; }
.kc-cookies [data-cookies-options]:not([hidden]) { animation: kc-cookies-fade .3s ease-out both; }
@keyframes kc-cookies-in { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes kc-cookies-fade { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } }

body.kv .kc-cookies .kc-cookies-title { margin: 0 0 6px; padding: 0; color: var(--kc-ink); font-family: var(--kv-title); font-size: 16px; font-weight: 700; line-height: 1.3; }
body.kv .kc-cookies .kc-cookies-text { margin: 0; color: var(--kc-text); font-family: var(--kv-body); font-size: 14px; font-weight: 400; line-height: 1.55; text-wrap: pretty; }
.kc-cookies .kc-cookies-text a { color: var(--kc-ink); font-weight: 600; text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 2px; }
.kc-cookies .kc-cookies-text a:hover { text-decoration-thickness: 2px; }

/* Categorias: nome e descrição à esquerda, interruptor à direita */
.kc-cookies .kc-cookies-options { margin: 16px 0 0; border-top: 1px solid var(--kc-line); }
.kc-cookies .kc-cookies-row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0; padding: 12px 0; border-bottom: 1px solid var(--kc-line); color: var(--kc-text); font-family: var(--kv-body); font-size: 13px; font-weight: 400; line-height: 1.45; cursor: pointer; }
.kc-cookies .kc-cookies-row-locked { cursor: default; }
.kc-cookies .kc-cookies-row-name { display: block; color: var(--kc-ink); font-size: 14px; font-weight: 600; line-height: 1.35; }
.kc-cookies .kc-cookies-row-desc { display: block; margin-top: 2px; color: var(--kc-text); font-size: 13px; line-height: 1.45; text-wrap: pretty; }
/* A própria checkbox, desenhada como interruptor */
.kc-cookies .kc-cookies-row input[type="checkbox"] {
    -webkit-appearance: none; appearance: none; position: relative; flex: none;
    width: 42px; height: 24px; margin: 0; padding: 0; border: 0; border-radius: 999px;
    background: #767676; cursor: pointer; transition: background-color .2s ease;
}
.kc-cookies .kc-cookies-row input[type="checkbox"]::before {
    content: ""; position: absolute; top: 3px; left: 3px; width: 18px; height: 18px; border-radius: 50%;
    background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .25); transition: transform .2s cubic-bezier(.16, 1, .3, 1);
}
.kc-cookies .kc-cookies-row input[type="checkbox"]:checked { background: var(--kc-ink); }
.kc-cookies .kc-cookies-row input[type="checkbox"]:checked::before { transform: translateX(18px); }
.kc-cookies .kc-cookies-row input[type="checkbox"]:disabled { opacity: .38; cursor: not-allowed; }

/* Botões: Recusar e Aceitar lado a lado, idênticos; Escolher discreto por baixo */
.kc-cookies .kc-cookies-actions { display: flex; flex-direction: column; gap: 8px; margin-top: 18px; }
.kc-cookies .kc-cookies-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
body.kv .kc-cookies button {
    display: inline-flex; align-items: center; justify-content: center; width: 100%; min-width: 0; height: 44px; margin: 0; padding: 0 16px;
    border: 1px solid var(--kc-ink); border-radius: 0; background: var(--kc-ink); color: #fff;
    font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; line-height: 1; letter-spacing: .2em; text-transform: uppercase;
    cursor: pointer; box-shadow: none; transition: background-color .15s ease, color .15s ease, border-color .15s ease;
}
body.kv .kc-cookies button:hover { background: #333; border-color: #333; color: #fff; }
body.kv .kc-cookies button[data-cookies-action="save"] { background: #fff; color: var(--kc-ink); }
body.kv .kc-cookies button[data-cookies-action="save"]:hover { background: var(--kv-neutral); border-color: var(--kc-ink); color: var(--kc-ink); }
body.kv .kc-cookies button[data-cookies-action="choose"] {
    width: auto; height: 36px; align-self: center; padding: 0 14px; border-color: transparent; background: transparent; color: var(--kc-ink);
    font-family: var(--kv-body); font-size: 14px; font-weight: 600; letter-spacing: 0; text-transform: none;
    text-decoration: underline; text-decoration-thickness: 1px; text-underline-offset: 3px;
}
body.kv .kc-cookies button[data-cookies-action="choose"]:hover { background: transparent; border-color: transparent; color: var(--kc-ink); text-decoration-thickness: 2px; }

/* Telemóvel: folha presa ao fundo; no máximo 40% do ecrã (com as opções abertas pode crescer, com scroll próprio) */
@media (max-width: 575.98px) {
    .kc-cookies {
        left: 0; right: 0; bottom: 0; width: auto; max-width: none; max-height: 40vh; max-height: 40dvh;
        padding: 18px 16px calc(10px + env(safe-area-inset-bottom)); border-width: 1px 0 0;
        box-shadow: 0 -10px 30px -10px rgba(0, 0, 0, .25);
    }
    .kc-cookies:has([data-cookies-options]:not([hidden])) { max-height: calc(100vh - 16px); max-height: calc(100dvh - 16px); }
    body.kv .kc-cookies .kc-cookies-text { font-size: 13.5px; line-height: 1.5; }
    .kc-cookies .kc-cookies-actions { margin-top: 12px; gap: 4px; }
    .kc-cookies:not([hidden]) { animation-name: kc-cookies-up; }
    @keyframes kc-cookies-up { from { transform: translateY(100%); } to { transform: none; } }
}
@media (prefers-reduced-motion: reduce) {
    .kc-cookies:not([hidden]), .kc-cookies [data-cookies-options]:not([hidden]) { animation: none; }
    .kc-cookies button, .kc-cookies .kc-cookies-row input[type="checkbox"], .kc-cookies .kc-cookies-row input[type="checkbox"]::before { transition: none; }
}
@media print {
    .kc-cookies { display: none !important; }
}

/* ---------- Confirmação de formulário enviado (layouts/front.blade.php): faixa preta no topo do conteúdo, no fluxo da página */
.kv-success { background: #000; color: #fff; }
.kv-success-in { display: flex; align-items: center; gap: 14px; padding-block: 18px; }
.kv-success-in > .kv-i { width: 26px; height: 26px; color: var(--kv-yellow); stroke-width: 2.2; }
body.kv .kv-success p { flex: 1; margin: 0; color: #fff; font-size: 15px; line-height: 1.5; }
.kv-success strong { font-family: var(--kv-title); font-weight: 700; }
.kv-success-close { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; flex: none; padding: 0; border: 1px solid #555; border-radius: 0; background: none; color: #fff; cursor: pointer; }
.kv-success-close:hover { border-color: #fff; }

/* ---------- Rodapé (front/partials/footer.blade.php; era um <style> repetido em cada página)
   Preto, texto em #DDDDDD (13:1) e títulos a branco; cinco colunas no computador, uma no telemóvel */
.kc-footer { margin: 0; padding: 72px 0 0; background: #000; color: var(--kv-line); font-family: var(--kv-body); font-size: 14px; line-height: 1.55; }
.kc-footer ul { margin: 0; padding: 0; list-style: none; }
body.kv .kc-footer li { display: block; margin: 0; padding: 0; font-size: 14px; list-style: none; }
body.kv .kc-footer p { margin: 0; color: var(--kv-line); font-size: 14px; line-height: 1.55; }
.kc-footer a { color: var(--kv-line); text-decoration: none; transition: color .15s ease, background-color .15s ease, border-color .15s ease; }
.kc-footer a:hover { color: #fff; text-decoration: underline; }
.kc-footer img { max-width: 100%; }
.kc-footer-grid { display: grid; grid-template-columns: 1.1fr 1.4fr 1fr 1fr 1fr; gap: 40px 40px; }
body.kv .kc-footer .kc-footer-heading { margin: 0 0 18px; padding: 0; color: #fff; font-family: var(--kv-title); font-size: 11.5px; font-weight: 600; line-height: 1.3; letter-spacing: .2em; text-transform: uppercase; }
/* O título de Sobre nós e Serviços é um botão (só funciona no telemóvel); no computador parece texto */
.kc-footer-toggle { display: flex; align-items: center; justify-content: space-between; width: 100%; padding: 0; border: 0; background: none; color: inherit; font: inherit; letter-spacing: inherit; text-transform: inherit; text-align: left; cursor: default; }
.kc-footer-toggle .kv-i { display: none; width: 16px; height: 16px; transition: transform .2s ease; }
.kc-footer-toggle[aria-expanded="true"] .kv-i { transform: rotate(180deg); }
.kc-footer .kc-footer-logo { display: inline-block; margin: 0 0 24px; line-height: 0; }
.kc-footer .kc-footer-logo img { display: block; width: 150px; height: auto; }
.kc-footer-contacts li + li { margin-top: 10px; }
.kc-footer-contacts a, .kc-footer-tel, .kc-footer-map { display: inline-flex; align-items: flex-start; gap: 10px; min-height: 24px; color: #fff; font-weight: 600; }
.kc-footer .kv-i { margin-top: 2px; }
.kc-footer-note { display: block; color: var(--kv-line); font-size: 12px; font-weight: 400; }
.kc-footer-social { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 26px !important; }
.kc-footer-social a { display: inline-flex; align-items: center; justify-content: center; width: 40px; height: 40px; border: 1px solid #555; border-radius: 0; color: #fff; }
.kc-footer-social a:hover { background: var(--kv-yellow); border-color: var(--kv-yellow); color: #000; }
.kc-footer-social .kv-i { margin: 0; }
.kc-footer-agency + .kc-footer-agency { margin-top: 24px; padding-top: 22px; border-top: 1px solid #333; }
body.kv .kc-footer .kc-footer-agency-name { margin: 0 0 6px; color: #fff; font-family: var(--kv-title); font-size: 16px; font-weight: 600; letter-spacing: 0; text-transform: none; }
.kc-footer-agency-name span { margin-left: 6px; color: var(--kv-line); font-family: var(--kv-body); font-size: 12px; font-weight: 400; letter-spacing: .1em; text-transform: uppercase; }
.kc-footer-agency p { margin-bottom: 10px !important; }
.kc-footer-tel { display: flex; }
.kc-footer-map { margin-top: 8px; font-weight: 400; color: var(--kv-line); text-decoration: underline !important; text-underline-offset: 3px; }
.kc-footer-links li + li { margin-top: 8px; }
.kc-footer-links a { display: inline-block; padding: 2px 0; }
/* O link Cookies tem de manter a classe text-white (o script encontra-o por data-cookies-open) */
.kc-footer .kc-footer-links a.text-white { color: var(--kv-line) !important; }
.kc-footer .kc-footer-links a.text-white:hover { color: #fff !important; }
.kc-footer-badges { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 24px; }
.kc-footer-badges a { display: inline-flex; align-items: center; justify-content: center; height: 56px; padding: 8px 12px; border-radius: 0; background: #fff; line-height: 0; }
.kc-footer-badges a:hover { background: var(--kv-neutral); }
.kc-footer-badges img { display: block; width: auto; height: 40px; }
.kc-footer-bottom { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 12px 24px; margin-top: 64px; padding: 22px 0 26px; border-top: 1px solid #333; }
body.kv .kc-footer .kc-footer-bottom p { color: var(--kv-line); font-size: 13px; }
/* Crédito de quem fez o site: pequeno e discreto, para não competir com a marca */
.kc-footer .kc-footer-credit { color: #999; font-size: 11px; }
@media (max-width: 1199.98px) {
    .kc-footer-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 767.98px) {
    .kc-footer { padding-top: 48px; }
    .kc-footer-grid { grid-template-columns: 1fr; gap: 0; }
    .kc-footer-brand, .kc-footer-agencies { padding-bottom: 32px; }
    .kc-footer-col { border-top: 1px solid #333; }
    body.kv .kc-footer .kc-footer-heading { margin: 0; padding: 18px 0; }
    .kc-footer-agencies .kc-footer-heading { padding-bottom: 14px; }
    .kc-footer-toggle { min-height: 24px; cursor: pointer; }
    .kc-footer-toggle .kv-i { display: block; }
    .kc-footer-links { padding-bottom: 18px !important; }
    .kc-footer-links li + li { margin-top: 0; }
    .kc-footer-links a { padding: 7px 0; }
    .kc-footer-legal { padding-bottom: 8px; }
    .kc-footer-bottom { flex-direction: column; align-items: flex-start; margin-top: 32px; padding-bottom: 28px; }
}

/* Reserva a altura do reCAPTCHA (carregado tarde por partials/lazy-embeds) para a página não saltar quando ele aparece */
.g-recaptcha { min-height: 78px; }
/* Na ficha, no telemóvel, a barra fixa de contacto (.ks-bar) ocupa o fundo do ecrã: o "voltar ao topo" sobe por cima dela */
@media (max-width: 767.98px) {
    body:has(.ks-bar) .kv-totop { bottom: 88px; }
}
