.crd-estate-list {
    margin: 24px 0 64px;
}

/* BUG REAL GASIT (2026-07-30) - pagina SEO de categorie/locatie (.crd-estate-seo-page, ruta virtuala
   crd_seo_slug) nu avea NICIO regula CSS proprie in afara de ascunderea breadcrumb-ului gresit - fara
   margine jos, continutul se lipea direct de footer, la fel ca pagina de profil agent (vezi agents.css). */
.crd-estate-seo-page {
    margin-bottom: 64px;
}

.crd-estate-empty {
    border: 1px solid #d8e5ef;
    border-radius: 8px;
    padding: 18px;
    background: #fff;
    color: #09233f;
}

/*
 * Grila stabila de carduri (3/2/1 coloane) - NU auto-fit/auto-fill: cu 1-2 rezultate, cardurile ocupa
 * doar primele coloane ale grilei si NU se redistribuie sa umple randul (regula ceruta explicit).
 */
.crd-estate-public-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 18px;
}

@media (min-width: 768px) {
    .crd-estate-public-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .crd-estate-public-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

/* TASK Refacere card - badge iesit din poza (2026-07-31) - cardul NU mai clipeaza (`overflow: hidden`)
   ca sa poata badge-ul (vezi `--right-edge` mai jos) sa iasa vizibil in afara fotografiei, spre marginea
   cardului. Colturile rotunjite raman corecte fara clipping la nivel de card: cele de SUS sunt rotunjite
   direct pe `.crd-estate-public-image` (mai jos), cele de JOS raman rotunjite "gratuit", pentru ca fundalul
   alb vine strict din `.crd-estate-public-card` insusi (border-radius + background), nu dintr-un element
   copil care ar avea nevoie de clipping. */
/* TASK 37.1 - reincadrare imagine: cardul primeste padding propriu, ca fotografia sa fie vizibil
   "incadrata" (contur clar al cardului in jurul ei), nu lipita de marginile exterioare. `.crd-estate-public-body`
   isi pierde padding-ul orizontal/de sus (mostenit acum de la card), pastrand doar spatiul de jos. */
.crd-estate-public-card {
    position: relative;
    padding: 14px 14px 0;
    border: 1px solid rgba(10, 181, 154, .25);
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 12px 28px rgba(9, 35, 63, .08);
    transition: transform 200ms ease, box-shadow 200ms ease;
}

/* TASK 37 (Property Cards v2), punctul 12 - hover foarte discret: ridicare 2px + umbra usor accentuata,
   zoom-ul fotografiei e definit separat mai jos (.crd-estate-public-card:hover .crd-estate-public-image).
   Nicio alta animatie. Dezactivat complet sub prefers-reduced-motion. */
.crd-estate-public-card:hover {
    transform: translateY(-2px);
    box-shadow: 0 16px 34px rgba(9, 35, 63, .14);
}

@media (prefers-reduced-motion: reduce) {
    .crd-estate-public-card,
    .crd-estate-public-image {
        transition: none;
    }

    .crd-estate-public-card:hover {
        transform: none;
    }

    .crd-estate-public-card:hover .crd-estate-public-image {
        transform: none;
    }
}

/* TASK Refacere card (2026-07-31) - imaginea devine elementul principal (punctul 4): trece de la o
   banda fixa de 170px la un raport de aspect (acelasi implicit "4:3" ca profilurile de carousel -
   assets/css/carousel.css), ceea ce mareste sensibil zona vizibila a fotografiei si reduce decuparea
   excesiva pe carduri late, ramanand in acelasi timp identica ca proportie pe toate cardurile.
   `border-radius` e pus DIRECT pe imagine (nu mostenit din clipping-ul cardului, eliminat mai sus) - preia
   `--crd-card-radius` cand cardul e intr-un carousel cu raza custom, cade pe 8px (implicitul cardului) in
   rest; `border-radius` pe un element cu `background-image` clipeaza fundalul fara sa mai fie nevoie de
   `overflow: hidden`. */
/* TASK 37.1 - `media-shell` e ancora de pozitionare pentru badge-uri/info-foto (position:relative, FARA
   overflow) - fotografia insasi traieste intr-un copil separat (`.crd-estate-public-image-wrap`, cu
   `overflow:hidden` STRICT pentru zoom-ul de la hover). Badge-urile/info-foto sunt SURORI ale wrap-ului,
   nu copii, deci depasesc marginea pozei fara sa fie taiate niciodata (structura ceruta explicit:
   media-shell > image-wrap [overflow hidden] + badge-layer [overflow visible]). */
.crd-estate-public-media-shell {
    position: relative;
}

.crd-estate-public-image-wrap {
    position: relative;
    overflow: hidden;
    border-radius: var(--crd-card-radius, 10px);
}

.crd-estate-public-image {
    display: flex;
    align-items: center;
    justify-content: center;
    aspect-ratio: 4 / 3;
    background-color: #eaf4f7;
    background-position: center;
    background-size: cover;
    color: #00cfa6;
    font-weight: 800;
    letter-spacing: 0;
    transition: transform 200ms ease;
}

.crd-estate-public-card:hover .crd-estate-public-image {
    transform: scale(1.03);
}

.crd-estate-public-image-empty {
    background: linear-gradient(135deg, #09233f, #0c4e73);
}

/* Colt stanga-jos pe fotografie: numar de fotografii + 360°/tur (doar daca exista date reale - vezi
   photo_count/tour_count in query-ul cardului). Fundal semi-transparent inchis, text alb - lizibil pe
   orice fotografie, indiferent de day/night mode (nu depinde de tema paginii). */
.crd-estate-public-media-info {
    position: absolute;
    z-index: 2;
    left: 8px;
    bottom: 8px;
    display: flex;
    gap: 6px;
}

.crd-estate-public-media-chip {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border-radius: 4px;
    background: rgba(3, 12, 28, .86);
    color: #ffffff !important;
    font-size: 12px;
    font-weight: 700;
}

.crd-estate-public-media-chip .crd-estate-public-icon {
    width: 13px;
    height: 13px;
    color: #ffffff !important;
    fill: currentColor !important;
}

.crd-estate-public-media-chip,
.crd-estate-public-media-chip * {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff;
}

.crd-estate-public-media-chip svg,
.crd-estate-public-media-chip svg * {
    color: #ffffff !important;
    fill: currentColor !important;
}

.crd-estate-public-media-chip svg [stroke] {
    stroke: currentColor !important;
}

.crd-estate-public-body {
    padding: 18px 0 18px;
}

/* TASK 37.2, punctul 5 - titlu "puternic dar nu masiv": line-height explicit (nu implicitul browser-ului),
   greutate standard (nu extra-bold) - se comporta corect si pe 2 randuri. */
.crd-estate-public-card h3 {
    margin: 0 0 8px;
    color: #09233f;
    font-size: 20px;
    font-weight: 700;
    line-height: 1.25;
}

/* TASK Carousel (2026-07-31) - titlul si imaginea cardului au devenit clickable (sectiunea 5 a cerintei:
   "intregul card sau cel putin titlul si imaginea trebuie sa fie clickable") - regulile de mai jos
   neutralizeaza STRICT stilul implicit de link al browserului (culoare albastra, subliniere), ca aspectul
   vizual al gridului existent sa ramana neschimbat - doar interactivitatea e noua. */
.crd-estate-public-image-link {
    display: block;
    position: relative;
}

.crd-estate-public-card h3 a {
    color: inherit;
    text-decoration: none;
}

.crd-estate-public-card h3 a:focus-visible {
    outline: 2px solid #00a98d;
    outline-offset: 2px;
}

/* TASK Refacere card (2026-07-31) - "Cartela complet clickable" (punctul 6): link "intins" ("stretched
   link") clasic - `::after` acopera toata suprafata `.crd-estate-public-card` (deja `position: relative`),
   fara sa imbrice `<a>` unele in altele. Butonul si link-ul agentului (singurele link-uri reale ramase in
   corp) primesc `position: relative` + `z-index` mai mare mai jos, ca sa ramana clickabile independent. */
.crd-estate-public-title-link::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}

.crd-estate-public-badges {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    flex-wrap: wrap;
    gap: 7px;
    margin-bottom: 8px;
}

/*
 * TASK 37.1 - maparea CENTRALA badge_type -> culoare, prin variabile CSS (nu hex hardcodat in fiecare
 * regula de mai jos) - schimbarea identitatii vizuale peste 6 luni inseamna modificarea acestor 9 randuri,
 * nu o cautare prin tot fisierul. Paleta "premium" (Linear/Vercel/Stripe), NU culorile implicite
 * WordPress/Bootstrap.
 */
.crd-estate-app {
    /* TASK 38.1 - Day Mode adus la nivelul Night Mode: tonuri mai luminoase/vibrante ("Stripe/Linear/
       Vercel/Airbnb/Apple"), fara sa devina tipatoare - aceeasi familie cromatica din TASK 37.2, doar mai
       putin "mate". */
    --crd-badge-exclusive: #7c5cff;
    --crd-badge-new: #00c2a8;
    --crd-badge-discount: #f5455c;
    --crd-badge-recommended: #f5a524;
    --crd-badge-status: #6b7688;
    --crd-badge-sale: #3b7dde;
    --crd-badge-rent: #17a374;
    --crd-badge-reserved: #e8b93a;
    /* TASK 45 - badge tranzactionat (VANDUT/INCHIRIAT) - o singura variabila, rosu modern, aceeasi
       nuanta pe card SI pe pagina individuala, Day si Night (nu se redefineste in blocul dark-mode
       de mai jos - un rosu plin ramane suficient de contrastant cu text alb pe orice fundal). */
    --crd-badge-transacted: #e0342a;
    /* BUGFIX TASK 38.1 - text alb, prin variabila Design System (nu hardcodat in 9 locuri). */
    --crd-badge-text: #ffffff;
    --crd-badge-text-dark: #1b1400;
    /* Accent de brand reutilizat pe site-ul public (avatar agent etc.) - o singura sursa, nu hex repetat. */
    --crd-public-accent: #00a98d;
}

/* TASK 37.2/38.1 - Night mode: variabile DEDICATE (mai deschise, nu un `filter: brightness()` global care
   putea degrada contrastul pe unele tonuri) - fiecare badge citeste in continuare `var(--crd-badge-X)`,
   deci redefinirea proprietatii aici se propaga automat, fara nicio regula noua per clasa de badge. */
body.dark-mode .crd-estate-app {
    --crd-badge-exclusive: #9b82ff;
    --crd-badge-new: #2dd4c0;
    --crd-badge-discount: #ff6b7f;
    --crd-badge-recommended: #ffbd4d;
    --crd-badge-status: #8793a3;
    --crd-badge-sale: #6b9eea;
    --crd-badge-rent: #34c294;
    --crd-badge-reserved: #f0c95c;
}

/* TASK 37.1 - toate badge-urile au EXACT aceeasi dimensiune (latime/inaltime/padding/radius/aliniere),
   indiferent de tipul sau lungimea textului - lățimea fixa e calculata pentru cea mai lunga eticheta
   aprobata ("Tranzacționată"/"Exclusivitate"), text centrat, wrap pe 2 randuri in loc de trunchiere daca
   totusi nu incape. Umbra + highlight discret (inset) - acelasi "finisaj" pe orice culoare de fundal. */
.crd-estate-public-badge-flag {
    --crd-badge-text: #ffffff;
    --crd-badge-text-dark: #1b1400;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 132px;
    min-height: 37px;
    padding: 8px 12px;
    border-radius: 10px;
    font-size: 13px;
    font-weight: 700;
    line-height: 1.2;
    text-align: center;
    text-transform: none;
    white-space: normal;
    box-sizing: border-box;
    box-shadow: 0 6px 16px rgba(15, 23, 42, .16), inset 0 1px 0 rgba(255, 255, 255, .18);
}

/*
 * BUGFIX TASK 38.1 - pe pagina reala (construita in Elementor), CSS-ul propriu al Elementor-ului
 * (frontend.min.css / stilurile per-post, incarcate DUPA public.css in <head>) suprascria `color` pe
 * elementele din interiorul widget-urilor sale cu o regula mai specifica/mai tarzie in cascada - exact
 * acelasi motiv pentru care `.crd-estate-public-link` de mai jos avea deja nevoie de `!important`. Culoarea
 * se aplica AICI, o singura data, pe elementul care contine efectiv textul SI pe orice copil (`*`) - nu mai
 * e nevoie sa se repete `color` in fiecare regula de ton de mai jos (doar `background` ramane acolo).
 * TASK 50.4 - textul badge-urilor colorate trebuie sa ramana alb inclusiv cand un profil de Carousel
 * seteaza `--crd-badge-color` inline. Fundalul poate ramane configurabil prin `--crd-badge-bg`.
 */
.crd-estate-public-badge-flag,
.crd-estate-public-badge-flag * {
    color: #ffffff !important;
    -webkit-text-fill-color: #ffffff;
}

/*
 * Comerciale: exclusive (violet premium), new ("Nouă" - fostul HOT, turcoaz CRD), discount ("Preț redus",
 * coral/rosu), recommended (amber premium), status (rezerva pt. Comision 0%/Coming Soon/Off Market, slate).
 * Status oferta: sale (Vanzare, blue), rent (Inchiriere, emerald), reserved (Rezervata, amber deschis),
 * done (Tranzactionata, slate inchis). Fiecare varianta isi defineste PROPRIUL fallback in
 * var(--crd-badge-bg, <variabila centrala>) - un badge fara `style` inline (grid-ul, sau carousel-ul cu
 * culorile implicite din setari) foloseste variabila centrala; un
 * `style="--crd-badge-bg:...;--crd-badge-color:...;"` inline (vezi
 * CRD_Estate_Public_Shortcodes::badge_style_attr()) suprascrie STRICT acel badge, fara sa afecteze altele.
 */
.crd-estate-public-badge-flag--exclusive {
    background: var(--crd-badge-bg, var(--crd-badge-exclusive));
}

.crd-estate-public-badge-flag--new {
    background: var(--crd-badge-bg, var(--crd-badge-new));
}

.crd-estate-public-badge-flag--discount {
    background: var(--crd-badge-bg, var(--crd-badge-discount));
}

.crd-estate-public-badge-flag--recommended {
    background: var(--crd-badge-bg, var(--crd-badge-recommended));
}

.crd-estate-public-badge-flag--status {
    background: var(--crd-badge-bg, var(--crd-badge-status));
}

.crd-estate-public-badge-flag--sale {
    background: var(--crd-badge-bg, var(--crd-badge-sale));
}

.crd-estate-public-badge-flag--rent {
    background: var(--crd-badge-bg, var(--crd-badge-rent));
}

.crd-estate-public-badge-flag--reserved {
    background: var(--crd-badge-bg, var(--crd-badge-reserved));
}

.crd-estate-public-badge-flag--done {
    /* TASK 45 - VANDUT/INCHIRIAT: rosu modern, text alb (mostenit din regula generica de mai jos). */
    background: var(--crd-badge-bg, var(--crd-badge-transacted));
}

/*
 * BUGFIX TASK 38.1, punctul 3 - singura exceptie de la "text alb": contrast insuficient pe galbenul deschis
 * al badge-ului "Rezervata" (verificat vizual - text alb pe #e8b93a/#ffbd4d nu trece de un contrast minim
 * rezonabil). Trebuie sa vina DUPA regula generica de mai sus (aceeasi specificitate + `!important` pe
 * ambele - castiga ultima declarata in cascada), ca sa o poata suprascrie STRICT pentru acest ton.
 */
.crd-estate-public-badge-flag--reserved,
.crd-estate-public-badge-flag--reserved * {
    color: var(--crd-badge-text-dark, #1b1400) !important;
    -webkit-text-fill-color: var(--crd-badge-text-dark, #1b1400);
}

/* TASK 37.1, punctul 6 (responsive) - pe telefon (sub 480px) lățimea comuna se reduce usor, dar ramane
   IDENTICA intre toate badge-urile (nu se reintroduce variatia de latime dupa text). */
@media (max-width: 480px) {
    .crd-estate-public-badge-flag {
        width: 104px;
        font-size: 12px;
        padding: 6px 8px;
    }
}

/* Cluster de badge-uri suprapus pe imagine (colful ales din profilul de carousel, sau implicitul
   `--right-edge` de mai jos) - pozitionat fata de `.crd-estate-public-media-shell` (position:relative,
   FARA overflow), NU fata de `.crd-estate-public-image-wrap` (care taie zoom-ul la hover) - de aici
   depaseste marginea pozei fara sa fie taiat niciodata (TASK 37.1). */
.crd-estate-public-badges--overlay {
    position: absolute;
    z-index: 2;
    max-width: calc(100% - 16px);
    margin: 0;
}

/* TASK 37.2 - repozitionare fina: +2-3px mai in afara fata de 37.1 (right:-10px -> -13px), tot in
   interiorul padding-ului cardului (14px), deci nu atinge niciodata marginea cardului. */
.crd-estate-public-badges--right-edge {
    top: 14px;
    right: -13px;
    align-items: flex-end;
    max-width: calc(100% + 13px);
}

.crd-estate-public-badges--top-left {
    top: 8px;
    left: 8px;
    align-items: flex-start;
}

.crd-estate-public-badges--top-right {
    top: 8px;
    right: 8px;
    align-items: flex-end;
}

.crd-estate-public-badges--bottom-left {
    bottom: 8px;
    left: 8px;
    align-items: flex-start;
}

.crd-estate-public-badges--bottom-right {
    bottom: 8px;
    right: 8px;
    align-items: flex-end;
}

/* TASK 37 (Property Cards v2) - icon generic (inline SVG, `currentColor`) folosit peste tot pe card:
   locatie, features, media-info, buline pret/agent. O singura sursa de stil, dimensiune implicita 15px. */
.crd-estate-public-icon {
    width: 15px;
    height: 15px;
    flex-shrink: 0;
    vertical-align: -3px;
    margin-right: 4px;
    fill: currentColor;
}

.crd-estate-public-location {
    display: flex;
    align-items: center;
    margin: 0 0 8px;
    color: #33475f;
    font-size: 16px;
    line-height: 1.5;
}

/* TASK 49 - Estate ID pe carduri: discret, sub titlu, deasupra locatiei (aceeasi pozitie peste tot). */
.crd-estate-public-estate-id {
    margin: 0 0 4px;
    color: #7d8c99;
    font-size: 12px;
    letter-spacing: .02em;
}

body.dark-mode .crd-estate-app .crd-estate-public-estate-id {
    color: #7f97ac;
}

/* TASK 37.2, punctul 7 - iconul de locatie ~10% mai mic decat iconul generic (15px), cu spatiu putin mai
   generos fata de text - locatia trebuie sa se citeasca usor, fara sa concureze cu titlul. */
.crd-estate-public-location .crd-estate-public-icon {
    width: 13.5px;
    height: 13.5px;
    margin-right: 6px;
    color: var(--crd-public-accent);
}

/* TASK 37 - randul de "feature-uri" (mp/camere/bai/etaj, dependent de tipul proprietatii) inlocuieste
   textul simplu separat prin puncte - fiecare valoare e o mica "eticheta" cu icon, usor de scanat. */
.crd-estate-public-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 15px;
    margin: 0 0 8px;
    color: #33475f;
    font-size: 14px;
    line-height: 1.4;
}

.crd-estate-public-feature {
    display: inline-flex;
    align-items: center;
    color: #45596b;
}

/* TASK 37.2, punctul 8 - iconurile de features ~13% mai mari (15px -> 17px) decat iconul generic, cu
   spatiu putin mai mare fata de text - textul valorilor NU se mareste. */
.crd-estate-public-feature .crd-estate-public-icon {
    width: 17px;
    height: 17px;
    margin-right: 5px;
    color: #7b93a6;
}

.crd-estate-public-feature--views {
    color: #74889b;
    font-size: 13.5px;
}

.crd-estate-public-price {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 12px 0 16px;
    color: var(--crd-public-accent);
    font-size: 22px;
    font-weight: 800;
}

/* TASK 37.2, punctul 11 - iconul de scadere pret preia culoarea din aceeasi paleta de badge-uri (nu mai e
   hardcodat) - leaga vizual reducerea de badge-ul "Preț redus". */
.crd-estate-public-price .crd-estate-public-icon--drop {
    width: 16px;
    height: 16px;
    margin: 0 2px;
    color: var(--crd-badge-discount);
}

/* z-index peste link-ul "intins" al titlului (.crd-estate-public-title-link::after, z-index: 1) - ramane
   clickabil independent, desi vizual e "sub" restul suprafetei cardului. */
.crd-estate-public-agent a,
.crd-estate-public-link {
    position: relative;
    z-index: 2;
}

/* TASK 37 (Property Cards v2), punctul 9 - avatar agent (poza reala daca exista, altfel icon generic de
   utilizator intr-un cerc) - inlocuieste textul simplu "Agent: Nume". */
.crd-estate-public-agent {
    margin: 0 0 10px;
}

.crd-estate-public-agent a {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #33475f;
    font-size: 14px;
    font-weight: 500;
    text-decoration: none;
}

.crd-estate-public-agent a:hover {
    text-decoration: underline;
}

/* TASK 37.2 - avatar rotund garantat (poza reala SAU fallback generic, aceeasi dimensiune pentru
   amandoua - vezi si `--placeholder` mai jos), decupaj corect prin `object-fit:cover` (fara deformare),
   margine discreta in culoarea de accent CRD (variabila, nu hex repetat), pentru distinctie fata de
   fundal. Nu modifica poza sursa a agentului - strict prezentarea in card. */
/* TASK 37.2 fix - wrapper-ul decupeaza garantat cercul (`overflow:hidden`), indiferent ce se intampla cu
   `border-radius` pe `<img>`-ul din interior (vezi regula dedicata mai jos). Fara padding/background pe
   wrapper - acelea ar lasa un chenar patrat vizibil in jurul fotografiei rotunde. */
.crd-estate-public-agent-avatar {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    overflow: hidden;
    padding: 0;
    background: transparent;
    border: 2px solid var(--crd-public-accent);
    flex: 0 0 30px;
}

/* Aplicat DIRECT pe elementul <img> (nu doar pe wrapper) - fara asta, o poza cu proportii diferite de
   cerc ramane "patrata" vizual in interiorul chenarului rotund, chiar daca wrapperul taie corect. */
.crd-estate-public-agent-avatar img,
img.crd-estate-public-agent-avatar {
    width: 100%;
    height: 100%;
    display: block;
    border-radius: 50%;
    object-fit: cover;
    object-position: center;
}

.crd-estate-public-agent-avatar--placeholder {
    background: #eaf4f7;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #7b93a6;
}

.crd-estate-public-agent-avatar--placeholder .crd-estate-public-icon {
    width: 16px;
    height: 16px;
    margin: 0;
}

/* TASK 37.2, punctul 10 - buton putin mai scund (42px -> 38px), putin mai lat (padding orizontal 15->18px),
   font semibold (nu 800) - hover ramane subtil (doar culoare, nicio miscare). */
.crd-estate-public-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 38px;
    padding: 8px 18px;
    border-radius: 6px;
    background: #00cfa6;
    color: #031c2f !important;
    font-weight: 600;
    text-decoration: none !important;
    transition: background-color 150ms ease;
}

.crd-estate-public-link:hover,
.crd-estate-public-link:focus {
    background: #0be0b7;
    color: #031c2f !important;
}

/*
 * NOTA (2026-07-30): selectorul de mai jos folosea `crd-dark-mode`, o clasa pe care NIMENI nu o seteaza
 * vreodata (verificat: grep pe tot pluginul + tema - zero rezultate in JS). Comutatorul real Zi/Noapte
 * de pe site (`evimo-toggle.js`, tema astra-child) seteaza `body.dark-mode`/`body.light-mode` - alt nume,
 * fara "crd-" - deci acest bloc, desi scris corect, nu s-a activat NICIODATA. Corectat la selectorul real.
 */
body.dark-mode .crd-estate-app.crd-estate-empty,
body.dark-mode .crd-estate-app .crd-estate-public-card {
    border-color: rgba(0, 207, 166, .35);
    background: #102943;
    color: #f1f7ff;
    box-shadow: 0 14px 36px rgba(0, 0, 0, .24);
}

body.dark-mode .crd-estate-app .crd-estate-public-card h3 {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-app .crd-estate-public-location,
body.dark-mode .crd-estate-app .crd-estate-public-meta {
    color: #d9e7f5;
}

body.dark-mode .crd-estate-app .crd-estate-public-price {
    color: #4be3c4;
}

/* TASK 37 (Property Cards v2) - night mode pentru elementele noi (feature-uri/locatie/agent) - doar
   uniformizare de culoare, aceeasi structura ca night mode-ul deja existent mai sus. */
body.dark-mode .crd-estate-app .crd-estate-public-feature,
body.dark-mode .crd-estate-app .crd-estate-public-feature .crd-estate-public-icon,
body.dark-mode .crd-estate-app .crd-estate-public-location .crd-estate-public-icon {
    color: #b9cbdb;
}

body.dark-mode .crd-estate-app .crd-estate-public-agent a {
    color: #d9e7f5;
}

body.dark-mode .crd-estate-app .crd-estate-public-agent-avatar--placeholder {
    background: #0b2036;
}

body.dark-mode .crd-estate-app .crd-estate-public-agent-avatar--placeholder .crd-estate-public-icon {
    color: #b9cbdb;
}

/* ==========================================================================
   Pagina publica de proprietate (crd-estate-pd-*) - stil de baza, fara polish
   final/animatii/dark mode (sistem multi-layout: Standard/Premium/HOT/Minimal
   - .crd-estate-pd--{layout} pe <main>, componentele reutilizabile primesc
   modificatori .crd-estate-pd-{componenta}--{variant}). MOBILE-FIRST: regulile
   fara media query sunt cele pentru telefon; tableta/desktop se adauga STRICT
   prin (min-width: ...), niciodata prin reduceri (max-width) ca strategie
   principala. Namespace complet izolat - nu atinge stiluri Astra/Elementor
   globale.
   ========================================================================== */

/*
 * BUG REAL GASIT SI CORECTAT (2026-07-30) - bara de breadcrumb a temei Astra (`.ast-header-breadcrumb`,
 * randata de biblioteca "Breadcrumb Trail") aparea DEASUPRA breadcrumb-ului propriu al paginii, cu text
 * GRESIT (ex. "Termeni si conditii" pe pagina agentului Razvan Capan). Cauza reala, verificata direct prin
 * inspectia query-ului WordPress (nu presupunere): rutele virtuale CRD Estate (proprietate/agent/pagina
 * SEO) folosesc un query var propriu (`crd_estate_agent_slug` etc.) pe care WP_Query nu il recunoaste ca
 * identificator de post/pagina - `is_page()`/`is_singular()` raman FALSE, iar WordPress trateaza cererea
 * ca index de blog (`is_home`), motiv pentru care variabila globala `$post` ramane cu valoarea "scapata"
 * dintr-un alt query rulat mai devreme in acea cerere (un widget/query secundar din zona header-ului care
 * nu isi reseteaza `$post` dupa propria bucla) - de aici textul complet neinrudit din bara de sus.
 * Bara proprie CRD Estate (in interiorul paginii, ex. `.crd-estate-agent-breadcrumb`) e mereu corecta -
 * randata direct din datele agentului/proprietatii, nu din query-ul WordPress. Solutie: ascundem STRICT
 * bara gresita a temei pe rutele noastre virtuale (cele 3 clase body de mai jos), pastram doar breadcrumb-ul
 * corect din pagina. Nu se atinge nimic global - pe restul site-ului (pagini WP reale) bara Astra ramane
 * neschimbata.
 */
body.crd-estate-property-page .ast-header-breadcrumb,
body.crd-estate-agent-page .ast-header-breadcrumb,
body.crd-estate-seo-page .ast-header-breadcrumb {
    display: none !important;
}

/* Header-ul temei (Astra), redus DOAR pe pagina proprietatii (clasa body 'crd-estate-property-page',
   adaugata de CRD_Estate_Public_Routes::body_class() - vezi sectiunea 11 din task) - nu atinge nicio
   setare globala Astra si nu afecteaza restul site-ului. Selectoarele (.ast-main-header-wrap/
   .main-header-bar) sunt cele reale ale temei Astra, verificate direct in tema instalata. */
body.crd-estate-property-page .ast-main-header-wrap .main-header-bar {
    padding-top: 8px;
    padding-bottom: 8px;
    min-height: 0;
}

body.crd-estate-property-page .ast-main-header-wrap .site-logo-img img,
body.crd-estate-property-page .ast-main-header-wrap .custom-logo-link img {
    max-height: 36px;
}

.crd-estate-pd {
    width: min(100% - 20px, 1180px);
    margin: 20px auto 96px;
    color: #1b2b3a;
    background: #ffffff;
}

.crd-estate-pd h1,
.crd-estate-pd h2,
.crd-estate-pd h3 {
    color: #0d2438;
    line-height: 1.25;
}

.crd-estate-pd-error {
    padding: 24px;
    color: #45596b;
    text-align: center;
}

.crd-estate-pd-breadcrumb {
    margin: 0 0 16px;
    font-size: 14px;
}

.crd-estate-pd-breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.crd-estate-pd-breadcrumb li::after {
    content: "\203a";
    margin-left: 6px;
    color: #8fa1b3;
}

.crd-estate-pd-breadcrumb li:last-child::after {
    content: none;
}

.crd-estate-pd-breadcrumb a {
    color: #0a7d68;
    text-decoration: none;
}

.crd-estate-pd-breadcrumb a:hover {
    text-decoration: underline;
}

.crd-estate-pd-breadcrumb span {
    color: #5c7182;
}

/* Galerie - mobil: banda defilabila (scroll-snap) cu toate fotografiile; grila
   desktop cu 3 fotografii apare abia la 1024px (vezi breakpoint-ul de jos). */
.crd-estate-pd-gallery {
    margin-bottom: 24px;
}

.crd-estate-pd-gallery-grid {
    display: none;
}

.crd-estate-pd-gallery-main,
.crd-estate-pd-gallery-side-item {
    position: relative;
    display: block;
    overflow: hidden;
    border-radius: 10px;
    background: #eef3f6;
}

.crd-estate-pd-gallery-main img,
.crd-estate-pd-gallery-side-item img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.crd-estate-pd-gallery-side {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.crd-estate-pd-gallery-side-item {
    min-height: 150px;
}

.crd-estate-pd-gallery-more {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 10px;
    background: rgba(9, 35, 63, .55);
    color: #ffffff;
    font-weight: 700;
    text-align: center;
}

.crd-estate-pd-gallery-empty .crd-estate-pd-gallery-placeholder {
    display: grid;
    place-items: center;
    min-height: 220px;
    border-radius: 10px;
    background: #09233f;
    color: #00cfa6;
    font-weight: 800;
    font-size: 22px;
}

.crd-estate-pd-gallery-viewall {
    margin-top: 10px;
    padding: 9px 14px;
    border: 1px solid #cfdbe4;
    border-radius: 6px;
    background: #ffffff;
    color: #0d2438;
    font-weight: 700;
    cursor: pointer;
}

.crd-estate-pd-gallery-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 12px;
}

.crd-estate-pd-gallery-tab {
    padding: 7px 12px;
    border: 1px solid #cfdbe4;
    border-radius: 999px;
    color: #0a7d68;
    font-weight: 700;
    font-size: 13px;
    text-decoration: none;
}

.crd-estate-pd-gallery-tab-disabled {
    color: #8fa1b3;
    cursor: default;
}

.crd-estate-pd-gallery-mobile {
    position: relative;
    display: flex;
    gap: 0;
    overflow-x: auto;
    scroll-snap-type: x mandatory;
    border-radius: 10px;
    -webkit-overflow-scrolling: touch;
}

.crd-estate-pd-gallery-mobile-item {
    flex: 0 0 100%;
    scroll-snap-align: center;
    min-height: 240px;
}

.crd-estate-pd-gallery-counter {
    position: absolute;
    right: 12px;
    bottom: 12px;
    padding: 4px 10px;
    border-radius: 999px;
    background: rgba(9, 35, 63, .75);
    color: #ffffff;
    font-size: 13px;
    font-weight: 700;
    pointer-events: none;
}

/* Varianta Premium: imagine principala mai inalta/dominanta */
.crd-estate-pd-gallery--premium .crd-estate-pd-gallery-main {
    min-height: 260px;
}

/* Varianta Minimal: o singura imagine (fara fotografii secundare/tab-uri, fara
   defilare pe mobil) - restul fotografiilor raman disponibile in lightbox prin
   "Vezi toate fotografiile", nu prin banda swipe. */
.crd-estate-pd-gallery--minimal .crd-estate-pd-gallery-tabs {
    display: none;
}

.crd-estate-pd-gallery--minimal .crd-estate-pd-gallery-mobile-item:not(:first-child) {
    display: none;
}

.crd-estate-pd-gallery--minimal .crd-estate-pd-gallery-counter {
    display: none;
}

/* Hero - unifica header() + quick_facts() + un rand de CTA intr-un singur bloc vizual (o singura margine/
   bordura/fundal, nu 2-3 separate ca inainte) - vezi CRD_Estate_Public_Components::hero(). Rezolva senzatia
   de "spatiu gol" intre galerie si descriere si aduce CTA-urile in primul ecran, pe orice breakpoint (nu
   doar in bara mobila fixa). */
.crd-estate-pd-hero {
    margin-bottom: 24px;
    padding: 18px;
    border: 1px solid #e3eaf0;
    border-radius: 10px;
    background: #f7fafb;
}

/* TASK 40.0.3 - CTA dedicat proprietatilor sold/rented (inlocuieste butoanele de vizionare/contact
   lipsa). Day mode: acelasi limbaj vizual ca .crd-estate-pd-hero (card discret, delimitat), fara sa
   sugereze disponibilitate - text explicativ inaintea butoanelor. */
.crd-estate-pd-transacted-cta {
    margin-top: 16px;
    padding: 16px;
    border: 1px solid #cfdbe4;
    border-radius: 10px;
    background: #f7fafc;
    text-align: center;
}

.crd-estate-pd-transacted-cta__title {
    margin: 0 0 6px;
    font-size: 17px;
    font-weight: 800;
    color: #0d2438;
}

.crd-estate-pd-transacted-cta__text {
    margin: 0 0 14px;
    color: #4a5c6c;
    font-size: 14px;
    line-height: 1.5;
}

.crd-estate-pd-transacted-cta__actions {
    display: grid;
    grid-template-columns: 1fr;
    gap: 8px;
}

.crd-estate-pd-transacted-cta__actions .crd-estate-pd-btn {
    min-height: 44px;
}

/* Varianta HOT: fundal usor mai accentuat, CTA mai proeminent */
.crd-estate-pd-hero--hot {
    background: #fff7f4;
    border-color: #ffd9cc;
}

/* Varianta Premium: spatiere mai generoasa */
.crd-estate-pd-hero--premium {
    padding: 24px;
}

/* Varianta Minimal: bloc mai compact */
.crd-estate-pd-hero--minimal {
    padding: 14px;
}

/* Header - traieste in interiorul .crd-estate-pd-hero (padding/bordura proprii ale hero-ului, nu mai are
   nevoie de propriile lui) */
.crd-estate-pd-header {
    display: grid;
    grid-template-columns: 1fr;
    gap: 16px;
}

.crd-estate-pd-header h1 {
    margin: 0 0 8px;
    font-size: clamp(22px, 6vw, 34px);
}

.crd-estate-pd-location {
    margin: 0 0 6px;
    color: #45596b;
    font-size: 16px;
}

.crd-estate-pd-code {
    margin: 0 0 12px;
    color: #94a6b6;
    font-size: 13px;
}

.crd-estate-pd-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

/* TASK 51 - badge-urile de pe pagina individuala (header) folosesc acum ACEEASI clasa de ton ca pe
   cartele (.crd-estate-public-badge-flag/--{ton}, vezi CRD_Estate_Public_Components::header() - markup-ul
   emite ambele seturi de clase). Regulile vechi .crd-estate-pd-badge* (culori proprii, diferite de card -
   verde generic / portocaliu pentru "Pret redus" / rosu diferit pentru HOT) sunt ELIMINATE aici, ca sa nu
   mai castige cascada peste .crd-estate-public-badge-flag--{ton} (aceeasi specificitate, dar declarate
   mai tarziu in fisier) - .crd-estate-pd-badge ramane DOAR ca marker legacy in markup, fara stil propriu,
   .crd-estate-public-badge-flag ii ofera acum integral forma/culoarea (identic cu cartelele, inclusiv
   "Pret redus" -> --crd-badge-discount). .crd-estate-pd-badges (container) ramane neschimbat mai sus. */

.crd-estate-pd-header-price {
    display: grid;
    justify-items: start;
    gap: 4px;
    text-align: left;
}

.crd-estate-pd-price-current {
    color: #0a7d68;
    font-size: clamp(24px, 7vw, 34px);
    font-weight: 900;
}

.crd-estate-pd-price-previous {
    color: #94a6b6;
    font-size: 16px;
    text-decoration: line-through;
}

.crd-estate-pd-price-discount {
    color: #c53d1f;
    font-weight: 700;
    font-size: 14px;
}

.crd-estate-public-price-old {
    display: inline-block;
    color: #7f97ac;
    font-size: 15px;
    text-decoration: line-through;
}

.crd-estate-public-price-discount {
    display: block;
    margin-top: 3px;
    color: #c53d1f;
    font-size: 13px;
    font-weight: 700;
}

.crd-estate-pd-price-sqm {
    color: #5c7182;
    font-size: 13px;
}

/* Varianta HOT: pret si badge HOT mai proeminente */
.crd-estate-pd-header--hot .crd-estate-pd-price-current {
    font-size: clamp(28px, 8vw, 40px);
}

.crd-estate-pd-header--hot .crd-estate-pd-badge-hot {
    font-size: 13px;
}

/* Varianta Premium: tipografie mai generoasa */
.crd-estate-pd-header--premium h1 {
    font-size: clamp(24px, 7vw, 38px);
}

/* Varianta Minimal: header mai compact */
.crd-estate-pd-header--minimal {
    gap: 10px;
}

/* Rezumat caracteristici esentiale - acum o banda cu linie despartitoare in interiorul .crd-estate-pd-hero,
   nu propriul sau chenar/fundal separat (vezi .crd-estate-pd-hero mai sus) */
.crd-estate-pd-quickfacts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px solid #e3eaf0;
    font-weight: 700;
    color: #1b2b3a;
}

.crd-estate-pd-quickfacts span:not(:last-child)::after {
    content: "|";
    margin-left: 18px;
    color: #cfdbe4;
    font-weight: 400;
}

/* Layout principal - o singura coloana pe mobil/tableta, doua coloane (main +
   card agent sticky) abia pe desktop (vezi breakpoint 1024px). */
.crd-estate-pd-layout {
    display: grid;
    grid-template-columns: 1fr;
    gap: 28px;
}

.crd-estate-pd-main {
    min-width: 0;
}

.crd-estate-pd-section {
    padding: 26px 0;
    border-top: 1px solid #e3eaf0;
}

.crd-estate-pd-main > .crd-estate-pd-section:first-child {
    border-top: none;
    padding-top: 0;
}

.crd-estate-pd-section h2 {
    margin: 0 0 16px;
    font-size: 22px;
}

.crd-estate-pd-desc-content {
    max-height: 620px;
    overflow: hidden;
    color: #2b3d4d;
    font-size: 16px;
    line-height: 1.75;
}

.crd-estate-pd-desc-content.is-expanded {
    max-height: none;
}

.crd-estate-pd-desc-toggle {
    margin-top: 10px;
    padding: 0;
    border: none;
    background: none;
    color: #0a7d68;
    font-weight: 700;
    cursor: pointer;
}

.crd-estate-pd-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
}

