/* =========================================================================
   calc.css — калькулятор стоимости (вариант «Корзина»).
   Опирается на дизайн-токены сайта (:root в templatemo_style.css).
   Десктоп: две панели. Мобайл: липкая полоса снизу + шторка (bottom sheet).
   Все селекторы под .calc__* — не конфликтуют с остальным сайтом.
   ========================================================================= */

.calc__app { max-width: 920px; margin: 0 auto; }

.calc__title {
   font-size: var(--text-2xl);
   line-height: var(--lh-heading);
   margin: 0 0 var(--space-3);
}

.calc__disclaimer {
   max-width: 920px;
   margin: var(--space-3) auto 0;
   color: var(--color-text-muted);
   font-size: var(--text-sm);
   line-height: 1.5;
   text-align: center;
}

/* Загрузка / ошибка */
.calc__loading { color: var(--color-text-muted); text-align: center; padding: var(--space-3); }
.calc__error {
   background: var(--color-bg-soft);
   border: 1px solid var(--color-gray-300);
   border-radius: var(--radius-md);
   padding: var(--space-2);
}
.calc__error-detail { color: var(--color-primary-600); font-size: var(--text-sm); }
.calc__error code {
   background: var(--color-bg-main); border: 1px solid var(--color-gray-200);
   border-radius: var(--radius-xs); padding: 1px 6px;
}

/* Бейдж-подытог */
.calc__chip-sum {
   font-size: var(--text-xs); font-weight: 600;
   padding: 2px 8px; border-radius: var(--radius-pill);
   background: rgba(255, 122, 0, 0.14); color: var(--color-primary-600);
   white-space: nowrap;
}

/* =========================================================
   Раскладка: две панели
   ========================================================= */
.calc__cart {
   display: grid;
   grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr);
   gap: var(--space-2);
   align-items: start;
}
.calc__cart-left-title,
.calc__cart-right-title {
   font-weight: 700; font-size: var(--text-sm);
   text-transform: uppercase; letter-spacing: .04em;
   color: var(--color-text-muted); margin-bottom: var(--space-1);
}

/* Левая колонка: категории (раскрывающиеся) + услуги */
.calc__cart-cat { border-bottom: 1px solid var(--color-gray-200); }
.calc__cart-cat-head {
   width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 8px;
   padding: 12px 4px; background: none; border: 0;
   font-family: inherit; font-size: var(--text-base); font-weight: 600;
   color: var(--color-text-main); cursor: pointer;
   transition: color var(--transition);
}
.calc__cart-cat-head::after { content: "▾"; color: var(--color-text-muted); transition: transform var(--transition); }
.calc__cart-cat-head:hover,
.calc__cart-cat-head.is-hovered { color: var(--color-primary-600); }
/* Раскрытая категория = активная: оранжевый текст, как активный пункт меню */
.calc__cart-cat-head.is-open { color: var(--color-primary-600); }
.calc__cart-cat-head.is-open::after { transform: rotate(180deg); color: var(--color-primary-500); }
.calc__cart-cat-body { padding-bottom: var(--space-1); }
.calc__cart-pick {
   width: 100%; display: flex; align-items: center; gap: 8px;
   padding: 10px 12px; margin-bottom: 6px;
   background: var(--color-bg-soft); border: 1px solid transparent; border-radius: var(--radius-sm);
   font-family: inherit; text-align: left; cursor: pointer; transition: all var(--transition);
}
.calc__cart-pick:hover { border-color: var(--color-primary-400); background: var(--color-primary-50); }
.calc__cart-pick.is-hovered,
.calc__cart-item.is-hovered {
   border-color: var(--color-primary-500);
   background: var(--color-primary-100);
   box-shadow: 0 0 0 1px var(--color-primary-500);
}
.calc__cart-pick-name { font-size: var(--text-sm); font-weight: 600; }
.calc__cart-pick-hint { margin-left: auto; font-size: var(--text-xs); color: var(--color-text-muted); white-space: nowrap; }
.calc__cart-pick-add {
   width: 26px; height: 26px; flex-shrink: 0;
   display: inline-flex; align-items: center; justify-content: center;
   border-radius: var(--radius-pill); background: var(--color-primary-500); color: #fff; font-size: 18px; line-height: 1;
}
.calc__cart-pick.is-added { opacity: 0.55; }
.calc__cart-pick.is-added .calc__cart-pick-add { background: var(--color-text-muted); }

