/* ================================================================
   page_list.css
   Barrierefreie Listenansicht – CultureTogether
   WCAG 2.1 A + AA + AAA (soweit möglich)
   ================================================================ */

/* ── Layout-Override: Listenansicht braucht scrollbaren Main ── */
/* Das layout_user setzt main.style.height für die Karte (fullscreen).
   Für die Listenansicht überschreiben wir das, damit Inhalte scrollen. */
main
{
    height:     auto !important;
    min-height: 0 !important;
    overflow-y: visible !important;
}

/* ── Seitenlayout ──────────────────────────────────────────── */

.list-page
{
    max-width:  900px;
    margin:     0 auto;
    padding:    1.5rem 1rem 3rem;
    outline:    none; /* skip-link-Anker: kein sichtbarer Outline nötig */
}

/* ── Seiten-Header ─────────────────────────────────────────── */

.list-page__header
{
    display:         flex;
    align-items:     flex-start;
    justify-content: space-between;
    gap:             1rem;
    margin-bottom:   1.5rem;
    flex-wrap:       wrap;
}

.list-page__header-inner
{
    flex: 1;
    min-width: 0;
}

.list-page__title
{
    font-size:   1.625rem;
    font-weight: 700;
    color:       var(--color-text);
    margin:      0 0 0.375rem;
    line-height: 1.2;
}

.list-page__subtitle
{
    font-size: 0.9375rem;
    color:     #555;
    margin:    0;
    line-height: 1.5;
}