.crd-estate-pd-chip {
    padding: 7px 14px;
    border: 1px solid #cfe9e2;
    border-radius: 999px;
    background: #f2fbf9;
    color: #0a7d68;
    font-size: 14px;
    font-weight: 700;
}

.crd-estate-pd-detail-groups {
    display: grid;
    grid-template-columns: 1fr;
    gap: 20px;
}

.crd-estate-pd-detail-group {
    padding: 16px;
    border: 1px solid #e3eaf0;
    border-radius: 10px;
    background: #f7fafb;
}

.crd-estate-pd-detail-group h3 {
    margin: 0 0 10px;
    font-size: 15px;
    color: #45596b;
}

.crd-estate-pd-detail-group dl {
    margin: 0;
}

.crd-estate-pd-detail-group dl div {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 6px 0;
    border-top: 1px solid #e9eff3;
}

.crd-estate-pd-detail-group dl div:first-child {
    border-top: none;
}

.crd-estate-pd-detail-group dt {
    color: #5c7182;
}

.crd-estate-pd-detail-group dd {
    margin: 0;
    color: #1b2b3a;
    font-weight: 700;
    text-align: right;
}

.crd-estate-pd-legal-list {
    display: grid;
    grid-template-columns: 1fr;
    gap: 10px 24px;
    margin: 0;
    padding: 16px;
    border: 1px solid #cfe9e2;
    border-radius: 10px;
    background: #f2fbf9;
}

