/* Critical layout: this section is also emitted in the document head. */
body.jm-ui-v2{--ui-bg:#f5f7fb;--ui-ink:#1d2433;--ui-muted:#566073;--ui-line:#dce1e9;margin:0;background:var(--ui-bg);color:var(--ui-ink);font:16px/1.5 JMNunito,JMNunitoFallback,Nunito,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;-webkit-font-smoothing:antialiased}
.jm-ui-v2 *,.jm-ui-v2 *::before,.jm-ui-v2 *::after{box-sizing:border-box}
.jm-ui-v2 button,.jm-ui-v2 input,.jm-ui-v2 select,.jm-ui-v2 textarea{margin:0;line-height:inherit;text-transform:none}
.jm-ui-v2 [hidden]{display:none!important}
.jm-ui-v2 legend{padding:0}
.jm-ui-v2 svg,.jm-ui-v2 img{vertical-align:middle}
.jm-ui-v2 a{color:var(--ui-link);text-decoration:none}
.jm-ui-v2 button,.jm-ui-v2 input,.jm-ui-v2 select,.jm-ui-v2 textarea{font:inherit}
.jm-ui-v2 button,.jm-ui-v2 summary,.jm-ui-v2 input:not([type=hidden]),.jm-ui-v2 select{min-height:44px}
.jm-ui-v2 button,.jm-ui-v2 summary{cursor:pointer}
.jm-ui-v2 input,.jm-ui-v2 select,.jm-ui-v2 textarea{max-width:100%;border:1px solid #858d9b;border-radius:9px;background:#fff;color:var(--ui-ink);padding:9px}
.jm-ui-v2 input[type=number]{width:76px}
.jm-ui-v2 h1{font-size:26px;line-height:1.2;font-weight:700;margin:18px 0 14px;color:var(--ui-ink)}
.jm-ui-v2 h2{font-size:19px;line-height:1.3;font-weight:700;margin:22px 0 12px;color:var(--ui-ink)}
.jm-ui-v2 h3{font-size:16px;line-height:1.3;margin:8px 0;font-weight:700;color:var(--ui-ink)}
.jm-ui-v2 p{margin:0 0 12px}
.jm-ui-v2 img{max-width:100%;height:auto}
.jm-ui-v2 .ui-header{position:sticky;top:0;z-index:40;display:flex;align-items:center;gap:8px;padding:8px 14px;background:#fff;border-bottom:1px solid var(--ui-line);min-height:61px}
.jm-ui-v2 .ui-logo{margin-right:auto;display:flex;align-items:center;min-width:0;max-width:160px;height:44px;font-weight:700}
.jm-ui-v2 .ui-logo img{width:auto;height:auto;max-width:160px;max-height:38px;object-fit:contain}
.jm-ui-v2 .ui-header summary{display:flex;align-items:center;justify-content:center;min-width:44px;list-style:none;font-size:24px}
.jm-ui-v2 .ui-header summary::-webkit-details-marker{display:none}
.jm-ui-v2 .ui-cart-link{position:relative;display:flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;font-size:24px}
.jm-ui-v2 .ui-cart-count{position:absolute;top:0;right:0;min-width:18px;padding:0 4px;border-radius:12px;background:var(--ui-brand);color:var(--ui-on-brand);font-size:12px;text-align:center}
.jm-ui-v2 .ui-cart-label{display:none}
.jm-ui-v2 .ui-mini{display:none}
.jm-ui-v2 .ui-popover{position:absolute;right:14px;top:100%;width:min(420px,calc(100vw - 28px));max-height:70vh;overflow:auto;background:#fff;border:1px solid var(--ui-line);border-radius:12px;padding:16px;box-shadow:0 10px 28px #1824381a}
.jm-ui-v2 .ui-main{max-width:1120px;margin:auto;padding:0 14px}
/* Полоса преимуществ первого экрана — «таблетки» с иконками, как в макете.
   Лежит в критических стилях: она на первом экране, и без готовой раскладки
   строка переносилась бы и сдвигала всё под собой. */
.jm-ui-v2 .ui-usp{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0 4px;padding:0}
.jm-ui-v2 .ui-usp div{flex:0 0 auto;display:flex;align-items:center;gap:7px;background:#fff;border:1px solid var(--ui-line);border-radius:999px;padding:8px 13px;font-size:13px;font-weight:600;white-space:nowrap;line-height:18px;min-height:36px}
.jm-ui-v2 .ui-usp svg{width:18px;height:18px;flex:0 0 18px;color:#0b6f4d}
@media (min-width:900px){.jm-ui-v2 .ui-usp{gap:10px;margin:14px 0 6px}.jm-ui-v2 .ui-usp div{font-size:14px;padding:10px 16px;min-height:40px}}
.jm-ui-v2 .ui-card{background:#fff;border:1px solid var(--ui-line);border-radius:14px;padding:14px;margin:12px 0}
.jm-ui-v2 .ui-card h2:first-child{margin-top:0}
/* Герой главной — светлая карточка в лёгком фирменном оттенке, а не залитая
   цветом плита: у красных магазинов (aptekatop100.pl) сплошной блок на весь
   экран давил, владелец 23.09. Цвет остаётся на кнопке поиска и акцентах. */
.jm-ui-v2 .ui-hero{background:var(--ui-badge);color:var(--ui-ink);border:1px solid var(--ui-line);border-radius:16px;padding:20px 18px;margin:14px 0 12px}
.jm-ui-v2 .ui-hero h1{margin:0 0 8px;font-size:25px;color:inherit}
.jm-ui-v2 .ui-hero p{margin:0 0 14px;font-size:15px;color:var(--ui-muted)}
.jm-ui-v2 .ui-hero a{color:var(--ui-link);text-decoration:underline}
.jm-ui-v2 .ui-hero .ui-search{margin:0;background:#fff;border:1px solid var(--ui-line);border-radius:12px;padding:6px 6px 6px 14px;align-items:center}
.jm-ui-v2 .ui-hero .ui-search input[type=search]{border:0;padding:0;min-height:40px;background:none}
.jm-ui-v2 .ui-hero .ui-button{min-height:44px;border-radius:9px}
.jm-ui-v2 .ui-search{display:flex;gap:8px;margin:12px 0}
.jm-ui-v2 .ui-search input[type=search]{min-width:0;width:100%;flex:1}
.jm-ui-v2 .ui-button{display:inline-flex;align-items:center;justify-content:center;min-height:48px;min-width:44px;border:0;border-radius:12px;background:var(--ui-brand);color:var(--ui-on-brand);padding:12px 16px;font-weight:700;text-decoration:none;line-height:1.3;text-align:center}
.jm-ui-v2 .ui-product-hero{display:flex;align-items:center;gap:16px;min-height:134px}
.jm-ui-v2 .ui-product-hero img{width:104px;height:104px;object-fit:contain;flex:0 0 104px;border:0;border-radius:10px;background:#f2f5fa;padding:6px}
.jm-ui-v2 .ui-price,.jm-ui-v2 .ui-buy-price{font-size:21px;font-weight:700}
.jm-ui-v2 .ui-attribute{border:0;padding:0;margin:18px 0;min-width:0}
/* Подписи групп как в макете: негромкие, 14/600; подсказка про выгоду упаковки обычным весом. */
.jm-ui-v2 .ui-attribute legend{font-size:14px;font-weight:600;color:var(--ui-muted);margin-bottom:10px;float:none;width:auto}
.jm-ui-v2 .ui-legend-hint{font-weight:400;color:var(--ui-muted)}
.jm-ui-v2 .ui-options{display:flex;flex-wrap:wrap;gap:8px}
.jm-ui-v2 .ui-attribute[data-pack="1"] .ui-options{display:flex;flex-direction:column;gap:8px}
.jm-ui-v2 .ui-dose,.jm-ui-v2 .ui-pack{border:1px solid #858d9b;background:#fff;color:var(--ui-ink);border-radius:12px}
/* Дозировки переносятся рядами: nowrap при семи дозировках (Viagra на
   aptekatop100.pl) уводил ряд за край колонки. Кнопки растягиваются на ряд. */
.jm-ui-v2 .ui-attribute[data-pack="0"] .ui-options{display:flex;flex-wrap:wrap;gap:8px}
/* Кнопки дозировок переносятся рядами, а не ужимаются: у Viagra на aptekatop100.pl
   семь дозировок, и flex:1 1 0 с min-width:0 рвал «100mg» на «10 / 0m / g». */
body.jm-ui-v2 button.ui-dose{display:block;flex:1 1 auto;min-width:64px;width:auto;min-height:44px;margin:0;padding:10px 12px;font-weight:700;text-align:center;white-space:normal;overflow-wrap:normal}
body.jm-ui-v2 button.ui-pack{display:flex;flex-direction:row;position:relative;align-items:flex-start;justify-content:space-between;gap:12px;width:100%;height:auto;min-height:82px;margin:0;padding:13px 14px;text-align:left;white-space:normal;line-height:20px;border-width:1px}
.jm-ui-v2 .ui-pack-left,.jm-ui-v2 .ui-pack-right{display:flex;flex:0 1 auto;flex-direction:column;justify-content:flex-start;align-self:flex-start;gap:4px;min-width:0;height:auto;margin:0;padding:0}
.jm-ui-v2 .ui-pack-left{align-items:flex-start}
.jm-ui-v2 .ui-pack-right{align-items:flex-end;margin-left:auto;text-align:right;flex-shrink:0}
.jm-ui-v2 .ui-pack-count,.jm-ui-v2 .ui-pack-price{display:block;margin:0;padding:0;font-size:16px;line-height:20px;font-weight:700;white-space:nowrap}
.jm-ui-v2 .ui-pack-unit,.jm-ui-v2 .ui-pack-base{display:block;margin:0;padding:0;font-size:13px;line-height:18px;color:var(--ui-muted);font-weight:400;white-space:nowrap}
.jm-ui-v2 .ui-pack-saving{display:block;margin:0;padding:0;font-size:12px;line-height:18px;color:#0b6f4d;font-weight:700}
.jm-ui-v2 .ui-pack-badge{position:absolute;top:-10px;left:12px;padding:2px 8px;border-radius:999px;background:#0b6f4d;color:#fff;font-size:11px;font-weight:700;line-height:16px}
/* Выбранный вариант отмечаем ОДНОЙ рамкой. Раньше поверх рамки лежало ещё
   кольцо box-shadow, и в сумме выходила сплошная полоса 3-4 px — замер на
   живом сайте 23.09: доза 2px+2px, упаковка 1px+2px. Владелец назвал такую
   обводку слишком жирной. Рамку компенсируем отступом, чтобы выбор варианта
   не менял размер кнопки и ничего не сдвигал. */
.jm-ui-v2 .ui-pack[aria-pressed=true],.jm-ui-v2 .ui-dose[aria-pressed=true]{border-color:var(--ui-brand);box-shadow:none}
.jm-ui-v2 [aria-pressed=true]{border:2px solid var(--ui-brand);background:var(--ui-badge);padding:9px 13px}
body.jm-ui-v2 button.ui-pack[aria-pressed=true]{border-width:2px;padding:12px 13px}
/* Рамка выбранной 2px компенсируется отступом: ширина кнопки не меняется, ряды не перестраиваются (ревью Codex). */
body.jm-ui-v2 button.ui-dose[aria-pressed=true]{border-width:2px;padding:9px 11px}
.jm-ui-js .jm-ui-v2 .ui-select{position:absolute;clip-path:inset(50%);width:1px;height:1px;min-height:0;padding:0;border:0;overflow:hidden}
.jm-ui-v2 .ui-select:focus{position:static;clip-path:none;width:auto;height:auto;min-height:44px;padding:9px;border:1px solid}
.jm-ui-v2 .ui-buybar{position:fixed;left:0;right:0;bottom:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff;border-top:1px solid var(--ui-line);padding:10px 14px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -6px 20px #141e3c14;min-height:84px}
.jm-ui-v2 .ui-buybar .ui-button{flex-shrink:0;max-width:58%}
.jm-ui-v2.ui-route-single-product,.jm-ui-v2.ui-route-cart{padding-bottom:calc(112px + env(safe-area-inset-bottom))}
.jm-ui-v2 .ui-buy-price{line-height:1.2}
.jm-ui-v2 .ui-buy-price del{display:block;font-size:13px;color:var(--ui-muted);font-weight:400}
.jm-ui-v2 .ui-unit{font-size:12px;color:var(--ui-muted)}
.jm-ui-v2 .ui-categories,.jm-ui-v2 .ui-products{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:12px 0}
.jm-ui-v2 .ui-product-card,.jm-ui-v2 .ui-categories a{background:#fff;border:1px solid var(--ui-line);border-radius:14px;padding:12px;color:var(--ui-ink)}
/* Плитки одной высоты при разной длине названий: кнопка прижата к низу. */
.jm-ui-v2 .ui-product-card{display:flex;flex-direction:column}
.jm-ui-v2 .ui-product-card .ui-card-action{margin-top:auto}
/* Названия категорий — основным цветом текста: десять цветных плиток подряд рябили. */
.jm-ui-v2 .ui-categories a{min-height:64px;display:flex;align-items:center;color:var(--ui-ink);font-weight:700}
.jm-ui-v2 .ui-product-card img{width:100%;height:120px;object-fit:contain;border:0;border-radius:9px;background:#f2f5fa;padding:6px}
.jm-ui-v2 .ui-product-card .ui-price{font-size:17px}
.jm-ui-v2 .ui-card-action{display:block;border-radius:9px;padding:10px 4px;margin-top:10px;text-align:center;background:#f1f4f8;color:var(--ui-link);font-weight:700}
.jm-ui-v2 .ui-muted{color:var(--ui-muted);font-size:13px}
.jm-ui-v2 .ui-crumbs{display:flex;align-items:center;gap:7px;font-size:13px;line-height:20px;margin:10px 0 2px;color:var(--ui-muted);overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.jm-ui-v2 .ui-crumbs::-webkit-scrollbar{display:none}
.jm-ui-v2 .ui-crumbs a{color:var(--ui-muted)}
.jm-ui-v2 .ui-crumb-sep{color:#b9c0cd}
.jm-ui-v2 .ui-crumb:last-child{color:var(--ui-ink);font-weight:600;overflow:hidden;text-overflow:ellipsis}
.jm-ui-v2 .ui-col-buy{display:contents}
.jm-ui-v2 .ui-sortbar{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:2px 0 12px;border-bottom:1px solid var(--ui-line);overflow-x:auto;white-space:nowrap;scrollbar-width:none}
.jm-ui-v2 .ui-sortbar::-webkit-scrollbar{display:none}
.jm-ui-v2 .ui-sortbar a{flex:0 0 auto;display:inline-flex;align-items:center;min-height:40px;padding:8px 14px;border:1px solid var(--ui-line);border-radius:999px;background:#fff;color:var(--ui-muted);font-size:14px;font-weight:700}
.jm-ui-v2 .ui-sortbar a[aria-current=true]{background:var(--ui-brand);border-color:var(--ui-brand);color:var(--ui-on-brand)}
.jm-ui-v2 .ui-sortbar .woocommerce-result-count{flex:0 0 auto;margin:0 0 0 auto;padding-left:10px;font-size:13px}
.jm-ui-v2 .ui-more{display:none;align-items:center;justify-content:center;gap:8px;width:100%;margin-top:6px;padding:12px;border:1px solid var(--ui-line);border-radius:10px;background:#fff;color:var(--ui-link);font-weight:700}
.jm-ui-js .jm-ui-v2 .ui-more{display:flex}
.jm-ui-js .jm-ui-v2 .ui-desc-rest{display:none}
.jm-ui-js .jm-ui-v2 .ui-desc-rest.is-open{display:block}
.jm-ui-v2 .ui-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.jm-ui-v2 .ui-top form{margin-left:auto}
.jm-ui-v2 .ui-clear{border:0;background:none;color:var(--ui-muted);text-decoration:underline;padding:8px}
.jm-ui-v2 .ui-cart-item{display:flex;gap:12px;position:relative;padding:16px 0;border-bottom:1px solid var(--ui-line)}
.jm-ui-v2 .ui-cart-item>img{width:64px;height:64px;object-fit:contain;flex:0 0 64px;border:0;border-radius:9px;background:#f2f5fa;padding:4px}
.jm-ui-v2 .ui-cart-info{min-width:0;flex:1}
.jm-ui-v2 .ui-cart-info h2{font-size:16px;margin:0 36px 6px 0}
.jm-ui-v2 .ui-remove{position:absolute;right:0;top:0;display:flex;align-items:center;justify-content:center;width:44px;height:44px;font-size:26px}
.jm-ui-v2 .ui-quantity{display:inline-flex;align-items:center;max-width:100%;margin:6px 0}
.jm-ui-v2 .ui-quantity button{min-width:44px;border:1px solid #858d9b;background:#fff;border-radius:8px;color:var(--ui-ink)}
.jm-ui-v2 .ui-quantity input{width:58px;text-align:center}
.jm-ui-v2 .ui-line-total{display:block;font-size:18px}
.jm-ui-v2 .ui-sr,.jm-ui-v2 .ui-skip:not(:focus){position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
@media(min-width:800px){
.jm-ui-v2 .ui-header{padding-left:max(20px,calc((100vw - 1092px)/2));padding-right:max(20px,calc((100vw - 1092px)/2));gap:18px}
.jm-ui-v2 .ui-mini{display:block}
.jm-ui-v2 .ui-mini summary{font-size:15px}
.jm-ui-v2 h1{font-size:34px}
.jm-ui-v2 .ui-products{grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}
.jm-ui-v2 .ui-categories{grid-template-columns:repeat(5,minmax(0,1fr))}
.jm-ui-v2 .ui-product-card img{height:150px}
.jm-ui-v2 .ui-cart-layout{display:grid;grid-template-columns:1.7fr 1fr;gap:24px;align-items:start}
.jm-ui-v2 .ui-buybar{position:static;border:1px solid var(--ui-line);border-radius:14px;margin:18px 0;padding:14px}
.jm-ui-v2.ui-route-single-product,.jm-ui-v2.ui-route-cart{padding-bottom:0}
.jm-ui-v2 .ui-hero{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);column-gap:40px;align-items:center;padding:34px 38px;margin:22px 0 16px}
.jm-ui-v2 .ui-hero>*{grid-column:1}
.jm-ui-v2 .ui-hero h1{font-size:34px;margin:0 0 10px}
.jm-ui-v2 .ui-hero p{font-size:17px;margin:0}
.jm-ui-v2 .ui-hero>.ui-search{grid-column:2;grid-row:1/span 99;align-self:center;padding:8px 8px 8px 18px}
.jm-ui-v2 .ui-product{display:grid;grid-template-columns:minmax(0,1fr) 360px;column-gap:32px;align-items:start}
.jm-ui-v2 .ui-product>*{grid-column:1;min-width:0}
.jm-ui-v2 .ui-product>h1{grid-column:1/-1}
.jm-ui-v2 .ui-product>.ui-col-buy{display:flex;flex-direction:column;grid-column:2;grid-row:2/span 50;position:sticky;top:76px;max-height:calc(100vh - 92px);overflow:auto;background:#fff;border:1px solid var(--ui-line);border-radius:14px;padding:18px}
.jm-ui-v2 .ui-col-buy .ui-purchase{display:flex;flex-direction:column;margin:0}
.jm-ui-v2 .ui-col-buy .ui-buybar,.jm-ui-v2 .ui-totals .ui-buybar{order:-1;position:static;border:0;border-bottom:1px solid var(--ui-line);border-radius:0;box-shadow:none;margin:0 0 6px;padding:0 0 14px;min-height:0}
.jm-ui-v2 .ui-col-buy .ui-attribute{margin:14px 0 0}
.jm-ui-v2 .ui-product-hero img{width:180px;height:180px;flex-basis:180px;padding:10px}
.jm-ui-v2 .ui-totals{position:sticky;top:76px;display:flex;flex-direction:column}
.jm-ui-v2 .ui-totals .cart_totals,.jm-ui-v2 .ui-totals .wc-proceed-to-checkout{display:contents}
.jm-ui-v2 .ui-totals table,.jm-ui-v2 .ui-totals .shop_table{width:100%}
}
:root:not(.jm-ui-js) .jm-ui-v2 .ui-options{display:none}
/* Only the two Bootstrap utilities used by the SET C fragment, scoped to that fragment. */
.jm-ui-v2 .ui-popover .d-flex{display:flex}
.jm-ui-v2 .ui-popover .align-items-end{align-items:flex-end}
.jm-ui-v2 .ui-popover .smart-cart-box{position:relative;width:100%;font-size:16px;line-height:1.4}
.jm-ui-v2 .ui-popover .list-menu{list-style:none;margin:0 0 10px;padding:0}
.jm-ui-v2 .ui-popover .amount-data{display:flex;justify-content:space-between;gap:12px;margin-bottom:10px}
.jm-ui-v2 .ui-popover .total-price{font-weight:700;white-space:nowrap}
.jm-ui-v2 .ui-popover .button,.jm-ui-v2 .ui-popover .btn{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:10px 14px;background:var(--ui-brand);color:var(--ui-on-brand);border-radius:10px;font-weight:700}
/* Уведомления WooCommerce: своя карточка без значка ядра (он позиционируется
   абсолютно и наезжал на текст) и без кольца фокуса — WooCommerce переводит
   фокус на уведомление после удаления товара, и вокруг него рисовалась
   толстая синяя рамка. */
.jm-ui-v2 .woocommerce-error,.jm-ui-v2 .woocommerce-message,.jm-ui-v2 .woocommerce-info{position:relative;list-style:none;margin:12px 0;padding:12px 16px;background:#fff;border:1px solid var(--ui-line);border-radius:10px;font-size:15px;line-height:1.45;color:var(--ui-ink)}
.jm-ui-v2 .woocommerce-error::before,.jm-ui-v2 .woocommerce-message::before,.jm-ui-v2 .woocommerce-info::before{display:none}
.jm-ui-v2 .woocommerce-error:focus,.jm-ui-v2 .woocommerce-message:focus,.jm-ui-v2 .woocommerce-info:focus,.jm-ui-v2 .woocommerce-error:focus-visible,.jm-ui-v2 .woocommerce-message:focus-visible,.jm-ui-v2 .woocommerce-info:focus-visible{outline:none}
.jm-ui-v2 .woocommerce-message{border-left:4px solid #0d8a5f}
.jm-ui-v2 .woocommerce-error{border-left:4px solid #c0392b}
.jm-ui-v2 .woocommerce-message a,.jm-ui-v2 .woocommerce-info a{font-weight:700}
.jm-ui-v2 .woocommerce-message .restore-item{margin-left:4px}
.jm-ui-v2 .screen-reader-text{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.jm-ui-v2 .ui-totals table{border-collapse:collapse;width:100%;font-size:14px}
.jm-ui-v2 .ui-totals th,.jm-ui-v2 .ui-totals td{padding:8px;border-bottom:1px solid var(--ui-line);text-align:left}
.jm-ui-v2 .ui-totals ul{list-style:none;padding:0;margin:0}
.jm-ui-v2 .ui-totals input[type=radio]{min-height:0;width:auto}
@media(max-width:799px){
/* Липкая панель покупки/итога внизу экрана закрывала блок доверия под корзиной и
   последние упаковки в карточке (аудит apotekhagalunds.com, 390): отступ снизу. */
.jm-ui-v2.ui-route-cart .ui-main,.jm-ui-v2.ui-route-single-product .ui-main{padding-bottom:96px}
.jm-ui-v2.ui-route-single-product .ui-crumbs{margin:8px 0;line-height:20px}
.jm-ui-v2.ui-route-single-product h1{margin:10px 0;font-size:24px;line-height:28px}
.jm-ui-v2 .ui-product-hero{min-height:100px;padding:10px;margin:8px 0;gap:12px}
.jm-ui-v2 .ui-product-hero img{width:104px;height:104px;flex-basis:104px}
.jm-ui-v2 .ui-product-hero .ui-price{font-size:17px;line-height:22px}
.jm-ui-v2 .ui-attribute{margin:12px 0}
.jm-ui-v2 .ui-attribute legend{font-size:14px;line-height:22px;margin-bottom:8px}
}
/* перенесено из отложенных: правила раскладки должны приезжать сразу,
   иначе блоки меняют высоту после загрузки и страница прыгает (сдвиг 0,178) */
.jm-ui-v2 .ui-trust{display:grid;grid-template-columns:1fr 1fr;gap:14px;font-size:13px}
/* Блок доверия внутри шапки карточки товара: на телефоне и среднем экране —
   под фото и ценой через линию, от 1000 точек — правой колонкой, где иначе
   пустота. Раскладка в критической части, чтобы шапка не прыгала. */
.jm-ui-v2 .ui-product-hero{flex-wrap:wrap}
.jm-ui-v2 .ui-product-hero>.ui-trust-inline{flex:1 1 100%;margin-top:4px;padding-top:12px;border-top:1px solid var(--ui-line)}
/* На телефоне блок доставки и оплаты в карточке не показываем — решение владельца
   23.09: он занимал экран между ценой и выбором упаковки, а пользы не давал. */
@media(max-width:799px){.jm-ui-v2 .ui-product-hero>.ui-trust-inline{display:none}}
@media(min-width:1000px){
.jm-ui-v2 .ui-product-hero{flex-wrap:nowrap}
.jm-ui-v2 .ui-product-hero>div:not(.ui-trust){flex:1 1 auto;min-width:0}
/* Колонка доверия узкая (значки 3+2), чтобы дозировкам и цене хватало места. */
.jm-ui-v2 .ui-product-hero>.ui-trust-inline{flex:0 0 240px;margin:0 0 0 auto;padding:4px 0 4px 20px;border-top:0;border-left:1px solid var(--ui-line);grid-template-columns:1fr;gap:12px;align-self:center}
.jm-ui-v2 .ui-product-hero>.ui-trust-inline .ui-pays{max-width:170px}
}
.jm-ui-v2 .ui-expert{display:flex;gap:12px;align-items:flex-start}
.jm-ui-v2 .ui-footer-grid{display:grid;gap:20px;max-width:1120px;margin:auto}
.jm-ui-v2 .ui-pays{display:flex;flex-wrap:wrap;gap:8px}
.jm-ui-v2 .ui-ships{display:grid;gap:9px}
.jm-ui-v2 .ui-ship{display:flex;align-items:flex-start;gap:9px;font-size:14px;color:#3c4457}
.jm-ui-v2 .ui-coupon{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}
.jm-ui-v2 .ui-pagination{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0}
.jm-ui-v2 .ui-catalog-tools{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px}
/* Три колонки — только на широком экране. Когда эти правила переносили из
   отложенных стилей в критические, медиа-обёртка потерялась, и подвал
   оставался трёхколоночным на телефоне — на каждой странице сайта. */
@media(min-width:800px){.jm-ui-v2 .ui-footer-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px 40px}}
/* «Miksi …»: одна сетка как в макете — колонка на телефоне, две от 800; у карточек
   внутри сетки нет своего margin, иначе к gap добавлялся ещё отступ карточки. */
.jm-ui-v2 .ui-benefits{display:grid;grid-template-columns:1fr;gap:8px;margin:0 0 12px}
.jm-ui-v2 .ui-benefits>.ui-card{display:flex;gap:12px;align-items:flex-start;margin:0}
.jm-ui-v2 .ui-benefits>.ui-card>svg{width:22px;height:22px;flex:0 0 22px;color:var(--ui-brand);margin-top:2px}
.jm-ui-v2 .ui-benefits>.ui-card>div{min-width:0}
.jm-ui-v2 .ui-benefits b{display:block;font-size:15px;line-height:1.3;margin-bottom:3px}
.jm-ui-v2 .ui-benefits span{display:block;font-size:13.5px;line-height:1.45;color:var(--ui-muted)}
@media(min-width:800px){.jm-ui-v2 .ui-benefits{grid-template-columns:1fr 1fr;gap:12px}.jm-ui-v2 .ui-benefits>.ui-card{padding:18px}.jm-ui-v2 .ui-benefits>.ui-card>svg{width:24px;height:24px;flex-basis:24px}.jm-ui-v2 .ui-benefits b{font-size:16px;margin-bottom:5px}}
/* Полоса бесплатной доставки — первый блок корзины, поэтому раскладка
   обязана приехать сразу, вместе с первой отрисовкой. */
/* Полоса ещё не достигнутого порога — нейтральная, фирменного цвета; зелёной
   становится только когда бесплатная доставка действительно достигнута. */
.jm-ui-v2 .ui-ship-free{display:flex;gap:10px;align-items:flex-start;background:var(--ui-badge);border:1px solid var(--ui-line);border-radius:12px;padding:11px 13px;margin:0 0 12px}
.jm-ui-v2 .ui-ship-free svg{width:20px;height:20px;flex:0 0 20px;color:var(--ui-link);margin-top:2px}
.jm-ui-v2 .ui-ship-free>div{flex:1;min-width:0}
.jm-ui-v2 .ui-ship-free b{display:block;font-size:14px;color:var(--ui-link)}
.jm-ui-v2 .ui-ship-free.is-reached{background:#e9f7f1;border-color:#cceade}
.jm-ui-v2 .ui-ship-free.is-reached svg,.jm-ui-v2 .ui-ship-free.is-reached b{color:#0b6f4d}
/* Только сама строка-пояснение, а не всё подряд: wc_price() выводит цену
   вложенными span, и общий display:block ломал «172,19 €» на три строки. */
.jm-ui-v2 .ui-ship-free>div>span{display:block;font-size:13px;color:var(--ui-muted)}
.jm-ui-v2 .ui-ship-free.is-reached>div>span{color:#3d6b5c}
.jm-ui-v2 .ui-ship-free .woocommerce-Price-amount{display:inline;white-space:nowrap}
.jm-ui-v2 .ui-ship-bar{height:5px;background:#d6dde8;border-radius:99px;margin-top:7px;overflow:hidden}
.jm-ui-v2 .ui-ship-bar i{display:block;height:100%;background:var(--ui-brand)}
.jm-ui-v2 .ui-ship-free.is-reached .ui-ship-bar{background:#cceade}
.jm-ui-v2 .ui-ship-free.is-reached .ui-ship-bar i{background:#0d8a5f}
.jm-ui-v2 .ui-variant{display:inline-block;margin-top:5px;font-size:12px;font-weight:600;color:var(--ui-link);background:var(--ui-badge);border-radius:999px;padding:3px 9px}
/* Шапка карточки: подпись «alkaen», перечень дозировок, метка наличия и
   навигация по разделам. Всё на первом экране — раскладка нужна сразу. */
.jm-ui-v2 .ui-from{font-size:13px;font-weight:600;color:var(--ui-muted)}
.jm-ui-v2 .ui-doses-hint{margin:0 0 4px;font-size:13px;color:var(--ui-muted)}
.jm-ui-v2 .ui-stock{display:inline-flex;align-items:center;gap:6px;margin:0 0 6px;padding:3px 10px;border-radius:999px;background:#e9f7f1;color:#0b6f4d;font-size:13px;font-weight:700}
.jm-ui-v2 .ui-stock svg{width:14px;height:14px;flex:0 0 14px}
/* Одна прокручиваемая строка, а не сетка: заголовки разделов длинные, и
   десять чипов в перенос занимали пол-экрана. */
.jm-ui-v2 .ui-anchors{display:flex;flex-wrap:nowrap;gap:8px;margin:14px 0 4px;overflow-x:auto;white-space:nowrap;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.jm-ui-v2 .ui-anchors::-webkit-scrollbar{display:none}
/* Правый край ряда чипов затухает: без этого последняя подпись обрубалась на границе
   («…av Viagr», apotekhagalunds.com, 1440). */
.jm-ui-v2 .ui-anchors{padding-right:32px;-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 40px),transparent)}
.jm-ui-v2 .ui-anchors a{flex:0 0 auto;display:inline-flex;align-items:center;min-height:36px;padding:7px 13px;border:1px solid var(--ui-line);border-radius:999px;background:#fff;color:var(--ui-link);font-size:13px;font-weight:700;text-decoration:none}
.jm-ui-v2 .ui-description details{scroll-margin-top:76px}
/* После добавления WooCommerce сам вставляет в панель покупки третью ссылку
   «Näytä ostoskori». На узком экране три блока в строке не помещаются, и текст
   обрезался краем — владелец прислал скрин. Ссылка избыточна: счётчик и переход
   в корзину есть в шапке, а в макете панель состоит из цены и одной кнопки. */
.jm-ui-v2 .ui-buybar .added_to_cart{display:none}
/* Цена ужимается первой, кнопка занимает остаток и не даёт обрезать подпись. */
.jm-ui-v2 .ui-buybar>div:first-child{flex:0 1 auto;min-width:0}
.jm-ui-v2 .ui-buybar .ui-buy{flex:1 1 auto;min-width:0}
/* deferred */
.jm-ui-v2 :focus-visible{outline:3px solid var(--ui-link);outline-offset:3px}
/* У кнопок выбора уже есть рамка 2px: кольцо для клавиатуры тоньше и ближе, иначе две толстые обводки. */
.jm-ui-v2 .ui-pack:focus-visible,.jm-ui-v2 .ui-dose:focus-visible{outline-width:2px;outline-offset:2px}
.jm-ui-v2 button:disabled{cursor:not-allowed;border-style:dashed;background:#e7e9ed;color:#555c68}
/* Только подпись-значение, а не любой span: это правило шло позже и с той же
   специфичностью, что .ui-pays{display:flex}, и перебивало его — значки оплаты
   в блоке доверия вставали столбиком, карточка растягивалась пустотой. */
.jm-ui-v2 .ui-trust b,.jm-ui-v2 .ui-trust>div>span:not(.ui-pays){display:block}
.jm-ui-v2 .ui-trust .ui-pays{margin-top:4px}
.jm-ui-v2 .ui-trust span{color:var(--ui-muted)}
.jm-ui-v2 .ui-expert img{width:46px;height:46px;object-fit:cover;border-radius:50%}
.jm-ui-v2 .ui-expert h3{margin-top:0}
.jm-ui-v2 .ui-expert p{font-size:14px}
.jm-ui-v2 .ui-footer{margin-top:26px;padding:20px 14px 24px;background:#fff;border-top:1px solid var(--ui-line);font-size:13px;color:var(--ui-muted)}
.jm-ui-v2 .ui-foot-h-sub{margin-top:18px}
.jm-ui-v2 .ui-foot-h{font-size:12px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ui-muted);margin-bottom:6px}
.jm-ui-v2 .ui-foot-contact p{margin:0 0 6px}
.jm-ui-v2 .ui-pay svg{display:block;width:48px;height:30px;border:1px solid var(--ui-line);border-radius:5px}
.jm-ui-v2 .ui-pay-text{display:inline-flex;align-items:center;height:30px;padding:0 9px;border:1px solid var(--ui-line);border-radius:5px;background:#fff;font-size:11px;font-weight:700}
.jm-ui-v2 .ui-ship svg{flex:0 0 20px;width:20px;height:20px;margin-top:2px;color:var(--ui-brand)}
.jm-ui-v2 .ui-foot-legal{max-width:1120px;margin:18px auto 0;padding-top:14px;border-top:1px solid var(--ui-line);font-size:12px;text-align:center}
.jm-ui-v2 .ui-desc{margin-top:22px;padding:16px;background:#fff;border:1px solid var(--ui-line);border-radius:14px}
.jm-ui-v2 .ui-desc h2:first-child,.jm-ui-v2 .ui-desc-intro>:first-child{margin-top:0}
.jm-ui-v2 .ui-desc-intro{position:relative}
.jm-ui-v2 .ui-desc-intro.ui-fade::after{content:"";position:absolute;left:0;right:0;bottom:0;height:64px;background:linear-gradient(rgba(255,255,255,0),#fff);pointer-events:none}
.jm-ui-v2 .ui-more svg{transition:transform .15s}
.jm-ui-v2 .ui-more[aria-expanded=true] svg{transform:rotate(180deg)}
.jm-ui-v2 .ui-footer ul,.jm-ui-v2 .ui-menu ul{list-style:none;padding:0;margin:0}
.jm-ui-v2 .ui-footer a,.jm-ui-v2 .ui-menu a{display:inline-flex;align-items:center;min-height:44px}
.jm-ui-v2 .ui-menu ul ul{padding-left:16px}
.jm-ui-v2 .ui-back{display:block;text-align:center;padding:14px;font-weight:600;min-height:44px}
/* Описание: H2 — веха раздела с линией сверху, H3 — раскрывашка внутри.
   Раньше оба уровня были одинаковыми details, иерархия не читалась. */
.jm-ui-v2 .ui-description h2.ui-sec{margin:26px 0 8px;padding-top:18px;border-top:1px solid var(--ui-line);font-size:19px;scroll-margin-top:76px}
.jm-ui-v2 .ui-description h2.ui-sec:first-child{margin-top:0;padding-top:0;border-top:0}
/* После раскрывашки у следующего раздела своя линия не нужна: у details она уже есть снизу. */
.jm-ui-v2 .ui-description details+h2.ui-sec{border-top:0;padding-top:6px}
/* Раздел без подразделов свёрнут целиком: заголовок H2 живёт в summary и
   выглядит как заголовок раздела, а не как синяя строка подраздела. */
.jm-ui-v2 .ui-description details.ui-sec-details{border-bottom:0;padding:0;margin-top:10px;border-top:1px solid var(--ui-line)}
.jm-ui-v2 .ui-description>details.ui-sec-details:first-child{margin-top:0;border-top:0}
.jm-ui-v2 .ui-description details.ui-sec-details>summary{padding:16px 0 10px;font-size:19px;color:var(--ui-ink)}
.jm-ui-v2 .ui-description summary>h2.ui-sec{display:inline;margin:0;padding:0;border:0;font-size:inherit;color:inherit}
.jm-ui-v2 .ui-description details.ui-sec-details>*:not(summary){margin:10px 0}
.jm-ui-v2 .ui-description details.ui-sec-details[open]{padding-bottom:8px}
.jm-ui-v2 .ui-description details,.jm-ui-v2 .ui-faq{border-bottom:1px solid var(--ui-line);padding:8px 0}
.jm-ui-v2 .ui-description details:last-child{border-bottom:0;padding-bottom:0}
.jm-ui-v2 .ui-description summary,.jm-ui-v2 .ui-faq summary{font-weight:700;padding:10px 0;color:var(--ui-link)}
.jm-ui-v2 .ui-description summary{font-size:15px}
.jm-ui-v2 .ui-description details>*:not(summary),.jm-ui-v2 .ui-faq>div{margin:10px 0}
.jm-ui-v2 .ui-description>:last-child{margin-bottom:0}
/* break-word, а не anywhere: anywhere ломал слова в шапке таблиц посреди
   слова («Toimitusai-ka»), хотя таблица и так прокручивается вбок. */
.jm-ui-v2 .ui-description,.jm-ui-v2 .ui-page{overflow-wrap:break-word}
/* Внутренние страницы (условия, политики, о нас). Контент приходит из редактора
   как есть: в «Terms» и «Policies» подзаголовки — <h4><strong>…</strong></h4> с
   <br/> до и после каждого. Заголовки приводим к виду подзаголовков раздела,
   переносы-распорки рядом с заголовками прячем, ширину строки ограничиваем. */
.jm-ui-v2 .ui-page{max-width:880px;font-size:16px;line-height:1.55}
.jm-ui-v2 .ui-main>article.ui-page{margin-left:auto;margin-right:auto}
.jm-ui-v2 .ui-page p{margin:0 0 12px}
.jm-ui-v2 .ui-page h2,.jm-ui-v2 .ui-page h3,.jm-ui-v2 .ui-page h4,.jm-ui-v2 .ui-page h5{margin:26px 0 10px;color:var(--ui-ink);line-height:1.3}
.jm-ui-v2 .ui-page h2{font-size:22px}
.jm-ui-v2 .ui-page h3{font-size:19px}
.jm-ui-v2 .ui-page h4,.jm-ui-v2 .ui-page h5{font-size:18px}
.jm-ui-v2 .ui-page h1+*,.jm-ui-v2 .ui-page h1+div>:first-child{margin-top:6px}
.jm-ui-v2 .ui-page :is(h2,h3,h4,h5) strong{font-weight:inherit}
.jm-ui-v2 .ui-page :is(h2,h3,h4,h5)+br,.jm-ui-v2 .ui-page br:has(+h2,+h3,+h4,+h5),.jm-ui-v2 .ui-page p+br{display:none}
.jm-ui-v2 .ui-page ul,.jm-ui-v2 .ui-page ol{margin:0 0 12px;padding-left:22px}
.jm-ui-v2 table{width:100%;font-size:14px;border-collapse:collapse}
.jm-ui-v2 th,.jm-ui-v2 td{padding:8px;border-bottom:1px solid var(--ui-line);text-align:left}
/* На телефоне таблица прокручивается вбок, на широком экране — обычная таблица во всю ширину. */
.jm-ui-v2 .ui-description table{display:block;overflow-x:auto}
@media(min-width:800px){.jm-ui-v2 .ui-description table{display:table}}
.jm-ui-v2 .ui-description th{white-space:nowrap;color:var(--ui-muted);font-weight:600}
@media(min-width:800px){.jm-ui-v2 .ui-description p,.jm-ui-v2 .ui-description li{max-width:74ch}}
.jm-ui-v2 .ui-coupon label{width:100%}
.jm-ui-v2 .ui-coupon input{min-width:0;width:50%;flex:1}
.jm-ui-v2 .ui-pagination .page-numbers{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;padding:8px;background:#fff;border:1px solid var(--ui-line);border-radius:8px}
.jm-ui-v2 .ui-pagination .current{background:var(--ui-brand);color:var(--ui-on-brand)}
.jm-ui-v2 .ui-status{margin:10px 0;font-weight:600}
.jm-ui-v2 .ui-totals .cart_totals{float:none;width:100%}
.jm-ui-v2 .ui-popover .smart-cart-ordered{position:static;display:block;visibility:visible;opacity:1;transform:none;width:100%;height:auto;max-height:none;box-shadow:none}
.jm-ui-v2 .ui-popover .smart-cart{display:none}
.jm-ui-v2 #mobile-cart-container{display:none}
.jm-ui-v2 .ui-popover .cart{width:100%;margin:0}
.jm-ui-v2 .ui-popover img{max-width:64px}
.jm-ui-v2 .ui-cart-info dl{font-size:13px;color:var(--ui-muted);margin:4px 0}
.jm-ui-v2 .ui-cart-info dt,.jm-ui-v2 .ui-cart-info dd{display:inline;margin-right:6px}
@media(min-width:800px){
.jm-ui-v2 .ui-footer{padding:28px 32px 30px}
.jm-ui-v2 .ui-desc{margin-top:28px;padding:26px 30px}
.jm-ui-v2 .ui-more{max-width:320px;margin:10px auto 0}
.jm-ui-v2 .ui-sortbar a{font-size:15px;padding:10px 16px}
}
/* Pointer-only affordances: a touch tap must not leave an element stuck highlighted. */
@media(hover:hover){
.jm-ui-v2 a,.jm-ui-v2 button{transition:background-color .15s,border-color .15s,color .15s,box-shadow .15s,transform .15s}
.jm-ui-v2 .ui-button:not(:disabled):hover{background:var(--ui-brand-dark)}
.jm-ui-v2 .ui-product-card:hover{border-color:var(--ui-brand);box-shadow:0 6px 18px #141e3c14;transform:translateY(-2px)}
.jm-ui-v2 .ui-product-card:hover .ui-card-action{background:var(--ui-brand);color:var(--ui-on-brand)}
.jm-ui-v2 .ui-categories a:hover{border-color:var(--ui-brand)}
.jm-ui-v2 .ui-pack:not(:disabled):hover,.jm-ui-v2 .ui-dose:not(:disabled):hover{border-color:var(--ui-brand)}
.jm-ui-v2 .ui-sortbar a:hover:not([aria-current=true]){border-color:var(--ui-brand);color:var(--ui-link)}
.jm-ui-v2 .ui-crumbs a:hover,.jm-ui-v2 .ui-footer a:hover,.jm-ui-v2 .ui-back:hover,.jm-ui-v2 .ui-cart-info h2 a:hover{text-decoration:underline}
.jm-ui-v2 .ui-more:hover{border-color:var(--ui-brand);background:var(--ui-badge)}
.jm-ui-v2 .ui-quantity button:not(:disabled):hover,.jm-ui-v2 .ui-remove:hover{background:var(--ui-badge);color:var(--ui-link)}
.jm-ui-v2 .ui-clear:hover{color:#e23c3c}
.jm-ui-v2 .ui-pagination .page-numbers:not(.current):hover{border-color:var(--ui-brand)}
.jm-ui-v2 button:disabled:hover{background:#e7e9ed;transform:none;box-shadow:none}
}
@media(prefers-reduced-motion:reduce){.jm-ui-v2 *{scroll-behavior:auto;transition:none;animation:none}}

/* Подпись поля количества: в макете её нет, но без неё экранный диктор не
   объяснит, что это за поле. Прячем визуально, оставляя для чтения вслух. */
.jm-ui-v2 .ui-cart-info>label{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

.jm-ui-v2 .ui-anchors a:hover{border-color:var(--ui-brand);background:var(--ui-badge)}

/* Кнопка «показать ещё» у списков с скрытым хвостом: она осмысленна только
   со скриптом, поэтому показывается тем же классом, что ставит разметка. */
.jm-ui-v2 .ui-more.is-shown{display:flex}
.jm-ui-v2 .ui-categories a[hidden]{display:none}
