/* Luvete — направление C: красный #E01F26, жёлтый #FFD400, шрифт Golos Text.
   Значения и роли токенов описаны в doc/DESIGN_SYSTEM.md. */
@font-face { font-family:"Golos Text"; font-style:normal; font-weight:400 900; font-display:swap; src:url("fonts/golos/golos-cyrillic-ext.woff2") format("woff2"); unicode-range:U+0460-052F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F; }
@font-face { font-family:"Golos Text"; font-style:normal; font-weight:400 900; font-display:swap; src:url("fonts/golos/golos-cyrillic.woff2") format("woff2"); unicode-range:U+0301,U+0400-045F,U+0490-0491,U+04B0-04B1,U+2116; }
@font-face { font-family:"Golos Text"; font-style:normal; font-weight:400 900; font-display:swap; src:url("fonts/golos/golos-latin-ext.woff2") format("woff2"); unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF; }
@font-face { font-family:"Golos Text"; font-style:normal; font-weight:400 900; font-display:swap; src:url("fonts/golos/golos-latin.woff2") format("woff2"); unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD; }

:root {
    --luvete-red:#E01F26; --luvete-red-d:#B0161C; --luvete-yellow:#FFD400;
    --luvete-surface:#fff; --luvete-surface-muted:#F7F9FB; --luvete-bg:#F1F3F6;
    --luvete-text:#14161A; --luvete-text-2:#47505C;
    --luvete-muted:#6B7684; --luvete-placeholder:#8A93A0;
    --luvete-border:#E7EBF0; --luvete-border-strong:#CFD6DF;
    --luvete-in-stock:#157A47; --luvete-low-stock:#C2181E;
    --luvete-radius-sm:8px; --luvete-radius-md:12px;
    --luvete-shadow-sm:0 1px 2px rgba(20,22,26,.06); --luvete-shadow-hover:0 6px 18px rgba(20,22,26,.1);
    --luvete-space-1:8px; --luvete-space-2:12px; --luvete-space-3:16px; --luvete-space-4:24px;
    /* Внешний отступ между блоками страницы (шапка→крошки, карточка→секция…): один везде. */
    --luvete-block-gap:12px;
    --luvete-layout-gap:var(--luvete-block-gap);
    --luvete-pagination-gap:18px;
    --luvete-text-xs:.75rem; --luvete-text-sm:.875rem; --luvete-text-base:1rem;
    --luvete-text-lg:1.25rem; --luvete-text-xl:1.5rem; --luvete-text-2xl:2rem;
    /* Три размера заголовков на весь сайт: h1 страницы/плашки, h2 секции, h3 внутри карточек.
       Крупнее только дисплейный заголовок первого экрана. */
    --luvete-h1:var(--luvete-text-xl); --luvete-h2:var(--luvete-text-lg); --luvete-h3:var(--luvete-text-base);
    /* Кнопки: одна геометрия и один набор состояний для primary/light/dark. */
    --luvete-btn-height:46px; --luvete-btn-radius:10px; --luvete-btn-weight:800;
    --luvete-focus-ring:0 0 0 3px rgba(224,31,38,.25);
    --bs-body-font-family:"Golos Text", system-ui, sans-serif;
    --bs-font-sans-serif:"Golos Text", system-ui, sans-serif;
    --bs-body-font-size:var(--luvete-text-base);
    --bs-primary:var(--luvete-red);
    --bs-border-color:var(--luvete-border);
    --bs-body-color:var(--luvete-text);
    --bs-body-bg:var(--luvete-bg);
    /* Ссылки в тексте — цвет темы, а не бутстраповский синий. */
    --bs-link-color:var(--luvete-red);
    --bs-link-hover-color:var(--luvete-red-d);
    --bs-link-color-rgb:224,31,38;
    --bs-link-hover-color-rgb:176,22,28;
}
body { font-family:"Golos Text", system-ui, sans-serif; font-size:var(--luvete-text-base); }

/* Bootstrap берёт фон полей из --bs-body-bg: после перехода на серый фон страницы
   все инпуты сайта стали серыми и без читаемой рамки. Возвращаем полям вид полей. */
.form-control, .form-select { background-color:var(--luvete-surface); border-color:var(--luvete-border-strong); }
/* Bootstrap на :focus повторно ставит фон из --bs-body-bg — с серым фоном страницы
   поле в фокусе становилось серым. Фон держим свой и здесь. */
.form-control:focus, .form-select:focus { border-color:var(--luvete-red); background-color:var(--luvete-surface); box-shadow:0 0 0 3px rgba(224,31,38,.12); }
.form-control::placeholder { color:var(--luvete-placeholder); }
.form-control:disabled, .form-control[readonly] { background-color:var(--luvete-surface-muted); }
/* Та же история с .list-group-item: серый фон страницы просвечивал в выпадающих списках. */
.list-group-item { background-color:var(--luvete-surface); }
.list-group-item-action:hover, .list-group-item-action:focus { background-color:var(--luvete-surface-muted); }
h1 { font-size:var(--luvete-h1); font-weight:800; line-height:1.2; letter-spacing:-.02em; }
h2 { font-size:var(--luvete-h2); font-weight:800; line-height:1.25; letter-spacing:-.01em; }
h3 { font-size:var(--luvete-h3); font-weight:700; line-height:1.3; }
h3 { font-size:var(--luvete-text-lg); }
h4, h5, h6 { font-size:var(--luvete-text-base); }