.crd-estate-pd-legal-list div {
    display: flex;
    justify-content: space-between;
    gap: 10px;
}

.crd-estate-pd-legal-list dt {
    color: #0a7d68;
}

.crd-estate-pd-legal-list dd {
    margin: 0;
    font-weight: 700;
}

.crd-estate-pd-plans-grid,
.crd-estate-pd-tour-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: 16px;
}

.crd-estate-pd-plan-item {
    display: block;
    overflow: hidden;
    border-radius: 10px;
    background: #eef3f6;
}

.crd-estate-pd-plan-item img {
    display: block;
    width: 100%;
}

.crd-estate-pd-tour-grid figure {
    margin: 0;
    overflow: hidden;
    border: 1px solid #e3eaf0;
    border-radius: 10px;
    background: #f7fafb;
}

.crd-estate-pd-tour-grid video,
.crd-estate-pd-tour-grid iframe {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 9;
    border: none;
}

.crd-estate-pd-tour-grid figcaption {
    padding: 10px 12px;
    color: #45596b;
    font-weight: 700;
    font-size: 14px;
}

.crd-estate-pd-location-crumbs {
    margin: 0 0 10px;
    color: #45596b;
}

.crd-estate-pd-location-crumbs a {
    color: #0a7d68;
    text-decoration: none;
}