/* WCAG AAA: Ansicht-Wechsel-Link klar sichtbar */
.list-page__switch-link
{
    display:         inline-flex;
    align-items:     center;
    gap:             0.375rem;
    font-size:       0.875rem;
    font-weight:     500;
    color:           var(--color-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
    white-space:     nowrap;
    padding:         0.25rem 0.125rem;
    border-radius:   4px;
    flex-shrink:     0;
}

.list-page__switch-link:hover
{
    color: #1246a0;
}

.list-page__switch-link:focus-visible
{
    outline:        3px solid var(--color-primary);
    outline-offset: 2px;
}

/* ── Filter-Formular ───────────────────────────────────────── */

.list-page__filters
{
    background: #f8fafc;
    border:     1px solid var(--color-border);
    border-radius: 10px;
    padding:    1.25rem 1.25rem 1rem;
    margin-bottom: 1.25rem;
}

.list-filter-form__row
{
    display:   flex;
    gap:       1rem;
    flex-wrap: wrap;
    margin-bottom: 0.875rem;
}

.list-filter-form__row:last-child
{
    margin-bottom: 0;
}

.list-filter-form__field
{
    display:   flex;
    flex-direction: column;
    gap:       0.3rem;
    flex:      1;
    min-width: 200px;
}

.list-filter-form__field--search
{
    flex: 2;
    min-width: 260px;
}

.list-filter-form__field--location
{
    flex-direction: row;
    align-items:    center;
    gap:            0.75rem;
    flex-wrap:      wrap;
}

/* WCAG 1.3.1 – Labels sind sichtbar und mit Input verknüpft */
.list-filter-form__label
{
    font-size:   0.875rem;
    font-weight: 600;
    color:       #374151;
}

/* WCAG 1.4.3 – Kontrast ≥ 4.5:1 */
.list-filter-form__input,
.list-filter-form__select
{
    width:         100%;
    padding:       0.5rem 0.75rem;
    border:        2px solid #9ca3af;
    border-radius: 6px;
    font-family:   var(--font-family);
    font-size:     1rem;
    color:         var(--color-text);
    background:    #fff;
    line-height:   1.4;
    transition:    border-color 0.15s;
}

.list-filter-form__input:hover,
.list-filter-form__select:hover
{
    border-color: #6b7280;
}

/* WCAG 2.4.7 + 1.4.11 – Fokus-Kontrast ≥ 3:1 */
.list-filter-form__input:focus-visible,
.list-filter-form__select:focus-visible
{
    outline:        3px solid var(--color-primary);
    outline-offset: 1px;
    border-color:   var(--color-primary);
}

/* WCAG 3.3.2 – Hinweistexte */
.list-filter-form__hint
{
    font-size: 0.8125rem;
    color:     #6b7280;
    line-height: 1.4;
}

/* Radius-Feld erscheint nur wenn Standort aktiv */
.list-filter-form__field--radius[hidden]
{
    display: none;
}

/* Fieldset für Ortssuche */
.list-filter-form__fieldset
{
    border:        1px solid #d1d5db;
    border-radius: 6px;
    padding:       0.875rem 1rem 0.75rem;
    margin-bottom: 0.875rem;
}

.list-filter-form__legend
{
    font-size:   0.875rem;
    font-weight: 600;
    color:       #374151;
    padding:     0 0.375rem;
}

/* Standort-Button – aktiver Zustand */
.btn--location[aria-pressed="true"]
{
    background-color: #e8f0fe;
    border-color:     var(--color-primary);
    color:            var(--color-primary);
    font-weight:      600;
}

.list-filter-form__location-status
{
    font-size:  0.875rem;
    color:      #374151;
    min-height: 1.25em; /* verhindert Layout-Shift */
}

/* Aktive Filter Pills */
.list-filter-form__active-filters
{
    display:    flex;
    flex-wrap:  wrap;
    gap:        0.5rem;
    margin-top: 0.5rem;
    min-height: 0;
}

.list-active-filter
{
    display:         inline-flex;
    align-items:     center;
    gap:             0.375rem;
    background:      #dbeafe;
    color:           #1e40af;
    border:          1px solid #bfdbfe;
    border-radius:   100rem;
    padding:         0.2rem 0.5rem 0.2rem 0.75rem;
    font-size:       0.8125rem;
    font-weight:     500;
}

.list-active-filter__remove
{
    display:          flex;
    align-items:      center;
    justify-content:  center;
    background:       none;
    border:           none;
    cursor:           pointer;
    color:            #1e40af;
    border-radius:    50%;
    width:            1.25rem;
    height:           1.25rem;
    padding:          0;
}

.list-active-filter__remove:hover
{
    background: #bfdbfe;
}

.list-active-filter__remove:focus-visible
{
    outline:        2px solid var(--color-primary);
    outline-offset: 1px;
}

/* ── Ergebnis-Status ───────────────────────────────────────── */

.list-page__status
{
    font-size:     0.9375rem;
    color:         #374151;
    margin-bottom: 0.875rem;
    font-weight:   500;
    min-height:    1.5em;
}

/* ── Ladezustand ───────────────────────────────────────────── */

.list-loading
{
    display:         flex;
    align-items:     center;
    gap:             0.75rem;
    padding:         2rem 0;
    color:           #6b7280;
    font-size:       1rem;
}

.list-loading[hidden]
{
    display: none;
}

/* WCAG 2.5.5 – Keine rein visuelle Animation ohne reduce-motion-Alternative */
.list-loading__spinner
{
    display:       inline-block;
    width:         1.5rem;
    height:        1.5rem;
    border:        3px solid #e2e8f0;
    border-top-color: var(--color-primary);
    border-radius: 50%;
    animation:     list-spin 0.8s linear infinite;
    flex-shrink:   0;
}

@media (prefers-reduced-motion: reduce)
{
    .list-loading__spinner
    {
        animation: none;
        border-top-color: var(--color-primary);
        opacity: 0.7;
    }
}

@keyframes list-spin
{
    to { transform: rotate(360deg); }
}

/* ── Kein Ergebnis ─────────────────────────────────────────── */

.list-empty
{
    padding:    2rem 0;
    color:      #6b7280;
    font-size:  1rem;
    text-align: center;
}

.list-empty[hidden]
{
    display: none;
}

/* ── Ergebnisliste ─────────────────────────────────────────── */

/* WCAG 1.3.1 – Listenstruktur semantisch korrekt */
.list-results
{
    list-style: none;
    padding:    0;
    margin:     0;
    display:    flex;
    flex-direction: column;
    gap:        1rem;
}

/* ── Einzelne Einrichtungskarte ────────────────────────────── */

.list-result-item
{
    background:    #fff;
    border:        1px solid var(--color-border);
    border-radius: 10px;
    padding:       1.25rem;
    transition:    box-shadow 0.15s, border-color 0.15s;
}

/* WCAG 2.4.7 – Fokus sichtbar */
.list-result-item:focus-within
{
    border-color: var(--color-primary);
    box-shadow:   0 0 0 3px rgba(26, 115, 232, 0.15);
}

.list-result-item__header
{
    display:         flex;
    align-items:     flex-start;
    justify-content: space-between;
    gap:             0.75rem;
    margin-bottom:   0.5rem;
    flex-wrap:       wrap;
}

.list-result-item__title-wrap
{
    flex:     1;
    min-width: 0;
}

/* WCAG AAA 2.4.9 – Linkzweck aus Link allein erkennbar */
.list-result-item__name
{
    font-size:      1.0625rem;
    font-weight:    700;
    color:          var(--color-text);
    text-decoration: none;
    display:        inline-block;
    border-radius:  2px;
    line-height:    1.3;
}

.list-result-item__name:hover
{
    color:           var(--color-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
}

.list-result-item__name:focus-visible
{
    outline:        3px solid var(--color-primary);
    outline-offset: 2px;
}

.list-result-item__category
{
    font-size:   0.8125rem;
    color:       #6b7280;
    margin-top:  0.2rem;
}

/* Entfernung (nur bei Radiussuche) */
.list-result-item__distance
{
    font-size:    0.875rem;
    color:        #374151;
    font-weight:  600;
    white-space:  nowrap;
    flex-shrink:  0;
    background:   #f1f5f9;
    border:       1px solid #e2e8f0;
    border-radius: 100rem;
    padding:      0.15rem 0.625rem;
    align-self:   flex-start;
}

/* Verifiziert-Badge */
.list-result-item__verified
{
    display:         inline-flex;
    align-items:     center;
    gap:             0.25rem;
    font-size:       0.8125rem;
    color:           #166534;
    background:      #dcfce7;
    border:          1px solid #bbf7d0;
    border-radius:   100rem;
    padding:         0.1rem 0.5rem;
    margin-left:     0.5rem;
}

/* Bewertungssterne */
.list-result-item__rating
{
    display:     flex;
    align-items: center;
    gap:         0.375rem;
    margin-top:  0.375rem;
    font-size:   0.875rem;
    color:       #374151;
}

.list-result-item__stars
{
    color:       #f59e0b;
    letter-spacing: 1px;
}

/* Kontaktinfos */
.list-result-item__info
{
    list-style:   none;
    padding:      0;
    margin:       0.75rem 0 0;
    display:      flex;
    flex-direction: column;
    gap:          0.3rem;
}

.list-result-item__info-row
{
    display:     flex;
    align-items: flex-start;
    gap:         0.5rem;
    font-size:   0.9rem;
    color:       #374151;
    line-height: 1.4;
}

.list-result-item__info-row a
{
    color:            var(--color-primary);
    text-decoration:  underline;
    text-underline-offset: 2px;
    word-break:       break-all;
}

.list-result-item__info-row a:hover
{
    color: #1246a0;
}

.list-result-item__info-row a:focus-visible
{
    outline:        2px solid var(--color-primary);
    outline-offset: 2px;
    border-radius:  2px;
}

.list-result-item__info-icon
{
    width:      1.125rem;
    height:     1.125rem;
    flex-shrink: 0;
    margin-top: 0.1rem;
    opacity:    0.6;
}

/* Barrierefreiheitsstatus */
.list-result-item__accessibility
{
    margin-top: 0.875rem;
    padding-top: 0.875rem;
    border-top:  1px solid #e5e7eb;
}

.list-result-item__accessibility-title
{
    font-size:   0.8125rem;
    font-weight: 600;
    color:       #374151;
    margin:      0 0 0.4rem;
}

.list-result-item__accessibility-list
{
    list-style:   none;
    padding:      0;
    margin:       0;
    display:      flex;
    flex-wrap:    wrap;
    gap:          0.375rem;
}

/* WCAG 1.4.1 – Farbe nicht einziges Unterscheidungsmerkmal */
.list-result-item__access-badge
{
    display:         inline-flex;
    align-items:     center;
    gap:             0.25rem;
    font-size:       0.8rem;
    padding:         0.175rem 0.5rem;
    border-radius:   100rem;
    font-weight:     500;
    border:          1px solid transparent;
}

.list-result-item__access-badge--met
{
    background: #dcfce7;
    color:      #14532d;
    border-color: #bbf7d0;
}

.list-result-item__access-badge--partial
{
    background: #fef9c3;
    color:      #713f12;
    border-color: #fde68a;
}

.list-result-item__access-badge--not-met
{
    background: #fee2e2;
    color:      #7f1d1d;
    border-color: #fca5a5;
}

.list-result-item__access-badge--not-rated
{
    background: #f3f4f6;
    color:      #6b7280;
    border-color: #d1d5db;
}

/* Aktions-Buttons (Bewerten, Korrigieren, Melden) */
.list-result-item__actions
{
    display:    flex;
    flex-wrap:  wrap;
    gap:        0.5rem;
    margin-top: 0.875rem;
    padding-top: 0.875rem;
    border-top:  1px solid #e5e7eb;
}

/* ── Pagination ────────────────────────────────────────────── */

.list-pagination
{
    display:         flex;
    align-items:     center;
    justify-content: center;
    gap:             1.25rem;
    margin-top:      1.75rem;
}

.list-pagination[hidden]
{
    display: none;
}

/* WCAG 2.4.7 – sichtbarer Fokus */
.list-pagination__btn:focus-visible
{
    outline:        3px solid var(--color-primary);
    outline-offset: 2px;
}

.list-pagination__info
{
    font-size:  0.9375rem;
    color:      #374151;
    font-weight: 500;
    min-width:  8rem;
    text-align: center;
}

/* ── Responsive ────────────────────────────────────────────── */

@media (max-width: 600px)
{
    .list-page { padding: 1rem 0.75rem 2.5rem; }

    .list-page__title { font-size: 1.375rem; }

    .list-filter-form__row { flex-direction: column; }

    .list-filter-form__field,
    .list-filter-form__field--search { min-width: 0; }

    .list-result-item { padding: 1rem; }

    .list-page__header
    {
        flex-direction: column;
        gap: 0.5rem;
    }
}

/* ── High-Contrast & Reduced-Motion ───────────────────────── */

/* WCAG AAA – Systemkontrastmodus unterstützen */
@media (forced-colors: active)
{
    .list-result-item { border: 2px solid ButtonText; }
    .list-result-item__access-badge { border: 1px solid ButtonText; }
    .list-active-filter { border: 1px solid ButtonText; }
}