/* Системные уведомления не перекрывают центр страницы и выглядят как компактные сообщения. */
#alert { top:116px; right:20px; left:auto; width:min(420px, calc(100vw - 40px)); margin-left:0; }
#alert .alert { display:block; min-height:56px; margin-bottom:12px; padding:14px 48px 14px 16px; border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,.13); line-height:1.45; }
#alert .alert > .fa-solid { margin-right:8px; font-size:18px; vertical-align:-2px; }
#alert .alert > a { color:inherit; font-weight:700; }
#alert .alert-dismissible > .btn-close { right:14px; }
#alert .luvete-toast > .btn-close { position:absolute; top:0; right:14px; z-index:2; padding:1.25rem 1rem; }
#alert .luvete-toast { display:flex; align-items:center; gap:14px; padding:12px 44px 12px 12px; border:1px solid var(--luvete-border); background:var(--luvete-surface); color:var(--luvete-text); }
#alert .luvete-toast img { width:56px; height:56px; flex:0 0 56px; border-radius:8px; object-fit:contain; background:var(--luvete-surface-muted); }
.luvete-toast-body { display:grid; min-width:0; gap:4px; justify-items:start; }
.luvete-toast-body strong { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; font-size:var(--luvete-text-sm); line-height:1.3; }
.luvete-toast-body span { color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
.luvete-toast-body .btn { margin-top:4px; }
.alert-dismissible { padding-right:56px; }
.alert-dismissible > .btn-close { top:50%; right:12px; width:32px; min-width:32px !important; height:32px; min-height:32px !important; padding:0 !important; border-radius:50%; background-color:transparent; background-size:12px auto; opacity:.55; transform:translateY(-50%); }
.alert-dismissible > .btn-close:hover { background-color:rgba(0,0,0,.07); opacity:.8; }

/* Шапка по макету C: тонкая тёмная полоса (телефоны · вход · язык) и одна строка
   «лого · Каталог · поиск · Закладки/Кабинет · жёлтая корзина». Меню инфо-страниц
   живёт в панели каталога и в подвале, отдельной красной плашки нет. */
.luvete-topbar { background:var(--luvete-text); color:#fff; font-size:var(--luvete-text-sm); }
.luvete-topbar-row { display:grid; min-height:40px; grid-template-columns:1fr auto 1fr; align-items:center; gap:16px; }
.luvete-topbar-usp { display:inline-flex; align-items:center; gap:8px; font-weight:600; white-space:nowrap; }
.luvete-topbar-usp i { color:var(--luvete-yellow); }
.luvete-topbar-tools { grid-column:3; justify-self:end; }
.luvete-lang-code { display:inline-flex; min-width:26px; height:18px; align-items:center; justify-content:center; padding:0 5px; border-radius:4px; background:rgba(255,255,255,.14); font-size:11px; font-weight:800; letter-spacing:.04em; line-height:1; }
#form-language .dropdown-menu { min-width:0; }
#form-language .dropdown-item { padding:6px 12px; }
#form-language .dropdown-item .luvete-lang-code { background:var(--luvete-surface-muted); color:var(--luvete-text); }
#form-language .dropdown-item.active .luvete-lang-code { background:var(--luvete-red); color:#fff; }
#form-language .dropdown-item.active { background:var(--luvete-surface-muted); color:var(--luvete-text); }
.luvete-topbar a { color:#fff; text-decoration:none; }
.luvete-topbar a:hover { color:var(--luvete-yellow); }
.luvete-phones { display:flex; flex-wrap:nowrap; align-items:center; gap:0 8px; white-space:nowrap; }
.luvete-phones a { display:inline-flex; min-height:40px; align-items:center; font-weight:600; }
.luvete-phones a + a::before { content:"·"; margin-right:8px; color:#6b7280; }
.luvete-phones-more { display:none; }
.luvete-phones-more-toggle { display:inline-flex; min-height:40px; align-items:center; gap:6px; padding:0; border:0; background:transparent; color:var(--luvete-yellow); font-weight:600; }
.luvete-phones-more-toggle i { font-size:10px; }
.luvete-phones-more .is-n3 { display:none; }
.luvete-phones-more .dropdown-menu { min-width:0; padding:6px 0; }
.luvete-phones-more .dropdown-item { color:var(--luvete-text); font-weight:600; }
@media (min-width:992px) and (max-width:1199.98px) { .luvete-phones:has(a:nth-of-type(3)) .luvete-phones-more { display:block; } .luvete-phones-more .is-n2 { display:none; } .luvete-phones-more .is-n3 { display:inline; } }
@media (min-width:768px) and (max-width:991.98px) { .luvete-phones:has(a:nth-of-type(2)) .luvete-phones-more { display:block; } }
.luvete-topbar-tools { display:flex; align-items:center; gap:18px; }
.luvete-topbar-tools > a { display:inline-flex; min-height:40px; align-items:center; gap:6px; }
.luvete-topbar-tools > a > i { font-size:12px; opacity:.85; }
#form-language .dropdown-toggle { display:inline-flex; min-height:40px; align-items:center; cursor:pointer; }
#form-language .dropdown-toggle img { margin-right:8px; }
#form-language .dropdown-toggle i { margin-left:6px; }
#form-language .dropdown-menu { min-width:150px; margin-top:8px; padding:6px; border-color:var(--luvete-border); box-shadow:0 6px 18px rgba(0,0,0,.14); }
#form-language .dropdown-item { display:flex; min-height:36px; align-items:center; gap:8px; padding:5px 10px; border-radius:4px; color:var(--luvete-text); }
#form-language .dropdown-item:hover { background:var(--luvete-surface-muted); color:var(--luvete-red); }

.luvete-header { padding:10px 0; background:var(--luvete-surface); border-bottom:1px solid var(--luvete-border); }
.luvete-header-row { display:grid; grid-template-columns:auto auto minmax(0, 1fr) auto auto; align-items:center; gap:16px; }
.luvete-header-burger { display:none; }
/* Размер SVG следует размеру логотипа в шапке, футере и контактах. */
.luvete-wordmark { display:inline-flex; align-items:center; min-height:1em; font-size:1.7rem; line-height:1; text-decoration:none; }
.luvete-wordmark img { display:block; width:3.86em; height:auto; }
#logo { margin:0; }
.luvete-header-catalog { display:inline-flex; min-height:46px; align-items:center; gap:10px; padding:0 20px; border:0; border-radius:10px; background:var(--luvete-red); color:#fff; font-weight:700; white-space:nowrap; }
.luvete-header-catalog:hover, .luvete-header-catalog:focus { background:var(--luvete-red-d); color:#fff; }
.luvete-header-catalog.is-open { background:var(--luvete-text); }
/* Мегаменю: под строкой шапки во всю ширину контейнера; на телефоне вместо него шторка. */
.luvete-header-row { position:relative; }
.luvete-mega { position:absolute; z-index:1050; top:calc(100% + 10px); right:0; left:0; display:grid; grid-template-columns:300px minmax(0, 1fr); grid-template-rows:minmax(0, 1fr); max-height:min(86vh, 900px); overflow:hidden; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); box-shadow:0 18px 48px rgba(0,0,0,.14); }
.luvete-mega[hidden] { display:none; }
/* min-height:0 обязателен обеим колонкам: у элемента грида она по умолчанию auto, колонка
   растягивается по содержимому и overflow-y:auto в ней не работает — панель просто срезала
   контент своим overflow:hidden, и нижний ряд «Популярного в разделе» обрывался без прокрутки. */
.luvete-mega-roots { margin:0; min-height:0; padding:8px; overflow-y:auto; border-right:1px solid var(--luvete-border); background:var(--luvete-surface-muted); list-style:none; }
.luvete-mega-root { display:flex; align-items:center; gap:10px; padding:8px 10px; border-radius:10px; color:var(--luvete-text); font-weight:600; text-decoration:none; }
.luvete-mega-root img { width:28px; height:28px; border-radius:6px; object-fit:cover; }
.luvete-mega-root span { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.luvete-mega-root small, .luvete-mega-pane-title small, .luvete-mega-children small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:500; font-variant-numeric:tabular-nums; }
.luvete-mega-root i { color:var(--luvete-muted); font-size:11px; }
.luvete-mega-root.is-active, .luvete-mega-root:hover { background:var(--luvete-surface); color:var(--luvete-red); box-shadow:var(--luvete-shadow-sm); }
.luvete-mega-panes { min-height:0; overflow-y:auto; padding:22px 26px; scrollbar-gutter:stable; }
/* Пока правой колонке есть куда прокручиваться, внизу панели — мягкое затухание: без него
   нижний ряд «Популярного в разделе» читается как обрезанный краем, а не как продолжение.
   Класс снимает luvete-ui.js, когда прокрутка дошла до конца. */
.luvete-mega.has-more::after { content:''; position:absolute; right:1px; bottom:1px; left:301px; height:26px; border-radius:0 0 13px 0; background:linear-gradient(to top, var(--luvete-surface), transparent); pointer-events:none; }
.luvete-mega-pane { display:none; }
.luvete-mega-pane.is-active { display:block; }
.luvete-mega-pane-title { display:inline-flex; align-items:center; gap:8px; margin-bottom:14px; color:var(--luvete-text); font-size:var(--luvete-text-lg); font-weight:800; text-decoration:none; }
.luvete-mega-pane-title:hover { color:var(--luvete-red); }
.luvete-mega-pane-title i { color:var(--luvete-red); font-size:14px; }
.luvete-mega-children { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:8px 14px; margin:0; padding:0; list-style:none; }
.luvete-mega-children a { display:flex; align-items:center; gap:10px; padding:6px 10px 6px 6px; border-radius:10px; color:var(--luvete-text); text-decoration:none; }
.luvete-mega-children a:hover { background:var(--luvete-bg); color:var(--luvete-red); }
.luvete-mega-children img, .luvete-mega-child-blank { width:40px; height:40px; flex:0 0 40px; border-radius:50%; background:var(--luvete-bg); object-fit:cover; }
.luvete-mega-children span { flex:1 1 auto; min-width:0; line-height:1.3; }
.luvete-mega-backdrop { position:fixed; z-index:1040; inset:0; background:rgba(20,22,26,.45); }
.luvete-mega-backdrop[hidden] { display:none; }
/* Шапка над затемнением: мегаменю — её потомок, поэтому и оно наверху, а «Каталог» остаётся ярким. */
@media (min-width:992px) { .luvete-header { position:relative; z-index:1045; } }
.luvete-mega-popular { margin-top:22px; padding-top:16px; border-top:1px solid var(--luvete-border); }
.luvete-mega-popular-title { margin-bottom:10px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:800; letter-spacing:.06em; text-transform:uppercase; }
.luvete-mega-popular-list { display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:12px; }
.luvete-mega-product { display:grid; gap:6px; padding:8px; border:1px solid var(--luvete-border); border-radius:10px; color:var(--luvete-text); font-size:var(--luvete-text-xs); line-height:1.3; text-decoration:none; }
.luvete-mega-product img { width:60px; height:60px; margin:0 auto; object-fit:contain; }
.luvete-mega-product span { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.luvete-mega-product b { color:var(--luvete-red); }
.luvete-mega-product:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-mega-sale { display:inline-flex; align-items:center; gap:8px; margin-top:18px; padding:8px 14px; border-radius:999px; background:var(--luvete-yellow); color:var(--luvete-text); font-weight:700; text-decoration:none; }
.luvete-mega-sale small { color:var(--luvete-text-2); font-weight:600; }
.luvete-mega-sale:hover { color:var(--luvete-red); }
@media (max-width:991.98px) { .luvete-mega { display:none !important; } }
.luvete-search { display:flex; align-items:stretch; min-height:46px; overflow:hidden; border:1px solid var(--luvete-border-strong); border-radius:10px; background:var(--luvete-surface); }
.luvete-search:focus-within { border-color:var(--luvete-red); box-shadow:0 0 0 3px rgba(224,31,38,.12); }
.luvete-search-input { flex:1 1 auto; min-width:0; border:0 !important; border-radius:0; box-shadow:none !important; background:transparent !important; font-size:var(--luvete-text-base); }
.luvete-search-button { display:inline-flex; width:52px; min-width:52px; align-items:center; justify-content:center; border:0; border-radius:0; background:var(--luvete-text); color:#fff; }
.luvete-search-button:hover { background:var(--luvete-red); color:#fff; }
.luvete-header-links { display:flex; align-items:center; gap:6px; }
.luvete-header-link { display:grid; min-width:64px; height:46px; justify-items:center; align-content:center; gap:3px; padding:0 8px; border:0; border-radius:8px; background:transparent; color:var(--luvete-text-2); font-size:var(--luvete-text-xs); font-weight:600; text-decoration:none; }
.luvete-header-link i { font-size:18px; }
.luvete-header-link-icon { position:relative; display:inline-flex; }
.luvete-header-link-icon .luvete-cart-count { top:-8px; right:-12px; }
.luvete-header-link:hover { background:var(--luvete-surface-muted); color:var(--luvete-red); }
.luvete-header-link.dropdown-toggle::after { display:none; }
.luvete-header-links .dropdown-menu { margin-top:6px; padding:6px; border-color:var(--luvete-border); border-radius:10px; box-shadow:0 8px 24px rgba(0,0,0,.12); }
.luvete-header-links .dropdown-item { border-radius:6px; }
/* margin-bottom у #cart из CSS ядра сдвигал кнопку на 5px выше соседей. */
#cart { margin:0; }
.luvete-cart-button { position:relative; display:inline-flex; min-height:46px; align-items:center; gap:10px; padding:0 18px 0 14px; border:0; border-radius:10px; background:var(--luvete-yellow) !important; color:var(--luvete-text) !important; font-weight:800; white-space:nowrap; }
.luvete-cart-button:hover, .luvete-cart-button:focus, .luvete-cart-button.show { background:#f2c800 !important; color:var(--luvete-text) !important; }
.luvete-cart-button.dropdown-toggle::after { display:none; }
.luvete-cart-icon { display:inline-flex; font-size:18px; }
/* Счётчик — на углу жёлтой кнопки, а не поверх иконки. */
.luvete-cart-count { position:absolute; top:-7px; right:-7px; min-width:18px; height:18px; padding:0 5px; border-radius:9px; background:var(--luvete-red); color:#fff; font-size:11px; font-weight:800; line-height:18px; text-align:center; }

@media (min-width:992px) and (max-width:1199.98px) {
    .luvete-header-row { gap:10px; }
    .luvete-header-catalog { padding:0 14px; }
    .luvete-header-link { min-width:52px; }
    .luvete-phones a:nth-of-type(n+3) { display:none; }
}

/* Кнопки: состояния через переменные Bootstrap, чтобы hover/active/disabled/focus не ловить по страницам.
   primary — красная, light — белая с рамкой и красной подсветкой, dark — чёрная (плашки, лупа). */
.btn { --bs-btn-border-radius:var(--luvete-btn-radius); --bs-btn-font-weight:var(--luvete-btn-weight); --bs-btn-focus-box-shadow:var(--luvete-focus-ring); --bs-btn-disabled-opacity:.5; }
.btn-primary { --bs-btn-bg:var(--luvete-red); --bs-btn-border-color:var(--luvete-red); --bs-btn-color:#fff; --bs-btn-hover-bg:var(--luvete-red-d); --bs-btn-hover-border-color:var(--luvete-red-d); --bs-btn-hover-color:#fff; --bs-btn-active-bg:var(--luvete-red-d); --bs-btn-active-border-color:var(--luvete-red-d); --bs-btn-active-color:#fff; --bs-btn-disabled-bg:var(--luvete-red); --bs-btn-disabled-border-color:var(--luvete-red); --bs-btn-disabled-color:#fff; }
.btn-light { --bs-btn-bg:var(--luvete-surface); --bs-btn-border-color:var(--luvete-border-strong); --bs-btn-color:var(--luvete-text); --bs-btn-hover-bg:rgba(224,31,38,.06); --bs-btn-hover-border-color:var(--luvete-red); --bs-btn-hover-color:var(--luvete-red); --bs-btn-active-bg:rgba(224,31,38,.1); --bs-btn-active-border-color:var(--luvete-red); --bs-btn-active-color:var(--luvete-red); --bs-btn-disabled-bg:var(--luvete-surface); --bs-btn-disabled-border-color:var(--luvete-border); --bs-btn-disabled-color:var(--luvete-muted); }
.btn-dark { --bs-btn-bg:var(--luvete-text); --bs-btn-border-color:var(--luvete-text); --bs-btn-color:#fff; --bs-btn-hover-bg:var(--luvete-red); --bs-btn-hover-border-color:var(--luvete-red); --bs-btn-hover-color:#fff; --bs-btn-active-bg:var(--luvete-red-d); --bs-btn-active-border-color:var(--luvete-red-d); --bs-btn-active-color:#fff; }
.btn-danger { --bs-btn-bg:var(--luvete-surface); --bs-btn-border-color:var(--luvete-border-strong); --bs-btn-color:var(--luvete-red); --bs-btn-hover-bg:var(--luvete-red); --bs-btn-hover-border-color:var(--luvete-red); --bs-btn-hover-color:#fff; --bs-btn-active-bg:var(--luvete-red-d); --bs-btn-active-border-color:var(--luvete-red-d); --bs-btn-active-color:#fff; }
/* Ссылки и поля: единое кольцо фокуса с клавиатуры. */
a:focus-visible, button:focus-visible, .form-control:focus, .form-select:focus { outline:0; box-shadow:var(--luvete-focus-ring); border-color:var(--luvete-red); }

/* Мини-корзина: компактные товарные строки, спокойные итоги и явные действия. */
#cart .dropdown-menu { width:min(500px, calc(100vw - 24px)); margin-top:8px; padding:0 !important; overflow:hidden; border:1px solid var(--luvete-border); border-radius:12px; background:#fff; box-shadow:0 14px 36px rgba(35,35,35,.18); }
#cart .dropdown-menu > li { min-width:0; }
#cart .dropdown-menu > li > .table { display:block; max-height:340px; margin:0 !important; padding:6px 12px; overflow-y:auto; }
#cart .dropdown-menu > li > .table > tbody { display:block; }
#cart .dropdown-menu > li > .table tr { display:grid; grid-template-columns:52px minmax(160px, 1fr) auto 68px 32px; gap:9px; align-items:center; padding:9px 0; border-bottom:1px solid var(--luvete-border); background:#fff; }
#cart .dropdown-menu > li > .table tr:last-child { border-bottom:0; }
#cart .dropdown-menu > li > .table td { display:block; width:auto !important; padding:0; border:0; background:transparent; box-shadow:none !important; text-align:left !important; }
#cart .dropdown-menu > li > .table td:first-child { align-self:start; }
#cart .dropdown-menu > li > .table td:first-child .img-thumbnail { width:52px; min-width:52px; height:52px; padding:3px; border-color:var(--luvete-border); border-radius:8px; object-fit:contain; }
#cart .dropdown-menu > li > .table td:nth-child(2) > a { display:block; margin-bottom:3px; color:var(--luvete-text); font-weight:600; line-height:1.3; text-decoration:none; }
#cart .dropdown-menu > li > .table td:nth-child(2) > a:hover { color:var(--luvete-red); }
#cart .dropdown-menu > li > .table td:nth-child(2) small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
#cart .dropdown-menu > li > .table td:nth-child(3) { padding:3px 7px; border-radius:999px; background:var(--luvete-surface-muted); color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
#cart .dropdown-menu > li > .table td:nth-child(4) { color:var(--luvete-text); font-weight:700; text-align:right !important; white-space:nowrap; }
#cart .dropdown-menu > li > .table td:last-child .btn { display:flex; width:32px; min-width:32px; min-height:32px; align-items:center; justify-content:center; padding:0; border:0; border-radius:8px; background:rgba(224,31,38,.1); color:var(--luvete-red); }
#cart .dropdown-menu > li > .table td:last-child .btn:hover { background:var(--luvete-red); color:#fff; }
#cart .dropdown-menu > li > div { padding:9px 12px 12px; border-top:1px solid var(--luvete-border); background:var(--luvete-surface-muted); }
#cart .dropdown-menu > li > div .table { margin:0 0 9px !important; border:0 !important; border-collapse:collapse; background:transparent; box-shadow:none !important; }
#cart .dropdown-menu > li > div .table tr { border:0 !important; }
#cart .dropdown-menu > li > div .table tr:first-child:not(:last-child) { display:none; }
#cart .dropdown-menu > li > div .table td { padding:2px 0; border:0 !important; background:transparent; box-shadow:none !important; color:var(--luvete-muted); }
#cart .dropdown-menu > li > div .table td:first-child { text-align:left !important; }
#cart .dropdown-menu > li > div .table td:last-child { color:var(--luvete-text); font-weight:600; text-align:right !important; }
#cart .dropdown-menu > li > div .table tr:last-child td { padding-top:6px; border-top:1px solid var(--luvete-border) !important; color:var(--luvete-text); font-size:var(--luvete-text-base); font-weight:700; }
#cart .dropdown-menu > li > div > p { display:flex; gap:0; margin:0; font-size:0; line-height:0; text-align:initial !important; }
#cart .dropdown-menu > li > div > p > a { display:flex; min-width:0; min-height:38px; flex:1 1 0; align-items:center; justify-content:center; gap:7px; padding:6px 10px; border:1px solid var(--luvete-border); border-radius:8px; background:#fff; color:var(--luvete-text); font-size:var(--luvete-text-sm); line-height:1.2; text-align:center; text-decoration:none; }
#cart .dropdown-menu > li > div > p > a + a { margin-left:8px; }
#cart .dropdown-menu > li > div > p > a:last-child { border-color:var(--luvete-red); background:var(--luvete-red); color:#fff; }
#cart .dropdown-menu > li > div > p > a:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
#cart .dropdown-menu > li > div > p > a:last-child:hover { background:var(--luvete-red-d); color:#fff; }
#cart .dropdown-menu > .text-center { padding:28px 20px !important; color:var(--luvete-muted); }

/* Цены — красные */
.price-new, .price { color:var(--luvete-red); }

/* Первый экран главной: новинки + быстрые входы в ключевые категории. */


/* Первый экран по макету C: слева список категорий со счётчиками, в центре тёмный баннер,
   справа две карточки категорий и жёлтая плашка распродажи. */
.luvete-hero { margin:var(--luvete-block-gap) 0; }
.luvete-hero-grid { display:grid; grid-template-columns:232px minmax(0, 1fr) 264px; gap:14px; }
.luvete-hero-grid-no-sidebar { grid-template-columns:minmax(0, 1fr) 264px; }
/* Строки растягиваются до потолка, остаток уходит над «Усі категорії»: короткий список из настроек модуля не разлетается по высоте */
.luvete-hero-sidebar { display:flex; flex-direction:column; padding:4px 0; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.luvete-hero-sidebar-item { display:flex; flex:1 1 auto; min-height:36px; max-height:72px; align-items:center; justify-content:space-between; gap:10px; padding:6px 16px; border-left:3px solid transparent; color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:600; line-height:1.3; text-decoration:none; }
.luvete-hero-sidebar-item > span { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.luvete-hero-sidebar-item small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:500; }
.luvete-hero-sidebar-item:hover { border-left-color:var(--luvete-red); background:rgba(224,31,38,.06); color:var(--luvete-text); }
.luvete-hero-sidebar-item.is-sale, .luvete-hero-sidebar-item.is-sale small { color:var(--luvete-red); font-weight:800; }
.luvete-hero-sidebar-all { flex:none; max-height:none; margin-top:auto; border:0; border-top:1px solid var(--luvete-border); background:transparent; color:var(--luvete-red); text-align:left; }
.luvete-hero-sidebar-all i { font-size:12px; }
.luvete-hero-feature { display:grid; min-width:0; overflow:hidden; grid-template-columns:minmax(0, 1fr) minmax(0, 46%); border-radius:14px; background:var(--luvete-text); color:#fff; }
.luvete-hero-copy { z-index:1; display:flex; min-width:0; flex-direction:column; align-items:flex-start; justify-content:center; padding:clamp(22px, 2.4vw, 34px); }
.luvete-hero-eyebrow { display:inline-block; margin-bottom:16px; padding:5px 12px; border-radius:6px; background:var(--luvete-yellow); color:var(--luvete-text); font-size:var(--luvete-text-xs); font-weight:800; letter-spacing:.08em; text-transform:uppercase; }
.luvete-hero h1 { max-width:none; margin:0 0 12px; color:#fff; font-size:clamp(1.9rem, 2.6vw, 2.6rem); font-weight:800; line-height:1.08; letter-spacing:-.03em; }
.luvete-hero-copy p { max-width:34ch; margin:0 0 20px; color:rgba(255,255,255,.72); line-height:1.5; }
.luvete-hero-button { display:inline-flex; min-height:48px; align-items:center; gap:8px; padding:10px 22px; border-radius:10px; font-weight:700; }
.luvete-hero-media { min-width:0; min-height:0; overflow:hidden; }
.luvete-hero-media img { display:block; width:100%; height:100%; object-fit:cover; object-position:center top; }
.luvete-hero-side { display:grid; min-width:0; grid-auto-rows:1fr; gap:12px; }
/* Плашка распродажи, когда она есть, остаётся по контенту; без неё карточки делят высоту ровно. */
.luvete-hero-side:has(.luvete-hero-sale) { grid-auto-rows:auto; grid-template-rows:1fr 1fr auto; }
.luvete-hero-card { display:flex; min-width:0; align-items:center; gap:14px; padding:16px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); color:var(--luvete-text); text-decoration:none; transition:box-shadow .15s, transform .15s; }
.luvete-hero-card img { width:72px; height:72px; flex:0 0 72px; border-radius:12px; object-fit:cover; background:var(--luvete-surface-muted); }
.luvete-hero-card-text { display:grid; gap:4px; min-width:0; }
.luvete-hero-card strong { font-size:var(--luvete-text-base); line-height:1.25; overflow-wrap:anywhere; }
.luvete-hero-card small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
.luvete-hero-card:hover { color:var(--luvete-text); box-shadow:var(--luvete-shadow-hover); transform:translateY(-2px); }
.luvete-hero-sale { display:grid; gap:4px; padding:16px 18px; border-radius:14px; background:var(--luvete-yellow); color:var(--luvete-text); text-decoration:none; }
.luvete-hero-sale strong { font-size:var(--luvete-text-lg); line-height:1.2; }
.luvete-hero-sale small { font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-hero-sale-button { justify-self:start; min-width:0; min-height:40px; margin-top:8px; padding:0 18px; border-radius:8px; background:var(--luvete-text); color:#fff; font-weight:700; line-height:40px; }
.luvete-hero-sale:hover { color:var(--luvete-text); }
/* Bootstrap на .btn:hover ставит цвет текста страницы — держим белый. */
.luvete-hero-sale:hover .luvete-hero-sale-button, .luvete-hero-sale .luvete-hero-sale-button:hover { background:var(--luvete-red); color:#fff; }

@media (min-width:992px) {
    .luvete-hero-grid { height:404px; }
    .luvete-hero-sidebar { overflow:hidden; }
}
@media (min-width:992px) and (max-width:1199.98px) {
    .luvete-hero-grid { grid-template-columns:minmax(0, 1fr) 240px; }
    .luvete-hero-sidebar { display:none; }
}
@media (min-width:768px) and (max-width:991.98px) {
    .luvete-hero-grid { grid-template-columns:1fr; }
    .luvete-hero-sidebar { display:none; }
    .luvete-hero-feature { min-height:300px; }
    /* :has-правило выше сильнее по специфичности — иначе останутся строки 1fr 1fr и пустой ряд под карточками */
    .luvete-hero-side, .luvete-hero-side:has(.luvete-hero-sale) { grid-template-columns:repeat(3, minmax(0, 1fr)); grid-template-rows:auto; }
}
@media (max-width:767.98px) {
    .luvete-hero-grid { grid-template-columns:1fr; gap:10px; }
    .luvete-hero-sidebar { display:none; }
    .luvete-hero-feature { grid-template-columns:1fr; }
    .luvete-hero-copy { padding:24px 20px 22px; }
    .luvete-hero h1 { font-size:1.75rem; }
    .luvete-hero-button { width:100%; justify-content:center; }
    .luvete-hero-media { height:220px; }
    .luvete-hero-side { grid-template-rows:auto; }
    .luvete-hero-card { padding:12px; }
    .luvete-hero-card img { width:56px; height:56px; flex-basis:56px; }
}
@media (prefers-reduced-motion:reduce) { .luvete-hero-card:hover { transform:none; } }

/* Секции главной: белая карточка, заголовок слева, без стоковых заглавных с чертой. */
.luvete-section-title { margin:0 0 18px; font-size:var(--luvete-h1); font-weight:800; letter-spacing:-.02em; text-align:left; text-transform:none; }
.luvete-section-head { display:flex; flex-wrap:wrap; align-items:center; gap:10px 16px; margin-bottom:18px; }
.luvete-section-head .luvete-section-title { margin:0; }
.luvete-section-chips { display:flex; flex-wrap:wrap; gap:6px; }
.luvete-chip { display:inline-flex; min-width:0 !important; min-height:36px !important; align-items:center; padding:0 14px; border:0; border-radius:999px; background:var(--luvete-bg); color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-chip:hover { background:var(--luvete-border); }
.luvete-chip.is-active { background:var(--luvete-text); color:#fff; }
.luvete-chip { text-decoration:none; }
.catalog-empty-suggestions { width:100%; justify-content:center; margin-bottom:18px; }
.not-found-search { display:flex; width:100%; max-width:520px; margin:0 auto 18px; gap:8px; }
.not-found-search .form-control { flex:1 1 auto; min-height:46px; border-radius:10px; }
.not-found-search .btn { border-radius:10px; padding:0 20px; font-weight:700; }
.catalog-empty-suggestions .luvete-chip { background:var(--luvete-surface-muted); border:1px solid var(--luvete-border); }
.catalog-empty-suggestions .luvete-chip:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-chip-count { margin-left:6px; color:var(--luvete-muted); font-weight:400; }
.luvete-chip.is-active .luvete-chip-count { color:rgba(255,255,255,.7); }
/* Телефон: ряд чипов прокручивается, правый край подтаивает, пока есть что листать (is-end ставит luvete-ui.js). */
@media (max-width:767.98px) {
    .luvete-sale-roots, .catalog-empty-suggestions, .luvete-section-head .luvete-section-chips { flex-wrap:nowrap; justify-content:flex-start; overflow-x:auto; margin:0 -14px; padding:0 14px 4px; scrollbar-width:none; -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 48px), transparent); mask-image:linear-gradient(to right, #000 calc(100% - 48px), transparent); }
    .luvete-sale-roots.is-end, .catalog-empty-suggestions.is-end, .luvete-section-head .luvete-section-chips.is-end { -webkit-mask-image:none; mask-image:none; }
    .luvete-sale-roots::-webkit-scrollbar, .catalog-empty-suggestions::-webkit-scrollbar { display:none; }
    .luvete-sale-roots .luvete-chip, .catalog-empty-suggestions .luvete-chip { flex:0 0 auto; }
    .catalog-empty-suggestions { width:auto; justify-self:stretch; margin-bottom:18px; }
}
.luvete-section-link { display:inline-flex; margin-left:auto; align-items:center; gap:6px; color:var(--luvete-red); font-weight:700; text-decoration:none; white-space:nowrap; }
/* Ссылка «Усі …» всегда справа от заголовка; чипсы, если не влезли, переносятся строкой ниже. */
.luvete-section-head { display:grid; grid-template-columns:auto minmax(0, 1fr) auto; align-items:center; }
.luvete-section-head .luvete-section-link { grid-row:1; grid-column:3; }
@media (max-width:1299.98px) { .luvete-section-head { grid-template-columns:auto auto; } .luvete-section-head .luvete-section-chips { grid-column:1 / -1; } .luvete-section-head .luvete-section-link { grid-row:1; grid-column:2; justify-self:end; } }
.luvete-section-link:hover { color:var(--luvete-red-d); }
.luvete-home-products { margin:0 0 var(--luvete-block-gap); padding:22px 24px 24px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.luvete-home-products-list { display:grid; grid-template-columns:repeat(5, minmax(0, 1fr)); gap:var(--luvete-layout-gap); }
.luvete-home-products-item { min-width:0; }
.luvete-home-products-item > .product-thumb { height:100%; margin:0; }
@media (max-width:991.98px) {
    /* Один ряд с горизонтальной прокруткой вместо сетки с сиротами во втором ряду. */
    .luvete-home-products { padding:16px 14px; }
    .luvete-home-products-list { display:flex; margin:0 -14px; padding:0 14px 6px; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; }
    .luvete-home-products-list::-webkit-scrollbar { display:none; }
    .luvete-home-products-item { flex:0 0 190px; scroll-snap-align:start; }
    /* Чипсы блока — одной прокручиваемой строкой, а не тремя рядами над двумя карточками. */
    .luvete-section-head .luvete-section-chips::-webkit-scrollbar { display:none; }
    .luvete-section-head .luvete-section-chips .luvete-chip { flex:0 0 auto; }
}
/* Телефон: карточка ~40% экрана — третья выглядывает, прокрутку видно. */
@media (max-width:575.98px) { .luvete-home-products-item { flex-basis:min(40vw, 190px); } }

/* Популярные категории: белая секция, плитки «круглое фото · название · счётчик». */
.luvete-category-grid { margin:0 0 var(--luvete-block-gap); padding:22px 24px 24px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.luvete-category-grid-list { display:grid; grid-template-columns:repeat(6, minmax(0, 1fr)); gap:12px; }
.luvete-category-card { display:grid; justify-items:center; gap:4px; padding:18px 12px 16px; border-radius:12px; background:var(--luvete-bg); color:var(--luvete-text); text-align:center; text-decoration:none; transition:box-shadow .15s, transform .15s; }
.luvete-category-card-image { display:grid; width:120px; height:120px; margin-bottom:8px; place-items:center; overflow:hidden; border-radius:50%; background:var(--luvete-surface); }
.luvete-category-card-image img { display:block; width:100%; height:100%; object-fit:cover; }
/* Под название две строки всегда: иначе счётчики в одном ряду стоят на разной высоте. */
.luvete-category-card strong { display:-webkit-box; min-height:2.6em; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; font-size:var(--luvete-text-sm); line-height:1.3; }
.luvete-category-card small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
.luvete-category-card:hover { color:var(--luvete-red); box-shadow:var(--luvete-shadow-hover); transform:translateY(-2px); }
@media (max-width:1199.98px) { .luvete-category-grid-list { grid-template-columns:repeat(4, minmax(0, 1fr)); } }
@media (max-width:767.98px) {
    .luvete-category-grid { padding:16px 14px; }
    .luvete-category-grid-list { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px; }
    .luvete-category-card-image { width:88px; height:88px; }
}

/* Заголовки блоков на ГЛАВНОЙ (Категории/Новинки/Хиты) — центр, красный акцент снизу */
/* Сетка категорий обёрнута во вложенный .container (двойной паддинг+max-width) — была уже полосы
   меню. Снимаем ограничения, ряд карточек занимает всю ширину #content. */
#common-home #content .container { max-width:none; padding-left:0; padding-right:0; }

/* Компоненты: секции, карточки и плитки категорий. */
.luvete-card { overflow:hidden; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-sm); background:var(--luvete-surface); box-shadow:var(--luvete-shadow-sm); }
/* Мобильная навигация: нижняя панель и полноэкранный каталог в два уровня (до 992px). */
.luvete-mobile-bar { display:none; position:fixed; z-index:1040; right:0; bottom:0; left:0; grid-template-columns:repeat(4, 1fr); padding-bottom:env(safe-area-inset-bottom); border-top:1px solid var(--luvete-border); background:var(--luvete-surface); box-shadow:0 -4px 16px rgba(0,0,0,.06); }
.luvete-mobile-bar > * { display:grid; min-height:56px; justify-items:center; align-content:center; gap:3px; padding:6px 4px; border:0; background:transparent; color:var(--luvete-text-2); font-size:11px; font-weight:600; text-decoration:none; }
.luvete-mobile-bar > * i { font-size:20px; }
.luvete-mobile-bar > *:active { color:var(--luvete-red); }
.luvete-catalog { width:100% !important; border:0; background:var(--luvete-surface); }
.luvete-catalog-head { display:grid; min-height:56px; grid-template-columns:1fr auto 1fr; align-items:center; padding:0 6px; border-bottom:1px solid var(--luvete-border); }
.luvete-catalog-back, .luvete-catalog-close { display:inline-flex; min-height:44px; align-items:center; gap:6px; padding:0 10px; border:0; background:transparent; color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-catalog-back { justify-self:start; }
.luvete-catalog-close { justify-self:end; font-size:22px; }
.luvete-catalog-close { grid-column:3; }
.luvete-catalog-title { grid-column:2; font-size:var(--luvete-text-base); font-weight:800; }
.luvete-catalog-levels { overflow-y:auto; flex:1 1 auto; }
.luvete-catalog-list { margin:0; padding:0; list-style:none; }
.luvete-catalog-item { display:flex; width:100%; min-height:52px; align-items:center; justify-content:space-between; gap:12px; padding:12px 18px; border:0; border-bottom:1px solid var(--luvete-border); background:transparent; color:var(--luvete-text); font-size:var(--luvete-text-base); font-weight:600; text-align:left; text-decoration:none; }
.luvete-catalog-item i { color:var(--luvete-muted); font-size:14px; }
.luvete-catalog-item > span:not(.luvete-catalog-icon) { flex:1 1 auto; min-width:0; }
.luvete-catalog-item small { flex:0 0 auto; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:600; font-variant-numeric:tabular-nums; }
.luvete-catalog-icon { display:grid; width:36px; height:36px; flex:0 0 36px; place-items:center; overflow:hidden; border-radius:50%; background:var(--luvete-bg); }
.luvete-catalog-icon img { width:30px; height:30px; object-fit:contain; }
.luvete-catalog-all { color:var(--luvete-red); }
.luvete-catalog-menu-block { padding:6px 0 12px; border-top:6px solid var(--luvete-bg); }
.luvete-catalog-menu-title { display:block; padding:14px 18px 6px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:700; letter-spacing:.4px; text-transform:uppercase; }
.luvete-catalog-menu-item { min-height:44px; padding-top:8px; padding-bottom:8px; border-bottom:0; font-weight:500; }
/* На десктопе панель каталога — колонка слева, а не на весь экран. */
@media (min-width:992px) { .luvete-catalog { width:400px !important; } }

@media (max-width:991.98px) {
    .luvete-mobile-bar { display:grid; }
    /* Чекаут: поиск, каталог и нижняя панель — выходы со сцены; остаются логотип и телефон. */
    .luvete-mobile-bar.is-checkout-hidden, .is-checkout .luvete-header-search, .is-checkout .luvete-header-burger { display:none; }
    .is-checkout .luvete-header-row { grid-template-columns:auto minmax(0, 1fr) auto; grid-template-areas:"logo phone cart"; }
    .is-checkout .luvete-header-logo { justify-self:start; }
    .luvete-header-phone { grid-area:phone; justify-self:end; }
    .luvete-header-phone { display:inline-flex; align-items:center; gap:8px; color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:700; text-decoration:none; white-space:nowrap; }
    .luvete-header-phone i { color:var(--luvete-red); font-size:14px; }
    body:has(.luvete-mobile-bar.is-checkout-hidden) footer { padding-bottom:0; }
    /* Панель закрывает низ страницы — подвалу нужен запас. */
    footer { padding-bottom:calc(64px + env(safe-area-inset-bottom)); }
}

/* Полоса преимуществ: ряд плашек «иконка + две строки», на узком экране — две в ряд. */
.luvete-benefits { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; margin:0 0 var(--luvete-block-gap); }
.luvete-benefit { display:flex; align-items:center; gap:14px; padding:16px 18px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); }
.luvete-benefit-icon { display:grid; width:44px; height:44px; flex:0 0 44px; place-items:center; border-radius:12px; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:18px; }
.luvete-benefit-copy { display:grid; min-width:0; gap:2px; }
.luvete-benefit-copy strong { font-size:var(--luvete-text-base); line-height:1.3; }
.luvete-benefit-copy span { color:var(--luvete-muted); font-size:var(--luvete-text-sm); line-height:1.35; }

@media (min-width:992px) { .luvete-benefits { grid-template-columns:repeat(auto-fit, minmax(220px, 1fr)); } }
@media (min-width:576px) and (max-width:991.98px) {
    .luvete-benefits { grid-template-columns:repeat(3, minmax(0, 1fr)); }
    .luvete-benefit { flex-direction:column; align-items:flex-start; gap:12px; }
}
@media (max-width:575.98px) { .luvete-benefits { grid-template-columns:1fr; } }
/* Блок доверия перед подвалом: текст о магазине слева, цифры каталога плитками справа. */
.luvete-trust { display:grid; grid-template-columns:minmax(0, 5fr) minmax(0, 6fr); gap:24px; margin:0 0 var(--luvete-block-gap); padding:28px 32px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.luvete-trust-copy h2 { margin:0 0 10px; font-size:var(--luvete-h1); font-weight:800; letter-spacing:-.02em; }
.luvete-trust-copy p { margin:0 0 18px; color:var(--luvete-text-2); line-height:1.6; }
.luvete-trust-button { min-height:46px; padding:0 22px; border-radius:10px; font-weight:800; }
.luvete-trust-stats { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:12px; align-self:center; }
.luvete-trust-stat { display:grid; gap:12px; align-content:start; padding:18px; border-radius:12px; background:var(--luvete-bg); }
.luvete-trust-icon { display:grid; width:40px; height:40px; place-items:center; border-radius:10px; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:16px; }
.luvete-trust-stat strong { font-size:var(--luvete-text-2xl); font-weight:800; line-height:1.1; letter-spacing:-.02em; }
/* Перевозчики — логотипы вместо числа, в одну линию с цифрами соседних плиток. */
.luvete-trust-logos { display:flex; min-height:calc(var(--luvete-text-2xl) * 1.1); align-items:center; gap:10px; }
.luvete-trust-logos img { width:auto; height:24px; }
.luvete-trust-label { margin-top:-4px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
@media (max-width:991.98px) { .luvete-trust { grid-template-columns:1fr; padding:20px; } }
@media (max-width:575.98px) { .luvete-trust-stats { grid-template-columns:1fr; gap:8px; } .luvete-trust-stat { grid-template-columns:40px minmax(0, 1fr); grid-template-rows:auto auto; column-gap:12px; row-gap:0; align-items:center; padding:12px 14px; } .luvete-trust-icon { grid-row:1 / span 2; } .luvete-trust-stat strong { font-size:var(--luvete-text-xl); } .luvete-trust-logos { min-height:0; } .luvete-trust-label { margin-top:0; } }

/* Новинки и хиты: своя сетка, а не row-cols ядра — тогда шаг колонок совпадает с каталогом. */



/* Карточка товара (макет C): фото 1:1 с воздухом, бейджи слева сверху, название обычным
   начертанием, строка наличия, цена жирно + старая серым, красная кнопка на всю ширину.
   Закладки/сравнение в карточке не показываем — они на странице товара. */
.product-thumb { display:flex; height:100%; flex-direction:column; overflow:hidden; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); transition:box-shadow .15s, transform .15s; }
.product-thumb:hover { box-shadow:var(--luvete-shadow-hover); transform:translateY(-2px); }
/* Ядро гасит фото до opacity .8 при наведении — карточка и так поднимается тенью. */
.product-thumb .image a:hover { opacity:1; }
.product-thumb .image { position:relative; padding:10px 10px 0; }
.product-thumb .image a { display:block; aspect-ratio:1 / 1; overflow:hidden; border-radius:8px; background:#fff; }
.product-thumb .image img { width:100%; height:100%; object-fit:contain; }
.product-thumb .content { display:flex; min-height:0; flex:1 1 auto; flex-direction:column; }
.luvete-thumb-badges { position:absolute; z-index:1; top:18px; left:18px; display:flex; flex-direction:column; align-items:flex-start; gap:6px; }
.luvete-thumb-badge { padding:5px 10px; border-radius:6px; color:#fff; font-size:var(--luvete-text-xs); font-weight:800; letter-spacing:.04em; line-height:1.2; text-transform:uppercase; }
.luvete-thumb-badge.is-hit { background:var(--luvete-red); }
/* В блоке хитов бейдж «ХІТ» на каждой карточке — шум. */
.luvete-home-products.is-bestseller .luvete-thumb-badge.is-hit { display:none; }
.luvete-thumb-badge.is-new { background:var(--luvete-in-stock); }
.luvete-thumb-badge.is-special { background:var(--luvete-yellow); color:var(--luvete-text); text-transform:none; }
/* Быстрые действия карточки: столбик справа сверху, на десктопе проявляется по наведению. */
.luvete-thumb-actions { position:absolute; z-index:2; top:18px; right:18px; display:flex; flex-direction:column; gap:6px; }
.luvete-thumb-action { display:inline-flex; width:36px; height:36px; min-width:36px !important; min-height:36px !important; align-items:center; justify-content:center; padding:0; border:1px solid var(--luvete-border); border-radius:50%; background:#fff; color:var(--luvete-muted); box-shadow:0 2px 8px rgba(0,0,0,.08); transition:color .15s, opacity .15s; }
.luvete-thumb-action:hover { color:var(--luvete-red); }
.luvete-thumb-action.is-active { color:var(--luvete-red); border-color:var(--luvete-red); }
.luvete-thumb-action.is-active.is-compare { color:var(--luvete-text); border-color:var(--luvete-text); }
@media (max-width:767.98px) { .luvete-thumb-actions { top:14px; right:14px; } .luvete-thumb-action { width:32px; height:32px; min-width:32px !important; min-height:32px !important; } .luvete-thumb-action.is-compare { display:none; } }
.luvete-thumb-compare-inline { display:none; width:auto; height:auto; min-width:0 !important; min-height:0 !important; margin:2px 0 4px; padding:0; border:0; border-radius:0; background:none; box-shadow:none; font-size:var(--luvete-text-xs); font-weight:600; gap:5px; }
@media (hover:none) and (min-width:768px) {
  .luvete-thumb-actions .luvete-thumb-action.is-compare { display:none; }
  .luvete-thumb-compare-inline { display:inline-flex; }
}
@media (hover:hover) and (min-width:992px) {
  .luvete-thumb-action { opacity:0; }
  .product-thumb:hover .luvete-thumb-action, .luvete-thumb-action.is-active, .luvete-thumb-action:focus-visible { opacity:1; }
}
.luvete-thumb-article { display:none; margin:-2px 0 4px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:600; }
.product-thumb.is-clamped .luvete-thumb-article { display:block; }
.luvete-thumb-models { display:flex; align-items:center; gap:4px; margin:2px 0 0; }
.luvete-thumb-models a { display:block; width:28px; height:28px; overflow:hidden; border:1px solid var(--luvete-border); border-radius:50%; background:#fff; }
.luvete-thumb-models a:hover { border-color:var(--luvete-red); }
.luvete-thumb-models img { display:block; width:100%; height:100%; object-fit:cover; }
.luvete-thumb-models span { color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:700; }
.luvete-thumb-variants { position:absolute; z-index:1; bottom:8px; left:18px; padding:3px 8px; border:1px solid var(--luvete-border); border-radius:6px; background:rgba(255,255,255,.94); color:var(--luvete-text); font-size:var(--luvete-text-xs); font-weight:600; line-height:1.3; }
.luvete-thumb-stock { min-height:1.25em; font-size:var(--luvete-text-sm); font-weight:700; line-height:1.25; }
.luvete-thumb-stock.is-in { color:var(--luvete-in-stock); }
.luvete-thumb-stock.is-low { color:var(--luvete-text); }
.luvete-thumb-stock.is-out { color:var(--luvete-muted); }
.product-thumb .description h4 { min-height:2.6em; margin:0 0 2px; font-size:var(--luvete-text-base); font-weight:400; line-height:1.3; }
.product-thumb .description h4 a { display:-webkit-box; max-height:2.6em; overflow:hidden; color:var(--luvete-text); text-decoration:none; -webkit-box-orient:vertical; -webkit-line-clamp:2; }
.product-thumb .description h4 a:hover { color:var(--luvete-red); }
.product-thumb .description p { display:none; }
.product-thumb .price-old { margin-left:6px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:400; text-decoration:line-through; }

/* Доступные тач-цели: основные контролы не меньше 44×44px, соседние иконки разнесены. */
.btn, .btn-close, button, input[type="button"], input[type="reset"], input[type="submit"],
.pagination .page-link { min-width:44px; min-height:44px; }
/* Ссылка-кнопка при min-height не центрирует текст в отличие от <button>; :where — чтобы точечные display-правила ниже брали верх. */
:where(a).btn { display:inline-flex; align-items:center; justify-content:center; }
.dropdown-item, footer .list-unstyled a { display:inline-flex; min-height:44px; align-items:center; }
.product-thumb .description { display:flex; flex:1 0 auto; flex-direction:column; gap:5px; margin-bottom:0; padding:10px 12px 0; }
.product-thumb .description .price { margin-top:auto; padding:2px 0 0; color:var(--luvete-text); font-size:var(--luvete-text-lg); font-weight:800; letter-spacing:-.02em; line-height:1.2; }
.product-thumb .description .price .price-new { color:var(--luvete-text); }
.product-thumb form, .product-thumb .luvete-thumb-cart { margin:auto 0 0; padding:10px 12px 12px; }
.product-thumb .button { position:static; display:block; }
.product-thumb .button button { display:flex; width:100%; min-height:40px; align-items:center; justify-content:center; padding:0 12px; border:0; border-radius:10px; background:var(--luvete-red); color:#fff; font-size:var(--luvete-text-base); font-weight:700; line-height:1.2; }
.product-thumb .button button:hover { background:var(--luvete-red-d); color:#fff; }
.product-thumb.is-out .image img, .product-gallery.is-out img, img.luvete-out-of-stock { filter:grayscale(1); }
.luvete-thumb-unavailable { display:flex; min-height:40px; align-items:center; justify-content:center; margin:0; padding:0 10px; border:1px solid var(--luvete-border-strong); border-radius:10px; background:var(--luvete-surface-muted); color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:700; line-height:1.2; text-align:center; }
.input-group > .form-control, .input-group > .form-select { min-height:44px; }
.form-check label { display:inline-flex; min-height:44px; align-items:center; }
/* Крошки — белая карточка, как остальные блоки страницы. */
.breadcrumb { display:flex; flex-wrap:nowrap; align-items:center; gap:0; margin:var(--luvete-block-gap) 0; padding:8px 12px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); font-size:var(--luvete-text-sm); overflow-x:auto; scrollbar-width:none; }
.breadcrumb::-webkit-scrollbar { display:none; }
.breadcrumb > li.breadcrumb-item { display:flex; align-items:center; padding:0; text-shadow:none; white-space:nowrap; }
.breadcrumb .breadcrumb-item a { display:inline-flex; min-height:32px; align-items:center; color:var(--luvete-muted); text-decoration:none; transition:color .15s, background .15s, border-color .15s; }
.breadcrumb .breadcrumb-item a:hover { color:var(--luvete-red); }
.breadcrumb > li.breadcrumb-item:first-child a { width:32px; justify-content:center; border:1px solid var(--luvete-border); border-radius:8px; background:var(--luvete-bg); color:var(--luvete-red); }
.breadcrumb > li.breadcrumb-item:first-child a:hover { border-color:rgba(224,31,38,.35); background:rgba(224,31,38,.06); }
.breadcrumb > li.breadcrumb-item:last-child a { color:var(--luvete-text); font-weight:600; }
/* Последний пункт (название товара) ужимается с многоточием, а не обрезается краем плашки на планшете. */
.breadcrumb > li.breadcrumb-item:last-child { min-width:0; flex:0 1 auto; }
.breadcrumb > li.breadcrumb-item:last-child a { display:block; min-width:0; overflow:hidden; line-height:32px; text-overflow:ellipsis; white-space:nowrap; }
.breadcrumb > li.breadcrumb-item::after { content:""; position:static; width:7px; height:7px; flex:0 0 7px; margin:0 14px 0 12px; border:0; border-right:1.5px solid #b8bec5; border-bottom:1.5px solid #b8bec5; transform:rotate(-45deg); }
.breadcrumb > li.breadcrumb-item:last-child::after { display:none; }

/* Информационные страницы: текст на всю ширину карточки, явные разделы и спокойные акценты. */
/* Ширину держит сама карточка (#content). Отдельной колонки min(100%, 820px) с auto-полями тут
   больше нет: она сужала текст второй раз и вдобавок разъезжалась — заголовок оставался у левого
   края (своё правило полей), а блоки уезжали в центр на 35px. */
.information-page #content { min-width:0; }
.information-page #content > h1 { margin-bottom:20px; font-weight:800; }
.information-page #content > h1 ~ * { line-height:1.7; }
.information-page #content h2 { margin:30px 0 14px; padding-bottom:9px; border-bottom:1px solid var(--luvete-border); font-weight:800; }
.information-page #content h3 { margin:20px 0 8px; font-weight:750; }
.information-page #content p { margin-bottom:12px; }
.information-page #content ul,
.information-page #content ol { margin-bottom:18px; padding-left:1.35rem; }
.information-page #content li + li { margin-top:7px; }
.information-summary,
.information-notice { margin:18px 0; padding:16px 18px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface-muted); }
/* Акцент — красная подпись («Важливо», «Термін оплати»), а не полоса слева: на скруглённой
   карточке она истончалась в углах и читалась как случайная. */
.information-notice > strong:first-child { color:var(--luvete-red); }
.information-notice > :last-child,
.information-summary > :last-child { margin-bottom:0; }
.information-notice .information-cta { margin-top:12px; }
.information-card-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(230px, 100%), 1fr)); gap:12px; margin:18px 0 24px; }
.information-card { padding:18px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:#fff; box-shadow:var(--luvete-shadow-sm); }
.information-card h3 { margin-top:0 !important; color:var(--luvete-text); }
.information-card > :last-child { margin-bottom:0 !important; }
.discount-steps { display:grid; grid-template-columns:repeat(auto-fit, minmax(min(150px, 100%), 1fr)); gap:10px; margin:18px 0; padding:0 !important; list-style:none; }
.discount-steps li { margin:0 !important; padding:14px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-sm); background:#fff; text-align:center; }
.discount-steps strong { display:block; color:var(--luvete-red); font-size:var(--luvete-text-xl); }

/* Контакты: данные магазина и форма образуют единый двухколоночный блок. */
#information-contact #content > h1 { margin-bottom:20px; font-weight:800; }
.contact-layout { display:grid; grid-template-columns:minmax(260px, .85fr) minmax(0, 1.15fr); gap:18px; align-items:start; }
.contact-card, .contact-form-card { padding:22px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:#fff; box-shadow:var(--luvete-shadow-sm); }
.contact-card h2, .contact-form-card legend { margin:0 0 18px; font-size:var(--luvete-h2); font-weight:800; }
.contact-row { display:flex; gap:14px; margin-bottom:18px; }
.contact-row-icon { display:grid; width:40px; height:40px; flex:0 0 40px; place-items:center; border-radius:10px; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:16px; }
.contact-card .luvete-wordmark { display:block; margin-bottom:4px; font-size:1.25rem; }
.contact-card address { margin:0; color:var(--luvete-muted); line-height:1.6; }
.contact-group { display:flex; flex-direction:column; gap:5px; }
.contact-messengers { display:flex; flex-wrap:wrap; gap:8px; margin-top:4px; }
.contact-messengers a { display:inline-flex; align-items:center; gap:8px; padding:7px 14px; border-radius:999px; color:#fff !important; font-weight:700; text-decoration:none; }
.contact-messengers .is-telegram { background:#2AABEE; }
.contact-messengers .is-viber { background:#7360F2; }
.contact-map { display:block; width:100%; height:220px; margin-top:6px; border:0; border-radius:12px; background:var(--luvete-surface-muted); }
.contact-map-details summary { display:flex; min-height:46px; align-items:center; justify-content:center; gap:8px; border:1px solid var(--luvete-border-strong); border-radius:10px; font-weight:700; cursor:pointer; list-style:none; }
.contact-map-details summary::-webkit-details-marker { display:none; }
.contact-map-details summary i { color:var(--luvete-red); }
.contact-map-details[open] summary { margin-bottom:10px; }
@media (max-width:767.98px) {
    /* Телефоны на телефоне — кнопки звонка во всю ширину. */
    .contact-group a[href^="tel:"] { display:flex; width:100%; min-height:46px; align-items:center; gap:10px; padding:0 14px; border:1px solid var(--luvete-border-strong); border-radius:10px; }
    .contact-group a[href^="tel:"]::before { content:"\f095"; font-family:"Font Awesome 7 Free"; font-weight:900; color:var(--luvete-red); font-size:14px; }
}
.contact-group a { width:max-content; max-width:100%; color:var(--luvete-text); font-weight:700; text-decoration:none; }
.contact-group a:hover { color:var(--luvete-red); }
.contact-note { margin:0 0 16px; padding:12px; border-radius:var(--luvete-radius-sm); background:var(--luvete-surface-muted); color:var(--luvete-muted); }
.contact-form-card .required .form-label::before { content:"* "; color:var(--luvete-red); }
.contact-form-card .form-control { min-width:0; min-height:46px; border-radius:10px; }
.contact-form-card .form-label { margin-bottom:5px; font-size:var(--luvete-text-sm); font-weight:600; }
.contact-form-card > .btn { min-height:46px; border-radius:10px; font-weight:700; }
.contact-form-card textarea { min-height:150px; resize:vertical; }
.contact-form-card > .btn { min-width:150px; }

/* Личный кабинет: единая система карточек, форм, таблиц и пустых состояний. */
[id^="account-"] #content { min-width:0; }
[id^="account-"] #content > h1 { margin-bottom:20px; font-weight:800; }
[id^="account-"] #content form:not([id^="form-product"]),
[id^="account-"] #content > .row > .col,
[id^="account-"] #content > fieldset { padding:20px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:#fff; box-shadow:var(--luvete-shadow-sm); }
/* Логин: карточка — стоковый .border.rounded внутри колонки; контейнер, колонка и форма
   рамок не рисуют, иначе выходит матрёшка из трёх рамок. */
#account-account #content > h2 { margin:24px 0 10px; font-size:var(--luvete-h2); font-weight:800; }
#account-account #content > .list-unstyled { display:grid; grid-template-columns:repeat(auto-fit, minmax(210px, 1fr)); gap:10px; margin:0; }
#account-account #content > .list-unstyled a { display:flex; min-height:54px; align-items:center; padding:12px 14px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-sm); background:#fff; color:var(--luvete-text); font-weight:700; text-decoration:none; }
#account-account #content > .list-unstyled a:hover { border-color:rgba(224,31,38,.4); color:var(--luvete-red); }
/* Пустое состояние — пунктирная плашка; строка-сводка («баланс 0 ₴», «бали 0») — обычный текст. */
[id^="account-"] #content > p:not(:has(b, strong)) { padding:28px 18px; border:1px dashed var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface-muted); color:var(--luvete-muted); text-align:center; }
[id^="account-"] #content > p:has(b, strong) { margin:0 0 14px; color:var(--luvete-text-2); }
[id^="account-"] > .row > #column-right { display:none !important; }
[id^="account-"] > .row > #content { flex:0 0 100%; width:100%; max-width:100%; }
/* Формы кабинета в языке регистрации: узкая карточка по центру, подписи над полями
   (лейблы ядра в колонке 2/12 на широком экране плыли и переносились), поля 46px. */
[id^="account-"] #content:has(> form:not([id^="form-product"])) > h1,
[id^="account-"] #content:has(> form:not([id^="form-product"])) > p { max-width:640px; margin-right:auto; margin-left:auto; }
[id^="account-"] #content:has(> form:not([id^="form-product"])) > h1 { margin-bottom:6px; font-size:var(--luvete-h1); }
[id^="account-"] #content:has(> form:not([id^="form-product"])) > p { margin-bottom:18px; padding:0; border:0; background:transparent; color:var(--luvete-muted); font-size:var(--luvete-text-sm); text-align:left; }
[id^="account-"] #content > form:not([id^="form-product"]) { max-width:640px; margin:0 auto; padding:26px 28px 28px; border-radius:14px; box-shadow:none; }
[id^="account-"] #content > form legend { margin:0 0 14px; padding:0; border:0; font-size:var(--luvete-text-base); font-weight:800; }
[id^="account-"] #content > form fieldset + fieldset { margin-top:22px; padding-top:22px; border-top:1px solid var(--luvete-border); }
[id^="account-"] #content > form .row.mb-3 { --bs-gutter-x:0; flex-direction:column; margin:0 0 14px !important; }
[id^="account-"] #content > form .row.mb-3 > .col-form-label { width:100%; flex:0 0 auto; margin-bottom:5px; padding:0; font-size:var(--luvete-text-sm); font-weight:600; line-height:1.4; text-align:left; }
[id^="account-"] #content > form .row.mb-3 > [class*="col-"]:not(.col-form-label) { width:100%; flex:0 0 auto; padding:0; }
[id^="account-"] #content > form .row.mb-3 .form-switch { padding-top:6px; }
[id^="account-"] #content > form .form-control, [id^="account-"] #content > form .form-select { min-height:46px; border-radius:10px; }
[id^="account-"] #content > form textarea.form-control { min-height:120px; }
[id^="account-"] #content > form .form-check:not(.form-switch) { display:flex; min-height:34px; align-items:center; gap:10px; margin:0; padding:0; }
[id^="account-"] #content > form .form-check:not(.form-switch) .form-check-input { width:18px; height:18px; flex:0 0 18px; margin:0; float:none; }
[id^="account-"] #content > form .form-check:not(.form-switch) .form-check-label { display:block; min-height:0; margin:0; font-size:var(--luvete-text-sm); line-height:1.3; }
/* Согласие в подвале формы: label inline, иначе съедается пробел перед ссылкой. */
[id^="account-"] #content > form .form-check-reverse { display:inline-flex; align-items:center; gap:10px; margin:0 14px 0 0; padding:0; }
[id^="account-"] #content > form .form-check-reverse .form-check-input { float:none; margin:0; }
[id^="account-"] #content > form .form-check-reverse .form-check-label { display:inline; }
[id^="account-"] #content > form .form-check-inline { display:inline-flex; gap:8px; margin-right:18px; }
/* Кнопки «Назад»/«Продолжить» — одна строка внизу карточки. */
[id^="account-"] #content > form > .row:last-child { --bs-gutter-x:12px; align-items:center; margin-top:8px; }
[id^="account-"] #content > form > .row:last-child .btn, [id^="account-"] #content > form > .text-end .btn { display:inline-flex; min-height:46px; align-items:center; gap:8px; padding:0 22px; border-radius:10px; font-weight:800; }
[id^="account-"] #content > form > .row:last-child .btn-light { border:1px solid var(--luvete-border-strong); background:var(--luvete-surface); color:var(--luvete-text); }
[id^="account-"] #content > form > .row:last-child .btn-light:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
[id^="account-"] #content > form > .row:last-child .btn-light::before { content:"←"; font-weight:400; }
/* Таблица данных — один класс на все списки (заказы, история, закладки, адреси, транзакції):
   .luvete-table на обёртке .table-responsive. Стоковые шаблоны кабинета получают тот же вид
   через селектор-алиас, свои шаблоны ставят класс явно. */
.luvete-table, [id^="account-"] #content .table-responsive { margin:0 0 14px; padding:0; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); overflow-x:auto; box-shadow:none; }
.luvete-table .table, [id^="account-"] #content .table { --bs-table-bg:transparent; --bs-table-hover-bg:var(--luvete-surface-muted); --bs-border-color:var(--luvete-border); margin:0; }
.luvete-table .table > :not(caption) > * > *, [id^="account-"] #content .table > :not(caption) > * > * { border-width:0 0 1px; background:transparent; }
.luvete-table .table > thead th, [id^="account-"] #content .table > thead th { padding:10px 12px; background:var(--luvete-bg); color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:700; letter-spacing:.02em; text-transform:uppercase; white-space:nowrap; }
.luvete-table .table > tbody td, [id^="account-"] #content .table > tbody td { padding:12px; vertical-align:middle; }
.luvete-table .table > tbody > tr:last-child > *, [id^="account-"] #content .table > tbody > tr:last-child > * { border-bottom:0; }
.luvete-table .table td:first-child:not([colspan]):not(.luvete-address), [id^="account-"] #content .table td:first-child:not([colspan]):not(.luvete-address) { font-weight:700; }
/* Таблица без обёртки (транзакции, бали) — рамка на самой таблице. */
[id^="account-"] #content > .table { margin:0 0 14px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); border-collapse:separate; border-spacing:0; overflow:hidden; }
.luvete-address { line-height:1.6; }
.luvete-address-make-default { padding:4px 10px; border:1px dashed var(--luvete-border); border-radius:999px; background:transparent; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:700; white-space:nowrap; min-width:0 !important; min-height:0 !important; }
.luvete-address-make-default:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-address-delete { display:inline-flex; align-items:center; gap:8px; }
.luvete-address-delete-confirm { display:inline-flex; align-items:center; gap:6px; font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-address-delete-confirm .btn-sm { min-width:0 !important; min-height:36px !important; padding:0 12px; }
.luvete-address-default { padding:4px 10px; border-radius:999px; background:var(--luvete-bg); color:var(--luvete-text-2); font-size:var(--luvete-text-xs); font-weight:700; white-space:nowrap; }
.luvete-table .table .btn-danger, [id^="account-"] #content .table .btn-danger { --bs-btn-color:var(--luvete-red); }
.luvete-account-actions { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.luvete-account-actions .btn { display:inline-flex; min-height:44px; align-items:center; gap:8px; padding:0 18px; border-radius:10px; font-weight:700; }
.luvete-account-back::before { content:"←"; font-weight:400; }
/* Номер, количество и дата — по левому краю как текст; вправо только суммы и действия. */
.luvete-table .table th.text-end:not(:last-child), .luvete-table .table td.text-end:not(:last-child),
[id^="account-"] #content .table th.text-end:not(:last-child), [id^="account-"] #content .table td.text-end:not(:last-child) { text-align:left !important; }
/* Кнопки в строке: одна высота у <a> и <button>, в ряд, без переноса. */
.luvete-table .table .btn, [id^="account-"] #content .table .btn { display:inline-flex; min-width:0; min-height:38px; align-items:center; gap:8px; margin:0; padding:0 12px; border-radius:8px; font-size:var(--luvete-text-sm); font-weight:700; line-height:1; white-space:nowrap; vertical-align:middle; }
.luvete-table .table .btn + .btn, [id^="account-"] #content .table .btn + .btn { margin-left:6px; }
.luvete-table .table .btn-info, [id^="account-"] #content .table .btn-info { --bs-btn-bg:var(--luvete-surface); --bs-btn-border-color:var(--luvete-border-strong); --bs-btn-color:var(--luvete-text); --bs-btn-hover-bg:rgba(224,31,38,.06); --bs-btn-hover-border-color:var(--luvete-red); --bs-btn-hover-color:var(--luvete-red); --bs-btn-active-bg:rgba(224,31,38,.1); --bs-btn-active-border-color:var(--luvete-red); --bs-btn-active-color:var(--luvete-red); }
/* «Глаз» без подписи — подпись из title; тултип Bootstrap на ховере переносит title в data-bs-original-title. */
[id^="account-"] #content .table .btn-info::after { content:attr(title); }
[id^="account-"] #content .table .btn-info[data-bs-original-title]::after { content:attr(data-bs-original-title); }
/* Ядро ставит колонке действий width:1px — с двумя кнопками она вылезала за таблицу. */
[id^="account-"] #content .table td[style*="width: 1px"] { width:auto !important; white-space:nowrap; }
[id^="account-"] #content .table td .d-grid { display:flex !important; justify-content:flex-end; gap:6px; }
/* «До кабінету» — ссылка назад, не главное действие: белая с рамкой и стрелкой, слева. */
[id^="account-"] #content > .text-end { text-align:left !important; }
[id^="account-"] #content > .text-end > .btn-primary { --bs-btn-bg:var(--luvete-surface); --bs-btn-border-color:var(--luvete-border-strong); --bs-btn-color:var(--luvete-text); --bs-btn-hover-bg:rgba(224,31,38,.06); --bs-btn-hover-border-color:var(--luvete-red); --bs-btn-hover-color:var(--luvete-red); --bs-btn-active-bg:rgba(224,31,38,.1); --bs-btn-active-border-color:var(--luvete-red); --bs-btn-active-color:var(--luvete-red); display:inline-flex; min-height:44px; align-items:center; gap:8px; padding:0 18px; border-radius:10px; font-weight:700; }
[id^="account-"] #content > .text-end > .btn-primary::before { content:"←"; font-weight:400; }
/* Страница заказа: шапка с номером и статусом, плитки реквизитов, товары, итоги колонкой справа. */
.luvete-order-head { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:8px 16px; margin-bottom:16px; }
#account-order #content .luvete-order-head h1 { margin:0; }
.luvete-order-meta { display:flex; flex-wrap:wrap; align-items:center; gap:14px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-order-status { padding:4px 10px; border-radius:999px; background:rgba(224,31,38,.1); color:var(--luvete-red); font-weight:700; }
.luvete-order-status.is-complete { background:rgba(21,122,71,.12); color:var(--luvete-in-stock); }
.luvete-order-status.is-cancelled { background:var(--luvete-bg); color:var(--luvete-muted); }
/* Список заказов карточками: миниатюры · номер и статус · сумма · действия. */
.luvete-orders { display:grid; gap:10px; margin-bottom:16px; }
.luvete-order-card { display:grid; grid-template-columns:auto minmax(0, 1fr) auto auto; align-items:center; gap:18px; padding:14px 16px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); }
.luvete-order-thumbs { display:flex; align-items:center; gap:6px; }
.luvete-order-thumbs img { width:56px; height:56px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:contain; background:#fff; }
.luvete-order-more { display:grid; width:56px; height:56px; place-items:center; border-radius:8px; background:var(--luvete-bg); color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:700; }
.luvete-order-line { display:flex; flex-wrap:wrap; align-items:center; gap:10px; font-size:var(--luvete-text-base); }
.luvete-order-sub { margin-top:3px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.luvete-order-total-cell { font-size:var(--luvete-text-lg); white-space:nowrap; }
.luvete-order-actions { display:flex; gap:8px; }
.luvete-order-actions .btn { white-space:nowrap; }
/* Телефон: кнопки не вмещают подписи в один ряд — столбиком на всю ширину, сумма и мета в одну строку. */
@media (max-width:767.98px) {
    .luvete-order-card { grid-template-columns:minmax(0, 1fr) auto; gap:12px 14px; }
    .luvete-order-thumbs { grid-column:1 / -1; }
    .luvete-order-sub { white-space:nowrap; }
    .luvete-order-actions { grid-column:1 / -1; flex-direction:column; }
    .luvete-order-actions .btn { flex:1 1 auto; min-height:44px; white-space:normal; }
}
.luvete-order-tiles { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:12px; margin-bottom:16px; }
.luvete-order-tile.is-tall { grid-row:span 2; }
@media (max-width:767.98px) { .luvete-order-tile.is-tall { grid-row:auto; } }
.luvete-order-tile { padding:14px 16px; border-radius:12px; background:var(--luvete-bg); font-size:var(--luvete-text-sm); line-height:1.5; }
.luvete-order-tile strong { display:block; margin-bottom:4px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:700; letter-spacing:.02em; text-transform:uppercase; }
.luvete-order-tile-wide { grid-column:1 / -1; }
.luvete-order-item { display:flex; align-items:flex-start; gap:12px; }
.luvete-order-item-thumb img { width:64px; height:64px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:contain; background:var(--luvete-surface); }
.luvete-order-product { color:var(--luvete-text); font-weight:700; }
.luvete-order-product:hover { color:var(--luvete-red); }
.luvete-order-product-meta { margin:4px 0 0; padding:0; color:var(--luvete-muted); font-size:var(--luvete-text-xs); list-style:none; }
.luvete-order-reorder-link { min-width:0 !important; min-height:0 !important; padding:0; color:var(--luvete-text-2); font-size:var(--luvete-text-sm); font-weight:600; text-decoration:none; }
.luvete-order-reorder-link:hover { color:var(--luvete-red); }
.luvete-order-totals { display:grid; max-width:360px; margin:0 0 24px auto; }
.luvete-order-total { display:flex; justify-content:space-between; gap:16px; padding:8px 0; border-bottom:1px solid var(--luvete-border); font-size:var(--luvete-text-sm); }
.luvete-order-total span { color:var(--luvete-text-2); }
.luvete-order-total.is-grand { border-bottom:0; padding-top:12px; font-size:var(--luvete-text-base); }
.luvete-order-total.is-grand strong { font-size:var(--luvete-text-lg); }
#account-order #content .luvete-order-history-title { margin:0 0 10px; }
@media (max-width:767.98px) { .luvete-order-tiles { grid-template-columns:1fr; } .luvete-order-totals { max-width:none; } }
@media (max-width:575.98px) { [id^="account-"] #content > form:not([id^="form-product"]) { padding:20px 16px; } }

/* Акции и служебные товарные выдачи используют управление и карточки каталога. */
/* Акции, новинки, бренд: та же белая плашка, что у категории. */
.catalog-heading { margin:0 0 var(--luvete-layout-gap); padding:18px 24px 20px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
#content .catalog-heading h1 { margin:0; padding:0; border:0; font-size:var(--luvete-h1); font-weight:800; letter-spacing:-.02em; }
#content .catalog-heading h1::after { display:none; }
.catalog-heading p { margin:2px 0 0; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
#product-special #display-control, #product-manufacturer #display-control, #product-latest #display-control { justify-content:flex-end; margin:0 0 16px; padding:12px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); }
#product-special #display-control > :first-child, #product-manufacturer #display-control > :first-child, #product-latest #display-control > :first-child,
#product-special #display-control > :nth-child(2), #product-manufacturer #display-control > :nth-child(2), #product-latest #display-control > :nth-child(2) { display:none !important; }
#product-special #display-control > .offset-md-1, #product-manufacturer #display-control > .offset-md-1, #product-latest #display-control > .offset-md-1 { margin-left:0; }
#product-special #content > p, #product-manufacturer #content > p, #product-latest #content > p { margin:18px 0; padding:32px 18px; border:1px dashed var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); color:var(--luvete-muted); text-align:center; }
.catalog-empty { display:grid; justify-items:center; gap:12px; margin:18px 0; padding:36px 18px; border:1px dashed var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); text-align:center; }
.catalog-empty > i { display:grid; width:56px; height:56px; place-items:center; border-radius:50%; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:var(--luvete-text-xl); }
.catalog-empty h2 { margin:0; font-size:var(--luvete-h2); }
.catalog-empty p { max-width:520px; margin:0; color:var(--luvete-muted); line-height:1.6; }
.catalog-empty-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-top:6px; }
.catalog-empty-hint { margin-top:4px; }
.catalog-empty-categories { width:100%; justify-content:center; max-width:720px; margin-bottom:8px; }
.catalog-empty-actions .btn { min-height:44px; padding:0 22px; border-radius:10px; font-weight:700; }

/* 404: самостоятельное состояние с понятными путями продолжения. */
.not-found-card { display:grid; justify-items:center; gap:12px; padding:clamp(36px, 7vw, 72px) 20px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); text-align:center; }
.not-found-code { color:rgba(224,31,38,.16); font-size:clamp(4rem, 12vw, 7rem); font-weight:800; line-height:.8; }
.not-found-card h1 { margin:0; font-weight:800; }
.not-found-card p { max-width:620px; margin:0; color:var(--luvete-muted); line-height:1.65; }
.not-found-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; margin-top:8px; }
.not-found-actions .btn { min-width:170px; }
#container > main:has(> #common-maintenance) { display:flex; flex-direction:column; }
#common-maintenance { display:flex; flex:1 0 auto; align-items:center; padding-top:var(--luvete-block-gap); padding-bottom:var(--luvete-block-gap); }
.maintenance-card { display:grid; width:100%; justify-items:center; gap:12px; padding:clamp(36px, 7vw, 72px) 20px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); text-align:center; }
.maintenance-icon { display:grid; width:72px; height:72px; margin-bottom:6px; place-items:center; border-radius:50%; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:30px; }
.maintenance-card h1 { margin:0; font-weight:800; }
.maintenance-card p { max-width:560px; margin:0; color:var(--luvete-muted); line-height:1.65; }
.maintenance-contact { display:grid; justify-items:center; gap:10px; margin-top:14px; padding-top:22px; border-top:1px solid var(--luvete-border); width:100%; max-width:560px; font-weight:600; }
.maintenance-phones { display:flex; flex-wrap:wrap; justify-content:center; gap:8px; }
.maintenance-phones a { display:inline-flex; align-items:center; gap:8px; padding:8px 14px; border-radius:999px; background:var(--luvete-surface-muted); color:var(--luvete-text); font-weight:700; text-decoration:none; }
.maintenance-phones a i { color:var(--luvete-red); font-size:12px; }
.maintenance-phones a:hover { background:var(--luvete-yellow); color:var(--luvete-text); }

/* Производители: алфавит и группы брендов оформлены как компактная сетка. */
.luvete-brand-list .luvete-category-nav-item { min-height:40px; padding:6px 14px; }

/* Карта сайта: каталог раскрывается по разделам, служебные ссылки собраны в карточки. */
#information-sitemap #content > h1 { margin-bottom:18px; font-weight:800; }
.sitemap-grid { display:grid; grid-template-columns:minmax(0, 1.6fr) minmax(280px, .8fr); gap:16px; align-items:start; }
.sitemap-card { padding:18px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:#fff; box-shadow:var(--luvete-shadow-sm); }
.sitemap-card h2 { margin:0 0 14px; font-size:var(--luvete-h2); font-weight:800; }
.sitemap-card ul { margin:0; padding-left:20px; }
.sitemap-card li + li { margin-top:7px; }
.sitemap-card a { color:var(--luvete-text); text-decoration:none; }
.sitemap-card a:hover { color:var(--luvete-red); }
.sitemap-catalog { display:grid; gap:8px; }
.sitemap-catalog h2 { margin-bottom:6px; }
.sitemap-columns { columns:2; column-gap:20px; }
.sitemap-root { margin:0 0 18px; break-inside:avoid; }
.sitemap-root h3 { margin:0 0 8px; font-size:var(--luvete-text-base); font-weight:800; }
.sitemap-root small, .sitemap-root li > small { margin-left:6px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:500; font-variant-numeric:tabular-nums; }
.sitemap-root ul { padding-left:16px; }
.sitemap-root li + li { margin-top:5px; }
.sitemap-root ul ul { margin-top:4px; }
/* Корни — details: на десктопе всегда раскрыты и без маркера, на телефоне 678 ссылок свёрнуты в аккордеон (luvete-ui.js). */
.sitemap-root summary { display:flex; align-items:center; gap:8px; list-style:none; cursor:default; }
.sitemap-root summary::-webkit-details-marker { display:none; }
.sitemap-root summary h3 { flex:1 1 auto; }
.sitemap-root summary i { display:none; }
@media (max-width:767.98px) {
	.sitemap-columns { columns:1; }
	.sitemap-root { margin:0; border-top:1px solid var(--luvete-border); }
	.sitemap-root summary { min-height:46px; cursor:pointer; }
	.sitemap-root summary h3 { margin:0; }
	.sitemap-root summary i { display:block; color:var(--luvete-muted); font-size:12px; transition:transform .15s; }
	.sitemap-root[open] summary i { transform:rotate(180deg); }
	.sitemap-root ul { padding:0 0 12px 12px; }
	.sitemap-root li { padding:5px 0; }
	.sitemap-root li + li { margin-top:0; }
}
.sitemap-side { display:grid; gap:16px; }

#account-return #content > p:empty { display:none; }
#account-forgotten #content h1 { text-transform:none; }
#account-forgotten #content > p { padding:0; border:0; background:transparent; text-align:left; }
#product-compare .catalog-empty p { max-width:560px; margin:0; color:var(--luvete-muted); line-height:1.6; }
/* Сравнение: товары в шапке таблицы (фото, название, цена, кнопки), характеристики строками ниже. */
.luvete-compare-head { display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:10px; }
.luvete-compare-head h1 { margin:0; }
.luvete-compare-clear { display:inline-flex; align-items:center; gap:8px; color:var(--luvete-muted); font-weight:600; text-decoration:none; }
.luvete-compare-clear:hover { color:var(--luvete-red); }
.luvete-compare-tools { display:flex; flex-wrap:wrap; align-items:center; gap:18px; }
.luvete-compare-diff { display:inline-flex; align-items:center; gap:8px; margin:0; padding-left:2.6em; font-weight:600; cursor:pointer; }
.luvete-compare-diff .form-check-input { width:2.2em; height:1.2em; margin-left:-2.6em; margin-top:0; cursor:pointer; }
.luvete-compare-diff .form-check-input:checked { border-color:var(--luvete-red); background-color:var(--luvete-red); }
.luvete-compare-table.is-diff-only tr.is-same { display:none; }
.luvete-compare-sticky { position:sticky; z-index:5; top:0; margin:0 0 8px; padding:8px 0; background:var(--luvete-bg); }
.luvete-compare-sticky-inner { display:grid; grid-template-columns:220px repeat(auto-fit, minmax(0, 1fr)); gap:0 16px; align-items:center; padding:8px 16px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); box-shadow:0 6px 18px rgba(0,0,0,.08); }
.luvete-compare-sticky-item { display:flex; min-width:0; align-items:center; gap:10px; color:var(--luvete-text); text-decoration:none; }
.luvete-compare-sticky-item img { width:36px; height:36px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:contain; background:#fff; }
.luvete-compare-sticky-item span { display:grid; min-width:0; }
.luvete-compare-sticky-item b { color:var(--luvete-red); }
.luvete-compare-sticky-item small { overflow:hidden; color:var(--luvete-muted); white-space:nowrap; text-overflow:ellipsis; }
@media (max-width:767.98px) { .luvete-compare-sticky-inner { grid-template-columns:repeat(auto-fit, minmax(0, 1fr)); } .luvete-compare-sticky-label { display:none; } .luvete-compare-sticky-item small { display:none; } }
.luvete-compare { overflow-x:auto; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-md); background:var(--luvete-surface); }
.luvete-compare-table { width:100%; min-width:640px; border-collapse:separate; border-spacing:0; }
.luvete-compare-table th, .luvete-compare-table td { padding:12px 16px; border-bottom:1px solid var(--luvete-border); vertical-align:top; text-align:left; font-weight:400; }
.luvete-compare-table thead th { padding:18px 16px; vertical-align:bottom; }
.luvete-compare-table tbody th { width:220px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.luvete-compare-table th:first-child, .luvete-compare-table td:first-child { position:sticky; left:0; z-index:1; background:var(--luvete-surface); }
.luvete-compare-table tbody tr:last-child th, .luvete-compare-table tbody tr:last-child td { border-bottom:0; }
.luvete-compare-table tbody + tbody tr:first-child th { border-top:1px solid var(--luvete-border); }
.luvete-compare-group th { padding:10px 16px !important; width:auto !important; background:var(--luvete-bg); color:var(--luvete-text) !important; font-size:var(--luvete-text-xs) !important; font-weight:700; letter-spacing:.06em; text-transform:uppercase; }
.luvete-compare-product { display:grid; gap:10px; min-width:200px; }
/* Телефон: колонка подписей узкая и прилипшая, колонки товаров по 60vw — край второго виден, правый край подтаивает (is-end из luvete-ui.js). */
@media (max-width:767.98px) {
    .luvete-compare-table { width:max-content; min-width:100%; }
    .luvete-compare-table tbody th, .luvete-compare-table thead th:first-child { width:108px; min-width:108px; max-width:108px; padding:10px; }
    .luvete-compare-table td, .luvete-compare-table thead th:not(:first-child) { width:60vw; min-width:60vw; max-width:60vw; padding:10px; }
    .luvete-compare-product { min-width:0; }
    .luvete-compare { scrollbar-width:none; -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 44px), transparent); mask-image:linear-gradient(to right, #000 calc(100% - 44px), transparent); }
    .luvete-compare.is-end { -webkit-mask-image:none; mask-image:none; }
}
.luvete-compare-thumb img { display:block; width:120px; height:120px; border:1px solid var(--luvete-border); border-radius:10px; object-fit:contain; background:#fff; }
.luvete-compare-name { color:var(--luvete-text); font-weight:700; line-height:1.35; text-decoration:none; }
.luvete-compare-name:hover { color:var(--luvete-red); }
.luvete-compare-price { color:var(--luvete-red); font-size:var(--luvete-text-lg); font-weight:800; }
.luvete-compare-price .price-old { margin-left:6px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:400; text-decoration:line-through; }
.luvete-compare-actions { display:flex; gap:6px; margin:0; }
.luvete-compare-actions .btn { min-height:40px; padding:0 16px; border-radius:8px; font-size:var(--luvete-text-sm); font-weight:700; }
.luvete-compare-actions .btn-light { width:40px; min-width:40px; padding:0; color:var(--luvete-muted); }
.luvete-compare-actions .btn-light:hover { color:var(--luvete-red); }
.luvete-compare-summary { color:var(--luvete-text-2); font-size:var(--luvete-text-sm); line-height:1.5; }
.luvete-compare-dash { color:var(--luvete-border-strong); }
.luvete-compare-table .rating i { color:var(--luvete-yellow); }
.luvete-compare-table .rating small { display:block; margin-top:4px; color:var(--luvete-muted); }
@media (max-width:767.98px) {
    .luvete-compare-table tbody th { width:130px; }
    .luvete-compare-table th, .luvete-compare-table td { padding:10px 12px; }
    .luvete-compare-product { min-width:170px; }
    .luvete-compare-thumb img { width:88px; height:88px; }
}

/* Пагинация — отдельные компактные кнопки в цветах темы; над ними «Показати ще» для телефона. */
.luvete-pagination { display:grid; justify-items:center; gap:14px; }
.luvete-pagination-more { display:inline-flex; min-height:46px; align-items:center; gap:8px; padding:0 26px; border:1px solid var(--luvete-border-strong); border-radius:10px; background:var(--luvete-surface); font-weight:700; }
.luvete-pagination-more:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-pagination-more:disabled { opacity:.6; }
.luvete-pagination-more .fa-spin { --fa-animation-duration:.8s; color:var(--luvete-red); }
.luvete-pagination .page-link i { font-size:12px; }
.luvete-pagination .page-item.disabled .luvete-pagination-gap { border-color:transparent; background:transparent; color:var(--luvete-muted); }
.row:has(> [class*="col"] > .luvete-pagination) { margin-top:var(--luvete-pagination-gap); margin-bottom:0; }
.row:has(> [class*="col"] > .luvete-pagination) > [class*="col"]:not(:has(> .luvete-pagination)) { display:none; }
.pagination { justify-content:center; gap:6px; margin:0; }
.row:has(> [class*="col"] > .pagination) { margin-top:var(--luvete-pagination-gap); margin-bottom:0; }
.row:has(> [class*="col"] > .pagination) > [class*="col"]:has(> .pagination) { flex:0 0 100%; width:100%; text-align:center !important; }
.row:has(> [class*="col"] > .pagination) > [class*="col"]:not(:has(> .pagination)) { display:none; }
.pagination .page-item .page-link {
    display:flex;
    min-width:44px;
    height:44px;
    align-items:center;
    justify-content:center;
    margin-left:0;
    padding:0 12px;
    border:1px solid var(--luvete-border);
    border-radius:var(--luvete-radius-sm);
    background:var(--luvete-surface);
    color:var(--luvete-red-d);
    font-weight:700;
    line-height:1;
    box-shadow:none;
}
.pagination .page-item .page-link:hover,
.pagination .page-item .page-link:focus {
    border-color:rgba(224,31,38,.45);
    background:rgba(224,31,38,.08);
    color:var(--luvete-red-d);
    box-shadow:0 0 0 3px rgba(224,31,38,.1);
}
.pagination .page-item.active .page-link {
    border-color:var(--luvete-red);
    background:var(--luvete-red);
    color:#fff;
    box-shadow:0 3px 10px rgba(224,31,38,.2);
}
.pagination .page-item.disabled .page-link {
    border-color:var(--luvete-border);
    background:var(--luvete-surface-muted);
    color:var(--luvete-muted);
    opacity:.55;
}

/* Страница входа: одинаковые действия в карточках, регистрация прижата к низу. */
#account-login > .row > #column-right { display:none !important; }
#account-login > .row > #content { flex:0 0 100%; width:100%; max-width:100%; }
.product-sticky-cart { display:none; }
/* Карточка товара по макету C: галерея слева, справа белая карточка покупки;
   описание, характеристики и отзывы — секциями подряд, без вкладок. */
.product-layout { display:grid; grid-template-columns:minmax(0, 5fr) minmax(0, 7fr); gap:var(--luvete-block-gap); align-items:stretch; margin-bottom:var(--luvete-block-gap); }
.product-gallery { display:flex; height:100%; flex-direction:column; overflow:hidden; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
/* Лупа в верхнем углу: внизу она ложилась на фото и упиралась в ряд миниатюр. */
.product-gallery-zoom { position:absolute; top:12px; right:12px; display:grid; width:38px; height:38px; place-items:center; border-radius:50%; background:var(--luvete-bg); color:var(--luvete-text-2); font-size:15px; transition:background .15s, color .15s; }
.product-gallery-main:hover .product-gallery-zoom { background:var(--luvete-text); color:#fff; }
.product-summary { display:flex; flex-direction:column; min-width:0; padding:24px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
#product-product #content .product-summary h1 { margin:0 0 10px; padding:0; border:0; color:var(--luvete-text); font-size:var(--luvete-h1); font-weight:800; line-height:1.25; letter-spacing:-.02em; }
#product-product #content .product-summary h1::after { display:none; }
.product-meta { display:flex; flex-wrap:wrap; align-items:center; gap:6px 18px; margin-bottom:16px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.product-sku { color:var(--luvete-muted); }
.product-stock { font-weight:700; color:var(--luvete-text); }
.product-stock-qty { color:var(--luvete-muted); font-weight:600; }
.product-stock .fa-circle { margin-right:4px; color:var(--luvete-muted); font-size:.55em; vertical-align:middle; }
.product-stock.is-available .fa-circle { color:var(--luvete-in-stock); }
.product-meta .rating { display:inline-flex; align-items:center; gap:2px; color:var(--luvete-yellow); font-size:13px; }
.product-meta .rating a { margin-left:6px; color:var(--luvete-muted); }
.product-write-review { display:inline-flex; align-items:center; gap:6px; color:var(--luvete-muted); font-weight:600; text-decoration:none; }
.product-write-review:hover { color:var(--luvete-red); }
/* Отзывы: список слева мелким, форма за кнопкой; имя и оценка в одну строку. */
.product-review-list { color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.product-review-list > p { margin:0 0 12px; text-align:left !important; }
.product-review-toggle { display:inline-flex; min-height:40px !important; align-items:center; gap:8px; padding:0 16px; border:1px solid var(--luvete-border-strong); border-radius:10px; background:var(--luvete-surface); color:var(--luvete-text); font-weight:600; }
.product-review-form { max-width:720px; padding-top:16px; }
.product-review-grid { display:grid; grid-template-columns:minmax(0, 1fr) auto; gap:12px 24px; align-items:end; margin-bottom:12px; }
.product-review-form .form-label { display:block; margin-bottom:5px; font-size:var(--luvete-text-sm); font-weight:600; }
.product-review-toggle[aria-expanded="true"] { display:none; }
.product-review-form .form-control { border-radius:10px; }
.product-review-submit { min-height:44px; margin-top:12px; padding:0 22px; border-radius:10px; font-weight:700; }
.product-review-moderation { margin:10px 0 0; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
@media (max-width:575.98px) { .product-review-grid { grid-template-columns:1fr; } }
/* Оценка в форме отзыва: пять звёзд, заливаются до выбранной/наведённой (порядок в DOM обратный не нужен — красим через :has). */
.luvete-rating-input { display:inline-flex; gap:2px; }
.luvete-rating-input input { position:absolute; width:1px; height:1px; margin:0; opacity:0; pointer-events:none; }
.luvete-rating-input label { display:grid; width:36px; height:36px; margin:0; place-items:center; color:var(--luvete-border-strong); font-size:22px; cursor:pointer; transition:color .1s, transform .1s; }
.luvete-rating-input label:hover { transform:scale(1.15); }
.luvete-rating-input:has(input:checked) label { color:var(--luvete-yellow); }
.luvete-rating-input input:checked ~ label { color:var(--luvete-border-strong); }
.luvete-rating-input input:checked + label { color:var(--luvete-yellow); }
.luvete-rating-input:hover label { color:var(--luvete-yellow); }
.luvete-rating-input label:hover ~ label { color:var(--luvete-border-strong); }
.luvete-rating-input.is-invalid label { color:rgba(224,31,38,.35); }
/* «Недавно переглянуті» — карточки из localStorage, упрощённые: фото, название, цена. */
.luvete-recent-card { display:flex; height:100%; flex-direction:column; gap:6px; padding:10px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); color:var(--luvete-text); text-decoration:none; }
.luvete-recent-card img { width:100%; height:auto; aspect-ratio:1 / 1; border-radius:8px; object-fit:contain; }
.luvete-recent-card strong { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; font-size:var(--luvete-text-sm); line-height:1.3; }
.luvete-recent-card span { margin-top:auto; color:var(--luvete-red); font-weight:800; }
.luvete-recent-card:hover { color:var(--luvete-red); box-shadow:var(--luvete-shadow-hover); }
/* Цена, количество и «Купити» — одной строкой; варианты и опции (если есть) идут между метой и строкой покупки. */
.product-purchase { display:flex; flex-wrap:wrap; align-items:center; gap:12px 20px; margin-top:4px; }
.product-purchase #product { flex:1 1 320px; min-width:0; }
/* flex-basis:100% у «Економія» раздувал max-content блока за экран телефона — страница ездила вбок. */
.product-price-block { display:flex; flex:0 1 auto; flex-wrap:wrap; align-items:baseline; gap:10px; min-width:0; max-width:100%; margin:0; }
.product-price-block .price-new { color:var(--luvete-red); font-size:var(--luvete-text-2xl); font-weight:800; line-height:1.1; }
.product-price-block .price-old { color:var(--luvete-muted); font-size:var(--luvete-text-base); text-decoration:line-through; }
.product-price-block small { color:var(--luvete-muted); }
.product-price-badge { position:static; align-self:center; }
.product-price-saving { flex-basis:100%; margin-top:-4px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
.product-discounts { margin:0 0 10px; padding:0; color:var(--luvete-muted); font-size:var(--luvete-text-sm); list-style:none; }
.luvete-variants { margin:0 0 16px; }
.luvete-variants h3 { margin-bottom:8px; font-size:var(--luvete-text-sm); font-weight:700; }
.luvete-variants-list { display:flex; flex-wrap:wrap; gap:8px; }
/* Плитки вариантов: фото на белом, без серой подложки от .img-thumbnail. */
.luvete-variant { display:flex; width:76px; flex-direction:column; align-items:center; gap:4px; padding:4px; border:1px solid var(--luvete-border); border-radius:10px; color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:600; text-align:center; text-decoration:none; }
.luvete-variant img { width:100%; height:auto; aspect-ratio:1 / 1; border-radius:6px; object-fit:contain; background:#fff; }
.luvete-variant span { max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.luvete-variant:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-variant.is-active { border-color:var(--luvete-red); box-shadow:0 0 0 1px var(--luvete-red) inset; color:var(--luvete-red); }
.luvete-variant.is-out img { filter:grayscale(1); opacity:.7; }
.luvete-variant.is-out span { color:var(--luvete-muted); text-decoration:line-through; }
.luvete-variants.is-compact .luvete-variant { width:auto; min-width:56px; padding:6px 12px; gap:1px; }
.luvete-variants.is-compact .luvete-variant small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:500; }
.luvete-variants.is-compact .luvete-variant.is-active small { color:var(--luvete-red); }
#product-info #form-product > .mb-3:last-of-type { margin-bottom:0 !important; }
.product-buy-row { display:flex; flex-wrap:nowrap; align-items:stretch; gap:10px; margin:0; }
.product-alternatives { flex-basis:100%; margin-top:2px; }
.product-alternatives-title { display:inline-flex; align-items:center; gap:6px; margin-bottom:10px; color:var(--luvete-text); font-weight:700; text-decoration:none; }
.product-alternatives-title:hover { color:var(--luvete-red); }
.product-alternatives-list { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:10px; }
.product-alternative { display:grid; gap:4px; justify-items:center; padding:8px; border:1px solid var(--luvete-border); border-radius:10px; color:var(--luvete-text); font-size:var(--luvete-text-xs); text-align:center; text-decoration:none; }
.product-alternative img { width:72px; height:72px; border-radius:8px; object-fit:contain; }
.product-alternative span { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-height:1.3; }
.product-alternative b { color:var(--luvete-red); }
.product-alternative:hover { border-color:var(--luvete-red); color:var(--luvete-text); }
@media (max-width:575.98px) { .product-alternatives-list { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
.product-unavailable { display:flex; min-height:var(--luvete-btn-height); align-items:center; justify-content:center; gap:8px; border:1px solid var(--luvete-border-strong); border-radius:var(--luvete-btn-radius); background:var(--luvete-surface-muted); color:var(--luvete-muted); font-size:var(--luvete-text-base); font-weight:800; }
.product-qty { width:136px; flex:0 0 136px; overflow:hidden; border:1px solid var(--luvete-border-strong); border-radius:10px; }
.product-qty .product-qty-step { width:40px; min-width:40px !important; min-height:0 !important; padding:0; border:0; border-radius:0; background:var(--luvete-surface-muted); color:var(--luvete-text); font-size:18px; font-weight:600; }
.product-qty .product-qty-step:hover { background:var(--luvete-border); }
#product-info #input-quantity { min-width:0; flex:1 1 auto; border:0; background:var(--luvete-surface); font-weight:700; text-align:center; box-shadow:none; }
.product-buy-button { flex:1 1 auto; min-height:50px; border-radius:10px; font-size:var(--luvete-text-base); font-weight:800; }
#error-quantity:empty { display:none; }
.product-secondary-form { margin:10px 0 0; }
.product-secondary-actions { display:flex; flex-wrap:wrap; gap:4px 18px; }
.product-secondary-actions .btn { display:inline-flex; min-width:0 !important; min-height:44px !important; align-items:center; gap:7px; padding:0; border:0; background:transparent; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
.product-secondary-actions .btn:hover { color:var(--luvete-red); }
.product-secondary-actions .luvete-wishlist-toggle.is-active { color:var(--luvete-red); }
.product-share { display:flex; flex-wrap:wrap; align-items:center; gap:6px 14px; margin-top:6px; font-size:var(--luvete-text-sm); }
.product-share-label { color:var(--luvete-muted); }
.product-share-more[hidden] { display:none; }
.product-share a, .product-share-copy, .product-share-more { display:inline-flex; align-items:center; gap:6px; min-height:36px; padding:0; border:0; background:transparent; color:var(--luvete-text); font-weight:600; text-decoration:none; }
.product-share a:hover, .product-share-copy:hover, .product-share-more:hover { color:var(--luvete-red); }
.product-share .is-telegram i { color:#2aabee; }
.product-share .is-viber i { color:#7360f2; }
.product-share .is-whatsapp i { color:#25d366; }
.product-share-copy.is-done { color:#1a7f37; }
.product-purchase-info { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; margin:16px 0; }
.product-purchase-info:last-child { margin-bottom:0; }
.product-purchase-info > div { display:flex; align-items:center; gap:10px; min-height:52px; padding:8px 12px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-bg); }
.product-purchase-info i { width:22px; color:var(--luvete-red); font-size:16px; text-align:center; }
.product-purchase-info span { display:flex; flex-direction:column; color:var(--luvete-muted); font-size:var(--luvete-text-xs); line-height:1.35; }
.product-purchase-info strong { color:var(--luvete-text); font-size:var(--luvete-text-sm); }
.product-key-specs { display:grid; gap:0; margin:0; }
.product-key-specs > div { display:grid; grid-template-columns:minmax(0, 1fr) minmax(0, 1.3fr); gap:12px; padding:6px 0; border-bottom:1px dashed var(--luvete-border); line-height:1.35; }
.product-key-specs > div:last-child { padding-bottom:0; border-bottom:0; }
.product-summary > :last-child { margin-bottom:0; }
.product-key-specs dt { color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:400; }
.product-key-specs dd { margin:0; font-size:var(--luvete-text-sm); font-weight:600; }
.product-key-specs-toggle { display:none; margin-top:8px; padding:0; border:0; background:none; color:var(--luvete-red); font-size:var(--luvete-text-sm); font-weight:700; }
@media (max-width:767.98px) {
    .product-key-specs.is-collapsible:not(.is-open) > .is-extra { display:none; }
    .product-key-specs.is-collapsible:not(.is-open) > div:nth-child(6) { padding-bottom:0; border-bottom:0; }
    .product-key-specs-toggle { display:inline-block; }
}
.product-section { margin:0 0 var(--luvete-block-gap); padding:24px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.product-section > h2 { margin:0 0 14px; font-size:var(--luvete-h2); font-weight:800; }
.product-section-body { line-height:1.55; }
/* Ноль отзывов: заголовок, «немає відгуків» и кнопка в одну строку, форма раскрывается под ними. */
.product-section-compact { display:flex; flex-wrap:wrap; align-items:center; gap:10px 20px; padding:16px 24px; }
.product-section-compact > h2 { margin:0; font-size:var(--luvete-text-lg); }
.product-section-compact .product-section-body { flex:1 1 auto; }
.product-section-compact .product-review { display:flex; flex-wrap:wrap; align-items:center; gap:10px 20px; }
.product-section-compact .product-review-list > p { margin:0; }
.product-section-compact .product-review-form { flex:0 0 100%; }
.product-section-compact .product-review-toggle { margin-left:auto; }
/* Раскрытая форма: строка снова становится обычной секцией, иначе заголовок висит сбоку от полей. */
.product-section-compact:has(.product-review-form.show, .product-review-form.collapsing) { display:block; padding:24px; }
.product-section-compact:has(.product-review-form.show, .product-review-form.collapsing) > h2 { margin-bottom:14px; }
.product-section-compact:has(.product-review-form.show, .product-review-form.collapsing) .product-review { display:block; }
.product-section-body > :last-child { margin-bottom:0; }
.luvete-recommendations { margin-top:0; }
@media (max-width:991.98px) {
    .product-layout { grid-template-columns:1fr; }
    .product-gallery { height:auto; }
    .product-gallery-main { min-height:0; height:360px; }
}
@media (max-width:767.98px) {
    .product-summary, .product-section { padding:16px; }
    .product-purchase-info { grid-template-columns:1fr; }
    .product-purchase { gap:10px; }
    .product-purchase #product { flex-basis:100%; }
    .product-qty { flex:0 0 130px; }
}

.product-gallery-column { min-width:0; }
/* Фото товара живёт в квадрате: снимки с прома разной высоты, иначе первый экран раздувает страницу. */
.product-gallery-main { position:relative; display:flex; min-height:360px; flex:1 1 auto; align-items:center; justify-content:center; overflow:hidden; margin:0; padding:24px; border:0; border-radius:0; background:#fff; }
/* Bootstrap красит .img-thumbnail в фон страницы — при contain по краям фото вылезали серые полосы. */
/* Абсолют: высота главного фото зависит от карточки покупки, а процент высоты во flex-колонке не считается. */
#product-info .product-gallery-main .img-thumbnail { position:absolute; inset:24px; width:calc(100% - 48px); height:calc(100% - 48px); margin:0; padding:0; border:0; border-radius:0; background:transparent; object-fit:contain; }
.product-gallery-track { display:flex; flex:1 1 auto; min-height:0; flex-direction:column; }
.product-gallery-slide-extra { display:none; }
.product-gallery-dots { display:none; }
.product-gallery-thumbs { position:relative; padding:12px; }
.product-gallery-thumbnails { display:flex; flex-wrap:nowrap; gap:8px; overflow-x:auto; scroll-snap-type:x proximity; scrollbar-width:none; }
.product-gallery-thumbnails::-webkit-scrollbar { display:none; }
.product-gallery-thumbnail { display:flex; flex:0 0 76px; width:76px; height:76px; align-items:center; justify-content:center; overflow:hidden; padding:0; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-sm); background:#fff; scroll-snap-align:start; cursor:pointer; transition:border-color .15s; }
.product-gallery-thumbnail:hover { border-color:var(--luvete-border-strong); }
.product-gallery-thumbnail.is-active { border-color:var(--luvete-red); box-shadow:0 0 0 1px var(--luvete-red); }
.product-gallery-thumbs-arrow { position:absolute; top:50%; z-index:2; display:none; width:28px; height:28px; padding:0; border:1px solid var(--luvete-border); border-radius:50%; background:var(--luvete-bg); color:var(--luvete-text-2); font-size:11px; transform:translateY(-50%); box-shadow:0 2px 6px rgba(0,0,0,.08); }
.product-gallery-thumbs-arrow.is-prev { left:2px; }
.product-gallery-thumbs-arrow.is-next { right:2px; }
.product-gallery-thumbs.has-overflow .product-gallery-thumbs-arrow { display:grid; place-items:center; }
.product-gallery-thumbs-arrow:disabled { opacity:0; pointer-events:none; }
.product-gallery-thumbs-arrow:hover { background:var(--luvete-text); color:#fff; }
#product-info .product-gallery-thumbnail .img-thumbnail { width:100%; height:100%; padding:4px; border:0; object-fit:contain; }

.product-tags-line { margin-top:var(--luvete-space-3); color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
.product-tags-line a { color:inherit; }
.product-tags-line a:hover { color:var(--luvete-red); }

/* Корзина: товарная таблица, итоги и действия собраны в отдельные спокойные блоки. */
#checkout-cart #shopping-cart > h1 { margin:0 0 var(--luvete-layout-gap); color:var(--luvete-text); font-size:var(--luvete-h1); font-weight:800; }
.luvete-cart-items { overflow:hidden; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); }
.luvete-cart-item { display:grid; grid-template-columns:90px minmax(0, 1fr) 164px 140px 36px; gap:16px; align-items:center; padding:16px; }
.luvete-cart-item:not(:last-child) { border-bottom:1px solid var(--luvete-border); }
.luvete-cart-item:has(.luvete-cart-outofstock) { background:rgba(224,31,38,.025); box-shadow:inset 3px 0 0 var(--luvete-red); }
.luvete-cart-thumb img { width:90px; height:90px; padding:4px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:contain; }
.luvete-cart-info { min-width:0; }
.luvete-cart-name { display:block; color:var(--luvete-text); font-size:var(--luvete-text-base); font-weight:700; line-height:1.35; }
.luvete-cart-name:hover { color:var(--luvete-red); }
.luvete-cart-meta { margin:6px 0 0; padding:0; color:var(--luvete-muted); font-size:var(--luvete-text-xs); line-height:1.5; list-style:none; }
.luvete-cart-outofstock { display:block; margin-top:7px; color:var(--luvete-low-stock); font-size:var(--luvete-text-xs); font-weight:600; }
.luvete-cart-qty .input-group { flex-wrap:nowrap; }
.luvete-cart-qty .form-control { min-width:0; flex:1 1 auto; padding-right:10px; padding-left:10px; text-align:center; }
.luvete-cart-qty .btn { display:flex; width:42px; min-width:42px; flex:0 0 42px; align-items:center; justify-content:center; padding:0; border-color:var(--luvete-border-strong); background:var(--luvete-surface); color:var(--luvete-muted); font-size:var(--luvete-text-sm); line-height:1; }
.luvete-cart-qty .btn:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-cart-stepper { position:relative; display:flex; width:132px; height:44px; align-items:stretch; border:1px solid var(--luvete-border-strong); border-radius:10px; background:var(--luvete-surface); overflow:hidden; }
.luvete-cart-stepper .form-control { min-width:0; flex:1 1 auto; height:auto; padding:0 4px; border:0; border-radius:0; text-align:center; font-weight:700; box-shadow:none; }
.luvete-cart-stepper .form-control.is-invalid { background-image:none; }
.luvete-cart-step { width:40px; flex:0 0 40px; border:0; background:transparent; color:var(--luvete-muted); font-size:18px; font-weight:700; line-height:1; }
.luvete-cart-step:hover { background:rgba(224,31,38,.06); color:var(--luvete-red); }
.luvete-cart-update { position:absolute; width:1px; height:1px; overflow:hidden; clip:rect(0 0 0 0); border:0; padding:0; }
.luvete-cart-price-old s { color:var(--luvete-muted); }
.luvete-cart-price-old b { margin-left:6px; padding:1px 6px; border-radius:6px; background:var(--luvete-yellow); color:var(--luvete-text); font-weight:800; }
/* Пустая корзина: плашка закладок — миниатюры, текст, две кнопки. */
.luvete-cart-wishlist { display:flex; flex-wrap:wrap; align-items:center; gap:14px 18px; margin-top:var(--luvete-layout-gap); padding:16px 20px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.luvete-cart-wishlist-thumbs { display:flex; align-items:center; }
.luvete-cart-wishlist-thumbs a { display:block; width:44px; height:44px; overflow:hidden; border:2px solid #fff; border-radius:50%; background:#fff; box-shadow:0 0 0 1px var(--luvete-border); }
.luvete-cart-wishlist-thumbs a + a, .luvete-cart-wishlist-thumbs span { margin-left:-10px; }
.luvete-cart-wishlist-thumbs img { width:100%; height:100%; object-fit:cover; }
.luvete-cart-wishlist-thumbs span { display:inline-flex; width:44px; height:44px; align-items:center; justify-content:center; border-radius:50%; background:var(--luvete-surface-muted); color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:800; }
.luvete-cart-wishlist-text { flex:1 1 220px; font-weight:600; }
.luvete-cart-wishlist-actions { display:flex; flex-wrap:wrap; gap:8px; }
@media (max-width:767.98px) { .luvete-cart-wishlist-actions { width:100%; } .luvete-cart-wishlist-actions .btn { flex:1 1 auto; } }
/* Футер чекаута на телефоне: один телефон и копирайт. */
.luvete-footer-mini { padding:6px 0 10px; }
.luvete-footer-mini a { display:inline-flex; align-items:center; gap:10px; color:#fff; font-weight:700; text-decoration:none; }
.luvete-footer-mini a i { color:var(--luvete-red); }
.luvete-cart-recommended { margin-top:var(--luvete-block-gap); }
.luvete-cart-sticky { position:fixed; z-index:1030; right:0; bottom:calc(64px + env(safe-area-inset-bottom)); left:0; display:flex; align-items:center; justify-content:space-between; gap:12px; padding:10px 12px; border-top:1px solid var(--luvete-border); background:var(--luvete-surface); box-shadow:0 -4px 16px rgba(0,0,0,.06); }
.luvete-cart-sticky > div { display:flex; flex-direction:column; line-height:1.2; }
.luvete-cart-sticky span { color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
.luvete-cart-sticky strong { font-size:var(--luvete-text-lg); font-weight:800; }
.luvete-cart-sticky .btn { min-height:44px; flex:1 1 auto; max-width:260px; font-weight:700; }
.luvete-cart-recommended .luvete-home-products { margin-bottom:0; }
.luvete-cart-price { display:grid; justify-items:end; gap:2px; text-align:right; }
.luvete-cart-price strong { font-size:var(--luvete-text-lg); font-weight:800; white-space:nowrap; }
.luvete-cart-price small { color:var(--luvete-muted); font-size:var(--luvete-text-xs); white-space:nowrap; }
.luvete-cart-remove { display:grid; width:36px; height:36px; place-items:center; padding:0; border-color:transparent; background:transparent; color:var(--luvete-muted); font-size:var(--luvete-text-base); }
.luvete-cart-remove:hover { border-color:rgba(224,31,38,.2); background:rgba(224,31,38,.1); color:var(--luvete-red); }
/* Итог и кнопка оформления — отдельный блок под таблицей, а не мелкая строка в её подвале. */
.luvete-cart-layout { display:grid; grid-template-columns:minmax(0, 1fr) 340px; gap:var(--luvete-layout-gap); align-items:start; }
.luvete-cart-summary { position:sticky; top:12px; display:grid; gap:14px; padding:20px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
#checkout-cart #checkout-total { display:grid; gap:5px; min-width:0; }
#checkout-cart #checkout-total > div { display:flex; align-items:baseline; justify-content:space-between; gap:20px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
#checkout-cart #checkout-total > div:only-child,
#checkout-cart #checkout-total > div:last-child { color:var(--luvete-text); font-size:var(--luvete-text-xl); font-weight:800; }
.luvete-cart-coupon { grid-column:1; margin-bottom:4px; }
.luvete-cart-coupon label { display:block; margin-bottom:6px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-cart-coupon-row { display:flex; flex-wrap:wrap; gap:8px; }
.luvete-cart-coupon-row .form-control { flex:1 1 120px; min-width:0; }
.luvete-cart-summary .luvete-cart-coupon-row .btn-light { flex:0 0 auto; width:auto; min-width:0; min-height:44px; padding:0 16px; border-radius:10px; border-color:var(--luvete-border-strong); font-weight:600; }
.luvete-cart-coupon-toggle { display:none; padding:0; border:0; background:none; color:var(--luvete-red); font-size:var(--luvete-text-sm); font-weight:700; }
@media (max-width:767.98px) {
    .luvete-cart-coupon-toggle { display:inline-block; }
    .luvete-cart-coupon.is-collapsed form { display:none; }
    .luvete-cart-coupon.is-collapsed { margin-bottom:-6px; }
    .luvete-cart-coupon:not(.is-collapsed) .luvete-cart-coupon-toggle { margin-bottom:6px; }
    .luvete-cart-coupon label { display:none; }
}
.luvete-cart-coupon-remove { min-width:0 !important; min-height:0 !important; padding:0 8px; color:var(--luvete-muted); font-weight:600 !important; }
.luvete-cart-actions { display:flex; flex-direction:column; gap:8px; }
.luvete-cart-summary .btn { display:inline-flex; width:100%; min-height:52px; align-items:center; justify-content:center; gap:8px; border-radius:10px; font-weight:800; }
.luvete-cart-items { border-radius:14px; }
@media (max-width:991.98px) { .luvete-cart-layout { grid-template-columns:1fr; } .luvete-cart-summary { position:static; } }
.luvete-cart-continue { border-color:var(--luvete-border-strong); background:var(--luvete-surface); color:var(--luvete-muted); font-weight:600 !important; }
.luvete-cart-continue:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
#checkout-cart #accordion { overflow:hidden; border:1px solid var(--luvete-border); border-radius:10px; }
#checkout-cart #accordion .accordion-item { border-right:0; border-left:0; }
#checkout-cart #accordion .accordion-item:first-child { border-top:0; }
#checkout-cart #accordion .accordion-item:last-child { border-bottom:0; }
#checkout-cart #accordion .accordion-button { min-height:48px; font-weight:700; }
#checkout-cart #accordion .accordion-button:not(.collapsed) { background:rgba(224,31,38,.06); color:var(--luvete-red); box-shadow:inset 0 -1px 0 var(--luvete-border); }
#checkout-cart #accordion .accordion-button:focus { border-color:var(--luvete-border); box-shadow:none; }
#checkout-cart #shopping-cart > br { display:none; }

/* Штатный common.js при загрузке и переключении вида возвращает каталогу 3 колонки.
   На обычном десктопе держим 4 карточки в grid-режиме; одноколоночный list-режим не затрагиваем. */
@media (min-width:768px) and (max-width:991.98px) {
    #product-list:not(.product-list) > .col { flex:0 0 auto; width:33.3333%; }
}

/* 992–1199 с боковой панелью: четыре карточки режут названия на второй строке — три. */
@media (min-width:992px) and (max-width:1199.98px) {
    #product-list:not(.product-list) > .col { flex:0 0 auto; width:33.3333%; }
}
@media (min-width:1200px) {
    #product-list:not(.product-list) > .col { flex:0 0 auto; width:25%; }
}

/* Все горизонтальные товарные выдачи в основной колонке — по 5 карточек на широком экране. */
@media (min-width:1400px) {
    #content #product-list:not(.product-list) > .col,
    #content > .row > .col:has(> .product-thumb),
    .luvete-recommendations > .row > .col { flex:0 0 auto; width:20%; }
}

/* Корзина: на телефоне товарные строки превращаются в карточки без горизонтального скролла. */
@media (max-width:767.98px) {
    body { font-size:var(--luvete-text-sm); }
    :root { --luvete-h1:1.375rem; --luvete-h2:1.125rem; }
    h1, #product-product #content h1, #product-category #content h1,
    #information-information #content h1, #information-contact #content h1,
    [id^="account-"] #content h1 { overflow-wrap:anywhere; }
    .information-page #content h2 { margin-top:24px; }
    .information-summary, .information-notice, .information-card { padding:14px; }
    .contact-layout { grid-template-columns:1fr; }
    .contact-card, .contact-form-card { padding:16px; }
    [id^="account-"] #content form:not([id^="form-product"]), [id^="account-"] #content > .row > .col, [id^="account-"] #content > fieldset { padding:14px; }
    #account-order #content table, #account-order #content tbody, #account-order #content tr, #account-order #content td { display:block; width:100%; }
    #account-order #content thead { display:none; }
    #account-order #content tr { margin-bottom:10px; padding:12px; border:1px solid var(--luvete-border); border-radius:var(--luvete-radius-sm); }
    #account-order #content td { padding:5px 0; border:0; text-align:left !important; }
    /* Телефон: числа таблицы без шапки — подписи из data-label в одну строку «Кількість · 2». */
    #account-order #content td.luvete-order-cell { display:flex; justify-content:space-between; gap:12px; padding:3px 0; }
    #account-order #content td.luvete-order-cell::before { content:attr(data-label); color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
    #account-order #content td.luvete-order-product-reorder { padding-top:8px; }
    #product-special #display-control, #product-manufacturer #display-control, #product-latest #display-control { display:grid; grid-template-columns:1fr; }
    #product-special #display-control > div, #product-manufacturer #display-control > div, #product-latest #display-control > div { width:100%; }
    .sitemap-grid { grid-template-columns:1fr; }
    .sitemap-card { padding:14px; }
    .not-found-actions { width:100%; }
    .not-found-actions .btn { width:100%; }
    /* Телефон: строка «бургер · логотип · корзина», под ней всегда открытая строка поиска —
       в каталоге на 4 000 позиций поиск нужнее, чем кнопка каталога. Топбар спрятан
       (телефоны, вход и язык — в панели каталога). */
    .luvete-topbar { display:none; }
    .luvete-header { padding:8px 0; }
    .luvete-header-row { grid-template-columns:44px minmax(0, 1fr) auto; grid-template-areas:"burger logo cart" "search search search"; gap:8px 10px; }
    /* Липкая шапка: при прокрутке вниз схлопывается до логотипа и корзины (mobile-nav.js), вверх — поиск возвращается. */
    .luvete-header { position:sticky; top:0; z-index:1030; }
    .luvete-header.is-compact .luvete-header-search { display:none; }
    .luvete-header.is-compact .luvete-header-row { grid-template-areas:"burger logo cart"; }
    .luvete-header-burger { display:grid; width:44px; height:44px; place-items:center; padding:0; border:1px solid var(--luvete-border-strong); border-radius:8px; background:var(--luvete-surface); color:var(--luvete-text); font-size:18px; }
    .luvete-header-burger { grid-area:burger; }
    .luvete-header-logo { grid-area:logo; justify-self:center; }
    .luvete-header-logo .luvete-wordmark { font-size:1.4rem; }
    .luvete-header-catalog, .luvete-header-links { display:none; }
    .luvete-header-search { grid-area:search; }
    .luvete-catalog-phones { display:grid; gap:2px; padding:8px 18px 4px; }
    .luvete-catalog-phones a { display:flex; min-height:44px; align-items:center; gap:10px; color:var(--luvete-text); font-weight:700; text-decoration:none; }
    .luvete-catalog-phones a i { color:var(--luvete-red); font-size:14px; }
    .luvete-catalog-language { padding:4px 18px 8px; }
    .luvete-catalog-language .dropdown-toggle > .luvete-lang-code { background:var(--luvete-surface-muted); color:var(--luvete-text); }
    .luvete-catalog-language #form-language .dropdown-toggle { display:inline-flex; min-height:44px; align-items:center; gap:6px; font-weight:600; }
    .luvete-search, .luvete-header-catalog, .luvete-cart-button { min-height:44px; }
    .luvete-header-cart { grid-area:cart; }
    .luvete-cart-button { padding:0 12px; }
    .luvete-cart-total { display:none; }
    #cart .dropdown-menu { right:0; left:auto; width:min(360px, calc(100vw - 24px)); }
    #cart .dropdown-menu > li > .table { max-height:300px; padding:4px 10px; }
    #cart .dropdown-menu > li > .table tr { grid-template-columns:50px minmax(0, 1fr) auto 32px; gap:8px; padding:9px 0; }
    #cart .dropdown-menu > li > .table td:first-child .img-thumbnail { width:50px; min-width:50px; height:50px; }
    #cart .dropdown-menu > li > .table td:nth-child(3) { grid-column:2; justify-self:start; }
    #cart .dropdown-menu > li > .table td:nth-child(4) { grid-column:3; grid-row:1 / span 2; }
    #cart .dropdown-menu > li > .table td:last-child { grid-column:4; grid-row:1 / span 2; }
    #cart .dropdown-menu > li > div > p { flex-direction:column; }
    #cart .dropdown-menu > li > div > p > a + a { margin-top:8px; margin-left:0; }
    .luvete-footer { padding-top:16px; }


    .row > .col:has(> .product-thumb) { width:50%; flex:0 0 auto; }
    .product-thumb .image img { width:100%; height:100%; }
    .product-thumb .description { padding:8px 10px 2px; }
    .product-thumb form, .product-thumb .luvete-thumb-cart { padding:6px 10px 10px; }
    .product-thumb .image { padding:8px 8px 0; }
    .luvete-thumb-badges { top:14px; left:14px; }
    .product-thumb .description h4 { min-height:2.6em; margin-bottom:6px; font-size:var(--luvete-text-sm); line-height:1.3; }
    .product-thumb .description h4 a { max-height:2.6em; }
    .product-thumb .description p, .product-thumb .rating { display:none; }
    .product-thumb .button button { min-height:40px; border:1.5px solid var(--luvete-red); background:var(--luvete-surface); color:var(--luvete-red); font-size:var(--luvete-text-sm); }
    .product-thumb .button button:active { background:var(--luvete-red); color:#fff; }
    .product-thumb .description .price { font-size:var(--luvete-text-base); }
    .luvete-thumb-stock { font-size:var(--luvete-text-xs); }
    .product-thumb .price-old { margin-left:4px; font-size:var(--luvete-text-xs); }

    .pagination { max-width:100%; flex-wrap:wrap; gap:6px; }

    #product-product { padding-bottom:76px; }
    .product-sticky-cart {
        position:fixed;
        z-index:1030;
        right:0;
        bottom:0;
        left:0;
        display:flex;
        align-items:center;
        justify-content:space-between;
        gap:14px;
        padding:10px max(12px, env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(12px, env(safe-area-inset-left));
        border-top:1px solid #ddd;
        background:rgba(255,255,255,.97);
        box-shadow:0 -4px 18px rgba(0,0,0,.12);
        opacity:0;
        transform:translateY(100%);
        pointer-events:none;
        transition:opacity .18s, transform .18s;
    }
    .product-sticky-cart.is-visible { opacity:1; transform:translateY(0); pointer-events:auto; }
    .product-sticky-cart-price { color:var(--luvete-red); font-size:var(--luvete-text-lg); font-weight:700; }
    .product-sticky-cart .btn { flex:1 1 auto; max-width:240px; }
    /* Лента со свайпом: каждый слайд во всю ширину, scroll-snap, миниатюры не нужны. */
    .product-gallery-track { flex-direction:row; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch; }
    .product-gallery-track::-webkit-scrollbar { display:none; }
    .product-gallery-slide { flex:0 0 100%; scroll-snap-align:start; }
    .product-gallery-slide-extra { display:flex; }
    .product-gallery-main { min-height:0; height:64vw; max-height:320px; padding:12px; }
    #product-info .product-gallery-main .img-thumbnail { inset:12px; width:calc(100% - 24px); height:calc(100% - 24px); }
    .product-gallery-slide-extra .product-gallery-zoom { display:none; }
    .product-gallery-thumbs { display:none; }
    .product-gallery-dots { display:flex; justify-content:center; gap:6px; padding:8px 0 12px; }
    .product-gallery-dots span { width:7px; height:7px; border-radius:50%; background:var(--luvete-border-strong); transition:background .15s, transform .15s; }
    .product-gallery-dots span.is-active { background:var(--luvete-red); transform:scale(1.25); }


    .luvete-cart-items { overflow:visible; border:0; background:transparent; }
    .luvete-cart-item { position:relative; grid-template-columns:88px minmax(0, 1fr) auto; gap:10px 14px; margin-bottom:14px; padding:14px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); }
    .luvete-cart-thumb { grid-row:1 / span 2; align-self:start; }
    .luvete-cart-thumb img { width:88px; height:88px; }
    .luvete-cart-info { grid-column:2 / span 2; padding-right:32px; }
    .luvete-cart-qty { grid-column:2; }
    .luvete-cart-stepper { width:124px; height:40px; }
    .luvete-cart-price { grid-column:3; }
    .luvete-cart-remove { position:absolute; top:8px; right:8px; }
    .luvete-cart-summary { padding:14px; }
    .luvete-cart-coupon-row .form-control { max-width:none; flex:1 1 140px; }
    .luvete-cart-summary .btn { width:100%; min-width:0; }

}

@media (min-width:768px) and (max-width:991.98px) {
    /* Планшет: одна строка «бургер · логотип · поиск · корзина», без кнопки «Каталог» и подписей. */
    .luvete-topbar-tools > a { display:none; }
    .luvete-phones a:nth-of-type(n+2) { display:none; }
    .luvete-topbar-usp { font-size:var(--luvete-text-xs); }
    .luvete-header { padding:8px 0; }
    .luvete-header-row { grid-template-columns:44px auto minmax(0, 1fr) auto; gap:12px; }
    .luvete-header-burger { display:grid; width:44px; height:44px; place-items:center; padding:0; border:1px solid var(--luvete-border-strong); border-radius:8px; background:var(--luvete-surface); color:var(--luvete-text); font-size:18px; }
    .luvete-header-catalog, .luvete-header-links { display:none; }
    .luvete-category-toolbar .input-group-text { display:none; }
    .luvete-category-toolbar .luvete-toolbar-sort { flex:1 1 200px; width:auto; max-width:300px; }
    .luvete-category-toolbar .luvete-toolbar-limit { width:110px; }
}

@media (prefers-reduced-motion:reduce) {
    *, *::before, *::after {
        scroll-behavior:auto !important;
        animation-duration:.01ms !important;
        animation-iteration-count:1 !important;
        transition-duration:.01ms !important;
    }
    .product-thumb:hover, .luvete-category-card:hover { transform:none; }
}

/* Футер: компактные группы ссылок, сворачиваемые на телефоне. */
.luvete-footer { position:static; border:0; background:var(--luvete-text); padding-top:26px; margin-top:0; }
/* отступ снизу, чтобы контент не прижимался к футеру */
main { padding-bottom:var(--luvete-block-gap); }
/* Нижний отступ до подвала даёт main, а не последний блок — иначе он удваивается. */
#content > :last-child { margin-bottom:0; }
main:has(.pagination) { padding-bottom:var(--luvete-pagination-gap); }
.luvete-footer-groups { display:grid; grid-template-columns:minmax(0, 1.5fr) repeat(4, minmax(0, 1fr)); gap:28px; }
.luvete-footer-brand { color:#bbb; font-size:var(--luvete-text-sm); }
.luvete-footer-logo { margin-bottom:10px; }
.luvete-footer-phone { display:flex; min-height:40px; align-items:center; color:#fff; font-size:var(--luvete-text-base); font-weight:700; text-decoration:none; }
.luvete-footer-phone:hover { color:var(--luvete-yellow); }
.luvete-footer-phone i { width:24px; margin-right:6px; color:var(--luvete-red); font-size:13px; text-align:center; }
.luvete-footer-messengers { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
.luvete-footer-messengers a { display:inline-flex; align-items:center; gap:8px; padding:7px 14px; border-radius:999px; color:#fff; font-size:var(--luvete-text-sm); font-weight:700; text-decoration:none; }
.luvete-footer-messengers .is-telegram { background:#2AABEE; }
.luvete-footer-messengers .is-viber { background:#7360F2; }
/* Планшет: бренд на всю ширину, четыре колонки ссылок в ряд — три колонки давали «3 + 1 сирота». */
@media (min-width:992px) and (max-width:1199.98px) { .luvete-footer-groups { grid-template-columns:repeat(4, minmax(0, 1fr)); gap:20px; } .luvete-footer-brand { grid-column:1 / -1; } }
@media (min-width:768px) and (max-width:991.98px) { .luvete-footer-groups { grid-template-columns:repeat(2, minmax(0, 1fr)); } .luvete-footer-brand { grid-column:1 / -1; } }
@media (max-width:767.98px) { .luvete-footer-groups { grid-template-columns:1fr; gap:0; } .luvete-footer-brand { padding-bottom:16px; } }
.luvete-footer-heading { display:flex; width:100%; min-height:36px; align-items:center; justify-content:space-between; padding:0 0 8px; border:0; border-bottom:1px solid #444; background:transparent; color:#fff; font-size:var(--luvete-text-sm); font-weight:700; letter-spacing:.4px; text-align:left; text-transform:uppercase; }
.luvete-footer-heading i { display:none; }
.luvete-footer-links { display:block; }
.luvete-footer-links ul { margin:8px 0 0; }
.luvete-footer-links li { margin:0; }
.luvete-footer .luvete-footer-links a { display:inline-flex; min-height:30px; align-items:center; color:#bbb; font-size:var(--luvete-text-sm); }
.luvete-footer-links a:hover { color:var(--luvete-red); }
.luvete-footer-powered { margin:14px 0 0; padding:12px 0; border-top:1px solid #444; color:#888; font-size:var(--luvete-text-sm); }

@media (min-width:768px) {
    .luvete-footer .luvete-footer-links.collapse:not(.show) { display:block; }
}

@media (max-width:767.98px) {
    .luvete-footer-group { border-top:1px solid #444; }
    .luvete-footer-heading { min-height:44px; padding:0; border:0; }
    .luvete-footer-heading i { display:block; transition:transform .15s; }
    .luvete-footer-heading[aria-expanded="true"] i { transform:rotate(180deg); }
    .luvete-footer-links { display:none; padding-bottom:8px; }
    .luvete-footer-links.show { display:block; }
}

/* Заголовки страниц — один стиль везде: жирный, слева, без заглавных и черты. */
#information-information #content h1,
#information-contact #content h1,
#product-compare #content > h1,
#checkout-cart #shopping-cart > h1,
#checkout-checkout #content > h1,
[id^="account-"] #content h1 { position:static; margin:0 0 18px; padding:0; border:0; color:var(--luvete-text); font-size:var(--luvete-h1); font-weight:800; letter-spacing:-.02em; text-transform:none; }

/* Вход: одна узкая карточка по центру; регистрация — второй, тихой карточкой под ней. */
/* Вход, регистрация, восстановление пароля — одна карточка 520px по центру, без крошек. */
/* Специфичность выше общих правил кабинета ([id^=account-] #content …), иначе карточка в карточке. */
.luvete-auth-page > .row > #content { padding:0 !important; border:0; background:transparent; box-shadow:none; }
/* Узкая форма (вход, регистрация, контакты, адрес) — по центру свободной высоты, а не прижата к шапке. */
#container > main:has(> .luvete-auth-page) { display:flex; flex-direction:column; }
.luvete-auth-page { display:flex; flex:1 0 auto; flex-direction:column; padding-top:var(--luvete-block-gap); padding-bottom:var(--luvete-block-gap); }
.luvete-auth-page > .row { flex:1 0 auto; align-items:center; }
.luvete-auth { display:grid; max-width:520px; margin:0 auto; gap:12px; }
.luvete-auth-page #content form.luvete-auth-card { max-width:none; margin:0; padding:26px 28px 28px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); box-shadow:none; }
.luvete-auth-page #content .luvete-auth-card h1 { margin:0 0 4px; font-size:var(--luvete-h1); }
.luvete-auth-hint { margin:0 0 18px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); line-height:1.5; }
.luvete-auth-hint a { color:var(--luvete-red); font-weight:600; }
.luvete-auth-card .form-label { margin-bottom:5px; font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-auth-card .form-control, .luvete-auth-card .form-select { min-height:46px; border-radius:10px; }
.luvete-auth-submit { display:flex; width:100%; min-height:48px; align-items:center; justify-content:center; margin-top:4px; border-radius:10px; font-weight:800; }
.luvete-auth-error { display:flex; align-items:flex-start; gap:8px; margin:0 0 12px; padding:10px 12px; border-radius:10px; font-size:var(--luvete-text-sm); }
.luvete-auth-error i { margin-top:2px; }
/* Фокус после клика — кольцо, а не тёмная заливка (та читается как «выключена»). */
.luvete-auth-submit:focus-visible { background:var(--luvete-red); border-color:var(--luvete-red); box-shadow:0 0 0 3px rgba(224,31,38,.3); }
.luvete-auth-link { display:block; margin-top:14px; font-size:var(--luvete-text-sm); font-weight:600; text-align:center; }
.luvete-auth-footer { margin:18px -28px -28px; padding:14px 28px; border-top:1px solid var(--luvete-border); border-radius:0 0 14px 14px; background:var(--luvete-surface-muted); color:var(--luvete-muted); font-size:var(--luvete-text-sm); text-align:center; }
.luvete-auth-footer a { color:var(--luvete-red); font-weight:700; }
.luvete-auth-page-account { padding-top:0; }
/* Форма адреса шире входа: названия отделений («Відділення №150 (до 30 кг): вул. Антоновича, 43…») в 520px не помещаются. */
.luvete-auth-page-wide .luvete-auth { max-width:720px; }
.luvete-auth-page-account > .breadcrumb { flex:0 0 auto; }
.luvete-auth-page-account #content .luvete-auth-card h1 { margin-bottom:16px; }
.luvete-auth-actions { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-top:6px; }
.luvete-auth-actions .btn { display:inline-flex; min-height:46px; align-items:center; gap:8px; padding:0 22px; border-radius:10px; font-weight:800; }
/* Регистрация: доводы рядом с формой на десктопе, под ней — на телефоне (форма первой, без лишнего экрана). */
.luvete-auth-why { order:2;  padding:20px 22px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface-muted); }
.luvete-auth-why h2 { margin:0 0 12px; font-size:var(--luvete-text-base); font-weight:800; }
.luvete-auth-why ul { display:grid; margin:0; padding:0; gap:10px; list-style:none; }
.luvete-auth-why li { display:flex; align-items:flex-start; gap:10px; color:var(--luvete-text); font-size:var(--luvete-text-sm); line-height:1.4; }
.luvete-auth-why li i { flex:0 0 auto; margin-top:2px; color:var(--luvete-red); }
@media (min-width:992px) {
  .luvete-auth.luvete-auth-register { max-width:860px; grid-template-columns:minmax(0, 1fr) 300px; align-items:start; gap:20px; }
  .luvete-auth-register .luvete-auth-why { order:2; position:sticky; top:96px; }
}
.luvete-register-group { margin:0; padding:0; border:0; }
.luvete-register-row { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); column-gap:14px; }
.luvete-register-switch { margin:2px 0 12px; padding-left:3.2em; }
.luvete-register-switch .form-check-input { width:2.6em; height:1.45em; margin-left:-3.2em; margin-top:.05em; cursor:pointer; }
.luvete-register-switch .form-check-input:checked { border-color:var(--luvete-red); background-color:var(--luvete-red); }
/* Радио и чекбоксы форм кабинета — в цвете темы, а не синие Bootstrap. */
[id^="account-"] .form-check-input:checked { border-color:var(--luvete-red); background-color:var(--luvete-red); }
[id^="account-"] .form-check-input:focus { border-color:rgba(224,31,38,.5); box-shadow:0 0 0 3px rgba(224,31,38,.15); }
/* Общий стиль лейблов даёт inline-flex, а он съедает пробел перед ссылкой в тексте согласия. */
.luvete-register-switch .form-check-label { display:inline; font-size:var(--luvete-text-sm); line-height:1.5; }
.luvete-register-switch .form-check-label a { color:var(--luvete-red); font-weight:600; }
@media (max-width:575.98px) {
    .luvete-register-row { grid-template-columns:1fr; }
    .luvete-auth-page #content form.luvete-auth-card { padding:20px 16px; }
    .luvete-auth-footer { margin:16px -16px -20px; padding:12px 16px; }
}

/* Кабинет: разделы плитками с иконками. */
.luvete-account-group { margin:18px 0 10px; font-size:var(--luvete-text-base); font-weight:800; }
.luvete-account-group:first-of-type { margin-top:0; }
.luvete-account-tiles { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); gap:10px; }
.luvete-account-tile.is-logout { color:var(--luvete-muted); }
.luvete-account-tile.is-logout i { background:var(--luvete-surface-muted); color:var(--luvete-muted); }
.luvete-account-tile { display:flex; min-height:64px; align-items:center; gap:14px; padding:12px 16px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:600; text-decoration:none; transition:box-shadow .15s, transform .15s; }
.luvete-account-tile i { display:grid; width:40px; height:40px; flex:0 0 40px; place-items:center; border-radius:10px; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:16px; }
.luvete-account-tile:hover { color:var(--luvete-red); box-shadow:var(--luvete-shadow-hover); transform:translateY(-2px); }
.luvete-account-count { margin-left:auto; min-width:26px; padding:2px 8px; border-radius:999px; background:var(--luvete-bg); color:var(--luvete-text-2); font-size:var(--luvete-text-xs); font-weight:700; text-align:center; }
@media (max-width:991.98px) { .luvete-account-tiles { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
/* Телефон: две колонки компактных плиток (иконка сверху) — семь плиток помещаются в экран. */
@media (max-width:575.98px) {
    .luvete-account-tiles { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:8px; }
    .luvete-account-tile { position:relative; min-height:0; flex-direction:column; align-items:flex-start; gap:8px; padding:10px 12px; font-size:var(--luvete-text-sm); line-height:1.25; }
    .luvete-account-tile i { width:34px; height:34px; flex-basis:34px; font-size:14px; }
    .luvete-account-count { position:absolute; top:10px; right:10px; margin:0; }
}

/* Инфо и контакты (без сайдбара) — карточка читаемой ширины по центру */
#information-contact .row { justify-content:center; }
#information-information #content, #information-contact #content { background:#fff; border:1px solid var(--luvete-border); border-radius:14px; padding:26px 34px 32px; }
/* У контактов сайдбара нет: без ограничения карточка растянулась бы на всю ширину страницы. */
#information-contact #content { max-width:960px; }
/* Инфо-страница: слева навигация по статьям, справа карточка текста. */
/* Расстояние между колонками задаёт только gap. Бутстраповский жёлоб (`.row > *` с боковыми
   полями в половину --bs-gutter-x) тут гасим: он отодвигал карточку навигации на 12px внутрь,
   и её левый край не совпадал ни с крошками сверху, ни с краем страницы. */
#information-information > .row { flex-wrap:nowrap; gap:var(--luvete-layout-gap); --bs-gutter-x:0; }
.luvete-info-nav { width:250px; flex:0 0 250px; }
.luvete-info-nav nav { position:sticky; top:12px; display:flex; flex-direction:column; padding:8px 0; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); }
.luvete-info-nav-item { display:flex; min-height:40px; align-items:center; padding:8px 18px; border-left:3px solid transparent; color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:600; text-decoration:none; }
.luvete-info-nav-item:hover { border-left-color:var(--luvete-red); background:rgba(224,31,38,.06); color:var(--luvete-text); }
.luvete-info-nav-item.is-active { border-left-color:var(--luvete-red); color:var(--luvete-red); }
@media (max-width:991.98px) {
    #information-information > .row { flex-wrap:wrap; gap:0; }
    .luvete-info-nav { width:100%; flex:0 0 100%; margin-bottom:var(--luvete-layout-gap); }
    .luvete-info-nav nav { position:static; flex-direction:row; flex-wrap:nowrap; overflow-x:auto; padding:6px; scrollbar-width:none; }
    .luvete-info-nav-item { flex:0 0 auto; min-height:36px; padding:6px 12px; border-left:0; border-radius:8px; white-space:nowrap; }
    .luvete-info-nav-item.is-active { background:rgba(224,31,38,.08); }
}
#information-information #content p, #information-information #content li,
#information-contact #content p, #information-contact #content li { line-height:1.7; }
#information-contact #content h3 { font-size:var(--luvete-text-lg); font-weight:700; margin:6px 0 14px; }

/* Страницы аккаунта — карточка контента (сайдбар рядом), красный акцент в меню */
[id^="account-"] #content { background:#fff; border:1px solid #eee; border-radius:8px; padding:24px 28px 28px; box-shadow:0 1px 4px rgba(0,0,0,.04); }
[id^="account-"] #content h2 { font-size:var(--luvete-h2); font-weight:700; margin:24px 0 12px; }
/* Карточка контента — колонка в .row: отрицательные поля бутстрапа тянули фон/бордер на ширину
   гаттера левее полосы меню. Гасим отрицательные поля верхнего ряда — карточка встаёт в контейнер. */
[id^="account-"] > .row,
#information-information > .row,
#information-contact > .row { margin-left:0; margin-right:0; }
.list-group-item.active { background:var(--luvete-red); border-color:var(--luvete-red); }
.list-group-item:not(.active):hover { color:var(--luvete-red); }

/* Финал оформления: завершённый прогресс и понятные следующие шаги. */
#common-success > .row { margin-right:0; margin-left:0; justify-content:center; }
#common-success .checkout-success-content { max-width:960px; padding:28px 34px 34px; border:1px solid #eee; border-radius:12px; background:#fff; box-shadow:0 3px 16px rgba(0,0,0,.06); }
#common-success .checkout-success-content > h1 { margin:4px 0 18px; color:var(--luvete-text); font-size:var(--luvete-h1); font-weight:800; text-align:center; }
#common-success .checkout-success-content > p { margin-right:auto; margin-left:auto; max-width:720px; line-height:1.7; text-align:center; }
.checkout-success-progress { display:flex; margin:0 0 28px; padding:0; list-style:none; }
.checkout-success-progress li { position:relative; display:flex; flex:1 1 0; flex-direction:column; align-items:center; gap:8px; color:#555; font-size:var(--luvete-text-sm); font-weight:600; text-align:center; }
.checkout-success-progress li:not(:last-child)::after { content:""; position:absolute; z-index:0; top:21px; left:calc(50% + 24px); width:calc(100% - 48px); height:2px; background:var(--luvete-in-stock); }
.checkout-success-progress-icon { position:relative; z-index:1; display:grid; width:44px; height:44px; place-items:center; border-radius:50%; background:var(--luvete-in-stock); color:#fff; }
.checkout-success-next { display:grid; grid-template-columns:repeat(3, minmax(0, 1fr)); gap:14px; margin:26px 0; }
.checkout-success-next-card { display:flex; gap:12px; padding:18px; border:1px solid #eee; border-radius:10px; background:#fafafa; }
.checkout-success-next-card > .fa-solid { flex:0 0 auto; margin-top:3px; color:var(--luvete-red); font-size:var(--luvete-text-lg); }
.checkout-success-next-card h2 { margin:0 0 7px; font-size:var(--luvete-text-base); font-weight:700; }
.checkout-success-next-card p { margin:0 0 8px; color:#5f6368; line-height:1.55; }
.checkout-success-next-card a { color:var(--luvete-red); font-weight:700; text-decoration:none; }
.checkout-success-lead { margin:0 auto 22px; max-width:640px; color:var(--luvete-muted); line-height:1.6; text-align:center; }
.checkout-success-order { max-width:720px; margin:0 auto; padding:18px 20px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface-muted); }
.checkout-success-products { margin:0; padding:0; list-style:none; }
.checkout-success-products li { display:flex; align-items:center; gap:12px; padding:8px 0; border-bottom:1px solid var(--luvete-border); }
.checkout-success-products img { width:56px; height:56px; border-radius:8px; border:1px solid var(--luvete-border); background:#fff; object-fit:contain; }
.checkout-success-product-name { display:flex; min-width:0; flex:1 1 auto; flex-direction:column; font-weight:600; }
.checkout-success-product-name small { color:var(--luvete-muted); font-weight:500; }
.checkout-success-products b { white-space:nowrap; }
.checkout-success-totals { margin:10px 0 0; }
.checkout-success-totals > div { display:flex; justify-content:space-between; padding:4px 0; }
.checkout-success-totals dt { font-weight:500; color:var(--luvete-muted); }
.checkout-success-totals dd { margin:0; font-weight:700; }
.checkout-success-totals .is-grand { margin-top:4px; padding-top:8px; border-top:1px solid var(--luvete-border); font-size:var(--luvete-text-lg); }
.checkout-success-totals .is-grand dt { color:var(--luvete-text); font-weight:800; }
.checkout-success-meta { display:grid; gap:8px; margin-top:14px; padding-top:12px; border-top:1px solid var(--luvete-border); }
.checkout-success-meta > div { display:flex; flex-direction:column; }
.checkout-success-meta span { color:var(--luvete-muted); font-size:var(--luvete-text-xs); }
.checkout-success-meta strong { white-space:pre-line; }
.checkout-success-actions { display:flex; flex-wrap:wrap; justify-content:center; gap:10px; }
.checkout-success-actions .btn { min-width:200px; min-height:46px; }
@media (max-width:767.98px) { .checkout-success-next { grid-template-columns:1fr; } .checkout-success-actions .btn { flex:1 1 100%; } #common-success .checkout-success-content { padding:18px 16px; } }


/* Layout: базовая тема делала «липкий» футер (#container position:absolute + margin-bottom:300px,
   #content padding-bottom:400/730px). Футер вернули в поток — гасим весь резерв, иначе зияет пустота. */
/* Футер прижат к низу: на коротких страницах (заказы, сравнение) он висел посреди экрана. */
#container { position:static; display:flex; min-height:100vh; min-height:100dvh; flex-direction:column; margin-bottom:0; padding-bottom:0; }
#container > main { flex:1 0 auto; }
#container > .luvete-footer { margin-top:auto; }
#content, #column-left, #column-right { padding-bottom:0; }
/* Но карточке аккаунта нижний паддинг нужен — иначе кнопка липнет к бордеру (гасит правило выше). */
[id^="account-"] #content { padding-bottom:28px !important; }
/* Страницы-формы кабинета: карточка — сама форма, внешняя обёртка контента прозрачна (иначе матрёшка). */
[id^="account-"] #content:has(> form:not([id^="form-product"])) { padding:0 !important; border:0; background:transparent; box-shadow:none; }

/* Единый шрифт по всему сайту: гасим инлайновый font-family из старого WYSIWYG
   (оферта, описания товаров и пр.) — текст наследует системный шрифт сайта. */
[style*="font-family"] { font-family: inherit !important; }







/* Верхняя панель категории (сортировка/вид) — лёгкий фон-карточка */
#product-category .row.mb-3 .btn-group .btn.active { background:var(--luvete-red); border-color:var(--luvete-red); color:#fff; }

/* Шапка категории — тёмная плашка, как первый экран главной: фото, название, счётчик, описание. */
.luvete-category-heading { display:grid; gap:12px; margin:0 0 var(--luvete-layout-gap); padding:18px 24px 20px; border:1px solid var(--luvete-border); border-radius:14px; background:var(--luvete-surface); color:var(--luvete-text); }
/* С картинкой: круг слева от заголовка, чипсы и описание — под ними на всю ширину. */
.luvete-category-heading.has-image { grid-template-columns:64px minmax(0, 1fr); align-items:center; column-gap:16px; }
.luvete-category-heading.has-image > .luvete-category-nav, .luvete-category-heading.has-image > .luvete-category-details { grid-column:1 / -1; }
.luvete-category-heading-image { width:64px; height:64px; overflow:hidden; border-radius:50%; background:var(--luvete-bg); }
.luvete-category-heading-image img { width:100%; height:100%; border:0; object-fit:cover; }
.luvete-category-heading-content { min-width:0; }
#content .luvete-category-heading h1 { margin:0; padding:0; border:0; color:var(--luvete-text); font-size:var(--luvete-h1); font-weight:800; letter-spacing:-.02em; }
#content .luvete-category-heading h1::after { display:none; }
.luvete-category-total { margin-top:2px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:600; }
.luvete-category-details { margin:0; }
.luvete-category-summary { display:inline-flex; align-items:center; gap:9px; padding:4px 0 0; color:var(--luvete-red); font-size:var(--luvete-text-sm); font-weight:600; list-style:none; cursor:pointer; }
.luvete-category-summary::-webkit-details-marker { display:none; }
.luvete-category-summary::after { content:""; width:7px; height:7px; border-right:1.5px solid currentColor; border-bottom:1.5px solid currentColor; transform:translateY(-2px) rotate(45deg); transition:transform .15s; }
.luvete-category-details[open] .luvete-category-summary::after { transform:rotate(225deg); }
.luvete-category-about { margin-top:10px; padding-top:12px; border-top:1px solid var(--luvete-border); color:var(--luvete-text-2); line-height:1.7; }
.luvete-category-about p:last-child { margin-bottom:0; }
@media (max-width:767.98px) {
    /* Телефон: без картинки категории, счётчик в строку с названием — до первой карточки ближе. */
    .luvete-category-heading { gap:8px; padding:12px 16px 14px; }
    .luvete-category-heading.has-image { grid-template-columns:minmax(0, 1fr); column-gap:0; }
    .luvete-category-heading-image { display:none; }
    .luvete-category-heading-content { display:flex; flex-wrap:wrap; align-items:baseline; gap:2px 10px; }
    #content .luvete-category-heading h1 { font-size:var(--luvete-h2); }
    .luvete-category-total { margin-top:0; }
    .luvete-category-about { font-size:var(--luvete-text-sm); }
}
/* Поиск: та же плашка, что у категории; параметры — в раскрывашке, поле поиска скрыто (оно в шапке). */
#product-search #content .luvete-search-panel h1 { margin:0; padding:0; border:0; color:var(--luvete-text); font-size:var(--luvete-h1); font-weight:800; }
.luvete-search-options-body { display:grid; grid-template-columns:minmax(220px, 1fr) auto auto auto; gap:10px 18px; align-items:center; margin-top:10px; padding-top:12px; border-top:1px solid var(--luvete-border); color:var(--luvete-text); }
.luvete-search-options-body > .col { width:auto; margin:0 !important; padding:0; }
.luvete-search-options-body .form-select { margin:0 !important; }
.luvete-search-options-body .form-check { margin:0; }
.luvete-search-options-body .btn { min-height:40px; padding:0 18px; border-radius:8px; }
@media (max-width:767.98px) { .luvete-search-options-body { display:flex; align-items:stretch; flex-direction:column; gap:10px; } }
/* Категория: подразделы и управление выдачей собраны в единую панель. */
/* Панель фильтров каталога. Слева от 992px, на телефоне — шторка из-за края экрана.
   Значения — обычные ссылки, поэтому панель работает и без JS (кроме поля цены).
   Плотность держим как у чипсов категорий: строка 28px, подписи 14px, счётчики 12px —
   при 16px и высоких строках колонка растягивается на два экрана и читается как список. */
.luvete-catalog-row { position:relative; }
.luvete-filter-column { flex:0 0 250px; width:250px; padding-right:0; }
.luvete-filter { position:sticky; top:12px; padding:12px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); font-size:var(--luvete-text-sm); }
.luvete-filter-head { display:flex; align-items:center; justify-content:space-between; gap:8px; margin-bottom:8px; }
.luvete-filter-head strong { font-size:var(--luvete-text-base); }
.luvete-filter-reset { font-size:var(--luvete-text-sm); color:var(--luvete-muted); text-decoration:underline; }
.luvete-filter-reset:hover { color:var(--luvete-red); }
.luvete-filter-close { display:none; min-height:0; padding:0 2px; border:0; background:none; color:var(--luvete-muted); }

.luvete-filter-chips { display:flex; flex-wrap:wrap; gap:5px; margin-bottom:10px; }
.luvete-filter-chip { display:inline-flex; align-items:center; gap:5px; padding:2px 8px; border:1px solid var(--luvete-border-strong); border-radius:999px; background:var(--luvete-bg); font-size:var(--luvete-text-xs); font-weight:700; }
.luvete-filter-chip i { font-size:9px; color:var(--luvete-muted); }
.luvete-filter-chip:hover { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-filter-chip:hover i { color:var(--luvete-red); }

/* Строка выбранного для страниц без панели (поиск): фильтр там работает, и молча урезанная
   выдача — худший из вариантов. */
.luvete-filter-bar { display:flex; flex-wrap:wrap; align-items:center; gap:8px; margin:0 0 var(--luvete-layout-gap); padding:8px 12px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); font-size:var(--luvete-text-sm); }
.luvete-filter-bar .luvete-filter-chips { margin:0; }
.luvete-filter-bar .luvete-filter-reset { margin-left:auto; }
/* Строка выбранных фильтров под тулбаром нужна только там, где панель спрятана в шторку. */
.luvete-toolbar-chips { display:none; }

.luvete-filter-group + .luvete-filter-group { margin-top:10px; padding-top:9px; border-top:1px solid var(--luvete-border); }
.luvete-filter-title { margin:0 0 5px; font-size:var(--luvete-text-xs); font-weight:700; text-transform:uppercase; letter-spacing:.03em; color:var(--luvete-muted); }

/* Длинный список сворачивается до восьми строк: прокрутка внутри узкой колонки читается
   как оборванный список (у цвета восемнадцать значений, видно девять — и непонятно, что дальше
   есть ещё). Переключатель — скрытый чекбокс, поэтому работает без JS. */
.luvete-filter-list { margin:0; padding:0; list-style:none; }
.luvete-filter-more-input { position:absolute; width:1px; height:1px; margin:-1px; padding:0; overflow:hidden; clip-path:inset(50%); }
.luvete-filter-more-input:not(:checked) ~ .luvete-filter-list li:nth-child(n+9):not(.is-active), .luvete-filter-more-input:not(:checked) ~ .luvete-filter-list li.is-rare { display:none; }
.luvete-filter-more { display:inline-block; margin-top:3px; padding:2px 0; color:var(--luvete-muted); font-size:var(--luvete-text-xs); text-decoration:underline; cursor:pointer; }
.luvete-filter-more:hover { color:var(--luvete-red); }
.luvete-filter-more-hide, .luvete-filter-more-input:checked ~ .luvete-filter-more .luvete-filter-more-show { display:none; }
.luvete-filter-more-input:checked ~ .luvete-filter-more .luvete-filter-more-hide { display:inline; }
/* Клавиатура: у чекбокса нет видимого фокуса, показываем его на подписи. */
.luvete-filter-more-input:focus-visible ~ .luvete-filter-more { outline:2px solid var(--luvete-red); outline-offset:2px; }

.luvete-filter-value, .luvete-filter-flag { display:flex; min-height:28px; align-items:center; gap:8px; padding:2px 0; color:inherit; line-height:1.25; }
.luvete-filter-value:hover, .luvete-filter-flag:hover { color:var(--luvete-red); }
.luvete-filter-box { display:inline-flex; flex:0 0 15px; align-items:center; justify-content:center; width:15px; height:15px; border:1px solid var(--luvete-border-strong); border-radius:4px; background:var(--luvete-surface); }
.luvete-filter-box i { font-size:8px; color:#fff; opacity:0; }
.is-active .luvete-filter-box { border-color:var(--luvete-red); background:var(--luvete-red); }
.is-active .luvete-filter-box i { opacity:1; }

/* Образец цвета вместо чекбокса: цветовой фильтр текстом читается заметно хуже. Галочка белая,
   поэтому на светлых образцах ей нужна тень, а самому кружку — рамка, иначе белый не виден. */
.luvete-filter-swatch { display:inline-flex; flex:0 0 16px; align-items:center; justify-content:center; width:16px; height:16px; border:1px solid rgba(20,22,26,.2); border-radius:50%; }
.luvete-filter-swatch i { font-size:8px; color:#fff; opacity:0; text-shadow:0 0 2px rgba(20,22,26,.9); }
.is-active .luvete-filter-swatch { box-shadow:0 0 0 2px var(--luvete-surface), 0 0 0 3px var(--luvete-red); }
.is-active .luvete-filter-swatch i { opacity:1; }
/* Цвета образцов — из system/config/colors.php, класс на каждый ключ: инлайновый style на
   витрине запрещён CSP. Список сверяет ColorSwatchCssTest, новый цвет без правила уронит тест. */
.luvete-swatch-black { background:#1B1B1F; }
.luvete-swatch-white { background:#FFFFFF; }
.luvete-swatch-grey { background:#9AA3AD; }
.luvete-swatch-beige { background:#E3D3BC; }
.luvete-swatch-brown { background:#7A4A2B; }
.luvete-swatch-pink { background:#F19FC0; }
.luvete-swatch-powder { background:#EFC9C4; }
.luvete-swatch-red { background:#D6222A; }
.luvete-swatch-burgundy { background:#7C1F33; }
.luvete-swatch-orange { background:#F07E26; }
.luvete-swatch-peach { background:#F6BE9A; }
.luvete-swatch-yellow { background:#F2C230; }
.luvete-swatch-green { background:#4E8B4A; }
.luvete-swatch-mint { background:#9BD9C4; }
.luvete-swatch-blue { background:#20419A; }
.luvete-swatch-lightblue { background:#7FB6E3; }
.luvete-swatch-turquoise { background:#37B3A6; }
.luvete-swatch-violet { background:#7B4CA8; }
.luvete-swatch-lilac { background:#B79BD4; }
.luvete-swatch-silver { background:#C3C8CE; }
.luvete-swatch-gold { background:#C9A63A; }

/* Перекрытые стоковые шаблоны (чекаут, отзывы, кабинет) вместо `style=`: инлайн на витрине
   запрещён CSP. Без !important — ядро показывает и прячет эти блоки через jQuery show/hide,
   а инлайновый display от скрипта должен побеждать класс. */
.luvete-hidden { display:none; }
/* Читаемое поле-блок вместо input в кабинете: высота как у поля ввода. */
.luvete-static-field { min-height:64px; }
.luvete-static-field-lg { min-height:128px; }
.luvete-review-author { width:50%; }

/* Метка окружения (STAGING/LOCAL) в углу витрины: разметку дописывает EnvBadge::inject(),
   стили держим здесь — инлайновый <style> нарушал бы style-src 'self'. На проде метки нет. */
#luvete-env-badge { position:fixed; left:0; bottom:0; z-index:2147483647; padding:4px 12px; border-top-right-radius:4px; background:rgba(185,28,28,.92); box-shadow:0 0 6px rgba(0,0,0,.3); color:#fff; font:700 11px/1.4 system-ui, -apple-system, Arial, sans-serif; letter-spacing:1px; pointer-events:none; user-select:none; }
#luvete-env-badge.is-staging { background:rgba(217,119,6,.92); }
#luvete-env-badge.is-local { background:rgba(75,85,99,.90); }

/* Плитки для размеров: десять значений списком занимают треть колонки, плиткой — три строки. */
.luvete-filter-tiles { display:flex; flex-wrap:wrap; gap:5px; }
.luvete-filter-tiles .luvete-filter-value { flex-direction:column; min-width:48px; min-height:0; gap:0; padding:3px 7px; border:1px solid var(--luvete-border-strong); border-radius:var(--luvete-radius-sm); }
.luvete-filter-tiles .luvete-filter-value:hover { border-color:var(--luvete-red); }
.luvete-filter-tiles .luvete-filter-value.is-active { border-color:var(--luvete-red); background:var(--luvete-red); color:#fff; }
.luvete-filter-tiles .luvete-filter-value.is-active .luvete-filter-count { color:rgba(255,255,255,.8); }
.luvete-filter-tile-label { font-weight:700; line-height:1.2; }
.luvete-filter-tiles .luvete-filter-count { line-height:1.2; }
/* Значение, под которым в текущем выборе ничего нет: в тупике панель сохраняет форму,
   но щёлкать по нулю бессмысленно — снимать надо выбранное условие. */
.luvete-filter-value.is-disabled, .luvete-filter-flag.is-disabled { color:var(--luvete-muted); pointer-events:none; opacity:.55; }
.luvete-filter-label { flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* «Тільки в наявності» в 250px одной строкой не помещается — иначе счётчик уезжает за край. */
.luvete-filter-flag .luvete-filter-label { overflow:visible; white-space:normal; }
.is-active .luvete-filter-label { font-weight:700; }
.luvete-filter-count { flex:0 0 auto; font-size:var(--luvete-text-xs); color:var(--luvete-muted); font-variant-numeric:tabular-nums; }

/* Поля и кнопка в одну строку: кнопка компактная, иначе «ОК» во всю ширину читается
   как главное действие страницы. */
.luvete-filter-range { display:flex; align-items:center; gap:5px; }
.luvete-filter-range label { flex:1 1 0; min-width:0; margin:0; }
.luvete-filter-range .form-control { min-height:32px; padding:3px 4px; font-size:var(--luvete-text-sm); text-align:center; }
.luvete-filter-range .btn { flex:0 0 auto; min-height:32px; padding:3px 9px; font-size:var(--luvete-text-sm); }
.luvete-filter-dash { flex:0 0 auto; color:var(--luvete-muted); }

.luvete-filter-button { display:none; align-items:center; gap:8px; }
.luvete-filter-button-count { display:inline-flex; align-items:center; justify-content:center; min-width:18px; height:18px; padding:0 5px; border-radius:999px; background:var(--luvete-red); color:#fff; font-size:var(--luvete-text-xs); }
.luvete-filter-backdrop { display:none; }
.luvete-filter-actions { display:none; }

/* Мобильные правила панели держим здесь, а не в общем блоке @media выше: тот идёт раньше
   в файле, и базовые правила панели перебивали бы его при одинаковой специфичности. */
@media (max-width:991.98px) {
	/* Шторка: панель та же самая, просто уезжает за край экрана — второго шаблона нет. */
	.luvete-filter-button { display:inline-flex; }
	/* Аккордеон групп в шторке: заголовок — кнопка, свёрнутая группа прячет список. */
	.luvete-filter-group.is-collapsible .luvete-filter-title { display:flex; align-items:center; justify-content:space-between; min-height:40px; margin:0; cursor:pointer; }
	.luvete-filter-group.is-collapsible .luvete-filter-title i { font-size:11px; transition:transform .15s; }
	.luvete-filter-group.is-collapsible.is-open .luvete-filter-title i { transform:rotate(180deg); }
	.luvete-filter-group.is-collapsible:not(.is-open) > :not(.luvete-filter-title) { display:none; }
	[data-luvete-filter-apply].is-counting { opacity:.7; }
	.luvete-filter-column { position:fixed; z-index:1046; top:0; left:0; width:min(88vw, 340px); height:100dvh; padding:0; overflow-y:auto; background:var(--luvete-surface); transform:translateX(-100%); transition:transform .2s ease; }
	.luvete-filter-open .luvete-filter-column { transform:none; box-shadow:0 0 30px rgba(0,0,0,.2); }
	.luvete-filter-open .luvete-filter-backdrop { display:block; position:fixed; z-index:1045; inset:0; background:rgba(0,0,0,.4); }
	.luvete-filter-open { overflow:hidden; }
	.luvete-filter-actions { display:grid; position:sticky; z-index:1; bottom:0; grid-template-columns:minmax(0, 1fr) auto; gap:8px; margin:auto -14px -14px; padding:12px 14px; border-top:1px solid var(--luvete-border); background:var(--luvete-surface); }
	.luvete-filter-actions .btn { min-height:44px; }
	.luvete-filter { display:flex; flex-direction:column; position:static; min-height:100%; padding:14px; border:0; border-radius:0; }
	.luvete-filter-close { display:inline-flex; }
	/* На тач-экране строки крупнее: 28px пальцем не попасть. */
	.luvete-filter-value, .luvete-filter-flag { min-height:38px; }
	.luvete-filter-range .form-control, .luvete-filter-range .btn { min-height:40px; }
	.luvete-toolbar-chips { display:flex; align-items:center; margin:8px 0 0; padding-top:8px; border-top:1px solid var(--luvete-border); }
	.luvete-toolbar-chips .luvete-filter-chip { min-height:30px; }
	.luvete-toolbar-chips .luvete-filter-reset { margin-left:auto; }
}

.luvete-category-controls { margin:0 0 var(--luvete-layout-gap); padding:7px 10px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); }
.luvete-category-nav { display:flex; flex-wrap:wrap; gap:6px; margin:0; }
/* Чипсы подкатегорий на белой плашке: серая заливка и заметная рамка, иначе сливались с фоном. */
.luvete-category-nav-item.has-thumb { padding-left:6px; }
.luvete-category-nav-item img { width:28px; height:28px; border-radius:6px; object-fit:cover; }
.luvete-category-nav-item { display:inline-flex; min-height:38px; align-items:center; gap:8px; padding:6px 12px; border:1px solid var(--luvete-border-strong); border-radius:8px; background:var(--luvete-bg); color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:700; text-decoration:none; transition:border-color .15s, color .15s, background .15s; }
.luvete-category-nav-item small { min-width:24px; padding:2px 6px; border-radius:999px; background:var(--luvete-surface); color:var(--luvete-text-2); font-size:var(--luvete-text-xs); font-weight:700; text-align:center; box-shadow:inset 0 0 0 1px var(--luvete-border); }
.luvete-category-nav-item:hover { border-color:var(--luvete-red); background:var(--luvete-surface); color:var(--luvete-red); }
.luvete-category-nav-item:hover small { color:var(--luvete-red); }
.luvete-category-nav-item.active { border-color:var(--luvete-red); background:var(--luvete-red); color:#fff; }
.luvete-category-nav-item.active small { background:rgba(255,255,255,.2); color:#fff; }
.luvete-category-toolbar { display:flex; flex-wrap:nowrap; align-items:center; justify-content:flex-end; gap:10px; margin:0; }
.luvete-category-result-count { width:auto; max-width:none; flex:0 0 auto; margin-right:auto; padding:0; color:var(--luvete-text); font-size:var(--luvete-text-base); }
/* Счётчик уже стоит в плашке заголовка — в тулбаре он дублировался строкой ниже. */
.luvete-category-heading:has(.luvete-category-total) + .luvete-category-controls .luvete-category-result-count { display:none; }
.luvete-category-toolbar .input-group { margin-bottom:0 !important; }
.luvete-category-toolbar .input-group-text, .luvete-category-toolbar .form-select { min-height:36px; padding-top:4px; padding-bottom:4px; }
.luvete-toolbar-compare, .luvete-toolbar-view { display:none; }
.luvete-toolbar-sort { width:min(100%, 390px); margin-left:auto; }
.luvete-toolbar-limit { width:210px; }
/* 992–1199: колонка списка ~660px, подписи «Сортування:/Показати:» не влезают — прячем их, селекты уже. */
@media (min-width:992px) and (max-width:1199.98px) {
    .luvete-category-toolbar .input-group-text { display:none; }
    .luvete-toolbar-sort { flex:0 1 240px; width:auto; }
    .luvete-toolbar-limit { flex:0 0 auto; width:96px; }
    .luvete-category-result-count { font-size:var(--luvete-text-sm); }
}
.luvete-category-pagination { flex-direction:column; align-items:center; gap:10px; text-align:center; }
.luvete-category-pagination > [class*="col-"] { width:auto; padding:0; text-align:center !important; }
.luvete-category-pagination .pagination { justify-content:center; margin:0; }
.luvete-category-sidebar-empty { display:none !important; }
#product-category #product-list { --bs-gutter-x:var(--luvete-layout-gap); --bs-gutter-y:var(--luvete-layout-gap); }
#product-category #product-list > .col { margin-bottom:0 !important; }

/* Поиск: основной запрос остаётся на первом плане, уточнения и выдача компактны как в категории. */
#product-search #content > h1 { color:var(--luvete-text); font-weight:800; font-size:var(--luvete-h1); margin:0 0 18px; }
#product-search #product-list { --bs-gutter-x:var(--luvete-layout-gap); --bs-gutter-y:var(--luvete-layout-gap); }
#product-search #product-list > .col { margin-bottom:0 !important; }
.luvete-search-empty { padding:42px 24px; border:1px solid var(--luvete-border); border-radius:10px; background:var(--luvete-surface); text-align:center; }
.luvete-search-empty-icon { display:grid; width:58px; height:58px; margin:0 auto 14px; place-items:center; border-radius:50%; background:rgba(224,31,38,.1); color:var(--luvete-red); font-size:var(--luvete-text-xl); }
.luvete-search-empty h2 { margin:0 0 7px; font-size:var(--luvete-h2); }
.luvete-search-empty p { margin:0 0 18px; color:var(--luvete-muted); }

@media (max-width:767.98px) {
    .luvete-category-controls { margin-bottom:var(--luvete-layout-gap); padding:7px 8px; }
    /* Подкатегории — одна строка с прокруткой: в столбик они уводили товары за три экрана.
       Маска справа показывает, что строка продолжается. */
    .luvete-category-nav { flex-wrap:nowrap; justify-content:flex-start; gap:6px; margin:0 -16px; padding:0 16px 2px; overflow-x:auto; scrollbar-width:none; -webkit-overflow-scrolling:touch; -webkit-mask-image:linear-gradient(to right, #000 calc(100% - 36px), transparent); mask-image:linear-gradient(to right, #000 calc(100% - 36px), transparent); }
    .luvete-category-nav.is-end { -webkit-mask-image:none; mask-image:none; }
    .catalog-empty-categories { width:auto; max-width:none; justify-self:stretch; }
    .luvete-category-nav::-webkit-scrollbar { display:none; }
    .luvete-category-nav-item { min-height:40px; flex:0 0 auto; padding:6px 12px; white-space:nowrap; }
    .luvete-category-toolbar .form-select, .luvete-category-toolbar .input-group-text { min-height:44px; }
    /* Липкий тулбар в одну строку: счётчик уже в плашке, а сортировка нужна на любом экране списка. */
    .luvete-category-controls { position:sticky; top:8px; z-index:5; box-shadow:0 2px 10px rgba(20,22,26,.06); }
    /* Кнопка «Фільтри» — в той же строке, что сортировка; лимит на телефоне не нужен, есть «Показати ще». */
    .luvete-category-toolbar { display:grid; grid-template-columns:auto minmax(0, 1fr); gap:8px; margin:0; }
    .luvete-filter-button-toolbar { min-height:44px; margin:0; }
    .luvete-category-result-count, .luvete-category-toolbar .luvete-toolbar-limit { display:none; }
    .luvete-toolbar-sort, .luvete-toolbar-limit { width:auto; margin:0; }
    /* На поиске панели фильтров нет — сортировка занимает всю строку, а не две трети. */
    .luvete-search-toolbar { grid-template-columns:minmax(0, 1fr); }
    .luvete-category-toolbar .input-group-text { display:none; }
    .luvete-category-pagination { gap:8px; }
    .luvete-search-empty { padding:34px 18px; }
}

/* Модалки выбора доставки/оплаты (корзина и чекаут): штатный шаблон OC кладёт радио в .form-check
   без классов form-check-input/label — Bootstrap их не выравнивает. Собираем строку флексом. */
#form-shipping .form-check, #form-payment .form-check,
:is(#form-shipping-method, .luvete-carrier-options) .form-check, #form-payment-method .form-check {
    display:flex; align-items:center; gap:10px; padding:8px 12px; margin:0 0 8px;
    border:1px solid #eee; border-radius:6px; cursor:pointer;
}
#form-shipping .form-check:hover, #form-payment .form-check:hover,
:is(#form-shipping-method, .luvete-carrier-options) .form-check:hover, #form-payment-method .form-check:hover { border-color:var(--luvete-red); }
#form-shipping .form-check input[type="radio"], #form-payment .form-check input[type="radio"],
:is(#form-shipping-method, .luvete-carrier-options) .form-check input[type="radio"], #form-payment-method .form-check input[type="radio"] {
    margin:0; flex:0 0 auto; accent-color:var(--luvete-red);
}
#form-shipping .form-check label, #form-payment .form-check label,
:is(#form-shipping-method, .luvete-carrier-options) .form-check label, #form-payment-method .form-check label {
    margin:0; cursor:pointer; flex:1 1 auto;
}
/* Заголовок группы методов — отступ сверху и прижат к своим вариантам */
#form-shipping p:has(> strong), #form-payment p:has(> strong),
#form-shipping-method p:has(> strong), #form-payment-method p:has(> strong) { margin:16px 0 8px; font-size:var(--luvete-text-lg); }
#form-shipping .text-end, #form-payment .text-end,
:is(#form-shipping-method, .luvete-carrier-options) .text-end, #form-payment-method .text-end { margin-top:16px; }

/* Checkout: последовательные шаги вместо нескольких независимых форм на одном экране. */
#checkout-checkout.checkout-wizard #content > h1 { margin-bottom:22px; }
#checkout-checkout .checkout-wizard-source { display:none; }
.checkout-wizard-layout { min-width:0; }
.checkout-wizard-columns { display:grid; grid-template-columns:minmax(0, 1fr); gap:20px; align-items:start; }

/* Сводка заказа: видна на всех шагах, чтобы состав и сумма не были сюрпризом на последнем. */
.checkout-summary { padding:18px 20px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); box-shadow:0 2px 10px rgba(0,0,0,.04); }
.checkout-summary-head { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-bottom:14px; }
.checkout-summary-head h2 { margin:0; font-size:var(--luvete-h3); font-weight:700; }
.checkout-summary-head a { flex-shrink:0; white-space:nowrap; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.checkout-summary-products { display:grid; gap:12px; margin:0; padding:0; list-style:none; }
.checkout-summary-products li { display:grid; grid-template-columns:60px minmax(0, 1fr) auto; gap:12px; align-items:center; }
.checkout-summary-thumb { position:relative; display:block; }
.checkout-summary-thumb img { width:60px; height:60px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:cover; }
.checkout-summary-qty { position:absolute; top:-6px; right:-6px; display:grid; min-width:20px; height:20px; place-items:center; padding:0 5px; border-radius:10px; background:var(--luvete-text); color:#fff; font-size:11px; font-weight:700; }
.checkout-summary-name { display:-webkit-box; overflow:hidden; color:var(--luvete-text); font-size:var(--luvete-text-sm); line-height:1.35; -webkit-box-orient:vertical; -webkit-line-clamp:3; }
.checkout-summary-total { font-weight:700; white-space:nowrap; }
.checkout-summary-totals { margin:14px 0 0; padding-top:14px; border-top:1px solid var(--luvete-border); }
.checkout-summary-note { margin:10px 0 0; color:var(--luvete-muted); font-size:var(--luvete-text-xs); line-height:1.4; }
.checkout-wizard-tariff { margin:12px 0 0; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.checkout-summary-totals > div { display:flex; justify-content:space-between; gap:12px; margin-bottom:6px; color:var(--luvete-text-2); font-size:var(--luvete-text-sm); }
.checkout-summary-totals dt, .checkout-summary-totals dd { margin:0; }
.checkout-summary-totals > div:last-child, .checkout-summary-totals > .is-grand { margin-bottom:0; color:var(--luvete-text); font-size:var(--luvete-text-base); font-weight:700; }

.checkout-summary-toggle { display:none; width:32px; height:32px; padding:0; border:0; border-radius:8px; background:var(--luvete-surface-muted); color:var(--luvete-text-2); }

@media (min-width:992px) {
    .checkout-wizard-columns { grid-template-columns:minmax(0, 1fr) 340px; }
    .checkout-summary { position:sticky; top:20px; }
}

/* На узком экране сводка едет наверх и сворачивается до итога: снизу уже липнут кнопки шага. */
@media (max-width:991.98px) {
    .checkout-summary { order:-1; padding:14px 16px; }
    .checkout-summary-toggle { display:block; }
    .checkout-summary-head { margin-bottom:0; }
    .checkout-summary-head a { margin-left:auto; }
    .checkout-summary:not(.is-open) .checkout-summary-products { display:none; }
    .checkout-summary:not(.is-open) .checkout-summary-totals { margin-top:10px; padding-top:10px; }
    .checkout-summary:not(.is-open) .checkout-summary-totals > div:not(:last-child) { display:none; }
    .checkout-summary.is-open .checkout-summary-products { margin-top:14px; }
    .checkout-summary.is-open .checkout-summary-toggle i { transform:rotate(180deg); }
}
.checkout-wizard-progress { margin:0 0 24px; padding:18px 24px 14px; border:1px solid #e2e4e7; border-radius:12px; background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.04); }
.checkout-wizard-progress ol { display:grid; grid-template-columns:repeat(4, minmax(0, 1fr)); margin:0; padding:0; list-style:none; }
.checkout-wizard-progress li { position:relative; min-width:0; }
.checkout-wizard-progress li:not(:last-child)::after { content:""; position:absolute; z-index:0; top:20px; left:50%; width:100%; height:2px; background:#dfe2e5; }
.checkout-wizard-progress li:has(.is-complete):not(:last-child)::after { background:var(--luvete-red); }
.checkout-wizard-progress-button { position:relative; z-index:1; display:flex; width:100%; min-height:44px; flex-direction:column; align-items:center; gap:8px; padding:0 8px; border:0; background:transparent; color:var(--luvete-text-2); text-align:center; }
.checkout-wizard-progress-button:disabled { cursor:not-allowed; opacity:.75; }
.checkout-wizard-progress-number { display:grid; width:40px; height:40px; place-items:center; border:2px solid var(--luvete-border-strong); border-radius:50%; background:#fff; color:var(--luvete-text-2); font-weight:700; }
.checkout-wizard-progress-button.is-complete .checkout-wizard-progress-number { border-color:#24282c; background:#24282c; color:#fff; }
.checkout-wizard-progress-button.is-active .checkout-wizard-progress-number { border-color:var(--luvete-red); background:var(--luvete-red); color:#fff; box-shadow:0 0 0 5px rgba(224,31,38,.1); }
.checkout-wizard-progress-button.is-active .checkout-wizard-progress-title { color:#24282c; }
.checkout-wizard-progress-title { font-size:var(--luvete-text-sm); font-weight:700; }
.checkout-wizard-step { width:100%; margin-bottom:14px; overflow:hidden; border:1px solid #e2e4e7; border-radius:12px; background:#fff; box-shadow:0 2px 10px rgba(0,0,0,.04); }
.checkout-wizard-step.is-active { box-shadow:0 6px 20px rgba(20,22,26,.06); }
.checkout-wizard-step-header { display:flex; min-height:64px; align-items:center; padding:14px 24px; }
.checkout-wizard-step-heading { min-width:0; }
.checkout-wizard-step-heading h2 { margin:0; font-size:var(--luvete-h2); font-weight:700; }
/* Внутренний отступ шага задаётся здесь и только здесь: у вложенных fieldset/форм свои
   margin'ы ядра, из-за них шаги набирали разный воздух сверху и снизу. */
.checkout-wizard-step-body { padding:20px 24px; border-top:1px solid #f0f0f0; }
.checkout-wizard-step-body legend { display:none; }
.checkout-wizard-step-body fieldset { margin-top:0; }
/* !important — потому что ядро развешивает на эти блоки утилиты Bootstrap (.mb-3, .mb-4),
   а они сами объявлены с !important. */
.checkout-wizard-step-body > :first-child, .checkout-wizard-step-body > :first-child > :first-child { margin-top:0 !important; }
.checkout-wizard-step-body > :last-child, .checkout-wizard-step-body > :last-child > :last-child { margin-bottom:0 !important; }
.checkout-wizard-step-body #form-register > p, .checkout-wizard-step-lead { margin:0 0 14px; color:#6c757d; }
.checkout-wizard-hidden { display:none !important; }
.checkout-wizard-step.is-locked { opacity:.62; }
.checkout-wizard-page #modal-shipping,
.checkout-wizard-page #modal-payment { visibility:hidden; }
.checkout-wizard-method-options { margin-top:0; }
.checkout-wizard-method-options .form-check { flex-wrap:wrap; margin-bottom:10px; padding:12px 16px 12px 42px; border:1px solid #e2e4e7; border-radius:10px; }
.checkout-wizard-method-options .form-check:has(input:checked) { border-color:rgba(224,31,38,.55); background:rgba(224,31,38,.035); }
.checkout-wizard-method-options .form-check { transition:border-color .15s ease, background-color .15s ease; }
/* Фокус — мягким кольцом, красная рамка читалась как ошибка у невыбранного перевозчика. */
.checkout-wizard-method-options .form-check:focus-within { border-color:var(--luvete-border-strong); box-shadow:0 0 0 3px rgba(20,22,26,.06); }
.checkout-wizard-method-description { flex:0 0 100%; margin:-6px 0 0; color:#6c757d; font-size:var(--luvete-text-sm); }
/* Перевозчик — карточка с иконкой, а не подписанная радиокнопка в столбик. */
:is(#form-shipping-method, .luvete-carrier-options) .form-check.has-carrier-icon { display:grid; grid-template-columns:auto 44px minmax(0, 1fr); gap:0 14px; align-items:center; padding:12px 16px; }
:is(#form-shipping-method, .luvete-carrier-options) .has-carrier-icon > input { grid-row:1 / span 2; grid-column:1; float:none; margin:0; }
:is(#form-shipping-method, .luvete-carrier-options) .has-carrier-icon > .checkout-wizard-method-icon { display:grid; width:44px; height:44px; grid-row:1 / span 2; grid-column:2; place-items:center; border-radius:10px; background:var(--luvete-surface-muted); color:var(--luvete-text-2); font-size:18px; }
:is(#form-shipping-method, .luvete-carrier-options) .has-carrier-icon:has(input:checked) > .checkout-wizard-method-icon:not(.has-logo) { background:rgba(224,31,38,.1); color:var(--luvete-red); }
:is(#form-shipping-method, .luvete-carrier-options) .checkout-wizard-method-icon.has-logo { border:1px solid var(--luvete-border); background:var(--luvete-surface); }
:is(#form-shipping-method, .luvete-carrier-options) .checkout-wizard-method-icon img { max-width:34px; max-height:34px; object-fit:contain; }
:is(#form-shipping-method, .luvete-carrier-options) .has-carrier-icon > label { grid-row:1; grid-column:3; min-height:0; align-self:end; font-weight:700; }
:is(#form-shipping-method, .luvete-carrier-options) .has-carrier-icon > .checkout-wizard-method-description { grid-row:2; grid-column:3; align-self:start; margin:0; }
:is(#form-shipping-method, .luvete-carrier-options) .has-carrier-icon > div { grid-column:1 / -1; }
.checkout-wizard-method-options #np-wrap,
.checkout-wizard-method-options #up-wrap,
.checkout-wizard-method-options #meest-wrap { flex:0 0 100%; width:100%; margin-top:4px !important; }
.checkout-wizard-method-options .text-end { margin-top:18px; }
.checkout-wizard-native-select { display:none; }
/* Блок «Доставка» в форме адреса и строка точки в списке адрес. */
.luvete-delivery { margin:4px 0 14px; padding-top:14px; border-top:1px solid var(--luvete-border); }
.luvete-delivery-head { display:grid; gap:2px; margin-bottom:12px; }
/* Поля пикера — по метрике корзины (40px, штатный радиус), иначе выпадашка города не накрывает поле отделения целиком. */
.luvete-auth-card .luvete-delivery .form-control, .luvete-auth-card .luvete-delivery .form-select { min-height:40px; border-radius:var(--bs-border-radius); }
.luvete-delivery-head span { color:var(--luvete-muted); font-size:var(--luvete-text-sm); line-height:1.5; }
.luvete-delivery .checkout-wizard-method-options .form-check:last-child { margin-bottom:0; }
.luvete-delivery .checkout-wizard-method-options .form-check:not(.has-carrier-icon) { display:flex; align-items:center; gap:10px; min-height:46px; padding:8px 16px; }
.luvete-delivery .checkout-wizard-method-options .form-check:not(.has-carrier-icon) input { float:none; margin:0; }
.luvete-delivery .checkout-wizard-method-options .form-check:not(.has-carrier-icon) label { min-height:0; margin:0; font-weight:600; }
.luvete-address-delivery { margin-top:6px; color:var(--luvete-text-2); font-size:var(--luvete-text-sm); }
.luvete-address-phone { margin-top:2px; color:var(--luvete-text-2); }
.luvete-address-delivery i { margin-right:4px; color:var(--luvete-red); }
/* Чекаут залогиненного: адреса карточками, точка доставки строкой под адресом. */
.luvete-checkout-addresses { display:grid; gap:10px; margin-bottom:14px; }
.luvete-checkout-address { display:grid; grid-template-columns:auto minmax(0, 1fr); gap:2px 14px; align-items:start; padding:12px 16px; border:1px solid var(--luvete-border); border-radius:10px; cursor:pointer; transition:border-color .15s ease, background-color .15s ease; }
.luvete-checkout-address:has(input:checked) { border-color:rgba(224,31,38,.55); background:rgba(224,31,38,.035); }
.luvete-checkout-address input { grid-row:1 / span 3; margin:4px 0 0; accent-color:var(--luvete-red); }
.luvete-checkout-address-name { font-weight:700; }
.luvete-checkout-address-name .luvete-address-default { margin-left:8px; }
.luvete-checkout-address-text { color:var(--luvete-text-2); font-size:var(--luvete-text-sm); line-height:1.5; }
.luvete-checkout-address .luvete-address-delivery { margin-top:2px; }
.luvete-checkout-address-new { display:inline-flex; min-height:44px; align-items:center; gap:8px; padding:0 18px; border-radius:10px; font-weight:700; }
.luvete-checkout-address-form { margin-top:14px; padding-top:14px; border-top:1px solid var(--luvete-border); }
.checkout-wizard-picker { position:relative; margin-top:10px; }
.checkout-wizard-picker-list { display:none; position:absolute; z-index:20; top:calc(100% + 10px); right:0; left:0; max-height:260px; overflow-y:auto; border:1px solid var(--luvete-border-strong); border-radius:var(--bs-border-radius); background:var(--luvete-surface); box-shadow:0 10px 24px rgba(0,0,0,.12); }

/* Между «введено меньше 2 символов» и ответом сервера список пуст: без этого от него
   оставались две рамки — тонкая серая полоска под полем. */
.checkout-wizard-picker-list.is-open:empty { display:none; }
.luvete-shipping-city-list { z-index:1060; }
.checkout-wizard-picker-list.is-open { display:block; }
.checkout-wizard-picker-hint { display:flex; min-height:38px; align-items:center; padding:6px 14px; color:var(--luvete-muted); background:var(--luvete-surface); line-height:1.4; }
/* Строка списка живёт по метрике поля: та же высота и те же горизонтальные отступы.
   !important — ядро вешает на пункты утилиту .py-1, а она объявлена с !important. */
.checkout-wizard-picker-input { min-height:40px; }
.checkout-wizard-picker-list > a, .checkout-wizard-picker-list > button { display:flex; min-height:38px; align-items:center; padding:6px 14px !important; line-height:1.4; }
/* Поле отделения до выбора города недоступно, но это не повод красить его серым —
   рядом стоит белое поле города, и пара выглядит поломанной. */
.checkout-wizard-picker-input:disabled { background-color:var(--luvete-surface); color:var(--luvete-placeholder); }
/* Внешняя рамка у списка своя: у пунктов остаётся только разделитель снизу,
   у последнего — ничего. Иначе боковые рамки пунктов дают двойную обводку. */
.checkout-wizard-picker-list > .list-group-item { border-width:0 0 1px; border-radius:0; }
.checkout-wizard-picker-list > .list-group-item:last-child { border-bottom-width:0; }

.checkout-wizard-comment { margin:24px 0 0; }
.checkout-wizard-comment .form-label { font-size:var(--luvete-text-lg); }
.checkout-wizard-comment textarea { min-height:120px; resize:vertical; }
.checkout-wizard-review-methods { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:14px; margin:20px 0 28px; }
.checkout-wizard-review-card { display:flex; min-width:0; align-items:center; gap:14px; padding:18px; border:1px solid #e2e4e7; border-radius:12px; background:linear-gradient(135deg, #fff 0%, #fafafa 100%); }
.checkout-wizard-review-copy { flex:1 1 auto; min-width:0; }
.checkout-wizard-review-edit { flex:0 0 auto; align-self:flex-start; min-width:0 !important; min-height:0 !important; padding:0; border:0; background:transparent; color:var(--luvete-red); font-size:var(--luvete-text-sm); font-weight:700; }
.checkout-wizard-review-edit:hover { text-decoration:underline; }
.checkout-wizard-agree { margin:12px 0 0; color:var(--luvete-muted); font-size:var(--luvete-text-xs); text-align:right; }
.checkout-wizard-agree a { color:var(--luvete-red); }
.checkout-wizard-review-icon { display:grid; width:44px; height:44px; flex:0 0 44px; place-items:center; border-radius:50%; background:rgba(224,31,38,.09); color:var(--luvete-red); font-size:18px; }
.checkout-wizard-review-copy { display:flex; min-width:0; flex-direction:column; gap:3px; }
.checkout-wizard-review-copy span { color:#6c757d; font-size:var(--luvete-text-sm); }
.checkout-wizard-review-copy .checkout-wizard-review-line { color:var(--luvete-text); font-size:var(--luvete-text-sm); line-height:1.4; }
.checkout-wizard-review-copy strong { color:#24282c; font-size:var(--luvete-text-base); line-height:1.35; }
.checkout-wizard-products-title { margin:0 0 12px; color:#24282c; font-size:var(--luvete-text-lg); font-weight:700; }
.checkout-wizard-order-table { overflow:hidden; margin-bottom:22px; border:1px solid #e2e4e7; border-radius:12px; }
.checkout-wizard-order-table table { --bs-table-border-color:#e2e4e7; margin:0; border:0 !important; border-color:#e2e4e7 !important; }
.checkout-wizard-order-table .table-bordered > :not(caption) > * { border-width:0 !important; }
.checkout-wizard-order-table table > :not(caption) > * > * { padding:14px 18px; border-color:#e2e4e7 !important; border-right:0 !important; border-left:0 !important; }
.checkout-wizard-order-table thead th { border-top:0 !important; border-bottom:1px solid #e2e4e7 !important; background:#f7f7f8; color:#24282c; font-size:var(--luvete-text-sm); }
.checkout-wizard-order-table tbody td { border-top:0 !important; border-bottom:1px solid #eceef0 !important; vertical-align:middle; }
.checkout-wizard-order-table tbody a { color:#24282c; font-weight:700; }
.checkout-wizard-order-table tbody a:hover { color:var(--luvete-red); }
.checkout-wizard-order-table tfoot td { padding-top:10px !important; padding-bottom:10px !important; border-top:0 !important; border-bottom:0 !important; }
.checkout-wizard-order-table tfoot tr:first-child td { padding-top:16px !important; }
.checkout-wizard-order-table tfoot tr:last-child td { padding-top:14px !important; padding-bottom:16px !important; border-top:1px solid #e2e4e7 !important; background:#fafafa; color:#24282c; font-size:var(--luvete-text-base); font-weight:700; }
.checkout-wizard-order-table .checkout-wizard-redundant-total { display:none; }
.checkout-wizard-actions { display:flex; align-items:center; justify-content:flex-end; gap:16px; }
.checkout-wizard-actions .btn { display:inline-flex; align-items:center; justify-content:center; gap:8px; }
.checkout-wizard-actions .btn-primary.is-waiting, .checkout-wizard-actions .btn-primary:disabled { border-color:var(--luvete-border); background:var(--luvete-surface-muted); color:var(--luvete-muted); opacity:1; cursor:not-allowed; }
.checkout-wizard-actions .btn::before { font-family:inherit; font-weight:800; line-height:1; }
.checkout-wizard-actions .checkout-wizard-back::before { content:"←"; }
.checkout-wizard-actions .btn-primary:not(.checkout-wizard-back)::before { content:"→"; }
.checkout-wizard-confirm-total { display:flex; flex-direction:column; align-items:flex-end; line-height:1.2; }
.checkout-wizard-confirm-total span { color:#6c757d; font-size:var(--luvete-text-sm); }
.checkout-wizard-confirm-total strong { color:#24282c; font-size:var(--luvete-text-lg); }
.checkout-wizard-confirm-total small { max-width:220px; margin-top:2px; color:#6c757d; font-size:var(--luvete-text-xs); }

@media (max-width:767.98px) {
    /* Крошки на телефоне — одна ссылка «← родитель», цепочка целиком не влезает. */
    :is(#product-info, #product-category) .breadcrumb > li.breadcrumb-item:not(:nth-last-child(2)) { display:none; }
    :is(#product-info, #product-category) .breadcrumb > li.breadcrumb-item:nth-last-child(2) a { width:auto; border:0; background:transparent; color:var(--luvete-text); font-weight:600; }
    :is(#product-info, #product-category) .breadcrumb > li.breadcrumb-item:nth-last-child(2) a::before { content:"←"; margin-right:8px; color:var(--luvete-red); }
    :is(#product-info, #product-category) .breadcrumb > li.breadcrumb-item:nth-last-child(2)::after { display:none; }
    /* Корневая категория: «← 🏠» ничего не добавляет — крошки прячем целиком. */
    #product-category .breadcrumb:has(> li:nth-child(2):last-child) { display:none; }
    #alert { top:auto; right:12px; bottom:calc(76px + env(safe-area-inset-bottom)); width:calc(100vw - 24px); }
    #alert .alert { min-height:52px; padding:12px 44px 12px 14px; }
    .checkout-wizard-progress { margin-right:-4px; margin-left:-4px; padding:14px 6px 10px; }
    .checkout-wizard-progress li:not(:last-child)::after { top:17px; }
    .checkout-wizard-progress-button { gap:6px; padding:0 2px; }
    .checkout-wizard-progress-number { width:34px; height:34px; }
    .checkout-wizard-progress-title { font-size:var(--luvete-text-xs); line-height:1.2; }
    .checkout-wizard-layout { margin-right:-4px; margin-left:-4px; width:auto; }
    .checkout-wizard-step-header { min-height:64px; padding:12px 14px; }
    .checkout-wizard-step-body { padding:2px 14px 18px; }
    .checkout-wizard-step-heading h2 { font-size:var(--luvete-text-base); }
    .checkout-wizard-step.is-active { overflow:visible; }
    .checkout-wizard-step.is-active .checkout-wizard-actions {
        position:sticky;
        z-index:15;
        bottom:calc(56px + env(safe-area-inset-bottom)); /* над нижней панелью */
        margin:18px -14px -18px;
        padding:12px 14px;
        border-top:1px solid #eee;
        background:rgba(255,255,255,.97);
        box-shadow:0 -8px 20px rgba(0,0,0,.07);
    }
    .checkout-wizard-step.is-active .checkout-wizard-actions .btn { flex:1 1 auto; }
    /* «Назад» на телефоне — только стрелка, основная кнопка во всю ширину. */
    .checkout-wizard-step.is-active .checkout-wizard-actions .checkout-wizard-back { flex:0 0 48px; width:48px; padding:0; font-size:0; }
    .checkout-wizard-step.is-active .checkout-wizard-actions .checkout-wizard-back::before { font-size:1rem; }
    .checkout-wizard-step.is-active .checkout-wizard-confirm-actions { flex-wrap:wrap; justify-content:space-between; }
    .checkout-wizard-step.is-active .checkout-wizard-confirm-actions .checkout-wizard-confirm-total { flex:0 0 100%; align-items:flex-start; }
    .checkout-wizard-step.is-active .checkout-wizard-confirm-actions .btn { flex:1 1 calc(50% - 8px); }
    .checkout-wizard-review-methods { grid-template-columns:1fr; gap:10px; margin:16px 0 22px; }
    .checkout-wizard-review-card { padding:14px; }
    .checkout-wizard-products-title { font-size:var(--luvete-text-base); }
    .checkout-wizard-order-table table > :not(caption) > * > * { padding-right:12px; padding-left:12px; }
    #common-success .checkout-success-content { padding:20px 16px 24px; }
    .checkout-success-progress { margin-bottom:22px; }
    .checkout-success-progress li { font-size:var(--luvete-text-xs); }
    .checkout-success-next { grid-template-columns:1fr; }
}

/* Лайтбокс фото товара: заметные стрелки, подпись и счётчик в одну строку под фото. */
.mfp-luvete .mfp-bg { opacity:.9; }
.mfp-luvete .mfp-arrow { width:48px; height:48px; margin:-24px 0 0; border-radius:50%; background:rgba(255,255,255,.92); opacity:1; transition:background .15s; }
.mfp-luvete .mfp-arrow:hover { background:#fff; }
.mfp-luvete .mfp-arrow:active { margin-top:-24px; }
.mfp-luvete .mfp-arrow::before, .mfp-luvete .mfp-arrow::after { display:none; }
.mfp-luvete .mfp-arrow-left { left:16px; }
.mfp-luvete .mfp-arrow-right { right:16px; }
.mfp-luvete .mfp-arrow-left::after, .mfp-luvete .mfp-arrow-right::after { content:""; display:block; position:absolute; top:50%; left:50%; width:12px; height:12px; margin:-6px 0 0 -4px; border:solid var(--luvete-text); border-width:0 0 2.5px 2.5px; transform:rotate(45deg); }
.mfp-luvete .mfp-arrow-right::after { margin-left:-8px; transform:rotate(-135deg); }
/* width !important: на телефоне magnific растягивает крестик на всю ширину figure (mfp-img-mobile). */
.mfp-luvete .mfp-close, .mfp-luvete.mfp-image-holder .mfp-close { position:fixed; top:10px; right:10px !important; left:auto; width:44px !important; padding:0; text-align:center; height:44px; opacity:1; border-radius:50%; background:rgba(255,255,255,.92); color:var(--luvete-text); font-size:30px; line-height:44px; }
.mfp-luvete .mfp-bottom-bar { display:flex; justify-content:space-between; gap:16px; margin-top:-32px; }
.mfp-luvete .mfp-title { padding-right:0; color:#fff; font-size:var(--luvete-text-sm); font-weight:600; }
.mfp-luvete .mfp-counter { position:static; flex:0 0 auto; color:rgba(255,255,255,.75); font-size:var(--luvete-text-sm); }
@media (max-width:767.98px) { .mfp-luvete .mfp-arrow { width:40px; height:40px; margin-top:-20px; } .mfp-luvete .mfp-arrow:active { margin-top:-20px; } .mfp-luvete .mfp-arrow-left { left:8px; } .mfp-luvete .mfp-arrow-right { right:8px; } }

/* Подсказки поиска: выпадашка под строкой, категории чипсами, товары строками с фото и ценой. */
.luvete-suggest-host { position:relative; }
.luvete-suggest { position:absolute; z-index:1050; top:calc(100% + 6px); right:0; left:0; max-height:min(70vh, 560px); padding:10px 12px 0; overflow-y:auto; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); box-shadow:0 14px 36px rgba(35,35,35,.18); text-align:left; }
.luvete-suggest-title { margin:6px 0 6px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.luvete-suggest-chips { display:flex; flex-wrap:wrap; gap:6px; margin-bottom:6px; }
.luvete-suggest-chip { display:inline-flex; align-items:center; gap:6px; padding:5px 10px; border:1px solid var(--luvete-border-strong); border-radius:8px; background:var(--luvete-bg); color:var(--luvete-text); font-size:var(--luvete-text-sm); font-weight:700; text-decoration:none; }
.luvete-suggest-chip small { color:var(--luvete-muted); font-weight:600; }
.luvete-suggest-chip:hover, .luvete-suggest-chip.is-active { border-color:var(--luvete-red); color:var(--luvete-red); }
.luvete-suggest-list { display:grid; }
.luvete-suggest-item { display:grid; grid-template-columns:44px minmax(0, 1fr) auto; align-items:center; gap:12px; margin:0 -12px; padding:7px 12px; color:var(--luvete-text); font-size:var(--luvete-text-sm); text-decoration:none; }
.luvete-suggest-item:hover, .luvete-suggest-item.is-active { background:var(--luvete-bg); }
.luvete-suggest-item img { width:44px; height:44px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:contain; background:#fff; }
.luvete-suggest-name { display:-webkit-box; overflow:hidden; -webkit-box-orient:vertical; -webkit-line-clamp:2; line-height:1.3; }
.luvete-suggest-body { display:grid; min-width:0; gap:2px; }
.luvete-suggest-stock { color:var(--luvete-in-stock); font-size:var(--luvete-text-xs); font-weight:600; }
.luvete-suggest-stock.is-low { color:var(--luvete-text-2); }
.luvete-suggest-price { font-weight:800; white-space:nowrap; }
.luvete-suggest-price s { margin-left:6px; color:var(--luvete-muted); font-size:var(--luvete-text-xs); font-weight:500; }
.luvete-suggest-all { display:block; margin:6px -12px 0; padding:12px; border-top:1px solid var(--luvete-border); color:var(--luvete-red); font-size:var(--luvete-text-sm); font-weight:700; text-align:center; text-decoration:none; }
.luvete-suggest-all:hover, .luvete-suggest-all.is-active { background:var(--luvete-bg); }
.luvete-suggest-empty { padding:6px 0 16px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
@media (max-width:767.98px) {
    /* Телефон: панель на всю высоту от поля до нижней панели, «Усі результати» прижаты книзу. */
    .luvete-suggest { position:fixed; top:var(--luvete-suggest-top, 120px); right:0; bottom:var(--luvete-suggest-bottom, 64px); left:0; display:flex; flex-direction:column; max-height:none; padding-bottom:0; border-radius:0; border-right:0; border-left:0; }
    .luvete-suggest-all { position:sticky; bottom:0; margin-top:auto; background:var(--luvete-surface); }
    .luvete-suggest-item { grid-template-columns:40px minmax(0, 1fr); row-gap:2px; }
    .luvete-suggest-item img { grid-row:1 / span 2; width:40px; height:40px; }
    .luvete-suggest-price { grid-column:2; }
}

/* Закладки: строки-карточки с фото, ценой и кнопкой; сверху счётчик и «Додати все в кошик». */
.luvete-wishlist-bar { display:flex; justify-content:flex-end; margin-bottom:12px; }
.luvete-wishlist-guest { display:flex; flex-wrap:wrap; align-items:center; gap:10px 12px; margin-bottom:14px; padding:12px 16px; border:1px solid #f3d7a3; border-radius:12px; background:#fff8ea; color:var(--luvete-text); }
.luvete-wishlist-guest > i { color:#c98a12; }
.luvete-wishlist-guest > span { flex:1 1 240px; }
@media (max-width:767.98px) { .luvete-wishlist-guest > i { display:none; } .luvete-wishlist-guest > .btn { width:100%; } }
.luvete-wishlist { display:grid; gap:10px; margin-bottom:16px; }
.luvete-wishlist-item { display:grid; grid-template-columns:72px minmax(0, 1fr) auto auto; align-items:center; gap:16px; padding:12px 16px; border:1px solid var(--luvete-border); border-radius:12px; background:var(--luvete-surface); }
.luvete-wishlist-item.is-out { opacity:.7; }
.luvete-wishlist-thumb img { width:72px; height:72px; border:1px solid var(--luvete-border); border-radius:8px; object-fit:contain; background:#fff; }
.luvete-wishlist-name { display:block; color:var(--luvete-text); font-weight:600; text-decoration:none; }
.luvete-wishlist-name:hover { color:var(--luvete-red); }
.luvete-wishlist-meta { margin-top:3px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); }
.luvete-wishlist-price { font-size:var(--luvete-text-lg); white-space:nowrap; }
.luvete-wishlist-price s { margin-left:4px; color:var(--luvete-muted); font-size:var(--luvete-text-sm); font-weight:500; }
.luvete-wishlist-actions { display:flex; gap:8px; }
.luvete-wishlist-qty { width:118px; flex:0 0 118px; }
.luvete-wishlist-qty .form-control { min-width:0; padding:0 4px; text-align:center; -moz-appearance:textfield; }
.luvete-wishlist-qty .form-control::-webkit-outer-spin-button, .luvete-wishlist-qty .form-control::-webkit-inner-spin-button { margin:0; -webkit-appearance:none; }
.luvete-wishlist-qty .product-qty-step { flex:0 0 34px; padding:0; }
.luvete-wishlist-total { margin-top:12px; text-align:right; font-weight:700; }
.luvete-wishlist-actions .btn-light { min-width:44px; padding:0 12px; }
@media (max-width:767.98px) { .luvete-wishlist-item { grid-template-columns:64px minmax(0, 1fr); } .luvete-wishlist-thumb img { width:64px; height:64px; } .luvete-wishlist-price { grid-column:2; } .luvete-wishlist-actions { grid-column:1 / -1; } .luvete-wishlist-actions .btn-primary { flex:1 1 auto; } .luvete-wishlist-bar { flex-direction:column; align-items:stretch; } .luvete-wishlist-total { text-align:left; } }

/* Поле пароля с «глазом»: кнопка внутри поля, переключает type (mobile-nav.js). */
.luvete-password { position:relative; }
.luvete-password .form-control.is-invalid { background-image:none; }
.luvete-password .form-control { padding-right:44px; }
.luvete-password-toggle { position:absolute; top:0; right:0; bottom:0; width:44px; border:0; background:transparent; color:var(--luvete-muted); font-size:15px; }
.luvete-password-toggle:hover { color:var(--luvete-text); }