.crd-estate-pd-address {
    margin: 0 0 14px;
    color: #1b2b3a;
    font-weight: 700;
}

.crd-estate-pd-map {
    display: grid;
    min-height: 240px;
    place-items: center;
    overflow: hidden;
    border-radius: 10px;
    background: #eef3f6;
    color: #45596b;
    font-weight: 700;
}

.crd-estate-pd-map-approx {
    margin: 8px 0 0;
    color: #94a6b6;
    font-size: 13px;
}

/* Card agent - NU sticky pe mobil/tableta (devine sticky abia pe desktop, vezi
   breakpoint 1024px). */
.crd-estate-pd-aside {
    position: static;
}

.crd-estate-pd-agent-card {
    padding: 22px;
    border: 1px solid #e3eaf0;
    border-radius: 10px;
    background: #f7fafb;
}

.crd-estate-pd-agent-card--compact {
    padding: 16px;
}

.crd-estate-pd-notice {
    margin: 0 0 16px;
    padding: 10px 12px;
    border-radius: 8px;
    font-weight: 700;
    font-size: 14px;
}

.crd-estate-pd-notice-ok {
    background: #eafffb;
    color: #0a7d68;
}

.crd-estate-pd-notice-error {
    background: #ffece8;
    color: #c53d1f;
}

