.ville_score_badge  { width: 2rem; height: 2rem; font-size: 1rem; }
.ville_plm_notice   { font-size: .72rem; color: hsl(var(--muted-foreground)); padding-top: .5rem !important; padding-bottom: .25rem !important; border-bottom: none !important; font-style: italic; }
.ville_chart_wrap   { position: relative; height: 200px; }

.ville_dvf_map  { position: relative; height: 590px; }

.dvf_loader {
    position: absolute;
    inset: 0;
    z-index: 20;
    background: hsl(var(--background));
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: .75rem;
    transition: opacity .35s;
}
.dvf_loader.hiding { opacity: 0; pointer-events: none; }
.dvf_loader_msg { margin-top: .15rem; }

.dvf_filter_btn { position: absolute; top: .6rem; left: .6rem; z-index: 10; white-space: nowrap; }
.dvf_filter_btn.active { background: hsl(var(--primary)) !important; color: hsl(var(--primary-foreground)) !important; border-color: hsl(var(--primary)) !important; }
.dvf_filter_dot { display: inline-block; width: 6px; height: 6px; border-radius: 50%; background: hsl(var(--destructive)); margin-left: .2rem; vertical-align: middle; }

.dvf_filter_panel { position: absolute; top: 2.8rem; left: .6rem; width: 325px; z-index: 10; display: none; overflow: hidden; }
.dvf_filter_panel.open { display: block; }
.dvf_fp_header  { border-bottom: 1px solid hsl(var(--border)); background: hsl(var(--muted) / .5); }
.dvf_fp_footer  { padding: .5rem 1rem; border-top: 1px solid hsl(var(--border)); background: hsl(var(--muted) / .5); }
.dvf_fs         { padding: .55rem 1rem; border-bottom: 1px solid hsl(var(--border)); }
.dvf_fs:last-of-type { border-bottom: none; }
.dvf_fslabel    { font-size: .72rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; color: hsl(var(--muted-foreground)); margin-bottom: .4rem; }
.dvf_inp_sm     { width: 75px; }

.filter_chips   { display: flex; gap: .35rem; flex-wrap: wrap; }
.fchip          { display: flex; align-items: center; cursor: pointer; }
.fchip input    { display: none; }
.fchip span     { padding: .25rem .6rem; border: 1px solid hsl(var(--border)); border-radius: .25rem; font-size: .8rem; color: hsl(var(--muted-foreground)); transition: all .1s; user-select: none; }
.fchip:hover span { border-color: hsl(var(--primary)); color: hsl(var(--primary)); }
.fchip input:checked + span { background: hsl(var(--primary)); border-color: hsl(var(--primary)); color: hsl(var(--primary-foreground)); }

