/* ================================================================
   HOUSING FILTERS — CSS puro, cacheabile, O(1)
   ================================================================ */
.housing-filters {
    --color-primary: #c00;
    --color-primary-pale: rgba(204, 0, 0, .08);
    --color-link: #0066cc;
    --color-link-hover: #004499;
    --color-text-primary: #2c3e50;
    --color-text-secondary: #666;
    --color-bg: #fff;
    --color-bg-alt: #f8f9fa;
    --color-border: #e0e0e0;
    --color-border-light: #efefef;
    --spacing-sm: 8px;
    --spacing-md: 12px;
    --spacing-lg: 16px;
    --spacing-xl: 20px;
    --spacing-2xl: 24px;
    --font-family-base: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
    --font-size-sm: 13px;
    --font-size-base: 14px;
    --font-size-lg: 16px;
    --transition-smooth: 200ms cubic-bezier(.4, 0, .2, 1);

    display: flex;
    flex-wrap: wrap;
    column-gap: var(--spacing-md);
    row-gap: 0;
    margin: 20px auto;
    max-width: 90%;
    position: relative;
    font-family: var(--font-family-base);
    color: var(--color-text-primary);
    background: var(--color-bg);
}

/* ---------- 1) Row break: due pseudo-elementi a tutta larghezza ---------- */
.housing-filters::before,
.housing-filters::after {
    content: '';
    flex-basis: 100%;
    height: 0;
    margin: 0;
}
.housing-filters::before { order: 2; height: 2px; background: var(--color-primary); }   /* sotto nation */
.housing-filters::after  { order: 4; height: 1px; background: var(--color-border); }    /* sotto contract */

/* ---------- 2) Radio nascosti ---------- */
.housing-filters input[type="radio"] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
    width: 0;
    height: 0;
}

/* ---------- 3) CRITICO: i wrapper si "sciolgono" ---------- */
.hf-nation { display: contents; }   /* ← QUESTA MANCAVA */

/* ---------- 4) Ordine visuale delle righe ---------- */
.hf-tab--nation   { order: 1; }
.hf-tab--contract { order: 3; }
.hf-tab--accom    { order: 5; }
.housing-sitemap  { order: 6; flex-basis: 100%; }

/* ---------- 5) Pannelli nascosti di default ---------- */
.hf-contract,
.hf-accom,
.housing-sitemap { display: none; }

/* ---------- 6) Visibilità generica con :has() ---------- */
.hf-nation:has(> input[name^="nation"]:checked) > .hf-contract {
    display: contents;
}
.hf-contract:has(> input[name^="contract"]:checked) > .hf-accom {
    display: contents;
}
.hf-accom:has(> input[name^="accom"]:checked) > .housing-sitemap {
    display: block;
}

/* ---------- 7) Tab base ---------- */
.hf-tab {
    cursor: pointer;
    padding: var(--spacing-md) var(--spacing-lg);
    color: var(--color-text-secondary);
    font-weight: 500;
    font-size: var(--font-size-base);
    border-bottom: 3px solid transparent;
    border-radius: 6px 6px 0 0;
    white-space: nowrap;
    user-select: none;
    transition: all var(--transition-smooth);
}
.hf-tab:hover {
    color: var(--color-primary);
    background-color: var(--color-primary-pale);
}

/* ---------- 8) Tab attiva: generica per ogni livello ---------- */
.hf-nation:has(> input[name^="nation"]:checked)   > .hf-tab--nation,
.hf-contract:has(> input[name^="contract"]:checked) > .hf-tab--contract,
.hf-accom:has(> input[name^="accom"]:checked)     > .hf-tab--accom {
    color: var(--color-primary);
    border-bottom-color: var(--color-primary);
    background-color: var(--color-primary-pale);
    font-weight: 700;
    box-shadow: 0 2px 8px rgba(204, 0, 0, .15);
}

/* ---------- 9) Sitemap: colonne ---------- */
.housing-sitemap {
    column-count: 4;
    column-gap: 2.5rem;
    column-fill: auto;
    margin-top: var(--spacing-2xl);
    padding: var(--spacing-xl) 0;
    font-size: var(--font-size-base);
    line-height: 1.6;
}
@media (max-width: 1400px) { .housing-sitemap { column-count: 3; column-gap: 2rem; } }
@media (max-width: 900px)  { .housing-sitemap { column-count: 2; column-gap: 1.5rem; } }
@media (max-width: 600px)  { .housing-sitemap { column-count: 1; column-gap: 0; } }

/* ---------- 10) Card ---------- */
.sitemap-group {
    break-inside: avoid;
    margin-bottom: var(--spacing-2xl);
    background: var(--color-bg-alt);
    border: 1px solid var(--color-border-light);
    border-radius: 8px;
    padding: var(--spacing-lg);
    box-shadow: 0 1px 3px rgba(0, 0, 0, .05);
    transition: all var(--transition-smooth);
}
.sitemap-group:hover {
    background: var(--color-bg);
    border-color: var(--color-primary-pale);
    box-shadow: 0 2px 8px rgba(0, 0, 0, .08);
}
.sitemap-group__title {
    font-size: var(--font-size-lg);
    font-weight: 700;
    margin: 0 0 var(--spacing-md);
    padding-bottom: var(--spacing-md);
    border-bottom: 2px solid var(--color-border);
    letter-spacing: -.3px;
}
.sitemap-group__title p { margin: 0; }
.sitemap-group__title a { color: var(--color-primary); text-decoration: none; }
.sitemap-group__title a:hover {
    text-decoration: underline;
    text-underline-offset: 4px;
}
.sitemap-group__list { list-style: none; margin: 0; padding: 0; }
.sitemap-item { padding: var(--spacing-sm) 0; }
.sitemap-item a {
    color: var(--color-link);
    text-decoration: none;
    font-size: var(--font-size-sm);
    display: inline-block;
    padding: 4px 0;
    transition: all 120ms ease-in-out;
}
.sitemap-item a:hover {
    color: var(--color-link-hover);
    padding-left: var(--spacing-sm);
}

/* ---------- 11) Mobile ---------- */
@media (max-width: 640px) {
    .housing-filters { margin: 10px 16px; }
    .hf-tab { padding: var(--spacing-sm) var(--spacing-md); font-size: var(--font-size-sm); }
    .sitemap-group { padding: var(--spacing-md); }
    .sitemap-group__title { font-size: var(--font-size-base); }
    .sitemap-item a { font-size: 12px; }
}