/* ==================================================================
   Главная-хаб и витрина услуг.

   Только раскладка: первый экран, плитки, кнопки, чипы и карточки
   приезжают из global.css. Здесь — как два раздела стоят рядом и как
   устроена карточка услуги.
   ================================================================== */

/* Две карточки разделов. auto-fit, а не две колонки: на планшете они
   встают друг под другом сами, без брейкпоинта. */
.hub {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(340px, 1fr));
    gap: var(--sp-5);
}

.hub-card {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
    box-sizing: border-box;
    padding: var(--pad-card-lg);
    background-color: var(--surface-2);
    background-image: var(--sheen);
    border: 1px solid var(--border);
    border-radius: var(--r-xl);
}

.hub-card__head {
    display: flex;
    align-items: center;
    gap: var(--sp-4);
}

.hub-card__head .eyebrow {
    margin-bottom: var(--sp-1);
}

.hub-card__head .section-title {
    margin: 0;
}

.hub-card__icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: var(--box-xl);
    height: var(--box-xl);
    border-radius: var(--r-md);
    background: var(--accent-soft);
    color: var(--accent);
}

.hub-card__text {
    margin: 0;
    max-width: var(--measure-sm);
    color: var(--text-3);
    line-height: var(--lh-base);
    text-wrap: pretty;
}

.hub-card__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-3);
    margin-top: auto;
}

.hub-card__links {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-2);
}

/* Три самых людных сервера. Это не карточки каталога — там ранг, баннер и
   кнопка адреса; здесь строка «имя · версия · онлайн», чтобы карточка
   раздела осталась карточкой, а не превратилась во второй каталог. */
.hub-list__title {
    margin: 0 0 calc(-1 * var(--sp-3));
    font-size: var(--fs-caption);
    font-weight: var(--fw-semibold);
    letter-spacing: var(--ls-wide);
    text-transform: uppercase;
    color: var(--text-4);
}

.hub-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border);
    border-radius: var(--r-lg);
    background: var(--surface-1);
    counter-reset: busiest;
}

.hub-list__item + .hub-list__item {
    border-top: 1px solid var(--border);
}

.hub-list__link {
    display: grid;
    grid-template-columns: var(--icon-lg) 1fr auto auto;
    align-items: center;
    gap: var(--sp-3);
    min-height: var(--control-h);
    padding-inline: var(--sp-4);
    color: var(--text);
    text-decoration: none;
    transition: background-color var(--dur) var(--ease);
}

.hub-list__link::before {
    counter-increment: busiest;
    content: counter(busiest);
    font-size: var(--fs-caption);
    font-weight: var(--fw-bold);
    color: var(--text-4);
    font-variant-numeric: tabular-nums;
}

.hub-list__link:hover {
    background: var(--surface-3);
}

.hub-list__name {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-weight: var(--fw-semibold);
}

.hub-list__meta {
    font-size: var(--fs-caption);
    color: var(--text-4);
}

.hub-list__online {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-2);
    font-weight: var(--fw-bold);
    font-variant-numeric: tabular-nums;
}

/* Услуга внутри карточки раздела: картинка слева, текст справа. Вся
   плитка — ссылка, чтобы не заставлять целиться в кнопку ниже. */
.hub-service {
    display: grid;
    grid-template-columns: 132px 1fr;
    gap: var(--sp-4);
    align-items: center;
    padding: var(--sp-3);
    border: 1px solid var(--border);
    border-radius: var(--r-lg);
    background: var(--surface-1);
    color: var(--text);
    text-decoration: none;
    transition: border-color var(--dur) var(--ease),
                background-color var(--dur) var(--ease),
                box-shadow var(--dur) var(--ease),
                transform var(--dur) var(--ease);
}

.hub-service:hover {
    border-color: var(--border-strong);
    background: var(--surface-3);
    box-shadow: var(--shadow-card);
    transform: translateY(-2px);
}

.hub-service__image {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 1;
    border-radius: var(--r-md);
    object-fit: cover;
}

.hub-service__body {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    min-width: 0;
}

.hub-service__title {
    font-size: var(--fs-lead);
    font-weight: var(--fw-semibold);
    letter-spacing: var(--ls-snug);
}

.hub-service__desc {
    font-size: var(--fs-small);
    line-height: var(--lh-snug);
    color: var(--text-4);
    text-wrap: pretty;
}

.hub-service__price {
    font-weight: var(--fw-bold);
    font-variant-numeric: tabular-nums;
}

.hub-service__price-note {
    font-weight: var(--fw-regular);
    font-size: var(--fs-small);
    color: var(--text-4);
}

/* ------------------------------------------------------------------
   Витрина /services/
   ------------------------------------------------------------------ */
.service-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--sp-5);
}

.service-card {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    background-color: var(--surface-2);
    background-image: var(--sheen);
    border: 1px solid var(--border);
    border-radius: var(--r-xl);
    color: var(--text);
    text-decoration: none;
    transition: border-color var(--dur) var(--ease),
                box-shadow var(--dur) var(--ease),
                transform var(--dur) var(--ease);
}

.service-card:hover {
    border-color: var(--border-strong);
    box-shadow: var(--shadow-card);
    transform: translateY(-2px);
}

.service-card__media {
    display: block;
    aspect-ratio: 16 / 10;
    overflow: hidden;
    background: var(--surface-sunken);
}

.service-card__image {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform var(--dur-slow) var(--ease-out);
}

.service-card:hover .service-card__image {
    transform: scale(1.03);
}

.service-card__body {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    padding: var(--pad-card);
}

.service-card__title {
    font-size: var(--fs-title);
    font-weight: var(--fw-semibold);
    letter-spacing: var(--ls-snug);
}

.service-card__desc {
    color: var(--text-3);
    line-height: var(--lh-snug);
    text-wrap: pretty;
}

.service-card__foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-3);
    margin-top: var(--sp-2);
    padding-top: var(--sp-4);
    border-top: 1px solid var(--border);
}

.service-card__price {
    font-size: var(--fs-lead);
    font-weight: var(--fw-bold);
    font-variant-numeric: tabular-nums;
}

.service-card__cta {
    display: inline-flex;
    align-items: center;
    gap: var(--sp-2);
    font-weight: var(--fw-semibold);
    color: var(--accent);
}

@media (max-width: 480px) {
    .hub-card {
        padding: var(--pad-card);
    }

    .hub-service {
        grid-template-columns: 1fr;
    }

    .hub-service__image {
        width: min(100%, 200px);
    }
}