.crd-estate-pd-agent-identity {
    display: flex;
    align-items: center;
    gap: 12px;
    margin-bottom: 16px;
}

.crd-estate-pd-agent-identity img {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    object-fit: cover;
}

.crd-estate-pd-agent-role {
    display: block;
    color: #5c7182;
    font-size: 13px;
}

.crd-estate-pd-agent-missing {
    margin: 0 0 16px;
    color: #45596b;
}

/* Metode rapide de contact (Suna/WhatsApp/Email) - rand compact, nu 3 butoane full-width stacked, ca sa
   ocupe mai putin spatiu vertical fara sa piarda nicio functie (sectiunea 7 din task). */
.crd-estate-pd-agent-contact {
    display: grid;
    gap: 6px;
    margin-bottom: 14px;
}

.crd-estate-pd-agent-contact .crd-estate-pd-btn {
    min-height: 40px;
    padding: 8px 10px;
    font-size: 13px;
}

.crd-estate-pd-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    min-height: 46px;
    padding: 10px 14px;
    border-radius: 7px;
    box-sizing: border-box;
    font-weight: 800;
    text-align: center;
    text-decoration: none !important;
    cursor: pointer;
}

.crd-estate-pd-btn-primary {
    margin: 12px 0;
    border: none;
    background: #00cfa6;
    color: #ffffff !important;
}

.crd-estate-pd-btn-outline {
    border: 1px solid #cfdbe4;
    background: #ffffff;
    color: #0d2438 !important;
}

/* TASK 52 - fiecare buton de contact din cardul agentului (Suna/WhatsApp/Email/Solicita detalii/
   Programeaza o vizionare) primeste propriul ton, discret (fundal pastelat, nu saturat) - usor de
   distins unul de altul dintr-o privire, fara sa pară agresiv. Singurul loc din pagina cu aceste
   butoane (vezi CRD_Estate_Public_Components::agent_card()) - nu se mai repeta nicaieri altundeva. */
.crd-estate-pd-cta-call {
    border: 1px solid rgba(31, 95, 168, .18);
    background: #eaf3ff;
    color: #1f5fa8 !important;
}

.crd-estate-pd-cta-call:hover {
    background: #dcebff;
}

/* WhatsApp - verdele oficial WhatsApp (brand), singurul buton cu fundal plin din grup (identificare
   instant a canalului), cu iconita alaturi de text. */
.crd-estate-pd-cta-whatsapp {
    border: none;
    background: #25d366;
    color: #ffffff !important;
    gap: 8px;
}

.crd-estate-pd-cta-whatsapp:hover {
    background: #1fb955;
}

.crd-estate-pd-cta-icon {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
    fill: currentColor;
}

.crd-estate-pd-cta-details {
    border: none;
    background: #d9900f;
    color: #ffffff !important;
}

.crd-estate-pd-cta-details:hover {
    background: #c17f0c;
}

/* Email - ton neutru violet, discret (completeaza tripleta Suna/WhatsApp/Email din cardul agentului). */
.crd-estate-pd-cta-email {
    border: 1px solid rgba(124, 92, 255, .22);
    background: #f2efff;
    color: #5b3fd9 !important;
}

.crd-estate-pd-cta-email:hover {
    background: #e6e0ff;
}

/* "Programeaza o vizionare" (link catre formularul de mai jos, in cardul agentului) - gradient discret,
   intentionat DIFERIT de verdele WhatsApp (ca sa nu se confunde cele doua). Distinct de
   .crd-estate-pd-btn-primary (ramane culoarea plina, neschimbata, pe butoanele de submit reale -
   "Confirma vizionarea"/CTA arhiva/similare). */
