/**
 * WCRS Karta wyniku wyszukiwania
 *
 * Wyłącznie układ i zachowanie — kolory, rozmiary i typografia przychodzą
 * z kontrolek widgetu.
 *
 * Wzorzec stretched-link: jedynym odnośnikiem karty jest tytuł, a jego ::after
 * pokrywa całą powierzchnię. Dzięki temu klikalna jest cała karta, a czytnik
 * ekranu i klawiatura widzą jeden cel zamiast trzech prowadzących w to samo
 * miejsce (WCAG 2.4.4).
 */

.wcrs-search-result-card {
    --wcrs-src-focus: #012D5B;

    position: relative;
    display: flex;
    flex-direction: column;
    align-items: stretch;
}

@media (min-width: 768px) {
    .wcrs-search-result-card {
        flex-direction: row;
        align-items: flex-start;
    }

    .wcrs-search-result-card--image-right {
        flex-direction: row-reverse;
    }

    /* Bez zajawki treść wyrównuje się do środka kadru, zamiast wisieć u góry
       nad pustą przestrzenią — dotyczy m.in. organizatorów, którzy mają tylko
       nazwę i logo. */
    .wcrs-search-result-card--no-excerpt {
        align-items: center;
    }
}

.wcrs-search-result-card__media {
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    width: 100%;
}

@media (min-width: 768px) {
    .wcrs-search-result-card__media {
        /* Szerokość ustawia kontrolka przez flex-basis. */
        width: auto;
    }
}

.wcrs-search-result-card__image {
    width: 100%;
    height: 100%;
    display: block;
    /* object-fit ustawia kontrolka „Dopasowanie obrazka" — w wynikach mieszają się
       zdjęcia i logotypy, więc to decyzja redaktora, nie stała. */
}

/* Logo zastępcze nie wypełnia kadru — pokazujemy je w środku, przygaszone,
   żeby nie udawało zdjęcia. */
.wcrs-search-result-card__image--fallback {
    width: 75%;
    height: 75%;
    object-fit: contain;
    margin: auto;
    opacity: 0.6;
}

.wcrs-search-result-card__body {
    flex: 1 1 auto;
    display: flex;
    flex-direction: column;
    min-width: 0;
}

.wcrs-search-result-card__meta {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin: 0 0 0.5rem;
}

.wcrs-search-result-card__title {
    margin: 0;
}

/* Podwójna klasa (0,2,0) celowo, nie z lenistwa: globalna reguła zestawu stylów
   `.elementor-kit-N a` ma specyficzność 0,1,1 i wygrywa z pojedynczą klasą. Narzuca
   linkowi nie tylko kolor, ale też rodzinę, rozmiar, grubość i interlinię — przez co
   typografia tytułu ustawiona w kontrolkach widgetu nie dociera do odnośnika. Stąd
   `font: inherit`: link ma wyglądać jak nagłówek, w którym siedzi. */
.wcrs-search-result-card .wcrs-search-result-card__link {
    color: inherit;
    font: inherit;
    letter-spacing: inherit;
    text-transform: inherit;
    text-decoration: none;
}

.wcrs-search-result-card__link::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}

.wcrs-search-result-card__link:focus-visible,
.wcrs-search-result-card__link:focus {
    outline: none;
}

/* Obrys rysujemy na karcie, nie na samym tytule — inaczej ramka obejmowałaby
   tylko tekst odnośnika, a klikalna jest cała karta. */
.wcrs-search-result-card:has(.wcrs-search-result-card__link:focus-visible),
.wcrs-search-result-card:has(.wcrs-search-result-card__link:focus) {
    outline: 2px solid var(--wcrs-src-focus);
    outline-offset: 4px;
}

.wcrs-search-result-card__excerpt {
    --wcrs-src-lines: 3;

    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: var(--wcrs-src-lines);
    line-clamp: var(--wcrs-src-lines);
    overflow: hidden;
    margin: 0.75rem 0 0;
}

/* Odstęp nad przyciskiem to padding, nie margines: przy wyrównaniu do dołu górny
   margines zajmuje `margin-top: auto`, które przy wypełnionej karcie liczy się jako
   zero — przycisk przykleiłby się wtedy do zajawki. Wielkość ustawia kontrolka. */
.wcrs-search-result-card__actions {
    margin: 0;
}

/* Przycisk przy dolnej krawędzi: treść rozciąga się na wysokość kadru, a odstęp
   nad przyciskiem zjada resztę miejsca. Dzięki temu przyciski sąsiednich kart stoją
   w jednej linii, choć tytuły mają różną długość. */
.wcrs-search-result-card--button-bottom .wcrs-search-result-card__actions {
    margin-top: auto;
}

@media (min-width: 768px) {
    .wcrs-search-result-card--button-bottom {
        align-items: stretch;
    }

    /* Wyrównanie do dołu wygrywa z centrowaniem kart bez zajawki — inaczej te dwie
       reguły znosiłyby się nawzajem i przycisk lądowałby w losowym miejscu. */
    .wcrs-search-result-card--button-bottom.wcrs-search-result-card--no-excerpt {
        align-items: stretch;
    }
}

.wcrs-search-result-card__cta {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    /* Cel dotykowy nie schodzi poniżej 44 px — WCAG 2.5.5. */
    min-height: 44px;
    padding: 0.5rem 1.25rem;
    transition: background-color 0.2s ease;
}

.wcrs-search-result-card__arrow {
    width: 1rem;
    height: 1rem;
    flex: none;
}

@media (prefers-reduced-motion: reduce) {
    .wcrs-search-result-card__cta {
        transition: none;
    }
}

/* Podgląd w edytorze: kadr bez zdjęcia potrzebuje własnej wysokości, bo nie ma
   obrazka, który by go rozepchnął. */
.wcrs-search-result-card--placeholder .wcrs-search-result-card__media {
    min-height: 160px;
}
