/* ============================================================
   Витрина nocoin.store (web/tg/max). Дизайн: чёрно-белый минимал
   (референсы Ecarty/OD в fortest/) — монохром, pill-чипсы, ценник-
   пилюля на фото, крупный контрастный CTA, плавающий таб-бар.
   Светлая + тёмная тема: токены + prefers-color-scheme + data-theme
   (тему mini-app выставляет platform.js по colorScheme Telegram/Max).
   Standalone, без Metronic.
   ============================================================ */

:root {
    /* поверхности */
    /* значения сняты пипеткой с рендеров макета Evira — палитра нейтрально-серая,
       без синего подмеса (сверено 31.07: поле поиска #f5f5f5, фон фото #e7e7e7) */
    --ncn-bg:           #ffffff;   /* фон страницы */
    --ncn-surface:      #ffffff;   /* карточки/панели (граница отделяет от фона) */
    --ncn-bg-soft:      #f5f5f5;   /* фон фото, полей, чипсов */
    --ncn-bg-softer:    #e7e7e7;   /* нажатие/ховер по мягкому фону */
    /* текст */
    --ncn-text:         #1f1f1f;
    --ncn-text-soft:    #8a8a8a;
    --ncn-text-mid:     #5c5c5c;   /* приветствие и подписи макета — темнее soft */
    /* подложка ПОД фото: обложки подборок часто PNG с прозрачностью,
       и на тёмной заглушке они выглядели грязно. Светлая в обеих темах —
       товарные фото снимают на белом, под них и подгоняем */
    --ncn-photo-bg:     #eeedeb;
    --ncn-border:       #ececec;
    /* контраст: заливка CTA / таб-бара / активных элементов (в тёмной теме инвертируется) */
    --ncn-contrast:     #1f1f1f;
    --ncn-contrast-text:#ffffff;
    --ncn-oncontrast-dim: rgba(255,255,255,.55);
    /* статусы/акценты */
    --ncn-accent:       #1f1f1f;   /* монохром: акцент = основной цвет */
    --ncn-danger:       #e5484d;
    --ncn-green:        #2fa361;
    --ncn-star:         #f5a623;
    /* форма */
    --ncn-radius:       18px;
    --ncn-radius-sm:    12px;
    --ncn-bar-h:        84px;      /* высота плавающего таб-бара + зазор */
    --ncn-shadow:       0 8px 26px rgba(18,20,26,.10);
    --ncn-shadow-bar:   0 10px 30px rgba(18,20,26,.30);
    color-scheme: light;
}

/* тёмная тема — авто по системе и по data-theme='dark' от platform.js */
@media (prefers-color-scheme: dark) {
    :root:not([data-theme='light']) {
        --ncn-bg:           #191a1f;
        --ncn-surface:      #1f222b;
        --ncn-bg-soft:      #35383f;
        --ncn-bg-softer:    #43464e;
        --ncn-text:         #f3f4f6;
        --ncn-text-soft:    #9a9ea6;
        --ncn-text-mid:     #c3c6cd;
        --ncn-photo-bg:     #eeedeb;
        --ncn-border:       #2f323a;
        --ncn-contrast:     #f3f4f6;
        --ncn-contrast-text:#141518;
        --ncn-oncontrast-dim: rgba(20,21,24,.5);
        --ncn-accent:       #f3f4f6;
        --ncn-danger:       #ff6169;
        --ncn-green:        #3ecf8e;
        --ncn-shadow:       0 8px 26px rgba(0,0,0,.5);
        --ncn-shadow-bar:   0 10px 30px rgba(0,0,0,.6);
        color-scheme: dark;
    }
}
:root[data-theme='dark'] {
    --ncn-bg:           #191a1f;
    --ncn-surface:      #1f222b;
    --ncn-bg-soft:      #35383f;
    --ncn-bg-softer:    #43464e;
    --ncn-text:         #f3f4f6;
    --ncn-text-soft:    #9a9ea6;
    --ncn-text-mid:     #c3c6cd;
    --ncn-photo-bg:     #eeedeb;
    --ncn-border:       #2f323a;
    --ncn-contrast:     #f3f4f6;
    --ncn-contrast-text:#141518;
    --ncn-oncontrast-dim: rgba(20,21,24,.5);
    --ncn-accent:       #f3f4f6;
    --ncn-danger:       #ff6169;
    --ncn-green:        #3ecf8e;
    --ncn-shadow:       0 8px 26px rgba(0,0,0,.5);
    --ncn-shadow-bar:   0 10px 30px rgba(0,0,0,.6);
    color-scheme: dark;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
/* Синяя вспышка при тапе — системная подсветка мобильных вебвью. В мини-аппе она
   выдаёт «сайт внутри мессенджера»: у нативных экранов такого нет, а наши нажатия
   и так отзываются (:active + тактильный отклик в Telegram). */
* { -webkit-tap-highlight-color: transparent; }
button, a, [role="button"] { -webkit-tap-highlight-color: transparent; touch-action: manipulation; }
html { -webkit-text-size-adjust: 100%; }
body {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    background: var(--ncn-bg);
    color: var(--ncn-text);
    font-size: 15px;
    line-height: 1.45;
}
[v-cloak] { display: none; }
/* наш reset (* {margin:0}) убивает UA-центрирование <dialog> — возвращаем для плеера сторис */
dialog#ncn_stories_wrapper { margin: auto; }
img { max-width: 100%; display: block; }
button { font: inherit; cursor: pointer; border: 0; background: none; color: inherit; }
a { color: inherit; text-decoration: none; }

/* Верхний защитный отступ. В полноэкранном мини-аппе Telegram сам рисует поверх
   страницы кнопки закрытия и меню — под ними наша шапка была бы некликабельной.
   Значение подставляет platform.js из safeAreaInset + contentSafeAreaInset;
   вне Telegram остаётся системный env() (чёлка), то есть обычно 0. */
:root {
    --ncn-safe-top: env(safe-area-inset-top, 0px);
    /* Нижний отступ вынесен в переменную по той же причине, что и верхний:
       в Max клиент уже сам поджимает вьюпорт, и системный env() приходит поверх
       этого — плавающий таб-бар всплывал заметно выше, чем нужно. */
    --ncn-safe-bottom: env(safe-area-inset-bottom, 0px);
}
#NcnStore {
    max-width: 560px; margin: 0 auto; min-height: 100vh; position: relative;
    padding-top: var(--ncn-safe-top);
}
/* запас под плавающий таб-бар перенесён в подвал (.ncn_madeby_bar): он идёт
   следом за видимой страницей, и держать отступ в обоих местах = двойная дыра */
.ncn_page { padding-bottom: 4px; }

/* ---------------- шапка-приветствие (главная, макет Evira 28_Light_home) ----------------
   Размеры сняты с рендера 2x: аватар 48, приветствие и имя одного кегля (различаются
   весом и цветом, а не размером), иконки 26 с шагом 40, поиск 56 высотой с радиусом 12.
   Кегль пропорционально ужат: макет свёрстан под 428pt с полями 24, у нас поля 16. */
.ncn_home_hdr {
    display: flex; align-items: center; gap: 12px;
    padding: 12px 16px 4px;
}
/* размеры ужаты на ~17% от снятых с макета: кадр кита 428pt, наша витрина уже,
   и шапка в оригинальном кегле отъедала заметную долю первого экрана */