.crd-estate-pd-cta-schedule {
    border: none;
    /* Proportie ceruta: ~1/3 albastru, ~2/3 verde (tranzitia se termina la 33%, restul e verde plin). */
    background: linear-gradient(135deg, #2f7bf0 0%, #00cfa6 33%, #00cfa6 100%);
    color: #ffffff !important;
}

.crd-estate-pd-cta-schedule:hover {
    background: linear-gradient(135deg, #2569d6 0%, #00b895 33%, #00b895 100%);
}

/* TASK 54 - CTA "Cauți o proprietate similară?" (pagini sold/rented) - cele 2 butoane primesc culori
   distincte una de alta, text alb, aceeasi inaltime (min-height comun, vezi
   .crd-estate-pd-transacted-cta__actions .crd-estate-pd-btn mai sus). */
/* Acelasi gradient discret ca la "Programeaza o vizionare" (nu culori solide/agresive) - "Trimite o
   cerere" foloseste EXACT acelasi gradient, doar INVERSAT (verde -> albastru in loc de albastru -> verde),
   ca sa ramana distinct de "Vezi proprietati disponibile" fara sa introduca o culoare noua. */
.crd-estate-pd-cta-browse {
    border: none;
    background: linear-gradient(135deg, #2f7bf0 0%, #00cfa6 33%, #00cfa6 100%);
    color: #ffffff !important;
    min-height: 44px;
}

.crd-estate-pd-cta-browse:hover {
    background: linear-gradient(135deg, #2569d6 0%, #00b895 33%, #00b895 100%);
}

.crd-estate-pd-cta-contact {
    border: none;
    background: linear-gradient(135deg, #00cfa6 0%, #00cfa6 67%, #2f7bf0 100%);
    color: #ffffff !important;
    min-height: 44px;
}

.crd-estate-pd-cta-contact:hover {
    background: linear-gradient(135deg, #00b895 0%, #00b895 67%, #2569d6 100%);
}

.crd-estate-pd-form {
    display: grid;
    gap: 8px;
    margin: 10px 0;
}

.crd-estate-pd-form input,
.crd-estate-pd-form textarea {
    width: 100%;
    padding: 9px 11px;
    border: 1px solid #cfdbe4;
    border-radius: 6px;
    box-sizing: border-box;
    font: inherit;
    font-size: 16px; /* previne zoom automat pe iOS la focus */
}

.crd-estate-pd-honeypot {
    position: absolute !important;
    left: -9999px !important;
    width: 1px !important;
    height: 1px !important;
    opacity: 0 !important;
}

.crd-estate-pd-response-note {
    margin: 10px 0 0;
    color: #94a6b6;
    font-size: 13px;
    text-align: center;
}

/* Bara mobila fixa (Suna / WhatsApp / Vizionare) - vizibila implicit (mobil),
   ascunsa abia pe desktop (vezi breakpoint 1024px). Padding-ul de jos al
   .crd-estate-pd (96px, definit mai sus) asigura ca bara nu acopera continutul. */
.crd-estate-pd-mobile-bar {
    position: fixed;
    z-index: 9999;
    right: 0;
    bottom: 0;
    left: 0;
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
    border-top: 1px solid #e3eaf0;
    background: #ffffff;
    box-shadow: 0 -8px 24px rgba(9, 35, 63, .12);
}

.crd-estate-pd-mobile-bar a {
    padding: 14px 8px;
    color: #0d2438;
    font-weight: 800;
    text-align: center;
    text-decoration: none;
    border-right: 1px solid #e3eaf0;
}

.crd-estate-pd-mobile-bar a:last-child {
    border-right: none;
    background: #00cfa6;
    color: #031c2f;
}

/* Tableta - 768px+: mai mult spatiu orizontal pentru grupurile de detalii si
   situatia juridica; galeria ramane banda swipe si cardul agent ramane in flux
   (nu sticky) pana la desktopul complet (1024px). */
@media (min-width: 768px) {
    .crd-estate-pd-detail-groups,
    .crd-estate-pd-legal-list {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .crd-estate-pd-header {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 24px;
        align-items: start;
    }

    .crd-estate-pd-header-price {
        justify-items: end;
        text-align: right;
        white-space: nowrap;
    }

    .crd-estate-pd-agent-contact {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .crd-estate-pd-transacted-cta__actions {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        max-width: 480px;
        margin: 0 auto;
    }
}

/* Desktop complet - 1024px+: doua coloane (main + card agent sticky), galeria
   cu 3 fotografii, bara mobila ascunsa. */
@media (min-width: 1024px) {
    .crd-estate-pd {
        width: min(1180px, calc(100% - 32px));
        margin: 32px auto 64px;
    }

    .crd-estate-pd-gallery-grid {
        display: grid;
        grid-template-columns: 2fr 1fr;
        gap: 10px;
    }

    .crd-estate-pd-gallery-main {
        min-height: 420px;
    }

    .crd-estate-pd-gallery--premium .crd-estate-pd-gallery-main {
        min-height: 480px;
    }

    .crd-estate-pd-gallery-side {
        grid-template-columns: 1fr;
        grid-template-rows: repeat(2, minmax(0, 1fr));
    }

    .crd-estate-pd-gallery-side-item {
        min-height: 205px;
    }

    .crd-estate-pd-gallery-mobile {
        display: none;
    }

    .crd-estate-pd-layout {
        grid-template-columns: minmax(0, 1fr) 340px;
    }

    .crd-estate-pd-aside {
        position: sticky;
        top: 24px;
    }

    .crd-estate-pd-mobile-bar {
        display: none;
    }
}

/* Lightbox (reutilizat pentru galerie/tur/schita) */
.crd-estate-lightbox-open {
    overflow: hidden;
}

.crd-estate-lightbox-item {
    cursor: zoom-in;
}

.crd-estate-lightbox {
    position: fixed;
    inset: 0;
    z-index: 999999;
    display: none;
    align-items: center;
    justify-items: center;
    padding: 28px;
    background: rgba(3, 18, 33, .92);
    backdrop-filter: blur(6px);
}

.crd-estate-lightbox.is-open {
    display: grid;
}

.crd-estate-lightbox-dialog {
    display: grid;
    gap: 12px;
    margin: 0;
    max-width: min(1120px, 88vw);
}

.crd-estate-lightbox-image {
    display: block;
    max-width: min(1120px, 88vw);
    max-height: 82vh;
    border-radius: 8px;
    object-fit: contain;
    box-shadow: 0 22px 70px rgba(0, 0, 0, .45);
}

.crd-estate-lightbox-caption {
    color: #f1f7ff;
    font-size: 15px;
    font-weight: 800;
    text-align: center;
}

.crd-estate-lightbox-close,
.crd-estate-lightbox-nav {
    position: fixed;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255, 255, 255, .28);
    border-radius: 8px;
    background: rgba(0, 207, 166, .95);
    color: #031c2f;
    font-weight: 900;
    cursor: pointer;
}

.crd-estate-lightbox-close {
    top: 22px;
    right: 22px;
    width: 48px;
    height: 48px;
    font-size: 32px;
    line-height: 1;
}

.crd-estate-lightbox-nav {
    top: 50%;
    width: 54px;
    height: 68px;
    transform: translateY(-50%);
    font-size: 54px;
    line-height: 1;
}

.crd-estate-lightbox-prev {
    left: 22px;
}

.crd-estate-lightbox-next {
    right: 22px;
}

.crd-estate-lightbox-close:hover,
.crd-estate-lightbox-nav:hover,
.crd-estate-lightbox-close:focus,
.crd-estate-lightbox-nav:focus {
    background: #7cf5df;
    outline: 2px solid #ffffff;
    outline-offset: 2px;
}

@media (max-width: 640px) {
    .crd-estate-lightbox {
        padding: 12px;
    }

    .crd-estate-lightbox-image {
        max-width: 94vw;
        max-height: 74vh;
    }

    .crd-estate-lightbox-nav {
        bottom: 18px;
        top: auto;
        width: 48px;
        height: 48px;
        transform: none;
        font-size: 42px;
    }

    .crd-estate-lightbox-prev {
        left: calc(50% - 58px);
    }

    .crd-estate-lightbox-next {
        right: calc(50% - 58px);
    }
}

/* TASK 8.2 (Checkpoint 2.1) - harta de listare [crd_estate_properties view="map"/"map_grid"] - mobile-first */
.crd-estate-map {
    width: 100%;
    min-height: 320px;
    border-radius: 8px;
    border: 1px solid #d8e5ef;
    background: #eaf4f7;
    overflow: hidden;
}

.crd-estate-map-unavailable {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 160px;
    color: #526273;
    font-size: 14px;
    text-align: center;
    padding: 12px;
}

/* Fara margine verticala proprie - spatierea fata de elementele din jur (ex. cartelele de agent puse
   alaturi in Elementor) trebuie controlata de padding-ul sectiunii/coloanei Elementor, nu impusa aici;
   altfel harta si o coloana vecina (ex. cartelele agentilor) nu pornesc de la aceeasi linie de sus. */
.crd-estate-view-map {
    margin: 0;
    height: 100%;
    box-sizing: border-box;
}

.crd-estate-view-map .crd-estate-map {
    min-height: 420px;
    height: 100%;
}

/*
 * Cand harta e plasata intr-o coloana Elementor langa alt continut mai inalt (ex. cartelele de agent,
 * fiecare in propria coloana), Elementor egalizeaza deja inaltimea coloanelor intre ele (`align-items`
 * implicit = stretch pe randul de sectiune) - dar in interiorul unei coloane, widget-ul propriu-zis NU se
 * intinde automat pana jos: `.elementor-widget-wrap` foloseste `flex-wrap:wrap` + `align-content:
 * flex-start`, deci un singur widget (o singura "linie" impachetata) ramane la inaltimea lui naturala,
 * lipit de partea de SUS a coloanei, lasand spatiu gol nefolosit dedesubt pana la baza coloanei (deja mai
 * inalta din cauza vecinei). Corectat STRICT pentru coloana care contine harta noastra (`:has()`, fara
 * sa afecteze alte coloane/widget-uri de pe site): `align-content: stretch` face ca acea unica "linie" sa
 * ocupe toata inaltimea coloanei, iar `height:100%` in cascada (widget > container > shortcode > harta)
 * duce inaltimea rezultata pana la div-ul hartii - harta se aliniaza exact sus si jos cu coloana vecina.
 */
.elementor-widget-wrap:has(.crd-estate-view-map) {
    align-content: stretch;
}

.elementor-widget-wrap:has(.crd-estate-view-map) > .elementor-element,
.elementor-widget-shortcode:has(.crd-estate-view-map) > .elementor-widget-container,
.elementor-widget-shortcode:has(.crd-estate-view-map) > .elementor-widget-container > .elementor-shortcode {
    height: 100%;
    box-sizing: border-box;
}

/*
 * Harta ramane deasupra grilei, pe toata latimea, la orice dimensiune de ecran (layout orizontal, cerut
 * explicit - nu sidebar lateral ca in varianta initiala Checkpoint 2.1).
 */
.crd-estate-view-map_grid {
    display: flex;
    flex-direction: column;
    gap: 18px;
    margin: 24px 0;
}

.crd-estate-view-map_grid .crd-estate-map {
    width: 100%;
    min-height: 320px;
}

@media (min-width: 768px) {
    .crd-estate-view-map_grid .crd-estate-map {
        min-height: 420px;
    }
}

@media (min-width: 1024px) {
    .crd-estate-view-map_grid .crd-estate-map {
        min-height: 480px;
    }
}

/* ==========================================================================
   DARK MODE (2026-07-30) - comutatorul real de pe site e `body.dark-mode`/
   `body.light-mode` (evimo-toggle.js, tema astra-child) - vezi nota de mai sus
   de la `.crd-estate-public-card`. Pagina de proprietate (`.crd-estate-pd-*`,
   toate cele 4 layout-uri Standard/Premium/HOT/Minimal) si harta de listare
   (`.crd-estate-map`) nu aveau NICIUN stil pentru acest mod - fundal alb fix +
   text inchis fix, care ramaneau neschimbate pe o pagina navy (noapte),
   producand exact simptomul semnalat: carduri albe cu text intunecat pe fundal
   navy, sau invers text deschis nelizibil pe petice albe ramase. Paleta
   foloseste aceleasi culori ca blocul deja existent mai sus (fundal #102943,
   text #f1f7ff/accent #00cfa6) - consistenta cu restul site-ului in mod noapte.
   Nu se ating regulile de zi (mod implicit) de mai sus - doar suprascrieri
   aditive sub `body.dark-mode`. */

body.dark-mode .crd-estate-app.crd-estate-pd {
    background: #102943;
    color: #f1f7ff;
}

body.dark-mode .crd-estate-app.crd-estate-pd h1,
body.dark-mode .crd-estate-app.crd-estate-pd h2,
body.dark-mode .crd-estate-app.crd-estate-pd h3 {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-pd-error,
body.dark-mode .crd-estate-pd-location,
body.dark-mode .crd-estate-pd-code,
body.dark-mode .crd-estate-pd-price-sqm,
body.dark-mode .crd-estate-pd-map-approx,
body.dark-mode .crd-estate-pd-response-note,
body.dark-mode .crd-estate-pd-agent-role,
body.dark-mode .crd-estate-pd-agent-missing,
body.dark-mode .crd-estate-pd-tour-grid figcaption,
body.dark-mode .crd-estate-pd-location-crumbs {
    color: #a9bdd0;
}

body.dark-mode .crd-estate-pd-breadcrumb li::after,
body.dark-mode .crd-estate-pd-breadcrumb span {
    color: #6f88a0;
}

body.dark-mode .crd-estate-pd-breadcrumb a,
body.dark-mode .crd-estate-pd-location-crumbs a,
body.dark-mode .crd-estate-pd-desc-toggle,
body.dark-mode .crd-estate-pd-gallery-tab,
body.dark-mode .crd-estate-pd-legal-list dt {
    color: #5ce8cc;
}

body.dark-mode .crd-estate-pd-gallery-tab {
    border-color: rgba(0, 207, 166, .3);
}

body.dark-mode .crd-estate-pd-gallery-tab-disabled {
    color: #6f88a0;
}

body.dark-mode .crd-estate-pd-gallery-main,
body.dark-mode .crd-estate-pd-gallery-side-item,
body.dark-mode .crd-estate-pd-plan-item,
body.dark-mode .crd-estate-pd-map {
    background: #0b2036;
}

body.dark-mode .crd-estate-pd-map {
    color: #a9bdd0;
}

body.dark-mode .crd-estate-pd-gallery-viewall {
    border-color: rgba(0, 207, 166, .3);
    background: #0b2036;
    color: #f1f7ff;
}

body.dark-mode .crd-estate-pd-hero,
body.dark-mode .crd-estate-pd-detail-group,
body.dark-mode .crd-estate-pd-tour-grid figure,
body.dark-mode .crd-estate-pd-agent-card,
body.dark-mode .crd-estate-pd-transacted-cta {
    border-color: rgba(0, 207, 166, .28);
    background: #0d2340;
}

body.dark-mode .crd-estate-pd-transacted-cta__title {
    color: #eaf6ff;
}

body.dark-mode .crd-estate-pd-transacted-cta__text {
    color: #a9bdd0;
}

body.dark-mode .crd-estate-pd-hero--hot {
    border-color: rgba(255, 138, 101, .35);
    background: #2a1710;
}

body.dark-mode .crd-estate-pd-quickfacts {
    border-top-color: rgba(0, 207, 166, .25);
    color: #f1f7ff;
}

body.dark-mode .crd-estate-pd-quickfacts span:not(:last-child)::after {
    color: #4a6178;
}

body.dark-mode .crd-estate-pd-section {
    border-top-color: rgba(0, 207, 166, .2);
}

body.dark-mode .crd-estate-pd-desc-content {
    color: #d9e7f5;
}

body.dark-mode .crd-estate-pd-chip {
    border-color: rgba(0, 207, 166, .3);
    background: rgba(0, 207, 166, .12);
    color: #5ce8cc;
}

body.dark-mode .crd-estate-pd-detail-group h3 {
    color: #a9bdd0;
}

body.dark-mode .crd-estate-pd-detail-group dl div {
    border-top-color: rgba(0, 207, 166, .16);
}

body.dark-mode .crd-estate-pd-detail-group dt {
    color: #a9bdd0;
}

body.dark-mode .crd-estate-pd-detail-group dd,
body.dark-mode .crd-estate-pd-address {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-pd-legal-list {
    border-color: rgba(0, 207, 166, .3);
    background: rgba(0, 207, 166, .1);
}

body.dark-mode .crd-estate-pd-price-current,
body.dark-mode .crd-estate-public-price {
    color: #4be3c4;
}

body.dark-mode .crd-estate-pd-price-previous,
body.dark-mode .crd-estate-public-price-old {
    color: #7f97ac;
}

body.dark-mode .crd-estate-pd-price-discount,
body.dark-mode .crd-estate-public-price-discount {
    color: #ff9d85;
}

body.dark-mode .crd-estate-pd-form input,
body.dark-mode .crd-estate-pd-form textarea {
    background: #0b2036;
    border-color: rgba(0, 207, 166, .35);
    color: #f1f7ff;
}

body.dark-mode .crd-estate-pd-btn-outline {
    border-color: rgba(0, 207, 166, .35);
    background: #0b2036;
    color: #f1f7ff !important;
}

/* TASK 52 - tonurile CTA din hero, pastrate distincte si in dark mode (fundal translucid pe culoarea
   proprie fiecarui buton, in loc de fundalul plin folosit in day mode). */
body.dark-mode .crd-estate-pd-cta-call {
    border-color: rgba(97, 168, 255, .35);
    background: rgba(97, 168, 255, .14);
    color: #9cc4ff !important;
}

body.dark-mode .crd-estate-pd-cta-call:hover {
    background: rgba(97, 168, 255, .22);
}

body.dark-mode .crd-estate-pd-cta-whatsapp {
    background: #1fa855;
}

body.dark-mode .crd-estate-pd-cta-whatsapp:hover {
    background: #1a9048;
}

body.dark-mode .crd-estate-pd-cta-details {
    background: #b87a0d;
    color: #ffffff !important;
}

body.dark-mode .crd-estate-pd-cta-details:hover {
    background: #a56c0b;
}

body.dark-mode .crd-estate-pd-cta-email {
    border-color: rgba(124, 92, 255, .35);
    background: rgba(124, 92, 255, .16);
    color: #c3b6ff !important;
}

body.dark-mode .crd-estate-pd-cta-email:hover {
    background: rgba(124, 92, 255, .26);
}

body.dark-mode .crd-estate-pd-cta-schedule:hover {
    background: linear-gradient(135deg, #2569d6 0%, #00b895 33%, #00b895 100%);
}

body.dark-mode .crd-estate-pd-cta-browse:hover {
    background: linear-gradient(135deg, #2569d6 0%, #00b895 33%, #00b895 100%);
}

body.dark-mode .crd-estate-pd-cta-contact:hover {
    background: linear-gradient(135deg, #00b895 0%, #00b895 67%, #2569d6 100%);
}

body.dark-mode .crd-estate-pd-notice-ok {
    background: rgba(0, 207, 166, .16);
    color: #5ce8cc;
}

body.dark-mode .crd-estate-pd-notice-error {
    background: rgba(255, 99, 71, .16);
    color: #ff9d85;
}

body.dark-mode .crd-estate-pd-mobile-bar {
    border-top-color: rgba(0, 207, 166, .25);
    background: #102943;
    box-shadow: 0 -8px 24px rgba(0, 0, 0, .35);
}

body.dark-mode .crd-estate-pd-mobile-bar a {
    color: #f1f7ff;
    border-right-color: rgba(0, 207, 166, .2);
}

body.dark-mode .crd-estate-map,
body.dark-mode .crd-estate-map-unavailable {
    border-color: rgba(0, 207, 166, .3);
    background: #0b2036;
    color: #a9bdd0;
}

/* BUG REAL RAPORTAT (2026-08-05) - separator vizual intre grila de rezultate a cautarii
   ([crd_estate_search]) si blocul de oferte HOT ([crd_estate_hot]) care aparea imediat dedesubt, fara
   nicio distinctie - vezi CRD_Estate_Public_Shortcodes::hot(). Titlul primeste o margine superioara
   generoasa (nu doar `margin-bottom`), ca separarea sa fie vizibila chiar daca blocul de dinainte nu are
   el insusi spatiere de jos. */
.crd-estate-hot-block {
    margin-top: 36px;
}

.crd-estate-hot-block__title {
    margin: 0 0 16px;
    color: #09233f;
    font-size: 22px;
    font-weight: 800;
}

body.dark-mode .crd-estate-hot-block__title {
    color: #f1f7ff;
}

/* ==========================================================================
   TASK 13 - Carduri interne + FAQ (pagini SEO generate/manuale, blocuri
   `crd_estate_seo_cards_placeholder` / `crd_estate_seo_faq_placeholder`).
   Paleta/radius/shadow identice cu `.crd-estate-public-card` de mai sus
   (design CRD existent), structura de link-uri dupa modelul cardurilor
   "Cautari populare" de pe homepage. Mobile-first (o coloana implicit),
   dark mode via body.dark-mode (comutatorul real, nu prefers-color-scheme).
   ========================================================================== */

.crd-estate-seo-cards,
.crd-estate-seo-faq {
    margin: 32px 0;
}

.crd-estate-seo-cards__title,
.crd-estate-seo-faq__title {
    margin: 0 0 16px;
    color: #09233f;
    font-size: 22px;
    font-weight: 800;
}

.crd-estate-seo-cards__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
}

@media (min-width: 768px) {
    .crd-estate-seo-cards__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .crd-estate-seo-cards__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.crd-estate-seo-cards__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 44px;
    padding: 14px 16px;
    border: 1px solid rgba(10, 181, 154, .25);
    border-left: 4px solid #00cfa6;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 12px 28px rgba(9, 35, 63, .08);
    color: #09233f;
    text-decoration: none !important;
    transition: background-color .2s ease, border-color .2s ease;
}

.crd-estate-seo-cards__item:hover,
.crd-estate-seo-cards__item:focus-visible {
    background: #eafff9;
    border-color: #00bfa4;
}

.crd-estate-seo-cards__item-title {
    font-weight: 700;
    font-size: 16px;
    line-height: 1.3;
}

.crd-estate-seo-cards__item-meta {
    flex-shrink: 0;
    color: #33475f;
    font-size: 14px;
    white-space: nowrap;
}

.crd-estate-seo-cards__item-arrow {
    flex-shrink: 0;
    color: #00a98d;
    font-weight: 800;
}

body.dark-mode .crd-estate-seo-cards__title,
body.dark-mode .crd-estate-seo-faq__title {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-seo-cards__item {
    border-color: rgba(0, 207, 166, .35);
    background: #102943;
    color: #f1f7ff;
    box-shadow: 0 14px 36px rgba(0, 0, 0, .24);
}

body.dark-mode .crd-estate-seo-cards__item:hover,
body.dark-mode .crd-estate-seo-cards__item:focus-visible {
    background: #123a5c;
    border-color: #00d5ad;
}

body.dark-mode .crd-estate-seo-cards__item-meta {
    color: #d9e7f5;
}

/* ==========================================================================
   TASK 31 - SEO Navigation Engine: acelasi limbaj vizual ca "Vezi și"
   (crd-estate-seo-cards) - carduri uniforme, mobile-first, dark mode via
   body.dark-mode. Modul distinct - expune STRICT nivelul inferior al
   ierarhiei, nu relatii laterale/apropiate.
   ========================================================================== */

/* BUG REAL GASIT (2026-08-06) - modulul e mereu ultimul element din continut (adaugat prin `the_content`
   pe toate paginile SEO) - fara spatiu jos vizibil, se lipea direct de footer. `margin-bottom` NU e sigur
   aici: e ultimul copil al `.entry-content`, iar o margine de jos pe ultimul copil poate colapsa cu
   marginea parintelui (comportament standard CSS, independent de tema) - vizual, spatiul dispare complet,
   exact bug-ul raportat. `padding-bottom` NU colapseaza niciodata (parte din propria cutie a elementului),
   deci garanteaza spatiul indiferent de structura din jur - nu necesita niciun widget/spacer Elementor
   suplimentar (elementul `.crd-estate-seo-nav` e deja "containerul exterior final" al sectiunii, acelasi
   element randat de `CRD_Estate_Public_Seo_Navigation::render_html()`). Trepte responsive, identice in
   ambele moduri (spatierea nu depinde de culoare): 32px mobil, 48px tableta (>=768px), 64px desktop
   (>=1024px) - acelasi prag folosit deja de grila de mai jos. */
.crd-estate-seo-nav {
    margin: 32px 0 0;
    padding-bottom: 32px;
}

@media (min-width: 768px) {
    .crd-estate-seo-nav {
        padding-bottom: 48px;
    }
}

@media (min-width: 1024px) {
    .crd-estate-seo-nav {
        padding-bottom: 64px;
    }
}

.crd-estate-seo-nav__title {
    margin: 0 0 16px;
    color: #09233f;
    font-size: 22px;
    font-weight: 800;
}

.crd-estate-seo-nav__grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    gap: 12px;
}

@media (min-width: 768px) {
    .crd-estate-seo-nav__grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
}

@media (min-width: 1024px) {
    .crd-estate-seo-nav__grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

.crd-estate-seo-nav__item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    min-height: 44px;
    padding: 14px 16px;
    border: 1px solid rgba(10, 181, 154, .25);
    border-left: 4px solid #00cfa6;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 12px 28px rgba(9, 35, 63, .08);
    color: #09233f;
    text-decoration: none !important;
    transition: background-color .2s ease, border-color .2s ease;
}

.crd-estate-seo-nav__item:hover,
.crd-estate-seo-nav__item:focus-visible {
    background: #eafff9;
    border-color: #00bfa4;
}

.crd-estate-seo-nav__item-title {
    font-weight: 700;
    font-size: 16px;
    line-height: 1.3;
}

.crd-estate-seo-nav__item-arrow {
    flex-shrink: 0;
    color: #00a98d;
    font-weight: 800;
}

body.dark-mode .crd-estate-seo-nav__title {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-seo-nav__item {
    border-color: rgba(0, 207, 166, .35);
    background: #102943;
    color: #f1f7ff;
    box-shadow: 0 14px 36px rgba(0, 0, 0, .24);
}

body.dark-mode .crd-estate-seo-nav__item:hover,
body.dark-mode .crd-estate-seo-nav__item:focus-visible {
    background: #123a5c;
    border-color: #00d5ad;
}

.crd-estate-seo-faq__list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.crd-estate-seo-faq__item {
    border: 1px solid rgba(10, 181, 154, .25);
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 12px 28px rgba(9, 35, 63, .08);
    padding: 4px 16px;
}

.crd-estate-seo-faq__question {
    cursor: pointer;
    padding: 14px 0;
    color: #09233f;
    font-weight: 700;
    font-size: 16px;
    line-height: 1.4;
    list-style: none;
}

.crd-estate-seo-faq__question::-webkit-details-marker {
    display: none;
}

.crd-estate-seo-faq__question::after {
    content: "+";
    float: right;
    margin-left: 12px;
    color: #00a98d;
    font-weight: 800;
}

.crd-estate-seo-faq__item[open] .crd-estate-seo-faq__question::after {
    content: "−";
}

.crd-estate-seo-faq__answer {
    padding: 0 0 16px;
    color: #33475f;
    font-size: 15px;
    line-height: 1.6;
}

.crd-estate-seo-faq__answer p {
    margin: 0;
}

body.dark-mode .crd-estate-seo-faq__item {
    border-color: rgba(0, 207, 166, .35);
    background: #102943;
    box-shadow: 0 14px 36px rgba(0, 0, 0, .24);
}

body.dark-mode .crd-estate-seo-faq__question {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-seo-faq__answer {
    color: #d9e7f5;
}

/* TASK 24 - breadcrumb CRD Estate (crd_estate_seo_breadcrumb widget): nu exista pana acum niciun CSS
   pentru .crd-estate-seo-breadcrumb, deci <nav><ol><li> se randa cu stilul implicit al browserului -
   lista verticala numerotata. Randare inline, cu separator ">", fara markere de lista. */
.crd-estate-seo-breadcrumb ol {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    list-style: none;
    margin: 0;
    padding: 10px 0;
    gap: 6px;
    font-size: 14px;
    line-height: 1.5;
    color: #526273;
}

.crd-estate-seo-breadcrumb li {
    display: flex;
    align-items: center;
    gap: 6px;
}

.crd-estate-seo-breadcrumb li:not(:last-child)::after {
    content: "\203A";
    color: #8a99ab;
}

.crd-estate-seo-breadcrumb a {
    color: #007f70;
    text-decoration: none;
}

.crd-estate-seo-breadcrumb a:hover,
.crd-estate-seo-breadcrumb a:focus {
    text-decoration: underline;
}

.crd-estate-seo-breadcrumb li:last-child span {
    color: #33475f;
    font-weight: 600;
}

@media (max-width: 480px) {
    .crd-estate-seo-breadcrumb ol {
        font-size: 13px;
        gap: 4px;
    }

    .crd-estate-seo-breadcrumb li:not(:last-child)::after {
        margin: 0 -2px;
    }
}

body.dark-mode .crd-estate-seo-breadcrumb ol {
    color: #d9e6f5;
}

body.dark-mode .crd-estate-seo-breadcrumb li:not(:last-child)::after {
    color: #6f8296;
}

body.dark-mode .crd-estate-seo-breadcrumb a {
    color: #00d5ad;
}

body.dark-mode .crd-estate-seo-breadcrumb li:last-child span {
    color: #f1f7ff;
}

/* ==========================================================================
   TASK 49 - filtrul de Status al catalogului unic /oferte-imobiliare/
   (Toate/Disponibile/Vandute/Inchiriate). Mobile-first (min. 360px), aceeasi
   paleta/inaltime de camp ca .crd-estate-search-field select (search-form.css),
   dark mode via body.dark-mode (comutatorul real de pe site). */
.crd-estate-catalog-status-filter {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 0 0 16px;
}

.crd-estate-catalog-status-filter label {
    font-size: 13px;
    font-weight: 600;
    color: #333;
}

.crd-estate-catalog-status-filter select {
    box-sizing: border-box;
    padding: 8px 10px;
    border: 1px solid #cfd4d9;
    border-radius: 6px;
    font-size: 14px;
    background: #fff;
    min-height: 40px;
    max-width: 100%;
}

.crd-estate-catalog-status-filter select:focus {
    outline: 2px solid #1a73e8;
    outline-offset: 1px;
    border-color: #1a73e8;
}

body.dark-mode .crd-estate-catalog-status-filter label {
    color: #f1f7ff;
}

body.dark-mode .crd-estate-catalog-status-filter select {
    background: #0d2340;
    border-color: rgba(0, 207, 166, .28);
    color: #eaf6ff;
}
