/* Покупка упаковками — оформление блока в колонке покупки.

   Стили нейтральные и опираются на переменные темы, если они есть: тема может
   переопределить их своим packaging.css, не трогая разметку. */

.cx-pack {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin: 0.75rem 0;
}

/* У товара, который продают только упаковками, переключать нечего, а у товара
   с единственной пачкой нечего и выбирать: пустые контейнеры не занимают место
   и не рисуют осиротевшую точку над подписью */
.cx-pack__modes:empty,
.cx-pack__list:empty {
    display: none;
}

.cx-pack__modes {
    display: inline-flex;
    gap: 0.25rem;
    padding: 0.2rem;
    border-radius: 999px;
    background: var(--cx-pack-track, rgba(127, 127, 127, 0.12));
    align-self: flex-start;
}

.cx-pack__mode {
    border: 0;
    background: transparent;
    border-radius: 999px;
    padding: 0.35rem 0.85rem;
    font: inherit;
    font-size: 0.85rem;
    color: inherit;
    opacity: 0.7;
    cursor: pointer;
}

.cx-pack__mode.is-active {
    background: var(--cx-pack-active-bg, var(--bg, #fff));
    opacity: 1;
    font-weight: 600;
    box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12);
}

.cx-pack__list {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
}

.cx-pack__item {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    align-items: flex-start;
    padding: 0.45rem 0.7rem;
    border: 1px solid var(--cx-pack-border, rgba(127, 127, 127, 0.35));
    border-radius: 10px;
    background: transparent;
    font: inherit;
    color: inherit;
    cursor: pointer;
    text-align: left;
}

.cx-pack__item.is-active {
    border-color: var(--cx-pack-accent, var(--primary, currentColor));
    box-shadow: inset 0 0 0 1px var(--cx-pack-accent, var(--primary, currentColor));
}

.cx-pack__name {
    font-size: 0.9rem;
    font-weight: 600;
}

.cx-pack__price {
    font-size: 0.8rem;
    opacity: 0.75;
}

/* Подпись под выбором: сверху — что покупают, снизу — во что это выльется.
   Одной строкой через точки читалось тяжело и рвалось в случайных местах. */
.cx-pack__note {
    display: flex;
    flex-direction: column;
    gap: 0.1rem;
    font-size: 0.85rem;
    line-height: 1.4;
}

.cx-pack__note:empty {
    display: none;
}

.cx-pack__note-name {
    font-weight: 600;
}

.cx-pack__note-sum {
    opacity: 0.75;
}

/* Поле «сколько нужно всего»: покупатель называет количество, магазин считает
   упаковки. Вид нейтральный и наследует шрифт темы — тема при желании
   переопределит его своим оформлением. */
.cx-pack-area {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
    margin: 0.75rem 0;
}

.cx-pack-area__label {
    font-size: 0.85rem;
    opacity: 0.8;
}

.cx-pack-area__input {
    font: inherit;
    font-size: 0.95rem;
    padding: 0.6rem 0.75rem;
    width: 100%;
    max-width: 260px;
    color: inherit;
    background: var(--cx-pack-field-bg, transparent);
    border: 1px solid var(--cx-pack-border, rgba(127, 127, 127, 0.35));
    border-radius: 10px;
    outline: none;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}

.cx-pack-area__input::placeholder {
    color: inherit;
    opacity: 0.45;
}

.cx-pack-area__input:focus {
    border-color: var(--cx-pack-accent, var(--primary, currentColor));
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--cx-pack-accent, var(--primary, currentColor)) 18%, transparent);
}

/* Единственная упаковка у товара, который продают только ею: выбирать нечего,
   остаётся подпись «это 8,4 м²» */
.cx-pack--single .cx-pack__list {
    display: none;
}