.ncn_home_ava {
    width: 40px; height: 40px; flex-shrink: 0;
    border-radius: 50%; overflow: hidden; background: var(--ncn-bg-soft);
    display: flex; align-items: center; justify-content: center;
}
.ncn_home_ava img { width: 100%; height: 100%; object-fit: cover; }
.ncn_home_ava_ph { font-size: 16px; font-weight: 800; color: var(--ncn-text-soft); }
.ncn_home_hi { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 1px; }
.ncn_home_g {
    font-size: 14.5px; font-weight: 500; color: var(--ncn-text-mid); line-height: 1.25;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* без имени приветствие остаётся единственной строкой и берёт вес имени —
   иначе шапка выглядит как незаполненная заготовка */
.ncn_home_hi_solo .ncn_home_g {
    font-size: 17px; font-weight: 800; letter-spacing: -.35px; color: var(--ncn-text);
}
.ncn_home_n {
    font-size: 17px; font-weight: 800; letter-spacing: -.35px; line-height: 1.2;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ncn_home_ico {
    width: 29px; height: 29px; flex-shrink: 0; position: relative;
    display: flex; align-items: center; justify-content: center;
    color: var(--ncn-text); transition: transform .12s;
}
.ncn_home_hdr .ncn_home_ico + .ncn_home_ico { margin-left: 4px; }
.ncn_home_ico:active { transform: scale(.88); }
/* точка сидит на самой иконке, а не в углу кнопки: кнопка (34) больше глифа (26),
   и в углу метка выглядит оторванной от колокольчика */
.ncn_home_ico_dot {
    position: absolute; top: 2px; right: 3px;
    width: 7px; height: 7px; border-radius: 50%;
    background: var(--ncn-danger); border: 2px solid var(--ncn-bg);
}

/* заголовки прочих вкладок */
.ncn_head { padding: 20px 16px 6px; }
.ncn_head_titles h1 { font-size: 28px; font-weight: 800; letter-spacing: -.6px; line-height: 1.1; }

/* ---------------- поиск ---------------- */
.ncn_searchbar_wrap { padding: 18px 16px 2px; }
.ncn_search {
    flex: 1; display: flex; align-items: center; gap: 10px;
    background: var(--ncn-bg-soft); border-radius: 999px; padding: 0 16px;
    color: var(--ncn-text-soft);
}
.ncn_search input {
    flex: 1; border: 0; background: none; outline: none;
    padding: 13px 0; font-size: 15px; color: var(--ncn-text);
    min-width: 0; /* иначе поле распирает контейнер и иконка фильтра уезжает за край */
}
.ncn_search input::placeholder { color: var(--ncn-text-soft); }
/* поиск главной по макету: 56 высоты, радиус 12 (не пилюля), поля 20, кегль 16 */
.ncn_search_lg {
    height: 56px; border-radius: 12px; padding: 0 20px; gap: 14px;
}
.ncn_search_lg input { padding: 0; font-size: 16px; }
.ncn_search_lg .ncn_search_ico { flex-shrink: 0; }
.ncn_search_filter {
    flex-shrink: 0; display: flex; align-items: center; justify-content: center;
    width: 26px; height: 26px; padding: 0;
    color: var(--ncn-text); /* в макете ползунки контрастные, в отличие от серой лупы */
    transition: transform .12s;
}
.ncn_search_filter:active { transform: scale(.88); }

.ncn_toolbar { display: flex; gap: 10px; padding: 12px 16px 4px; }
.ncn_filter_btn {
    width: 48px; height: 48px; flex-shrink: 0; position: relative;
    display: flex; align-items: center; justify-content: center;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text); border-radius: 50%;
    transition: transform .12s;
}
.ncn_filter_btn:active { transform: scale(.94); }
.ncn_filter_btn.active::after {
    content: ''; position: absolute; top: -1px; right: -1px;
    width: 11px; height: 11px; border-radius: 50%;
    background: var(--ncn-danger); border: 2px solid var(--ncn-bg);
}

/* ---------------- сторис-кружки (instagram-style) ---------------- */
.ncn_stories_strip {
    display: flex; gap: 12px; overflow-x: auto; padding: 14px 16px 4px;
    scrollbar-width: none;
}
.ncn_stories_strip::-webkit-scrollbar { display: none; }
.ncn_story_circle { flex-shrink: 0; width: 66px; cursor: pointer; }
/* кольцо: непросмотренная — контрастное, просмотренная — приглушённое */
.ncn_story_ring {
    display: block; width: 66px; height: 66px; margin: 0 auto;
    border-radius: 50%; padding: 2.5px;
    background: var(--ncn-contrast);
    transition: background .2s;
}
.ncn_story_circle.is_viewed .ncn_story_ring { background: var(--ncn-border); }
.ncn_story_circle_img {
    display: block; width: 100%; height: 100%;
    border-radius: 50%; background-size: cover; background-position: center;
    border: 2.5px solid var(--ncn-bg);
}

/* ---------------- баннеры главной (карусель, вкладка «Маркетинг») ---------------- */
.ncn_banners {
    display: flex; gap: 10px; overflow-x: auto; padding: 14px 16px 0;
    scroll-snap-type: x mandatory; scrollbar-width: none;
}
.ncn_banners::-webkit-scrollbar { display: none; }
.ncn_banner {
    position: relative; flex-shrink: 0; width: 100%; aspect-ratio: 2 / 1;
    border-radius: var(--ncn-radius); overflow: hidden; cursor: pointer;
    scroll-snap-align: center; background: var(--ncn-bg-soft);
}
.ncn_banner img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ncn_banner_txt {
    position: absolute; inset: auto 0 0 0; padding: 28px 16px 14px;
    background: linear-gradient(to top, rgba(0,0,0,.62), transparent);
}
.ncn_banner_title { margin: 0; color: #fff; font-size: 18px; font-weight: 800; letter-spacing: -.2px; line-height: 1.2; }
.ncn_banner_subtitle { margin: 3px 0 0; color: rgba(255,255,255,.85); font-size: 12.5px; line-height: 1.3; }
.ncn_banner_dots { display: flex; justify-content: center; gap: 5px; padding-top: 10px; }
.ncn_banner_dots span {
    width: 6px; height: 6px; border-radius: 50%; background: var(--ncn-border); transition: background .2s, width .2s;
}
.ncn_banner_dots span.active { background: var(--ncn-text); width: 16px; border-radius: 3px; }

/* ---------------- актуальные подборки (контентные страницы) ---------------- */
.ncn_contents_strip {
    display: flex; gap: 9px; overflow-x: auto; padding: 14px 16px 4px;
    scrollbar-width: none;
}
.ncn_contents_strip::-webkit-scrollbar { display: none; }
.ncn_content_tile {
    position: relative; flex-shrink: 0; width: 104px; height: 138px; /* 3:4 как обложка */
    border-radius: 16px; overflow: hidden; cursor: pointer;
    background: var(--ncn-photo-bg);
}
.ncn_content_tile img { width: 100%; height: 100%; object-fit: cover; }
.ncn_content_tile::after {
    content: ''; position: absolute; inset: 0;
    background: linear-gradient(to top, rgba(0,0,0,.55), transparent 45%);
}
.ncn_content_tile .ncn_noimg { position: absolute; inset: 0; }
.ncn_content_tile_name {
    position: absolute; z-index: 1; left: 9px; right: 9px; bottom: 8px;
    color: #fff; font-size: 12px; font-weight: 600; line-height: 1.25;
    display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden;
}

/* страница подборки */
.ncn_content_cover { padding: 0 16px; }
.ncn_content_cover img {
    width: 100%; max-height: 420px; object-fit: cover;
    border-radius: var(--ncn-radius);
}
.ncn_content_meta {
    display: flex; gap: 14px; margin-top: 8px;
    color: var(--ncn-text-soft); font-size: 13.5px;
}
.ncn_content_meta .ncn_liked { color: var(--ncn-danger); }
.ncn_content_descr {
    margin-top: 12px; font-size: 14.5px; color: var(--ncn-text); white-space: pre-line;
}
.ncn_grid_nopad { padding: 0; }

/* ---------------- промо-баннер (welcome) ---------------- */
.ncn_promo_banner {
    margin: 14px 16px 0; padding: 16px 18px;
    border-radius: var(--ncn-radius);
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-weight: 600; font-size: 14.5px; line-height: 1.4;
}

/* ---------------- секции главной ---------------- */
.ncn_section { margin-top: 24px; }
.ncn_section_head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 0 16px 12px;
}
.ncn_section_head h2 { font-size: 20px; font-weight: 800; letter-spacing: -.4px; }
.ncn_section_all {
    display: inline-flex; align-items: center; gap: 1px;
    color: var(--ncn-text-soft); font-size: 13px; font-weight: 600;
    background: var(--ncn-bg-soft); border-radius: 999px; padding: 6px 9px 6px 13px;
}

/* горизонтальная лента карточек */
.ncn_hstrip {
    display: flex; gap: 12px; overflow-x: auto; padding: 0 16px 4px;
    scrollbar-width: none;
}
.ncn_hstrip::-webkit-scrollbar { display: none; }
.ncn_hcard { flex: 0 0 150px; cursor: pointer; }
.ncn_hcard_img {
    position: relative; aspect-ratio: 1 / 1; border-radius: var(--ncn-radius);
    overflow: hidden; background: var(--ncn-bg-soft);
    transition: transform .14s ease;
}
.ncn_hcard_img img { width: 100%; height: 100%; object-fit: cover; }

/* категории: компактная сетка иконок 4 в ряд */
.ncn_cat_tiles {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px 8px; padding: 0 16px;
}
.ncn_cat_tile {
    display: flex; flex-direction: column; align-items: center; gap: 8px;
}
.ncn_cat_tile:active .ncn_cat_tile_img { transform: scale(.93); }
/* Категории в макете Evira — круг, а не скруглённый квадрат: серый кружок,
   внутри иконка или фото, подпись под ним. */
.ncn_cat_tile_img {
    width: 64px; height: 64px; border-radius: 50%; overflow: hidden;
    background: var(--ncn-bg-soft);
    display: flex; align-items: center; justify-content: center;
    transition: transform .12s;
}
.ncn_cat_tile_img img { width: 100%; height: 100%; object-fit: cover; }
.ncn_cat_tile_img .ncn_noimg { font-size: 22px; }
.ncn_cat_tile_name {
    font-size: 12px; font-weight: 500; line-height: 1.2; text-align: center;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}

/* ---------------- чипы (pill) ---------------- */
.ncn_chips {
    display: flex; gap: 8px; overflow-x: auto; padding: 14px 16px;
    scrollbar-width: none;
}
.ncn_chips::-webkit-scrollbar { display: none; }
/* чипы: контурная пилюля, активная — сплошная заливка (как в макете Evira) */
.ncn_chip {
    flex-shrink: 0; padding: 9px 17px; border-radius: 999px;
    background: transparent; font-size: 13.5px; font-weight: 600;
    color: var(--ncn-text); border: 1.5px solid var(--ncn-text);
    transition: background .15s, color .15s, border-color .15s;
}
.ncn_chip.active {
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    border-color: var(--ncn-contrast);
}
/* на главной ряд чипов идёт вплотную к заголовку блока */
.ncn_chips_home { padding-top: 2px; }

/* ---------------- карточки товара (сетка/ленты) ---------------- */
.ncn_grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 20px 12px;
    padding: 8px 16px 20px;
}
.ncn_card { cursor: pointer; }
.ncn_card:active .ncn_card_img, .ncn_hcard:active .ncn_hcard_img { transform: scale(.97); }
.ncn_card_img {
    position: relative; aspect-ratio: 1 / 1; background: var(--ncn-bg-soft);
    border-radius: var(--ncn-radius); overflow: hidden;
    transition: transform .14s ease;
}
.ncn_card_img img { width: 100%; height: 100%; object-fit: cover; }
.ncn_noimg {
    display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%; font-size: 32px; opacity: .4;
}
/* сердечко: справа сверху (референс Ecarty), белый кружок */
.ncn_heart {
    position: absolute; top: 9px; right: 9px;
    width: 34px; height: 34px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,.9); color: #4a4d55;
    box-shadow: 0 2px 8px rgba(18,20,26,.14);
    transition: transform .12s, color .12s;
}
.ncn_heart:active { transform: scale(.86); }
.ncn_heart.active { color: var(--ncn-danger); }
/* значок скидки — слева снизу на фото */
.ncn_discount_tag {
    position: absolute; left: 8px; bottom: 8px; z-index: 1;
    background: var(--ncn-danger); color: #fff;
    font-size: 11.5px; font-weight: 700; padding: 5px 9px; border-radius: 999px;
}
.ncn_badge {
    position: absolute; left: 8px; top: 8px;
    font-size: 11px; font-weight: 600; padding: 5px 10px; border-radius: 999px;
    color: #fff;
}
.ncn_badge_out { background: rgba(18,20,26,.72); backdrop-filter: blur(3px); }