/* Правая панель / шторка */
.calc__cart-right {
   background: var(--color-bg-soft);
   border: 1px solid var(--color-gray-200);
   border-radius: var(--radius-md);
   padding: var(--space-2);
   min-height: 160px;
}
.calc__cart-list.is-empty::before {
   content: attr(data-empty);
   display: block; color: var(--color-text-muted); font-size: var(--text-sm);
   text-align: center; padding: var(--space-3) var(--space-1);
}
.calc__cart-item {
   background: var(--color-bg-main);
   border: 1px solid var(--color-gray-200);
   border-radius: var(--radius-sm);
   padding: 12px; margin-bottom: 10px;
   transition: border-color var(--transition), box-shadow var(--transition);
}
/* Подсветка позиции и её поля при наведении/фокусе — легче найти нужный блок */
.calc__cart-item:hover,
.calc__cart-item:focus-within {
   border-color: var(--color-primary-500);
   box-shadow: var(--shadow-sm);
}
.calc__cart-item:hover .calc__step-val,
.calc__cart-item:focus-within .calc__step-val {
   border-color: var(--color-primary-500);
   background: var(--color-bg-main);
}
.calc__cart-item-head { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.calc__cart-item-name { font-weight: 600; font-size: var(--text-sm); }
.calc__cart-remove {
   width: 26px; height: 26px; flex-shrink: 0; border: 0; border-radius: var(--radius-pill);
   background: var(--color-gray-100); color: var(--color-gray-500);
   font-size: 18px; line-height: 1; cursor: pointer; transition: all var(--transition);
}
.calc__cart-remove:hover { background: #ffe0e0; color: #c0392b; }
.calc__cart-item-controls { display: flex; align-items: center; gap: var(--space-2); margin-top: 10px; }
.calc__cart-item-sum { margin-left: auto; font-weight: 700; color: var(--color-primary-600); white-space: nowrap; }

/* Степпер −/+ */
.calc__stepper { display: inline-flex; align-items: center; gap: 6px; }
.calc__step {
   width: 38px; height: 38px; flex-shrink: 0;
   border: 1px solid var(--color-gray-300); background: var(--color-bg-main);
   border-radius: var(--radius-pill); font-size: 22px; line-height: 1;
   color: var(--color-primary-600); cursor: pointer; transition: all var(--transition);
}
.calc__step:hover { border-color: var(--color-primary-500); background: var(--color-primary-50); }
.calc__step:active { transform: scale(0.94); }
.calc__step-val {
   width: 60px; height: 38px; text-align: center;
   border: 1px solid var(--color-gray-300); border-radius: var(--radius-sm);
   background: var(--color-bg-soft); font-family: inherit; font-size: var(--text-base);
   -moz-appearance: textfield;
}
.calc__step-val::-webkit-outer-spin-button,
.calc__step-val::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
.calc__unit { color: var(--color-text-muted); font-size: var(--text-sm); }

/* Доп. услуги */
.calc__addons {
   display: flex; flex-direction: column; gap: 6px;
   margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--color-gray-200);
}
.calc__addon { display: flex; align-items: center; gap: 8px; font-size: var(--text-sm); cursor: pointer; }
.calc__addon input { accent-color: var(--color-primary-500); width: 18px; height: 18px; flex-shrink: 0; }
.calc__addon-price { margin-left: auto; color: var(--color-text-muted); white-space: nowrap; }

/* =========================================================
   Итог-бар (липкий)
   ========================================================= */
.calc__bar {
   position: sticky; bottom: var(--space-1); z-index: 40;   /* ниже фикс-шапки (--z-header: 100), чтобы не перекрывать её */
   display: flex; align-items: center; justify-content: space-between;
   gap: var(--space-2); flex-wrap: wrap; margin-top: var(--space-2);
   background: var(--color-bg-main); border: 1px solid var(--color-gray-200);
   border-radius: var(--radius-md); box-shadow: var(--shadow-md); padding: var(--space-2);
}
.calc__bar-total { display: flex; align-items: baseline; flex-wrap: wrap; gap: 8px; }
.calc__bar-label { color: var(--color-text-muted); }
.calc__bar-value { font-size: var(--text-xl); color: var(--color-primary-600); }
.calc__cta, .calc__bar-open { white-space: nowrap; }

/* Десктоп: служебные элементы шторки скрыты (заголовок «Ваш расчёт» остаётся) */
.calc__sheet-handle,
.calc__sheet-close,
.calc__sheet-foot,
.calc__sheet-backdrop,
.calc__bar-open,
.calc__bar-count { display: none; }

/* =========================================================
   Мобайл: шторка + липкая полоса
   ========================================================= */
/* Липкая полоса поверх контента, но выше bottom-menu (виден до 1024px) */
@media (max-width: 1023px) {
   .calc__bar { bottom: 76px; }
}

@media (max-width: 700px) {
   .calc__cart { grid-template-columns: 1fr; }

   /* Правая панель → выезжающая снизу шторка */
   .calc__cart-right {
      position: fixed; left: 0; right: 0; bottom: 0; z-index: 1000;
      max-height: 85vh; display: flex; flex-direction: column;
      padding: 0; background: var(--color-bg-main); border: 0;
      border-radius: var(--radius-lg) var(--radius-lg) 0 0;
      box-shadow: var(--shadow-lg);
      transform: translateY(110%); transition: transform .28s ease;
   }
   .calc--cart.is-sheet-open .calc__cart-right { transform: translateY(0); }

   .calc__sheet-head {
      display: flex; align-items: center; gap: 8px; position: relative;
      padding: var(--space-2); border-bottom: 1px solid var(--color-gray-200);
   }
   .calc__sheet-handle {
      display: block; position: absolute; top: 6px; left: 50%; transform: translateX(-50%);
      width: 40px; height: 4px; border-radius: 2px; background: var(--color-gray-300);
   }
   .calc__sheet-head .calc__cart-right-title { margin: 4px 0 0; font-weight: 700; }
   .calc__sheet-close {
      display: inline-flex; align-items: center; justify-content: center;
      margin-left: auto; width: 32px; height: 32px;
      border: 0; border-radius: var(--radius-pill);
      background: var(--color-gray-100); color: var(--color-gray-500);
      font-size: 22px; line-height: 1; cursor: pointer;
   }

   .calc__cart-list {
      flex: 1 1 auto; overflow-y: auto; -webkit-overflow-scrolling: touch; padding: var(--space-2);
   }

   .calc__sheet-foot {
      display: flex; align-items: center; justify-content: space-between; gap: var(--space-2);
      padding: var(--space-2); border-top: 1px solid var(--color-gray-200); background: var(--color-bg-main);
   }
   .calc__sheet-foot .calc__bar-value { font-size: var(--text-xl); color: var(--color-primary-600); }

   .calc__sheet-backdrop { display: block; position: fixed; inset: 0; z-index: 999; background: rgba(15, 17, 21, .45); }
   .calc__sheet-backdrop[hidden] { display: none; }

   /* Полоса: показать счётчик и кнопку «Расчёт», скрыть прямую CTA */
   .calc__bar-open { display: inline-flex; }
   .calc__bar .calc__cta { display: none; }
   .calc__bar-count { display: inline-block; font-size: var(--text-xs); color: var(--color-text-muted); }
}
