/*
 * Services block.
 *
 * Grid of service cards: 3 per row desktop, 2 per row tablet, 1 per row mobile.
 * Each card has a palette background, the service number top-left, and a
 * bottom row with the title (left) and an arrow circle (right). The arrow
 * starts in the rotated state (-45deg, like .btn-arrow on hover) and animates
 * back to 0deg on card hover (the inverse of the .btn behaviour).
 */

.services-grid {
    display: grid;
    gap: 0;
    grid-template-columns: 1fr;
    list-style: none;
    margin: 0;
    padding: 0;
}

.services-item {
    display: block;
    margin: 0;
    padding: 0;
}

.services-card {
    --services-arrow-bg: #ECFFA5;
    --services-arrow-fg: var(--color-blue-80);
    --services-card-pad: 32px;
    --services-card-min-h: 320px;

    aspect-ratio: 1 / 1;
    color: var(--color-blue-50);
    display: block;
    height: 100%;
    min-height: var(--services-card-min-h);
    overflow: hidden;
    position: relative;
    text-decoration: none;
    width: 100%;
}

.services-bg {
    display: block;
    height: 100%;
    inset: 0;
    object-fit: cover;
    position: absolute;
    width: 100%;
    z-index: 0;
}

.services-content {
    display: flex;
    flex-direction: column;
    height: 100%;
    justify-content: space-between;
    padding: var(--services-card-pad);
    position: relative;
    z-index: 1;
}

.services-number {
    color: var(--color-blue-50);
    font-family: var(--font-primary);
    font-size: 32px;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 28px;
}

.services-bottom {
    align-items: flex-end;
    display: flex;
    gap: 16px;
    justify-content: space-between;
}

.services-title {
    color: var(--color-blue-50);
    flex: 1 1 auto;
    font-family: var(--font-primary);
    font-size: 48px;
    font-weight: 500;
    letter-spacing: 0;
    line-height: 60px;
    margin: 0;
}

.services-title span {
    color: var(--color-blue-80);
    display: block;
    font-family: var(--font-secondary);
    font-style: italic;
    font-weight: 400;
}

/*
 * Arrow circle — same shape as .btn-arrow but reversed motion.
 * Default state is rotated -45deg (the .btn hover state); on card hover the
 * arrow rotates back to 0 (the .btn default state).
 */
.services-arrow {
    --services-arrow-size: 21px;
    --services-arrow-circle: 70px;

    align-items: center;
    background-color: var(--services-arrow-bg);
    border-radius: 50%;
    color: var(--services-arrow-fg);
    display: inline-flex;
    flex-shrink: 0;
    height: var(--services-arrow-circle);
    justify-content: center;
    transform: rotate(0);
    transition: transform 450ms cubic-bezier(0.22, 1, 0.36, 1);
    width: var(--services-arrow-circle);
}

.services-arrow::before {
    background-color: currentColor;
    content: "";
    height: var(--services-arrow-size);
    mask-image: url("../icons/arrow-service.svg");
    mask-position: center;
    mask-repeat: no-repeat;
    mask-size: contain;
    -webkit-mask-image: url("../icons/arrow-service.svg");
    -webkit-mask-position: center;
    -webkit-mask-repeat: no-repeat;
    -webkit-mask-size: contain;
    transform: translateX(1px);
    width: var(--services-arrow-size);
}

.services-card:hover .services-arrow,
.services-card:focus-visible .services-arrow {
    transform: rotate(45deg);
}

.services-card:focus-visible {
    outline: 2px solid var(--color-blue-50);
    outline-offset: 3px;
}

/* Tablet: 2 per row */
@media (min-width: 640px) {
    .services-grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Desktop: 3 per row */
@media (min-width: 1024px) {
    .services-grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

@media (prefers-reduced-motion: reduce) {
    .services-arrow {
        transition-duration: 1ms;
    }

    .services-card:hover .services-arrow,
    .services-card:focus-visible .services-arrow {
        transform: rotate(-45deg);
    }
}