.fpreset.active,
.fpreset.active:hover { background: hsl(var(--primary)) !important; border-color: hsl(var(--primary)) !important; color: hsl(var(--primary-foreground)) !important; }
.ville_dvf_legend {
    display: flex; align-items: center; flex-wrap: wrap; gap: .5rem;
    padding: .55rem 1rem; font-size: .75rem;
    color: hsl(var(--muted-foreground));
    border-top: 1px solid hsl(var(--border));
}
.ville_dvf_ldot  { display: inline-block; width: 9px; height: 9px; border-radius: 50%; flex-shrink: 0; }
.dvf_ldot_low    { background: #54A24B; }
.dvf_ldot_mid    { background: #EECA3B; }
.dvf_ldot_high   { background: #E45756; }
.dvf_ldot_multi  { background: #6366F1; }
.dvf_filter_icon { margin-right: .3rem; vertical-align: middle; }
.ville_dvf_lsep { width: 1px; height: 12px; background: hsl(var(--border)); margin: 0 .25rem; }
.ville_dvf_legend svg { flex-shrink: 0; }

.dvf_popup_wrap .maplibregl-popup-content { padding: 0; border-radius: 7px; overflow: hidden; }

.dvf_popup_ventes { padding: .25rem .75rem .45rem; border-top: 1px solid hsl(var(--border)); }
.dvf_popup_v_row { display: flex; justify-content: space-between; align-items: baseline; gap: .75rem; padding: .22rem 0; border-bottom: 1px solid hsl(var(--border) / .4); font-size: .73rem; }
.dvf_popup_v_row:last-child { border-bottom: none; }
.dvf_popup_v_prix { font-family: var(--f-mono); font-weight: 700; font-size: .78rem; white-space: nowrap; }

.dvf_popup          { font-size: .8rem; line-height: 1.45; min-width: 190px; }
.dvf_popup_top      { padding: .5rem .75rem .4rem; border-top: 3px solid var(--dvf-c, #888); }
.dvf_popup_prix     { font-size: 1.1rem; font-family: var(--f-mono); font-weight: 700; letter-spacing: -.01em; line-height: 1.2; }
.dvf_popup_type     { font-size: .68rem; font-weight: 600; text-transform: uppercase; letter-spacing: .06em; color: hsl(var(--muted-foreground)); margin-top: .2rem; }
.dvf_popup_details  { font-size: .75rem; color: hsl(var(--muted-foreground)); margin-top: .05rem; }
.dvf_popup_body     { padding: .35rem .75rem .5rem; border-top: 1px solid hsl(var(--border)); }
.dvf_popup_row      { display: flex; justify-content: space-between; gap: 1rem; font-size: .78rem; }
.dvf_popup_row span { color: hsl(var(--muted-foreground)); }
.dvf_popup_row strong { font-family: var(--f-mono); }
.dvf_popup_adresse  { margin-top: .3rem; font-size: .72rem; color: hsl(var(--muted-foreground)); }
.dvf_popup_date     { font-size: .68rem; color: hsl(var(--muted-foreground)); opacity: .75; margin-top: .1rem; }

.uk-card-header + .uk-card-body { padding-top: 1.25rem; }

.ville_suivi_active { color: #1B5E35 !important; border-color: #1B5E35 !important; }

@media (max-width: 959px) {
    .ville_dvf_map { height: 520px; }
    .dvf_filter_panel { left: .6rem; right: .6rem; width: auto; max-width: 340px; max-height: calc(100% - 3.5rem); overflow-y: auto; }
    .dvf_fp_header { padding: .45rem .85rem !important; }
    .dvf_fs { padding: .3rem .85rem; }
    .dvf_fslabel { font-size: .65rem; margin-bottom: .2rem; }
    .dvf_fp_footer { padding: .3rem .85rem; }
    .ville_dvf_legend { font-size: .7rem; gap: .35rem; }

    .ville_histoire_table,
    .ville_histoire_table tbody { display: flex; flex-direction: column; gap: .45rem; }
    .ville_histoire_table thead { display: none; }
    .ville_histoire_table tr {
        display: grid;
        grid-template-columns: 1fr 1fr 1fr;
        border: 1px solid hsl(var(--border));
        border-radius: 6px;
        overflow: hidden;
    }
    .ville_histoire_table td { white-space: normal; padding: .38rem .55rem; }
    .ville_histoire_table td:first-child {
        grid-column: 1 / -1;
        background: hsl(var(--muted) / .35);
        border-bottom: 1px solid hsl(var(--border));
        font-weight: 600;
        font-size: .84rem;
    }
    .ville_histoire_table td:not(:first-child) { display: block; font-size: .82rem; }
    .ville_histoire_table td:nth-child(2)::before { content: 'Prix m²'; }
    .ville_histoire_table td:nth-child(3)::before { content: 'Ventes'; }
    .ville_histoire_table td:nth-child(4)::before { content: 'Évol.'; }
    .ville_histoire_table td:nth-child(2)::before,
    .ville_histoire_table td:nth-child(3)::before,
    .ville_histoire_table td:nth-child(4)::before {
        display: block;
        font-size: .6rem;
        text-transform: uppercase;
        letter-spacing: .06em;
        color: hsl(var(--muted-foreground));
        margin-bottom: .1rem;
        font-weight: 400;
    }
    .uk-overflow-auto:has(.ville_histoire_table) { background: none; }
}