/* подпись под фото: название, затем при желании цена (устаревшая раскладка — оставлена как fallback) */
.ncn_pname {
    font-size: 14px; font-weight: 600; color: var(--ncn-text); line-height: 1.3; margin-top: 10px;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ncn_price_row { display: flex; align-items: center; gap: 6px; margin-top: 5px; }
.ncn_price { font-size: 15px; font-weight: 800; letter-spacing: -.2px; }
.ncn_discount { color: var(--ncn-danger); font-weight: 700; font-size: 12.5px; }
/* цена под фото (Evira-раскладка: ценник не на фото, а под названием) */
.ncn_pprice {
    margin-top: 5px; font-size: 15.5px; font-weight: 800; letter-spacing: -.2px;
    font-variant-numeric: tabular-nums;
}
.ncn_pprice small { font-size: 11px; font-weight: 600; color: var(--ncn-text-soft); }

/* метастрока карточки (Evira): звезда — монохромная, не жёлтая; продажи — в пилюле */
.ncn_pmeta {
    display: flex; align-items: center; gap: 7px; margin-top: 6px;
    font-size: 12px; line-height: 1; color: var(--ncn-text-soft);
}
.ncn_pmeta_star { color: var(--ncn-text); flex: none; }
.ncn_pmeta_rate { font-weight: 600; color: var(--ncn-text-soft); font-variant-numeric: tabular-nums; }
.ncn_pmeta_sep { color: var(--ncn-border); }
.ncn_pmeta_sold {
    background: var(--ncn-bg-soft); color: var(--ncn-text-soft);
    padding: 4px 8px; border-radius: 999px; font-size: 11px; font-weight: 600;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

/* ---------------- пусто / загрузка / ещё ---------------- */
.ncn_empty { text-align: center; padding: 56px 16px; color: var(--ncn-text-soft); }
.ncn_empty_emoji { font-size: 44px; margin-bottom: 10px; }
.ncn_skeleton_grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px 12px; padding: 8px 16px; }
.ncn_skeleton {
    aspect-ratio: 1 / 1.32; border-radius: var(--ncn-radius);
    background: linear-gradient(100deg, var(--ncn-bg-soft) 40%, var(--ncn-bg-softer) 50%, var(--ncn-bg-soft) 60%);
    background-size: 200% 100%;
    animation: ncn-shimmer 1.2s infinite;
}
@keyframes ncn-shimmer { to { background-position: -200% 0; } }
.ncn_more {
    display: block; margin: 6px auto 24px; padding: 13px 30px;
    border-radius: 999px; background: var(--ncn-bg-soft); color: var(--ncn-text);
    font-weight: 600; font-size: 14px;
}
.ncn_spinner {
    width: 28px; height: 28px; margin: 40px auto;
    border: 3px solid var(--ncn-border); border-top-color: var(--ncn-text);
    border-radius: 50%; animation: ncn-spin .8s linear infinite;
}
@keyframes ncn-spin { to { transform: rotate(360deg); } }
.ncn_prod_loading { padding: 8px 0; }

/* ---------------- нижний таб-бар (плавающая контрастная пилюля) ---------------- */
.ncn_tabbar {
    position: fixed; z-index: 50;
    bottom: calc(12px + var(--ncn-safe-bottom));
    left: 50%; transform: translateX(-50%);
    width: min(calc(100% - 32px), 420px);
    display: flex; justify-content: space-around; align-items: center;
    background: var(--ncn-contrast); border-radius: 999px;
    padding: 9px 10px;
    box-shadow: var(--ncn-shadow-bar);
}
.ncn_tabbar button {
    flex: 1; display: flex; flex-direction: column; align-items: center; gap: 3px;
    color: var(--ncn-oncontrast-dim); padding: 4px 0; transition: color .15s;
}
.ncn_tabbar button span:last-child { font-size: 10px; font-weight: 600; }
.ncn_tabbar button.active { color: var(--ncn-contrast-text); }
.ncn_bar_ico_wrap { position: relative; display: inline-flex; }
.ncn_bar_dot {
    position: absolute; top: -1px; right: -3px;
    width: 8px; height: 8px; border-radius: 50%;
    background: var(--ncn-danger); border: 1.5px solid var(--ncn-contrast);
}

/* ---------------- шторка сортировки ---------------- */
.ncn_sheet_overlay {
    position: fixed; inset: 0; z-index: 90;
    background: rgba(10,11,13,.5);
    display: flex; align-items: flex-end; justify-content: center;
    animation: ncn-fade .18s ease;
}
@keyframes ncn-fade { from { opacity: 0; } }
.ncn_sheet {
    width: 100%; max-width: 560px;
    background: var(--ncn-surface); border-radius: 24px 24px 0 0;
    padding: 10px 16px calc(22px + var(--ncn-safe-bottom));
    animation: ncn-slide-up .22s ease;
}
@keyframes ncn-slide-up { from { transform: translateY(40%); opacity: .4; } }
.ncn_sheet_grip {
    width: 42px; height: 4.5px; border-radius: 3px;
    background: var(--ncn-border); margin: 4px auto 14px;
}
.ncn_sheet h3 { font-size: 17px; font-weight: 800; margin-bottom: 8px; letter-spacing: -.2px; }
.ncn_sheet_row {
    width: 100%; display: flex; align-items: center; justify-content: space-between;
    padding: 14px 4px; font-size: 15px; text-align: left;
    border-bottom: 1px solid var(--ncn-border);
}
.ncn_sheet_row:last-child { border-bottom: 0; }
.ncn_sheet_row.active { font-weight: 700; color: var(--ncn-text); }
.ncn_sheet_row.active::after {
    content: ''; width: 18px; height: 18px; flex-shrink: 0;
    background: var(--ncn-contrast);
    -webkit-mask: no-repeat center/100% url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
    mask: no-repeat center/100% url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M9 16.17L4.83 12l-1.42 1.41L9 19 21 7l-1.41-1.41z'/%3E%3C/svg%3E");
}

/* ---------------- профиль-хаб (Evira) ---------------- */
/* Профиль по макету Evira: аватар крупно по центру, под ним имя и подпись,
   дальше разделитель и список строк. Раньше это была строчка сбоку и выглядело
   как подвал, а не как профиль. */
.ncn_prof_head {
    display: flex; flex-direction: column; align-items: center; gap: 10px;
    padding: 24px 16px 18px; text-align: center;
    border-bottom: 1px solid var(--ncn-border);
}
.ncn_prof_ava {
    width: 104px; height: 104px; flex-shrink: 0;
    border-radius: 50%; overflow: hidden; background: var(--ncn-bg-soft);
    display: flex; align-items: center; justify-content: center;
    box-shadow: var(--ncn-shadow);
}
.ncn_prof_ava img { width: 100%; height: 100%; object-fit: cover; }
.ncn_prof_ava .ncn_home_ava_ph { font-size: 40px; }
.ncn_prof_id { display: flex; flex-direction: column; gap: 3px; min-width: 0; align-items: center; }
.ncn_prof_name {
    font-size: 24px; font-weight: 800; letter-spacing: -.4px;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ncn_prof_sub {
    font-size: 13px; color: var(--ncn-text-soft);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
/* список разделов: в макете это простые строки с контурной иконкой и шевроном,
   без карточек и рамок */
.ncn_prof_menu { padding: 6px 16px 4px; display: flex; flex-direction: column; }
.ncn_prof_row {
    display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
    padding: 15px 2px; border-radius: 12px;
    background: none; border: 0;
    transition: background .12s;
}
.ncn_prof_row + .ncn_prof_row { border-top: 1px solid var(--ncn-border); }
.ncn_prof_row:active { background: var(--ncn-bg-soft); }
.ncn_prof_row_ico {
    flex-shrink: 0; width: 34px; height: 34px;
    color: var(--ncn-text);
    display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.ncn_prof_row_txt { flex: 1; min-width: 0; display: flex; flex-direction: column; font-size: 15px; font-weight: 700; }
.ncn_prof_row_txt small { font-size: 12.5px; font-weight: 400; color: var(--ncn-text-soft); margin-top: 2px; }
.ncn_prof_row_arr { color: var(--ncn-text-soft); flex-shrink: 0; }

/* ---------------- «О магазине» ---------------- */
.ncn_info_card { text-align: center; padding: 18px 16px 6px; }
.ncn_info_logo {
    width: 88px; height: 88px; border-radius: 26px; object-fit: cover;
    margin: 0 auto 12px; box-shadow: var(--ncn-shadow);
}
.ncn_info_card h2 { font-size: 22px; font-weight: 800; letter-spacing: -.3px; }
.ncn_info_descr { color: var(--ncn-text-soft); font-size: 14px; margin-top: 6px; }
.ncn_info_section { padding: 18px 16px 0; }
.ncn_info_section h3 { font-size: 16px; font-weight: 800; margin-bottom: 8px; letter-spacing: -.2px; }
.ncn_info_section p { font-size: 14.5px; color: var(--ncn-text); }
.ncn_contact_list { display: flex; flex-direction: column; gap: 8px; }
.ncn_contact_row {
    display: flex; align-items: center; gap: 12px;
    padding: 13px 15px; border-radius: 16px; background: var(--ncn-bg-soft);
    font-size: 14.5px; font-weight: 500;
}
.ncn_contact_ico { font-size: 17px; }
.ncn_powered { padding: 26px 16px 10px; font-size: 12px; color: var(--ncn-text-soft); text-align: center; }
.ncn_powered a { color: var(--ncn-text-soft); text-decoration: underline; }

/* ---------------- карточка товара ---------------- */
.ncn_page_product { min-height: 100vh; background: var(--ncn-bg); padding-bottom: 30px; }
.ncn_prod_topbar {
    /* прилипает ниже кнопок Telegram: при top:0 в полноэкранном режиме
       стрелка «назад» пряталась под системным крестиком */
    position: sticky; top: var(--ncn-safe-top); z-index: 20;
    display: flex; align-items: center; gap: 8px;
    background: color-mix(in srgb, var(--ncn-bg) 88%, transparent);
    -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px);
    padding: 10px 12px;
}
.ncn_round_btn {
    width: 42px; height: 42px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%; background: var(--ncn-bg-soft); color: var(--ncn-text);
    transition: transform .12s;
}
.ncn_round_btn:active { transform: scale(.92); }
.ncn_prod_topbar_name {
    flex: 1; font-size: 15px; font-weight: 700;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.ncn_prod_heart.active { color: var(--ncn-danger); }

.ncn_gallery { position: relative; padding: 0 16px; }
.ncn_gallery_scroll {
    display: flex; gap: 10px; overflow-x: auto;
    scroll-snap-type: x mandatory; scrollbar-width: none;
}
.ncn_gallery_scroll::-webkit-scrollbar { display: none; }
.ncn_gallery_item {
    flex: 0 0 100%; scroll-snap-align: center;
    aspect-ratio: 1 / 1; background: var(--ncn-bg-soft);
    border-radius: 22px; overflow: hidden;
}
.ncn_gallery_item img, .ncn_gallery_item video { width: 100%; height: 100%; object-fit: cover; }
.ncn_gallery_dots {
    position: absolute; bottom: 12px; left: 0; right: 0;
    display: flex; justify-content: center; gap: 5px;
}
.ncn_gallery_dots span {
    width: 6px; height: 6px; border-radius: 50%;
    background: rgba(255,255,255,.55); box-shadow: 0 0 3px rgba(0,0,0,.25);
    transition: background .15s, width .15s;
}
.ncn_gallery_dots span.active { background: #fff; width: 16px; border-radius: 3px; }

/* миниатюры галереи */
.ncn_gallery_thumbs {
    display: flex; gap: 8px; overflow-x: auto; padding: 10px 16px 0;
    scrollbar-width: none;
}
.ncn_gallery_thumbs::-webkit-scrollbar { display: none; }
.ncn_gallery_thumb {
    position: relative; flex-shrink: 0; width: 58px; height: 58px;
    border-radius: 14px; overflow: hidden; background: var(--ncn-bg-soft);
    border: 2px solid transparent; padding: 0;
    transition: border-color .15s;
}
.ncn_gallery_thumb img { width: 100%; height: 100%; object-fit: cover; }
.ncn_gallery_thumb.active { border-color: var(--ncn-text); }
.ncn_thumb_play {
    position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
    color: #fff; font-size: 14px; background: rgba(0,0,0,.25);
}

/* Evira: фото товара во весь экран, кнопки назад/избранное плавают на фото.
   Только страница товара (.ncn_page_pdp) — не трогаем чекаут/заказы/контент. */
.ncn_page_pdp .ncn_gallery { padding: 0; }
.ncn_page_pdp .ncn_gallery_item { border-radius: 0; }
.ncn_page_pdp .ncn_prod_topbar {
    position: absolute; top: 0; left: 0; width: 100%; z-index: 20;
    display: flex; justify-content: space-between; align-items: center;
    padding: calc(12px + var(--ncn-safe-top)) 14px 0;
    background: transparent; -webkit-backdrop-filter: none; backdrop-filter: none;
    pointer-events: none;
}
.ncn_page_pdp .ncn_prod_topbar_name { display: none; }
.ncn_page_pdp .ncn_prod_topbar .ncn_round_btn {
    pointer-events: auto;
    background: rgba(255,255,255,.94); color: #1b1b1f;
    box-shadow: 0 3px 12px rgba(18,20,26,.18);
}

/* кружки-свотчи цветовой оси */
.ncn_color_swatch {
    width: 38px; height: 38px; border-radius: 50%; padding: 3px;
    border: 2px solid transparent;
    transition: border-color .12s, transform .12s;
}
.ncn_color_swatch span {
    display: block; width: 100%; height: 100%; border-radius: 50%;
    border: 1px solid rgba(0,0,0,.12);
}
.ncn_color_swatch.active { border-color: var(--ncn-text); }
.ncn_color_swatch.disabled { opacity: .3; }
.ncn_color_swatch:active { transform: scale(.9); }

.ncn_prod_body { padding: 18px 16px; }
/* Топбар на странице товара плавает поверх фото (absolute). Если фото у товара нет,
   галерея не рендерится и кнопки ложатся на заголовок — тогда body идёт сразу за
   топбаром, и этот случай ловится соседним селектором. */
.ncn_page_pdp .ncn_prod_topbar + .ncn_prod_body { padding-top: calc(70px + var(--ncn-safe-top)); }
.ncn_prod_name { font-size: 22px; font-weight: 800; letter-spacing: -.4px; line-height: 1.15; }

/* строка «продано · рейтинг (отзывы)» под названием товара (макет Evira) */
.ncn_prod_meta {
    display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
    margin-top: 10px; font-size: 13px; color: var(--ncn-text-soft);
}
.ncn_prod_meta_rate { display: inline-flex; align-items: center; gap: 5px; }
.ncn_prod_meta_rate b { color: var(--ncn-text); font-weight: 700; }
.ncn_prod_price { display: flex; align-items: baseline; gap: 9px; margin-top: 10px; flex-wrap: wrap; }
.ncn_prod_price_now { font-size: 24px; font-weight: 800; letter-spacing: -.4px; }
.ncn_prod_price s { color: var(--ncn-text-soft); font-size: 15px; }
.ncn_stock { font-size: 12.5px; font-weight: 600; padding: 5px 11px; border-radius: 999px; }
.ncn_stock.in  { color: var(--ncn-green); background: color-mix(in srgb, var(--ncn-green) 12%, transparent); }
.ncn_stock.out { color: var(--ncn-danger); background: color-mix(in srgb, var(--ncn-danger) 12%, transparent); }
.ncn_prod_short { margin-top: 10px; color: var(--ncn-text-soft); font-size: 14px; }

.ncn_options { margin-top: 20px; display: flex; flex-direction: column; gap: 16px; }
.ncn_option_label { font-size: 13px; font-weight: 700; color: var(--ncn-text-soft); margin-bottom: 8px; }
.ncn_option_values { display: flex; flex-wrap: wrap; gap: 8px; }
.ncn_option_val {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 10px 17px; border-radius: 999px; font-size: 14px; font-weight: 600;
    background: var(--ncn-bg); border: 1.5px solid var(--ncn-border); color: var(--ncn-text);
    transition: border-color .12s, background .12s, color .12s;
}
.ncn_option_val.active { border-color: var(--ncn-contrast); background: var(--ncn-contrast); color: var(--ncn-contrast-text); }
.ncn_option_val.disabled { opacity: .35; }
.ncn_color_dot {
    width: 14px; height: 14px; border-radius: 50%;
    border: 1px solid rgba(0,0,0,.15); display: inline-block;
}

.ncn_digital_note {
    display: flex; align-items: center; gap: 8px;
    margin-top: 16px; padding: 12px 15px; border-radius: 14px;
    background: var(--ncn-bg-soft); color: var(--ncn-text);
    font-size: 13.5px; font-weight: 500;
}

.ncn_prod_section { margin-top: 28px; }
.ncn_prod_section h3 { font-size: 17px; font-weight: 800; margin-bottom: 10px; letter-spacing: -.2px; }
/* rich-text из Quill: поддерживаем всё, что умеет тулбар редактора */
.ncn_prod_descr { font-size: 14.5px; color: var(--ncn-text); overflow-wrap: break-word; }
.ncn_prod_descr p { margin-bottom: 8px; }
.ncn_prod_descr ul, .ncn_prod_descr ol { padding-left: 20px; margin-bottom: 8px; }
.ncn_prod_descr h2 { font-size: 18px; font-weight: 700; margin: 14px 0 8px; color: var(--ncn-text); }
.ncn_prod_descr h3 { font-size: 16px; font-weight: 700; margin: 12px 0 6px; color: var(--ncn-text); }
.ncn_prod_descr h4 { font-size: 15px; font-weight: 600; margin: 10px 0 6px; color: var(--ncn-text); }
.ncn_prod_descr blockquote {
    border-left: 3px solid var(--ncn-border); padding: 2px 0 2px 12px;
    margin: 10px 0; color: var(--ncn-text-soft);
}
.ncn_prod_descr pre {
    background: var(--ncn-bg-soft); border-radius: 12px; padding: 10px 12px;
    margin: 10px 0; font-size: 13px; overflow-x: auto; white-space: pre-wrap;
}
.ncn_prod_descr code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 13px; }
.ncn_prod_descr img { border-radius: 12px; margin: 10px 0; }
.ncn_prod_descr a { color: var(--ncn-text); text-decoration: underline; font-weight: 600; }
.ncn_prod_descr .ql-align-center { text-align: center; }
.ncn_prod_descr .ql-align-right { text-align: right; }
.ncn_prod_descr .ql-align-justify { text-align: justify; }
.ncn_prod_descr .ql-indent-1 { padding-left: 24px; }
.ncn_prod_descr .ql-indent-2 { padding-left: 48px; }

.ncn_chars { width: 100%; border-collapse: collapse; font-size: 14px; }
.ncn_chars td { padding: 10px 0; border-bottom: 1px solid var(--ncn-border); vertical-align: top; }
.ncn_chars td:first-child { color: var(--ncn-text-soft); width: 46%; padding-right: 12px; }

/* ---------------- «магазин не найден» ---------------- */
.ncn_unknown {
    max-width: 420px; margin: 0 auto; min-height: 70vh;
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    text-align: center; padding: 24px; gap: 8px;
}
.ncn_unknown_emoji { font-size: 56px; }
.ncn_unknown h1 { font-size: 22px; font-weight: 800; }
.ncn_unknown p { color: var(--ncn-text-soft); font-size: 14.5px; }
.ncn_unknown a { text-decoration: underline; }

/* ---------------- корзина ---------------- */
/* Evira: позиции корзины — отдельными карточками */
.ncn_cart_list { padding: 8px 16px; display: flex; flex-direction: column; gap: 12px; }
.ncn_cart_line {
    display: flex; gap: 12px; align-items: stretch;
    padding: 12px; border-radius: 18px;
    background: var(--ncn-surface); border: 1px solid var(--ncn-border);
}
.ncn_cart_img {
    flex-shrink: 0; width: 76px; height: 76px;
    border-radius: 16px; overflow: hidden; background: var(--ncn-bg-soft);
}
.ncn_cart_img img { width: 100%; height: 100%; object-fit: cover; }
.ncn_cart_img_sm { width: 48px; height: 48px; border-radius: 12px; }
.ncn_cart_mid { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ncn_cart_name {
    font-size: 14px; font-weight: 600; line-height: 1.3;
    display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden;
}
.ncn_cart_variant { font-size: 12.5px; color: var(--ncn-text-soft); }
.ncn_cart_price { font-size: 15px; font-weight: 800; margin-top: auto; }
.ncn_cart_price s { color: var(--ncn-text-soft); font-weight: 500; font-size: 12.5px; margin-left: 6px; }
.ncn_cart_side { display: flex; flex-direction: column; align-items: flex-end; justify-content: space-between; }
.ncn_cart_del {
    width: 30px; height: 30px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    color: var(--ncn-text-soft); background: var(--ncn-bg-soft);
}

/* степпер количества */
.ncn_stepper {
    display: inline-flex; align-items: center; gap: 2px;
    background: var(--ncn-bg-soft); border-radius: 999px; padding: 3px;
}
.ncn_stepper button {
    width: 32px; height: 32px; border-radius: 50%;
    font-size: 18px; font-weight: 600; color: var(--ncn-text);
    display: flex; align-items: center; justify-content: center;
    transition: background .12s, transform .12s;
}
.ncn_stepper button:active { background: var(--ncn-bg-softer); transform: scale(.92); }
.ncn_stepper span { min-width: 26px; text-align: center; font-size: 14.5px; font-weight: 700; }
.ncn_stepper_dark { background: rgba(255,255,255,.14); }
.ncn_stepper_dark button, .ncn_stepper_dark span { color: #fff; }
.ncn_stepper_dark button:active { background: rgba(255,255,255,.18); }

/* сводка корзины + главные кнопки */
.ncn_cart_summary { padding: 12px 16px 22px; }
.ncn_sum_row {
    display: flex; align-items: baseline; justify-content: space-between;
    font-size: 14.5px; padding: 5px 0; color: var(--ncn-text);
}
.ncn_sum_row b { font-size: 16px; font-weight: 800; }
.ncn_sum_minus { color: var(--ncn-green); }
.ncn_sum_total { border-top: 1px solid var(--ncn-border); margin-top: 6px; padding-top: 12px; font-weight: 700; }
.ncn_sum_total b { font-size: 19px; }
.ncn_cta {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    width: 100%; margin-top: 12px;
    padding: 16px; border-radius: 999px;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-size: 15.5px; font-weight: 700; letter-spacing: -.1px;
    transition: transform .12s, opacity .12s;
}
.ncn_cta:active { transform: scale(.985); }
.ncn_cta:disabled { opacity: .5; }

/* бейдж-счётчик на табе корзины */
.ncn_bar_count {
    position: absolute; top: -5px; right: -9px;
    min-width: 16px; height: 16px; padding: 0 4px;
    border-radius: 999px; background: var(--ncn-danger);
    border: 1.5px solid var(--ncn-contrast);
    font-size: 9.5px; font-weight: 700; font-style: normal; color: #fff;
    display: flex; align-items: center; justify-content: center;
}

/* ---------------- липкая панель покупки в карточке ---------------- */
.ncn_page_product { padding-bottom: 0; }
.ncn_prod_body { padding-bottom: calc(96px + var(--ncn-safe-bottom)); }
.ncn_buybar {
    position: fixed; z-index: 60; left: 0; right: 0;
    bottom: 0;
    display: flex; align-items: center; gap: 14px;
    max-width: 640px; margin: 0 auto;
    background: color-mix(in srgb, var(--ncn-surface) 92%, transparent);
    -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px);
    color: var(--ncn-text);
    border-radius: 24px 24px 0 0;
    border-top: 1px solid var(--ncn-border);
    padding: 14px 18px calc(14px + var(--ncn-safe-bottom));
    box-shadow: 0 -8px 28px rgba(18,20,26,.10);
}
.ncn_buybar_price { display: flex; flex-direction: column; line-height: 1.15; }
.ncn_buybar_price b { font-size: 19px; font-weight: 800; letter-spacing: -.3px; }
.ncn_buybar_price s { color: var(--ncn-text-soft); font-size: 12.5px; }
.ncn_buybtn {
    flex: 1; display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 14px 10px; border-radius: 999px;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-size: 14.5px; font-weight: 700;
    transition: transform .12s, opacity .12s;
}
.ncn_buybtn:active { transform: scale(.97); }
.ncn_buybtn:disabled { opacity: .4; }

/* ---------------- чекаут ---------------- */
.ncn_co_body { padding: 6px 16px calc(26px + var(--ncn-safe-bottom)); }
.ncn_co_card {
    background: var(--ncn-surface); border: 1px solid var(--ncn-border);
    border-radius: var(--ncn-radius); padding: 16px; margin-bottom: 12px;
}
.ncn_co_card h3 { font-size: 16px; font-weight: 800; margin-bottom: 12px; letter-spacing: -.2px; }
.ncn_co_fields { display: flex; flex-direction: column; gap: 8px; }
/* повторный покупатель: свёрнутые контакты + «Изменить» */
.ncn_co_saved {
    display: flex; align-items: center; gap: 12px; justify-content: space-between;
    background: var(--ncn-bg-soft); border-radius: 14px; padding: 13px 15px;
}
.ncn_co_saved_body { display: flex; flex-direction: column; gap: 2px; min-width: 0; font-size: 14px; }
.ncn_co_saved_body b { font-weight: 700; }
.ncn_co_saved_body span { font-size: 13px; color: var(--ncn-text-soft); }
.ncn_co_edit {
    flex-shrink: 0; font-size: 13.5px; font-weight: 700;
    color: var(--ncn-text); text-decoration: underline; padding: 6px 4px;
}
/* телефон через мессенджер (Telegram requestContact) */
.ncn_co_phone_share {
    display: flex; align-items: center; justify-content: center; gap: 8px;
    padding: 12px; border-radius: 14px;
    background: var(--ncn-bg-soft); color: var(--ncn-text);
    font-size: 13.5px; font-weight: 700;
}
.ncn_co_phone_share:disabled { opacity: .6; }
.ncn_co_fields input, .ncn_co_promo input, .ncn_co_textarea, .ncn_co_input {
    width: 100%; background: var(--ncn-bg-soft); border-radius: 14px;
    padding: 13px 15px; font-size: 14.5px; color: var(--ncn-text);
    border: 1.5px solid transparent; transition: border-color .12s;
}
.ncn_co_fields input:focus, .ncn_co_promo input:focus, .ncn_co_textarea:focus, .ncn_co_input:focus {
    outline: none; border-color: var(--ncn-text);
}
.ncn_co_fields input::placeholder, .ncn_co_promo input::placeholder,
.ncn_co_textarea::placeholder, .ncn_co_input::placeholder { color: var(--ncn-text-soft); }
.ncn_co_textarea { resize: none; }
.ncn_co_hint { font-size: 12.5px; color: var(--ncn-text-soft); margin-top: 8px; }
/* §59 карта: высота задаётся жёстко — в контейнере нулевой высоты Яндекс рисует пустоту.
   Подсказки саджеста Яндекс вставляет в body, поэтому им нужен z-index выше шторки чекаута. */
.ncn_co_map {
    width: 100%; height: 240px; margin-top: 10px;
    border-radius: 14px; overflow: hidden; background: var(--ncn-bg-soft);
}
.ncn_co_addr_tools { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 8px; }
.ncn_co_maplink {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 8px 12px; border-radius: 12px; font-size: 12.5px; font-weight: 600;
    background: var(--ncn-bg-soft); color: var(--ncn-text); border: none;
}
/* Селектор по подстроке: в именах классов Яндекса зашита версия API, она меняется */
[class*="ymaps"][class*="search__suggest"] { z-index: 10000 !important; }
.ncn_co_ways { display: flex; gap: 8px; flex-wrap: wrap; }
.ncn_co_points_scroll { max-height: 280px; overflow-y: auto; }
.ncn_co_hint a { color: var(--ncn-text); text-decoration: underline; }
.ncn_co_way {
    flex: 1; display: flex; flex-direction: column; gap: 2px; align-items: flex-start;
    padding: 13px 15px; border-radius: 15px;
    border: 1.5px solid var(--ncn-border); background: var(--ncn-bg); color: var(--ncn-text);
    transition: border-color .12s, background .12s;
}
.ncn_co_way b { font-size: 14px; }
.ncn_co_way span { font-size: 12.5px; color: var(--ncn-text-soft); }
.ncn_co_way.active { border-color: var(--ncn-contrast); background: var(--ncn-bg-soft); }
.ncn_co_points { display: flex; flex-direction: column; gap: 8px; margin-top: 10px; }
.ncn_co_point {
    display: flex; gap: 10px; align-items: flex-start;
    padding: 13px 15px; border-radius: 15px;
    border: 1.5px solid var(--ncn-border); cursor: pointer;
    transition: border-color .12s, background .12s;
}
.ncn_co_point.active { border-color: var(--ncn-contrast); background: var(--ncn-bg-soft); }
.ncn_co_point input { margin-top: 3px; accent-color: var(--ncn-contrast); }
.ncn_co_point_body { display: flex; flex-direction: column; gap: 1px; }
.ncn_co_point_body b { font-size: 14px; }
.ncn_co_point_body span { font-size: 12.5px; color: var(--ncn-text-soft); }
.ncn_co_point_note { font-style: italic; }
.ncn_co_promo { display: flex; gap: 8px; }
.ncn_co_promo input { flex: 1; }
.ncn_co_promo button {
    flex-shrink: 0; padding: 0 18px; border-radius: 14px;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text); font-size: 13.5px; font-weight: 700;
}
.ncn_co_promo_ok {
    display: flex; align-items: center; justify-content: space-between; gap: 8px;
    background: color-mix(in srgb, var(--ncn-green) 12%, transparent); color: var(--ncn-green);
    border-radius: 14px; padding: 12px 15px; font-size: 13.5px; font-weight: 700;
}
.ncn_co_promo_ok button { color: var(--ncn-text-soft); display: flex; }
.ncn_co_items { display: flex; flex-direction: column; gap: 10px; margin-bottom: 8px; }
.ncn_co_item { display: flex; align-items: center; gap: 10px; }
.ncn_co_item_mid { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ncn_co_item_name {
    font-size: 13.5px; font-weight: 500; overflow: hidden; text-overflow: ellipsis;
    white-space: nowrap;
}
.ncn_co_item_price { font-size: 13.5px; font-weight: 700; white-space: nowrap; }
.ncn_co_totals { border-top: 1px solid var(--ncn-border); padding-top: 8px; }
.ncn_cta_co { margin-top: 2px; }
.ncn_co_pay_note {
    text-align: center; font-size: 12px; color: var(--ncn-text-soft);
    margin-top: 10px;
}

/* ---------------- заказ оформлен ---------------- */
.ncn_success {
    min-height: 76vh; display: flex; flex-direction: column;
    align-items: center; justify-content: center; text-align: center;
    padding: 24px; gap: 10px;
}
.ncn_success_emoji { font-size: 58px; }
.ncn_success h2 { font-size: 22px; font-weight: 800; letter-spacing: -.3px; }
.ncn_success p { color: var(--ncn-text-soft); font-size: 14.5px; max-width: 300px; }
.ncn_success .ncn_cta { max-width: 280px; }
.ncn_link_btn {
    background: none; color: var(--ncn-text); font-size: 14.5px; font-weight: 700;
    padding: 8px 12px; text-decoration: underline;
}

/* ---------------- мои заказы ---------------- */
.ncn_orders_entry {
    display: flex; align-items: center; gap: 12px; width: calc(100% - 32px);
    margin: 6px 16px 0; padding: 15px; text-align: left;
    background: var(--ncn-surface); border: 1px solid var(--ncn-border);
    border-radius: var(--ncn-radius);
}
.ncn_orders_entry:active { background: var(--ncn-bg-soft); }
.ncn_orders_entry_ico {
    flex-shrink: 0; width: 42px; height: 42px; border-radius: 14px;
    background: var(--ncn-bg-soft); display: flex; align-items: center;
    justify-content: center; font-size: 20px;
}
.ncn_orders_entry_txt { flex: 1; display: flex; flex-direction: column; font-size: 15px; font-weight: 700; }
.ncn_orders_entry_txt small { font-size: 12.5px; font-weight: 400; color: var(--ncn-text-soft); margin-top: 2px; }
.ncn_orders_entry_arr { color: var(--ncn-text-soft); flex-shrink: 0; }

.ncn_order_card {
    display: block; width: 100%; text-align: left;
    background: var(--ncn-surface); border: 1px solid var(--ncn-border);
    border-radius: var(--ncn-radius); padding: 15px; margin-bottom: 12px;
}
.ncn_order_card:active { background: var(--ncn-bg-soft); }
.ncn_order_top { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ncn_order_num { font-size: 15px; font-weight: 800; }
.ncn_order_thumbs { display: flex; gap: 6px; margin: 12px 0; }
.ncn_order_thumb {
    width: 48px; height: 48px; border-radius: 12px; overflow: hidden;
    background: var(--ncn-bg-soft); flex-shrink: 0;
}
.ncn_order_thumb img { width: 100%; height: 100%; object-fit: cover; }
.ncn_order_thumb_more {
    display: flex; align-items: center; justify-content: center;
    font-size: 13px; font-weight: 700; color: var(--ncn-text-soft);
}
.ncn_order_meta { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.ncn_order_meta span { font-size: 13px; color: var(--ncn-text-soft); }
.ncn_order_meta b { font-size: 15px; font-weight: 800; }

/* бейдж статуса (монохром: нейтральный фон, цветной только финал) */
.ncn_ostatus {
    flex-shrink: 0; font-size: 12px; font-weight: 700; line-height: 1;
    padding: 6px 10px; border-radius: 999px; white-space: nowrap;
    background: var(--ncn-bg-soft); color: var(--ncn-text);
}
.ncn_ostatus_lg { font-size: 13.5px; padding: 8px 13px; }
.ncn_ostatus.is_new      { background: var(--ncn-bg-soft);   color: var(--ncn-text); }
.ncn_ostatus.is_progress { background: color-mix(in srgb, var(--ncn-text) 10%, transparent); color: var(--ncn-text); }
.ncn_ostatus.is_done     { background: color-mix(in srgb, var(--ncn-green) 14%, transparent);  color: var(--ncn-green); }
.ncn_ostatus.is_canceled { background: color-mix(in srgb, var(--ncn-danger) 12%, transparent); color: var(--ncn-danger); }

.ncn_order_status_head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; }
.ncn_order_paid { font-size: 12.5px; font-weight: 700; color: var(--ncn-green); }
.ncn_co_text { font-size: 14px; color: var(--ncn-text); line-height: 1.4; }

/* отслеживание (§39): трек-номер + кнопка «Отследить» */
.ncn_track { display: flex; align-items: center; gap: 12px; justify-content: space-between; }
.ncn_track_body { display: flex; align-items: center; gap: 12px; min-width: 0; }
.ncn_track_ico {
    width: 42px; height: 42px; border-radius: 13px; flex-shrink: 0;
    background: var(--ncn-bg-soft); display: flex; align-items: center; justify-content: center; font-size: 20px;
}
.ncn_track_label { display: block; font-size: 12px; color: var(--ncn-text-soft); }
.ncn_track_num { font-size: 15px; font-weight: 800; letter-spacing: -.2px; }
.ncn_track_btn {
    flex-shrink: 0; padding: 10px 18px; border-radius: 999px;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-size: 13.5px; font-weight: 700;
}

/* таймлайн статусов */
.ncn_otimeline { margin-top: 12px; border-top: 1px solid var(--ncn-border); padding-top: 10px; }
.ncn_otl_row { display: flex; align-items: center; gap: 8px; padding: 5px 0; }
.ncn_otl_dot { width: 8px; height: 8px; border-radius: 50%; background: var(--ncn-text-soft); flex-shrink: 0; }
.ncn_otl_dot.is_done { background: var(--ncn-green); }
.ncn_otl_dot.is_canceled { background: var(--ncn-danger); }
.ncn_otl_dot.is_new, .ncn_otl_dot.is_progress { background: var(--ncn-text); }
.ncn_otl_label { flex: 1; font-size: 13.5px; }
.ncn_otl_ts { font-size: 12px; color: var(--ncn-text-soft); }

/* ---------------- тост ---------------- */
.ncn_toast {
    position: fixed; z-index: 120;
    left: 50%; transform: translateX(-50%);
    bottom: calc(var(--ncn-bar-h) + 16px + var(--ncn-safe-bottom));
    max-width: min(calc(100% - 40px), 400px);
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-size: 13.5px; font-weight: 600; line-height: 1.35;
    padding: 12px 17px; border-radius: 16px;
    box-shadow: var(--ncn-shadow);
}
.ncn-toast-enter-active, .ncn-toast-leave-active { transition: opacity .2s, transform .2s; }
.ncn-toast-enter, .ncn-toast-leave-to { opacity: 0; transform: translate(-50%, 8px); }

/* ---------------- десктоп ---------------- */
@media (min-width: 640px) {
    body { background: var(--ncn-bg-soft); }
    #NcnStore, .ncn_unknown {
        background: var(--ncn-bg);
        box-shadow: 0 0 40px rgba(0,0,0,.08);
    }
    .ncn_grid, .ncn_skeleton_grid { grid-template-columns: 1fr 1fr 1fr; }
}

/* ---------------- уведомления (§41, макет Evira 30_Light_notification) ----------------
   Лента карточек, сгруппированных по датам: чёрный круг с иконкой, жирный заголовок,
   серый подзаголовок. Карточка = кнопка: уведомление о заказе ведёт в его карточку. */
.ncn_ntf_day {
    font-size: 15px; font-weight: 800; letter-spacing: -.2px;
    margin: 18px 0 10px;
}
.ncn_ntf_day:first-child { margin-top: 6px; }
.ncn_ntf {
    display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
    background: var(--ncn-surface); border: 1px solid var(--ncn-border);
    border-radius: var(--ncn-radius); padding: 14px 16px; margin-bottom: 12px;
    position: relative;
}
.ncn_ntf:active { background: var(--ncn-bg-soft); }
.ncn_ntf_ico {
    width: 48px; height: 48px; flex-shrink: 0; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
}
.ncn_ntf_txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 3px; }
.ncn_ntf_title { font-size: 15.5px; font-weight: 800; letter-spacing: -.2px; line-height: 1.25; }
.ncn_ntf_body { font-size: 13.5px; color: var(--ncn-text-mid); line-height: 1.35; }
/* непрочитанное помечаем точкой, а не заливкой: в макете карточки одинаковые,
   но без метки «что нового» лента бесполезна */
.ncn_ntf.unread::after {
    content: ''; position: absolute; top: 14px; right: 14px;
    width: 8px; height: 8px; border-radius: 50%; background: var(--ncn-danger);
}

/* ---------------- полоса на сером фоне (актуальные подборки, образец unicorngo) ----------------
   Фон во всю ширину отделяет редакционный блок от товарных лент вокруг; карточки
   внутри прокручиваются горизонтально. Тень-подложку не даём: полосы и так две границы. */
.ncn_band {
    margin-top: 24px; padding: 18px 0 16px;
    background: var(--ncn-bg-soft);
}
.ncn_band .ncn_section_head { padding-bottom: 10px; }
.ncn_band .ncn_contents_strip { padding: 0 16px 2px; }

/* ---------------- карточка баллов лояльности (главная) ---------------- */
.ncn_loyalty {
    display: flex; align-items: center; gap: 14px; width: 100%; text-align: left;
    margin: 0 16px; width: calc(100% - 32px);
    background: var(--ncn-surface); border: 1px solid var(--ncn-border);
    border-radius: var(--ncn-radius); padding: 14px 16px;
}
.ncn_loyalty:active { background: var(--ncn-bg-soft); }
.ncn_loyalty_ico {
    width: 46px; height: 46px; flex-shrink: 0; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
}
.ncn_loyalty_txt { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ncn_loyalty_top { font-size: 15.5px; font-weight: 800; letter-spacing: -.2px; }
.ncn_loyalty_sub { font-size: 13px; color: var(--ncn-text-mid); line-height: 1.3; }
.ncn_loyalty_val { font-size: 22px; font-weight: 800; letter-spacing: -.6px; }
/* баннеры теперь внутри секции с заголовком — свой верхний отступ им больше не нужен */
.ncn_section_banners .ncn_banners { padding-top: 0; }

/* ---------------- подпись платформы в подвале витрины ----------------
   Приглушённая: это наш след в чужом магазине, он не должен спорить с товаром.
   Оранжевым остаётся только знак — 13px, ровно как просили «10-15». */
.ncn_madeby {
    padding: 22px 16px 18px;
    text-align: center;
}
.ncn_madeby a {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    font-size: 12.5px; color: var(--ncn-text-soft);
}
.ncn_madeby img { display: block; opacity: .95; }
.ncn_madeby b { font-weight: 700; color: var(--ncn-text-mid); }
.ncn_madeby a:active { opacity: .6; }
/* запас под плавающий таб-бар — только на вкладках, где он виден */
.ncn_madeby_bar { padding-bottom: calc(var(--ncn-bar-h) + 6px + var(--ncn-safe-bottom)); }

/* ---------------- §42 отзывы (макеты Evira 54 и 70) ---------------- */
.ncn_rv_head { display: flex; align-items: center; justify-content: space-between; }
.ncn_rv_sum { display: flex; align-items: center; gap: 8px; margin: 10px 0 14px; }
.ncn_rv_avg { font-size: 26px; font-weight: 800; letter-spacing: -.6px; }
.ncn_rv_stars { display: inline-flex; gap: 2px; color: var(--ncn-border); }
.ncn_rv_stars svg.on { color: var(--ncn-star); }
.ncn_rv_cnt { font-size: 13px; color: var(--ncn-text-soft); }

.ncn_rv { padding: 12px 0; border-top: 1px solid var(--ncn-border); }
/* на отдельном экране отзыв — карточка, в карточке товара — строка ленты */
.ncn_rv_card {
    border: 1px solid var(--ncn-border); border-top: 1px solid var(--ncn-border);
    border-radius: var(--ncn-radius); padding: 14px 16px; margin-bottom: 12px;
    background: var(--ncn-surface);
}
.ncn_rv_top { display: flex; align-items: center; gap: 10px; }
.ncn_rv_ava {
    width: 34px; height: 34px; flex-shrink: 0; border-radius: 50%; overflow: hidden;
    background: var(--ncn-bg-soft); display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 800; color: var(--ncn-text-soft);
}
.ncn_rv_ava img { width: 100%; height: 100%; object-fit: cover; }
.ncn_rv_who { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ncn_rv_who b { font-size: 14.5px; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* «✓ покупка» — то, ради чего заведён is_verified_purchase: отзыв без покупки
   в этой витрине невозможен, и метка объясняет покупателю, почему ему верить */
.ncn_rv_who i { font-size: 11.5px; font-style: normal; color: var(--ncn-green); }
.ncn_rv_rate {
    flex-shrink: 0; display: inline-flex; align-items: center; gap: 4px;
    border: 1px solid var(--ncn-border); border-radius: 999px;
    padding: 3px 10px; font-size: 13px; font-weight: 700; color: var(--ncn-star);
}
.ncn_rv_body { margin-top: 8px; font-size: 14px; line-height: 1.45; }
.ncn_rv_pc { margin-top: 4px; font-size: 13px; color: var(--ncn-text-mid); }
.ncn_rv_pc b { font-weight: 700; }
.ncn_rv_reply {
    margin-top: 10px; padding: 10px 12px; border-radius: 12px;
    background: var(--ncn-bg-soft); font-size: 13px; line-height: 1.4;
}
.ncn_rv_reply b { display: block; font-size: 12px; color: var(--ncn-text-soft); margin-bottom: 2px; }
.ncn_rv_date { display: block; margin-top: 8px; font-size: 12px; color: var(--ncn-text-soft); }

/* чипы по звёздам: недоступную оценку гасим, а не прячем — так видно, что её просто нет */
.ncn_chip:disabled { opacity: .4; }
.ncn_chip i { font-style: normal; opacity: .6; }

/* лист оценки */
.ncn_sheet_rv { text-align: center; }
.ncn_sheet_title { font-size: 17px; font-weight: 800; margin-bottom: 10px; }
.ncn_rv_form_name { font-size: 15px; font-weight: 700; margin-bottom: 4px; }
.ncn_rv_form_hint { font-size: 13px; color: var(--ncn-text-soft); line-height: 1.35; }
.ncn_rv_stars_pick { display: flex; justify-content: center; gap: 6px; margin: 16px 0 14px; }
.ncn_rv_stars_pick button { color: var(--ncn-star); transition: transform .12s; }
.ncn_rv_stars_pick button:active { transform: scale(.88); }
.ncn_rv_area {
    width: 100%; border: 1px solid var(--ncn-border); border-radius: 14px;
    background: var(--ncn-bg-soft); color: var(--ncn-text);
    padding: 12px 14px; font: inherit; font-size: 14px; outline: none; resize: none;
}
.ncn_rv_form_btns { display: flex; gap: 10px; align-items: center; margin-top: 14px; }
.ncn_rv_form_btns .ncn_more { flex: 1; margin: 0; }
.ncn_rv_form_btns .ncn_cta { flex: 1.4; margin: 0; }
.ncn_rv_form_btns .ncn_cta:disabled { opacity: .45; }
/* вход в оценку из заказов */
.ncn_rate_link {
    display: inline-flex; align-items: center; gap: 5px; margin-top: 6px;
    font-size: 12.5px; font-weight: 700; color: var(--ncn-star);
}
.ncn_rate_link:active { opacity: .6; }
.ncn_order_rate {
    display: inline-flex; align-items: center; gap: 5px; margin-top: 10px;
    font-size: 12.5px; font-weight: 700; color: var(--ncn-star);
}
/* фото в отзывах: в ленте превью 50×50, оригинал — в лайтбоксе */
.ncn_rv_shots { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
.ncn_rv_shots img { width: 50px; height: 50px; border-radius: 8px; object-fit: cover; cursor: zoom-in; }
.ncn_rv_photos { display: flex; flex-wrap: wrap; gap: 8px; justify-content: center; margin-top: 12px; }
.ncn_rv_photo { position: relative; }
.ncn_rv_photo img { width: 50px; height: 50px; border-radius: 8px; object-fit: cover; }
.ncn_rv_photo i {
    position: absolute; top: -6px; right: -6px; width: 18px; height: 18px;
    border-radius: 50%; background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-style: normal; font-size: 13px; line-height: 18px; text-align: center; cursor: pointer;
}
.ncn_rv_photo_add {
    width: 50px; height: 50px; border-radius: 8px; cursor: pointer;
    border: 1px dashed var(--ncn-border); color: var(--ncn-text-soft);
    display: flex; align-items: center; justify-content: center; font-size: 11px; text-align: center;
}
.ncn_rv_lightbox {
    position: fixed; inset: 0; z-index: 130; background: rgba(0,0,0,.9);
    display: flex; align-items: center; justify-content: center; padding: 20px;
}
.ncn_rv_lightbox img { max-width: 100%; max-height: 100%; border-radius: 10px; }
/* §43 файлы цифрового товара в карточке заказа */
.ncn_dl_row {
    display: flex; align-items: center; gap: 10px; padding: 11px 0;
    border-bottom: 1px solid var(--ncn-border);
}
.ncn_dl_row:last-of-type { border-bottom: 0; }
.ncn_dl_row:active { opacity: .6; }
.ncn_dl_name { flex: 1; min-width: 0; font-size: 14px; font-weight: 600; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ncn_dl_size { flex-shrink: 0; font-size: 12px; color: var(--ncn-text-soft); }

/* ============ §55 Мягкая связка по номеру ============
   Не заслон на входе, а предложение в профиле и первый шаг на чекауте:
   номер там всё равно обязателен, и просьба выглядит уместной. */
.ncn_phone_card {
    margin: 0 0 14px; padding: 16px;
    background: var(--ncn-bg-soft); border-radius: var(--ncn-radius);
}
.ncn_phone_card_top { display: flex; gap: 12px; align-items: flex-start; margin-bottom: 12px; }
.ncn_phone_card_ico { font-size: 26px; line-height: 1.1; }
.ncn_phone_card_txt b { display: block; font-size: 15px; color: var(--ncn-text); margin-bottom: 3px; }
.ncn_phone_card_txt small { display: block; font-size: 12.5px; line-height: 1.45; color: var(--ncn-text-soft); }
.ncn_phone_card_btn,
.ncn_co_phone_first_btn {
    width: 100%; border: 0; border-radius: 999px; padding: 13px 18px;
    background: var(--ncn-contrast); color: var(--ncn-contrast-text);
    font-size: 14.5px; font-weight: 700; cursor: pointer;
    transition: transform .12s, opacity .12s;
}
.ncn_phone_card_btn:active,
.ncn_co_phone_first_btn:active { transform: scale(.985); }
.ncn_phone_card_btn:disabled,
.ncn_co_phone_first_btn:disabled { opacity: .5; cursor: default; }
.ncn_phone_card_hint,
.ncn_co_phone_first_hint {
    font-size: 12.5px; color: var(--ncn-text-soft); text-align: center; margin-top: 10px;
}

/* первый шаг чекаута — до полей ФИО и почты */
.ncn_co_phone_first {
    padding: 14px; margin-bottom: 12px;
    background: var(--ncn-bg-soft); border-radius: var(--ncn-radius-sm);
}
.ncn_co_phone_first_txt { margin-bottom: 12px; }
.ncn_co_phone_first_txt b { display: block; font-size: 14.5px; color: var(--ncn-text); margin-bottom: 3px; }
.ncn_co_phone_first_txt small { display: block; font-size: 12.5px; line-height: 1.45; color: var(--ncn-text-soft); }
