/* ============================================================
   Profile — вариант L (edge-to-edge фото + зоны + кольцо-индикатор).
   Единственный дизайн страницы профиля (бывший v2; флаги
   profileRedesignV2/cookie profileV2 и разметка v1 удалены).
   Селекторы .is-guest/.is-own — на .pvi-wrap (не body, как в мокапе).
   ============================================================ */

/* --- Лента миниатюр ------------------------------------------- */
.pv-thumbs { display: flex; gap: .5rem; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.pv-thumbs::-webkit-scrollbar { display: none; }
.pv-thumb { position: relative; flex: 0 0 auto; width: 72px; height: 72px; border-radius: 6px; overflow: hidden; background: #e8effa; cursor: pointer; border: 0; padding: 0; }
.pv-thumb img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pv-thumb-private img { filter: blur(7px); }
.pv-thumb-lock { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; color: #fff; background: rgba(0,0,0,.25); font-size: .9rem; }

/* --- Медиа-блок фото-карточки ---------------------------------- */
.pvb-media { position: relative; background: #e8effa; border-radius: .25rem .25rem 0 0; overflow: hidden; }
.pvb-media::before { content: ''; display: block; padding-top: 125%; }
@media (min-width: 768px) { .pvb-media::before { padding-top: 100%; } }
.pvb-media > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pvb-media-shade { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(0,0,0,.35) 0%, rgba(0,0,0,0) 22%, rgba(0,0,0,0) 60%, rgba(0,0,0,.82) 100%); pointer-events: none; }
.pvb-segments { position: absolute; top: .6rem; left: .75rem; right: .75rem; display: flex; gap: .3rem; z-index: 3; }
.pvb-seg { flex: 1; height: 3px; border: 0; padding: 0; border-radius: 2px; background: rgba(255,255,255,.35); cursor: pointer; }
.pvb-seg.active { background: #fff; }
.pvb-top { position: absolute; top: 1.5rem; left: .9rem; right: .9rem; display: flex; justify-content: space-between; z-index: 3; }
.pvb-num { background: rgba(0,0,0,.5); color: #fff; font-size: .72rem; line-height: 1; padding: .3rem .6rem; border-radius: 1rem; backdrop-filter: blur(4px); }
.pvb-top-right { display: flex; align-items: center; gap: .45rem; }
.pvb-top .btn-back-feedback { padding: .45rem .65rem; line-height: 1; }
.pvk-photo-more { display: none; }

/* --- Каркас зон ------------------------------------------------- */
.pvi-wrap { max-width: 880px; margin: 0 auto; }
.pvi-zone + .pvi-zone { margin-top: 1.9rem; }
.pvi-zone-title { display: flex; align-items: center; gap: .5rem; margin: 0 0 .9rem; font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .09em; color: #748194; }
.pvi-zone-title i { font-size: .8rem; }

/* статус-стрипы */
.pvi-strip { display: flex; align-items: center; gap: 1rem; flex-wrap: wrap; padding: .85rem 1.15rem; background: #fff; border: 1px solid rgba(35,44,61,.07); border-radius: 1.1rem; box-shadow: 0 2px 8px rgba(35,44,61,.05); transition: transform .15s ease, box-shadow .15s ease; }
.pvi-strip:hover { transform: translateY(-1px); box-shadow: 0 8px 20px rgba(35,44,61,.08); }
.pvi-strip + .pvi-strip { margin-top: .65rem; }

/* аватар с онлайн-кольцом */
.pvi-ava { position: relative; width: 4rem; height: 4rem; min-width: 4rem; border-radius: 50%; overflow: hidden; border: 3px solid transparent; }
/* кольцо — индикатор онлайн-статуса (как avatar-online в spotlight) */
.pvi-ava.is-online { border-color: #5eba00; box-shadow: 0 0 0 3px rgba(94,186,0,.18); }
.pvi-ava img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* градиентные иконки */
.pvi-icon { width: 3rem; height: 3rem; min-width: 3rem; border-radius: .95rem; flex-shrink: 0; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 1.25rem; transition: transform .25s ease; }
.pvi-icon-violet { background: linear-gradient(135deg,#7b4fd0,#9a55e0); box-shadow: 0 8px 18px rgba(123,79,208,.35); }
.pvi-icon-blue { background: linear-gradient(135deg,#206bc4,#4299e1); box-shadow: 0 8px 18px rgba(32,107,196,.35); }
.pvi-icon-pink { background: linear-gradient(135deg,#d63384,#f66d9b); box-shadow: 0 8px 18px rgba(214,51,132,.35); }
.pvi-icon-green { background: linear-gradient(135deg,#2fb344,#5eba00); box-shadow: 0 8px 18px rgba(47,179,68,.35); }
.pvi-icon-amber { background: linear-gradient(135deg,#f59f00,#f7b731); box-shadow: 0 8px 18px rgba(245,159,0,.35); }
.pvi-icon-gray { background: linear-gradient(135deg,#495057,#748194); box-shadow: 0 8px 18px rgba(73,80,87,.3); }
.pvi-strip:hover .pvi-icon, .pvi-card:hover .pvi-icon { transform: scale(1.06) rotate(-4deg); }

/* имя / мета */
.pvi-main { flex: 1 1 11rem; min-width: 0; }
.pvi-name { display: flex; align-items: center; gap: .45rem; font-size: 1.15rem; font-weight: 700; color: #232c3d; flex-wrap: wrap; }
.pvi-name .age { font-weight: 400; }
.pvi-name .fe-check-circle { color: #5eb3ff; font-size: .95rem; }
.pvi-name .fa-gem { color: #7b4fd0; font-size: .9rem; }
.pvi-sub { margin-top: .2rem; font-size: .78rem; color: #748194; display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; }
@keyframes pviLivePulse { 50% { box-shadow: 0 0 0 5px rgba(94,186,0,.05); } }
.pvi-quick { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: .7rem; }
.pvi-quick-item { display: inline-flex; align-items: center; gap: .35rem; background: #f4f6fa; border: 1px solid rgba(35,44,61,.07); border-radius: 2rem; padding: .28rem .7rem; font-size: .8rem; color: #495057; }
.pvi-uname { color: #9da9bb; }
.pvk-stick .pvi-main { display: flex; flex-direction: column; justify-content: space-between; min-height: 4rem; }
/* имя, ник и локация — барьер = перенос строки −1 символ: спан тянется до конца
   строки, padding-right резервирует 1ch перед переносом; рядом с возрастом/иконками
   flex-shrink ужимает до свободного места; переполнение — многоточие (fallback)
   или marquee (.is-marquee ставит JS) */
.pvk-stick .pvi-name-text,
.pvk-stick .pvi-uname,
.pvk-stick .pvi-loc { max-width: 100%; min-width: 0; box-sizing: border-box; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* резерв 1ch до конца строки — только у строк, чей правый край = конец строки;
   у имени край упирается в «, 25» (учитывается flex-shrink'ом, зазор не нужен) */
.pvk-stick .pvi-uname,
.pvk-stick .pvi-loc { padding-right: 1ch; }
.pvi-scroll { display: inline-block; }
/* дефолты — на .is-marquee (туда JS ставит inline setProperty, который их перекроет);
   на .pvi-scroll объявлять нельзя — локальное значение перекроет унаследованное от JS */
.is-marquee { text-overflow: clip; --pvi-scroll: 0px; --pvi-marquee-time: 8s; }
.is-marquee .pvi-scroll { animation: pviMarquee var(--pvi-marquee-time) ease-in-out infinite alternate; will-change: transform; }
@keyframes pviMarquee {
    0%, 10% { transform: translateX(0); }
    90%, 100% { transform: translateX(calc(-1 * var(--pvi-scroll, 0px))); }
}
/* nowrap + min-width:0 — строка не переносится и сжимается ниже min-content:
   клипит .pvi-name-text (иначе .pvi-name выпирает за колонку — возраст/иконки
   уходят за край строки, а переполнения для marquee нет) */
.pvk-stick .pvi-name { font-size: 1.3rem; line-height: 1.15; flex-wrap: nowrap; min-width: 0; }
/* «, 25» — единый неделимый блок после имени. .age наезжает на .9rem
   (компенсация flex-gap .45rem + padding-right .45rem у .pvi-name-text),
   padding отодвигает клип текста — «, 25» встаёт впритык к последней
   видимой букве, без оверлапа */
.pvk-stick .pvi-name-text { padding-right: .45rem; }
/* «, 32» и бейджи — неделимые: не сжимаются и не переносятся при узкой строке,
   сжатие выполняет только .pvi-name-text (min-width:0) */
.pvk-stick .pvi-name .age { margin-left: -.9rem; flex-shrink: 0; white-space: nowrap; }
.pvk-stick .pvi-name .fe, .pvk-stick .pvi-name .fa { flex-shrink: 0; }
.pvk-stick .pvi-sub { margin-top: 0; font-size: .82rem; line-height: 1.25; flex-wrap: nowrap; }
.pvk-stick .pvi-uname { font-size: .9rem; }
.pvk-stick h1.pvi-heading { margin: 0; padding: 0; font-size: inherit; font-weight: 400; line-height: inherit; display: flex; }

/* популярность */
.pvl-pop-bar { flex: 0 1 11rem; min-width: 6rem; height: .45rem; border-radius: 1rem; background: rgba(116,129,148,.18); overflow: hidden; align-self: center; }
.pvl-pop-bar > i { display: block; height: 100%; border-radius: 1rem; background: #206bc4; }

/* градиентные кнопки */
.pvi-actions { display: flex; align-items: center; gap: .5rem; margin-left: auto; flex-wrap: wrap; }
.pvi-btn { display: inline-flex; align-items: center; justify-content: center; gap: .45rem; border: 0; border-radius: .85rem; padding: .6rem 1.3rem; font-size: .88rem; font-weight: 600; line-height: 1.2; color: #fff; white-space: nowrap; cursor: pointer; text-decoration: none; transition: transform .15s ease, box-shadow .15s ease; }
.pvi-btn:hover { transform: translateY(-1px); color: #fff; text-decoration: none; }
.pvi-btn-blue { background: linear-gradient(135deg,#206bc4,#4299e1); box-shadow: 0 8px 18px rgba(32,107,196,.35); }
.pvi-btn-pink { background: linear-gradient(135deg,#d63384,#f66d9b); box-shadow: 0 8px 18px rgba(214,51,132,.35); }
.pvi-btn-pink.is-liked { background: linear-gradient(135deg,#b0236b,#d63384); }
.pvi-btn-violet { background: linear-gradient(135deg,#7b4fd0,#9a55e0); box-shadow: 0 8px 18px rgba(123,79,208,.35); }
.pvi-btn-ghost { background: transparent; color: #748194; box-shadow: inset 0 0 0 1px rgba(73,80,87,.25); }
.pvi-btn-ghost:hover { color: #232c3d; box-shadow: inset 0 0 0 1px rgba(73,80,87,.45); }
.pvi-btn-round { width: 2.85rem; height: 2.85rem; padding: 0; border-radius: .85rem; }

/* фото-карточка */
.pvi-photo-card { padding: .8rem; border-radius: 1.15rem; background: #fff; border: 1px solid rgba(35,44,61,.07); box-shadow: 0 1px 3px rgba(23,25,35,.05), 0 10px 26px rgba(23,25,35,.05); }
.pvi-photo-card .pvb-media { border-radius: .8rem; }
.pvi-photo-card .pvb-media::before { padding-top: 100%; }

/* карточки решения */
.pvi-cards { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; }
@media (max-width: 767.98px) { .pvi-cards { grid-template-columns: 1fr; } }
.pvi-card { display: flex; flex-direction: column; padding: 1.15rem 1.15rem 1rem; border-radius: 1.15rem; background: #fff; border: 1px solid rgba(35,44,61,.07); box-shadow: 0 1px 3px rgba(23,25,35,.05), 0 10px 26px rgba(23,25,35,.05); transition: transform .18s ease, box-shadow .18s ease; }
.pvi-card:hover { transform: translateY(-2px); box-shadow: 0 4px 10px rgba(23,25,35,.06), 0 18px 40px rgba(23,25,35,.1); }
.pvi-card-top { display: flex; align-items: flex-start; gap: .7rem; margin-bottom: .8rem; }
.pvi-card-title { margin: 0; font-size: 1.05rem; color: #232c3d; }
.pvi-card-caption { font-size: .82rem; color: #748194; }
.pvi-benefit { display: flex; align-items: center; gap: .45rem; font-size: .85rem; color: #495057; }
.pvi-benefit i { color: #5eba00; font-size: .75rem; flex-shrink: 0; }
.pvi-benefit + .pvi-benefit { margin-top: .35rem; }
.pvi-facts { display: grid; grid-template-columns: 1fr 1fr; gap: .7rem 1.4rem; }
.pvi-fact-l { font-size: .72rem; color: #9da9bb; }
.pvi-fact-v { font-size: .9rem; color: #232c3d; }
.pvi-about { font-size: .93rem; line-height: 1.55; color: #495057; margin: 0; }
@media (min-width: 768px) { .pvj-featured { grid-column: span 2; } }

/* кольцо совместимости (задел — бейдж «Скоро») */
.pvi-ring { --p: 92; --ring-c: #7b4fd0; position: relative; width: 3.4rem; height: 3.4rem; min-width: 3.4rem; border-radius: 50%; flex-shrink: 0; background: conic-gradient(var(--ring-c) calc(var(--p) * 1%), rgba(116,129,148,.15) 0); display: flex; align-items: center; justify-content: center; }
.pvi-ring > b { width: 2.65rem; height: 2.65rem; border-radius: 50%; background: #fff; display: flex; flex-direction: column; align-items: center; justify-content: center; font-size: .95rem; font-weight: 800; color: #232c3d; line-height: 1; }
.pvi-ring > b small { font-size: .52rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; color: #748194; margin-top: .1rem; }
.pvi-soon { position: absolute; bottom: -.4rem; left: 50%; transform: translateX(-50%); font-size: .58rem; font-weight: 600; text-transform: uppercase; letter-spacing: .05em; line-height: 1; padding: .18rem .42rem; border-radius: 1rem; background: #f59f00; color: #fff; box-shadow: 0 2px 6px rgba(245,159,0,.4); white-space: nowrap; }

/* кольцо → индикатор симпатии: data-like-state liked|mutual + вид data-pvk-view="like".
   Вид «like» = сердца + слово-подпись (как «69/match» у совместимости); в zone-виде
   кольцо — обычная метрика зоны даже при лайке — скролл переключает равноправные
   индикаторы (JS-спай ставит data-pvk-view) */
.pvi-ring .pvi-ring-hearts { display: none; align-items: center; justify-content: center; color: #ff3b5c; font-size: 1.15em; line-height: 1; }
.pvi-ring .pvi-ring-hearts i + i { display: none; margin-left: -.32em; font-size: .82em; margin-top: .3em; }
.pvi-ring[data-pvk-view="like"] .pvi-ring-hearts { display: flex; }
.pvi-ring[data-pvk-view="like"] [data-pvk-num],
.pvi-ring[data-pvk-view="like"] [data-pvk-cap],
.pvi-ring[data-pvk-view="like"] .pvi-soon { display: none; }
/* слово-подпись симпатии — пилюля у нижней кромки кольца (как «Soon» у метрики),
   не в центре диска; розовая в тон сердец */
.pvi-like-word { display: none; position: absolute; bottom: -.45rem; left: 50%; transform: translateX(-50%); font-size: .56rem; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; line-height: 1; padding: .2rem .45rem; border-radius: 1rem; background: #ff3b5c; color: #fff; box-shadow: 0 2px 6px rgba(255,59,92,.4); white-space: nowrap; }
.pvi-ring[data-pvk-view="like"] .pvi-like-word { display: block; }
/* liked/mutual в like-виде: дугу совместимости прячем (background:none, !important —
   поверх dark-темы) — симпатия = сердца + подпись + пульсирующее красное свечение */
.pvi-ring[data-pvk-view="like"] { background: none !important; animation: pvkRingPulse 1.9s ease-in-out infinite; }
.pvi-ring[data-like-state="mutual"][data-pvk-view="like"] { animation-duration: 1.5s; }
@keyframes pvkRingPulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(255,59,92,0), 0 4px 12px rgba(255,59,92,0); }
    50% { box-shadow: 0 0 0 4px rgba(255,59,92,.15), 0 6px 18px rgba(255,59,92,.3); }
}
/* диск — лёгкий розовый тон + hairline: без дуги белое пятно читалось бы пустым;
   в dark-теме остаётся тёмный фон диска (его правило специфичнее) */
.pvi-ring[data-pvk-view="like"] > b { background: rgba(255,59,92,.07); box-shadow: inset 0 0 0 1px rgba(255,59,92,.15); }
/* liked — одиночное сердце, спокойное биение; mutual — чуть живее.
   pvkHeartsIn — вход сердец при первом показе (JS-переключение вида/состояния
   тоже даёт entrance: display none→flex перезапускает анимацию) */
.pvi-ring[data-like-state="liked"][data-pvk-view="like"] .pvi-ring-hearts { animation: pvkHeartsIn .45s cubic-bezier(.34,1.56,.64,1), pvkHeartsBeat 1.9s ease-in-out .45s infinite; }
.pvi-ring[data-like-state="mutual"][data-pvk-view="like"] .pvi-ring-hearts { animation: pvkHeartsIn .45s cubic-bezier(.34,1.56,.64,1), pvkHeartsBeat 1.5s ease-in-out .45s infinite; }
@keyframes pvkHeartsIn { from { transform: scale(0) translateY(4px); } 60% { transform: scale(1.25); } to { transform: scale(1); } }
/* пара сердец: второе светлее — читается как два, а не как пятно */
.pvi-ring[data-like-state="mutual"][data-pvk-view="like"] .pvi-ring-hearts i + i { display: inline; color: #ff8299; }
/* удар сердца в пик свечения кольца (pvkRingPulse max = 50%) — ритм единый,
   эхо-удар следом; длительности liked/mutual у обеих анимаций одинаковые */
@keyframes pvkHeartsBeat {
    0%, 42%, 100% { transform: scale(1); }
    50% { transform: scale(1.16); }
    58% { transform: scale(1); }
    64% { transform: scale(1.09); }
    72% { transform: scale(1); }
}

/* --- Like UX: наградные микро-анимации (классы ставит JS в profile.js) --- */
/* вылетающее сердце — fixed-клон иконки кнопки (паттерн encFloatUp из encounters) */
.pvk-heart-burst { position: fixed; z-index: 9999; color: #ff3b5c; font-size: 1.6rem; pointer-events: none; transform: translate(-50%,-50%); animation: pvkHeartBurst .95s cubic-bezier(.2,.7,.3,1) forwards; }
@keyframes pvkHeartBurst {
    0% { opacity: 0; transform: translate(-50%,-50%) scale(.4); }
    18% { opacity: 1; transform: translate(-50%,-70%) scale(1.3); }
    100% { opacity: 0; transform: translate(-50%,-260%) scale(.9); }
}
/* pop кнопки в момент засчитанного лайка — отдельный класс, снимается по animationend */
.pvk-sq.pvk-just-liked { animation: pvkLikePop .5s cubic-bezier(.34,1.56,.64,1); }
@keyframes pvkLikePop { 40% { transform: scale(1.28); } }
/* одноразовый всплеск кольца при смене состояния — позже бесконечной пульсации,
   поэтому перекрывает её, пока класс висит; JS снимает по animationend */
.pvi-ring.pvk-ring-burst { animation: pvkRingBurst .7s ease-out 1; }
@keyframes pvkRingBurst { from { box-shadow: 0 0 0 0 rgba(255,59,92,.55); } to { box-shadow: 0 0 0 14px rgba(255,59,92,0); } }
/* ошибка AJAX — короткий shake, состояние кнопки не менялось */
.pvk-sq.pvk-shake { animation: pvkShake .4s ease-in-out; }
@keyframes pvkShake { 25% { transform: translateX(-5px); } 50% { transform: translateX(5px); } 75% { transform: translateX(-3px); } }

/* «Знакомства» */
.pvl-dating .pvi-main { flex: 0 0 8.5rem; }
.pvl-dating-line { flex: 1 1 14rem; min-width: 0; font-size: .98rem; line-height: 1.4; color: #232c3d; display: flex; flex-direction: column; justify-content: center; gap: .35rem; }
@media (max-width: 575.98px) { .pvl-dating .pvi-main { flex-basis: 100%; } }

/* контент внутри стрипа на всю ширину */
.pvi-strip-body { flex-basis: 100%; }

/* --- Большая иконка-кнопка + липкий стрип + док ----------------- */
.pvk-action { width: 3.3rem; height: 3.3rem; min-width: 3.3rem; border-radius: .95rem; border: 0; padding: 0; flex-shrink: 0; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 1.45rem; cursor: pointer; transition: transform .15s ease, box-shadow .15s ease; }
.pvk-action:hover { transform: scale(1.08) rotate(-4deg); }
.pvk-action:active { transform: scale(.96); }
@media (max-width: 575.98px) { .pvk-action { width: 2.9rem; height: 2.9rem; min-width: 2.9rem; font-size: 1.2rem; } }

/* nowrap: flex-wrap решает перенос по flex-basis до сжатия — при is-scrolled
   (back+ava развёрнуты) кольцо падало на вторую строку, раздувая липкий бар;
   .pvi-main с min-width:0 сожмётся сам, marquee покажет текст полностью */
.pvk-stick { position: sticky; top: 1.5rem; z-index: 45; box-shadow: 0 6px 20px rgba(35,44,61,.12); flex-wrap: nowrap; }
/* своя анкета на мобильной: «Edit profile» — отдельной строкой, перенос нужен */
@media (max-width: 767.98px) { .pvi-wrap.is-own .pvk-stick { flex-wrap: wrap; } }
.pvk-stick + .pvi-zone { margin-top: 1rem; }
/* scroll-spy: иконка на одном месте, анимированно меняется по секции */
.pvk-spy-wrap { display: flex; align-items: center; gap: .5rem; flex-shrink: 0; }
.pvk-spy { position: relative; width: 2.1rem; height: 2.1rem; flex-shrink: 0; }
.pvk-spy i { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 1.15rem; color: #7b4fd0; opacity: 0; transform: translateY(7px) scale(.75); transition: opacity .25s ease, transform .25s ease; }
.pvk-spy i.active { opacity: 1; transform: translateY(0) scale(1); }
.pvk-spy-label { font-size: .7rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: #748194; min-width: 4.4rem; }

/* нижний док */
.pvk-bottom { position: fixed; bottom: .7rem; left: 0; right: 0; z-index: 46; display: flex; justify-content: center; margin: 0; pointer-events: none; }
.pvk-dock { display: flex; gap: .55rem; padding: .5rem .65rem; background: rgba(255,255,255,.96); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); border: 1px solid rgba(35,44,61,.08); border-radius: 1.15rem; box-shadow: 0 10px 26px rgba(35,44,61,.15); pointer-events: auto; }
.pvk-sq { width: 3.05rem; height: 3.05rem; border-radius: .9rem; border: 0; padding: 0; display: inline-flex; align-items: center; justify-content: center; color: #fff; font-size: 1.3rem; line-height: 1; cursor: pointer; transition: transform .15s ease, box-shadow .15s ease, color .15s ease; }
.pvk-sq:hover { transform: translateY(-2px) scale(1.05); }
.pvk-sq:active { transform: scale(.94); }
.pvk-sq-ghost { background: transparent; color: #748194; box-shadow: inset 0 0 0 1px rgba(73,80,87,.25); }
.pvk-sq-ghost:hover { color: #232c3d; box-shadow: inset 0 0 0 1px rgba(73,80,87,.45); }
/* лайк — видимость состояния (классы тогглит app.js / сервер):
   не лайкнуто — серая кнопка-призрак (hover — розовый намёк);
   лайкнуто — розовая заливка */
.pvk-sq.btn-not-liked { background: transparent; color: #748194; box-shadow: inset 0 0 0 2px rgba(116,129,148,.45); }
.pvk-sq.btn-not-liked:hover { color: #d63384; box-shadow: inset 0 0 0 2px rgba(214,51,132,.55); }
/* активное состояние — только розовая заливка; пульсирующее кольцо убрано:
   дублировало пульсацию .pvi-ring, экран перегружался анимациями */
/* dropdown «ещё» в доке — открывается вверх */
.pvk-bottom .dropdown-menu { min-width: 9rem; }
.pvk-dock .dropdown { display: inline-flex; }

/* «назад» в липком стрипе — раскрывается при скролле */
.pvk-stick-back { max-width: 0; min-width: 0; padding: .45rem 0; margin-right: -1rem; overflow: hidden; opacity: 0; transform: translateX(-.5rem) scale(.85); pointer-events: none; flex-shrink: 0; white-space: nowrap; transition: max-width .3s ease, padding .3s ease, margin-right .3s ease, opacity .22s ease, transform .3s ease; }
.pvk-stick.is-scrolled .pvk-stick-back { max-width: 3.2rem; padding: .45rem .65rem; margin-right: 0; opacity: 1; transform: none; pointer-events: auto; }
@media (max-width: 575.98px) { .pvk-stick-back { margin-right: -.75rem; } .pvk-stick.is-scrolled .pvk-stick-back { margin-right: 0; } }

/* аватар в стрипе — появляется при скролле */
/* hide: зеркально reveal — аватар быстро схлопывается (0–.26s),
   слот догоняет с задержкой .22s, перекрывая хвост масштабирования —
   нет паузы «пустого слота» и рывка в конце */
.pvk-stick .pvi-ava { max-width: 0; min-width: 0; border-width: 0; box-shadow: none; margin-right: -1rem; opacity: 0; transform: scale(0); transition: opacity .2s ease .03s, transform .26s cubic-bezier(.5,0,.75,0), border-width .2s ease .08s, box-shadow .15s ease, max-width .3s cubic-bezier(.25,.6,.35,1) .22s, min-width .3s cubic-bezier(.25,.6,.35,1) .22s, margin-right .3s cubic-bezier(.25,.6,.35,1) .22s; }
.pvk-stick.is-scrolled .pvi-ava { max-width: 4rem; min-width: 4rem; border-width: 3px; box-shadow: 0 0 0 3px rgba(94,186,0,.18); margin-right: 0; opacity: 1; transform: scale(1); transition: max-width .28s cubic-bezier(.25,.6,.35,1), min-width .28s cubic-bezier(.25,.6,.35,1), margin-right .28s cubic-bezier(.25,.6,.35,1), opacity .2s ease .28s, border-width .22s ease .28s, box-shadow .22s ease .28s, transform .34s cubic-bezier(.34,1.56,.64,1) .28s; }
@media (max-width: 575.98px) {
    .pvk-stick .pvi-ava { margin-right: -.75rem; }
    .pvk-stick.is-scrolled .pvi-ava { max-width: 3.4rem; min-width: 3.4rem; margin-right: 0; }
    .pvk-spy-label { display: none; }
    .pvk-sq { width: 2.8rem; height: 2.8rem; font-size: 1.15rem; }
}
/* совсем узкие: spy-иконка в стрипе без подписи нечитаема и съедает ~3rem у имени */
@media (max-width: 399.98px) { .pvk-stick .pvk-spy-wrap { display: none; } }

/* --- Вариант L: фото-карточка ------------------------------------ */
.pvl-photo-card { padding: 0; }
.pvl-photo-card .pvb-media { border-radius: 1.1rem; }
/* «назад» на фото убрана: мобильная — в хедере вместо лого, десктопная — в липком стрипе */
.pvl-photo-card .pvb-top { justify-content: flex-end; }
/* мобильный хедер: кнопка «назад» вместо лого — высота строки как у лого.
   .header-brand img = 40px (_header.scss), а не 2rem (.header-brand-img) —
   back-кнопка и строка должны быть 2.5rem, иначе header ниже на ~8px */
.header > .container > .d-flex { min-height: 2.5rem; align-items: center; }
.header .btn-back-feedback { height: 2.5rem; padding: 0 .6rem; display: inline-flex; align-items: center; }
.pvl-photo-meta { display: none; }
.pvl-media-live { position: absolute; left: .9rem; bottom: .9rem; z-index: 3; display: inline-flex; align-items: center; gap: .35rem; background: rgba(0,0,0,.5); color: #fff; font-size: .72rem; line-height: 1; padding: .3rem .6rem; border-radius: 1rem; backdrop-filter: blur(4px); }
.pvl-photo-card .pvb-num { position: absolute; right: .9rem; bottom: .9rem; z-index: 3; }
@media (max-width: 991.98px) {
    .pvl-photo-card .pvl-media-live,
    .pvl-photo-card .pvb-num { bottom: 5.6rem; }
}
@media (max-width: 575.98px) {
    .pvl-photo-card .pvl-media-live,
    .pvl-photo-card .pvb-num { bottom: 4rem; }
}
.pvl-media-live::before { content: ''; width: .5rem; height: .5rem; border-radius: 50%; background: #5eba00; box-shadow: 0 0 0 2px rgba(94,186,0,.3); animation: pviLivePulse 2s ease-in-out infinite; }
/* три статуса пилюли — те же цвета, что у кружка .online-status в карточке;
   пульсация только у «в сети» */
.pvl-media-live[data-online-status="recently_online"]::before { background: #f39c12; box-shadow: 0 0 0 2px rgba(243,156,18,.3); animation: none; }
.pvl-media-live[data-online-status="offline"]::before { background: #748194; box-shadow: 0 0 0 2px rgba(116,129,148,.3); animation: none; }
/* яркие иконки приглушены, пока секция не в фокусе scroll-spy */
.pvl-zone .pvi-icon,
.pvl-zone .pvk-action { filter: saturate(0); opacity: .5; transition: filter .3s ease, opacity .3s ease; }
.pvl-zone.in-focus .pvi-icon,
.pvl-zone.in-focus .pvk-action { filter: none; opacity: 1; }

/* --- Подарки ------------------------------------------------------ */
/* nowrap: при переносе карусели на 2-ю строку .pvk-action центрировался бы
   внутри своей строки и визуально уезжал вверх; карусель сжимается min-width: 0 */
.pvl-gifts { background: transparent; border-color: transparent; box-shadow: none; flex-wrap: nowrap; }
.pvl-gifts:hover { transform: none; box-shadow: none; }
/* тень кнопки почти симметрична (смещение 2px): -12/+16px вместо -10/+18px —
   иначе она визуально утягивала иконку ниже центра строки, что особенно
   заметно без подарков, когда правая колонка ниже кнопки */
/* плавнее базового .15s: длинный ease-out с лёгким перелётом — поворот/масштаб
   иконки читаются как пружинка, а не как щелчок */
.pvl-gifts .pvk-action { position: relative; z-index: 1; overflow: hidden; background: linear-gradient(135deg,#adb5bd,#ced4da); box-shadow: 0 2px 14px rgba(173,181,189,.3); filter: none; opacity: 1; transition: transform .45s cubic-bezier(.22,1,.36,1), box-shadow .3s ease; }
.pvl-gifts .pvk-action:focus { outline: none; }
.pvl-gifts .pvk-action::after { content: ''; position: absolute; inset: 0; border-radius: inherit; background: linear-gradient(135deg,#d63384,#f66d9b); opacity: 0; transition: opacity .45s ease; }
.pvl-gifts .pvk-action i { position: relative; z-index: 1; }
.pvl-gifts .pvk-action:hover::after,
.pvl-gifts .pvk-action:focus::after { opacity: 1; }
/* transition здесь = поведение СКРЫТИЯ (применяется при уходе курсора):
   ширина складывается первой, opacity догорает с задержкой — текст не
   мигает внутри схлопывающейся пилюли */
.pvl-gifts-label { max-width: 0; overflow: hidden; white-space: nowrap; opacity: 0; transform: translateX(-.5rem); margin-left: -.5rem; padding: .28rem 0; border-radius: 0 2rem 2rem 0; background: rgba(214,51,132,.1); color: #d63384; font-size: .85rem; font-weight: 600; line-height: 1.2; transition: max-width .38s cubic-bezier(.4,0,.2,1), padding .38s cubic-bezier(.4,0,.2,1), margin-left .38s cubic-bezier(.4,0,.2,1), opacity .26s ease .12s, transform .38s cubic-bezier(.4,0,.2,1); }
/* transition здесь = поведение ПОЯВЛЕНИЯ: мягкий ease-out с перелётом,
   текст проявляется синхронно с раскрытием ширины */
.pvl-gifts .pvk-action:hover + .pvl-gifts-label,
.pvl-gifts .pvk-action:focus + .pvl-gifts-label,
.pvl-gifts-label:hover { max-width: 7rem; opacity: 1; transform: none; margin-left: -1rem; padding: .28rem .75rem .28rem .5rem; white-space: normal; transition: max-width .5s cubic-bezier(.22,1,.36,1), padding .5s cubic-bezier(.22,1,.36,1), margin-left .5s cubic-bezier(.22,1,.36,1), opacity .3s ease .08s, transform .5s cubic-bezier(.22,1,.36,1); }
.pvl-gifts-carousel { flex: 1 1 15rem; min-width: 0; }
/* Pjax-обёртка виджета — прямой flex-ребёнок стрипа (.pvc-gifts вложена в неё):
   занимает остаток строки и может сжиматься (min-width:0 — иначе min-content
   = все подарки в ряд и стрип переполнялся бы) */
.pvl-gifts > #pjax-user-gifts { flex: 1 1 15rem; min-width: 0; }
.pvl-gifts-carousel .pvc-gift-card img { width: 104px; height: 104px; transition: transform .3s cubic-bezier(.25,.6,.35,1); }
.pvl-gifts-carousel .pvc-gift-card img:hover { transform: scale(1.1); }
@media (max-width: 575.98px) { .pvl-gifts-carousel .pvc-gift-card img { width: 88px; height: 88px; } }
.pvl-gifts-carousel .gift-carousel-dots,
.pvl-gifts-carousel .gift-carousel-counter { display: none !important; }
.pvc-gifts .gift-page { gap: .3rem; }
/* подарки: во всю ширину сетки карточек под «Обо мне» */
.pvi-cards > .pvi-strip { grid-column: 1 / -1; }
.pvi-cards > .pvl-card-full { grid-column: 1 / -1; }

/* пилюли (интересы tags, языки prof_ispeak) — равномерные колонки на всю ширину:
   grid auto-fill вместо flex, чтобы в коротких строках ячейки не растягивались */
.pvl-pills { display: grid; grid-template-columns: repeat(auto-fill, minmax(6rem, 1fr)); gap: .4rem; }
.pvl-pills .profile-pill { margin: 0; text-align: center; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

/* карусель подарков */
.pvc-gifts .gift-carousel-viewport { position: relative; overflow: hidden; }
.pvc-gifts .gift-carousel-track { overflow: hidden; }
.pvc-gifts .gift-items { display: flex; transition: transform .3s cubic-bezier(.25,.46,.45,.94); will-change: transform; backface-visibility: hidden; }
.pvc-gifts .gift-page { flex: 0 0 100%; display: flex; gap: .5rem; box-sizing: border-box; }
.pvc-gift-card { flex: 1 1 0; min-width: 0; text-align: center; padding: .35rem .25rem; border-radius: .4rem; }
.pvc-gift-card img { width: 76px; height: 76px; object-fit: contain; display: block; margin: 0 0 .25rem; }
.pvc-gift-card .sender { display: none; }
/* стрелки/точки/счётчик карусели — как в мокапе (круглые кнопки поверх viewport) */
.pvc-gifts .gift-carousel-prev, .pvc-gifts .gift-carousel-next {
    position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
    width: 2rem; height: 2rem; border-radius: 50%; border: 0; padding: 0;
    background: rgba(255,255,255,.94); box-shadow: 0 2px 8px rgba(0,0,0,.18);
    color: #495057; display: inline-flex; align-items: center; justify-content: center; cursor: pointer;
}
.pvc-gifts .gift-carousel-prev { left: .35rem; }
.pvc-gifts .gift-carousel-next { right: .35rem; }
.pvc-gifts .gift-carousel-prev[hidden], .pvc-gifts .gift-carousel-next[hidden] { display: none; }
.pvc-gifts .gift-carousel-dots { display: flex; justify-content: center; gap: 6px; margin-top: .5rem; }
.pvc-gifts .gift-carousel-dot { width: 8px; height: 8px; border-radius: 50%; border: 0; padding: 0; background: rgba(0,0,0,.18); cursor: pointer; transition: background .2s; }
.pvc-gifts .gift-carousel-dot.active { background: #467fcf; }
.pvc-gifts .gift-carousel-counter { text-align: center; margin-top: .25rem; font-size: .75rem; }

/* --- Колонки / адаптив -------------------------------------------- */
.pvl-main > .pvk-stick { margin-top: -4.9rem; }
@media (max-width: 575.98px) { .pvl-main > .pvk-stick { margin-top: -3.4rem; } }
.pvl-side, .pvl-main { display: contents; }
.pvl-facts .pvi-main { flex: 0 0 8.5rem; }
.pvl-facts-grid { flex: 1 1 18rem; min-width: 0; display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem 1.2rem; }
@media (max-width: 575.98px) {
    .pvl-facts .pvi-main { flex-basis: 100%; }
    .pvl-facts-grid { flex-basis: 100%; grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767.98px) {
    /* реальный layout page-main: .content.my-3 > .container — фото прижато к верху */
    .content { margin-top: 0 !important; }
    .pvk-stick { top: .75rem; }
    .pvk-bottom { bottom: calc(3.7rem + env(safe-area-inset-bottom, 0px)); }
    .pvk-bottom .pvk-sq-ghost { display: none; }
    .pvk-photo-more { display: inline-flex; align-items: center; justify-content: center; width: 2.1rem; height: 2.1rem; border-radius: 50%; border: 0; padding: 0; background: rgba(0,0,0,.5); color: #fff; font-size: 1.1rem; cursor: pointer; backdrop-filter: blur(4px); }
    /* контент не должен прятаться под .mobile-nav (~3rem) + парящий док:
       3.7rem (bottom-смещение дока) + ~3.6rem высота дока + .6rem зазор */
    .pvi-wrap { padding-bottom: calc(7.9rem + env(safe-area-inset-bottom, 0px)); }
}
/* transform на предке ломает position:fixed — отключаем hover-подъём до десктопа */
@media (max-width: 991.98px) { .pvk-stick:hover { transform: none; } }

/* десктоп ≥992px: фото слева (sticky), контент справа */
@media (min-width: 992px) {
    .pvi-wrap {
        max-width: 1180px;
        display: grid;
        grid-template-columns: minmax(330px, 400px) 1fr;
        column-gap: 1.8rem;
        align-items: start;
    }
    .pvl-side > .pvi-zone {
        grid-column: 1;
        position: sticky; top: 1.5rem;
    }
    .pvl-main { grid-column: 2; display: flex; flex-direction: column; min-width: 0; }
    .pvl-main > .pvk-stick { position: sticky; top: 1.5rem; margin-top: 0; }
    .pvk-stick > .pvi-main { flex: 0 1 auto; }
    /* spy-блок в стрипе — только на мобильной; на десктопе он живёт под фото */
    .pvk-stick > .pvk-spy-wrap { display: none; }
    /* кольцо в стрипе — только на мобильной; на десктопе оно живёт под фото */
    .pvk-stick > .pvi-ring { display: none; }
    .pvk-stick > .pvk-bottom { position: static; margin: 0 0 0 auto; flex-shrink: 0; }
    .pvk-stick > .pvk-bottom .pvk-dock { padding: 0; background: transparent; border: 0; box-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; }
    /* кольцо-индикатор под фото (десктоп) */
    .pvl-photo-meta { display: flex; align-items: center; gap: .8rem; margin: .8rem .9rem .9rem; }
    .pvl-photo-meta .pvi-ring { margin-left: auto; }
    .pvl-photo-card .pvb-media::before { padding-top: 115%; }
    .pvl-facts-grid { grid-template-columns: repeat(3, 1fr); }
}

/* --- Гостевой режим + своя анкета + blur --------------------------- */
.pvl-guest-strip { display: none; }
.pvi-wrap.is-guest .pvk-stick { position: relative; top: 0; z-index: 45; }
.pvi-wrap.is-guest .pvk-bottom,
.pvi-wrap.is-guest .pvl-gifts,
.pvi-wrap.is-guest .pvk-photo-more,
.pvi-wrap.is-guest .pvl-photo-meta,
.pvi-wrap.is-guest .pvk-spy-wrap,
.pvi-wrap.is-guest .pvi-ring { display: none !important; }
.pvi-wrap.is-guest .pvl-guest-strip { display: flex; position: sticky; top: 1.5rem; z-index: 45; margin-top: 2rem; box-shadow: 0 6px 20px rgba(35,44,61,.12); }
.pvl-guest-strip + .pvi-zone { margin-top: 1rem; }

.pvl-own-edit { display: none; }
.pvi-wrap.is-own .pvk-dock .pvk-sq { display: none; }
.pvi-wrap.is-own .pvl-own-edit { display: inline-flex; }
.pvi-wrap.is-own .pvi-ring,
.pvi-wrap.is-own .pvl-photo-meta,
.pvi-wrap.is-own .pvk-spy-wrap,
.pvi-wrap.is-own .pvk-photo-more,
.pvi-wrap.is-own .pvl-gifts .pvk-action,
.pvi-wrap.is-own .pvl-gifts-label,
.pvi-wrap.is-own .pvl-private-req,
.pvi-wrap.is-own .pvl-private-guest { display: none !important; }
.pvi-wrap.is-own .pvl-private .pv-thumb-private img,
.pvi-wrap.is-own .pvl-private[data-state] .pv-thumb-private img { filter: none; }
.pvi-btn-ghost { color: #748194; box-shadow: inset 0 0 0 1px rgba(73,80,87,.35); }

/* blur-заглушка полей анкеты для гостя (drop-blur над ProfileExtraFields) */
.pvl-blur-wrap { grid-column: 1 / -1; display: grid; grid-template-columns: repeat(2, 1fr); gap: 1rem; position: relative; }
.pvl-blur-wrap > * { grid-column: 1 / -1; }
@media (max-width: 767.98px) { .pvl-blur-wrap { grid-template-columns: 1fr; } }
.pvi-wrap.is-guest .pvl-blur-wrap > *:not(.pvl-drop-blur) { filter: blur(6px); pointer-events: none; user-select: none; }
.pvl-drop-blur { display: none; position: absolute; inset: 0; z-index: 6; align-items: center; justify-content: center; text-align: center; padding: 1rem; font-size: .92rem; font-weight: 600; color: #232c3d; }
.pvi-wrap.is-guest .pvl-drop-blur { display: flex; }
.pvl-drop-blur a { color: #206bc4; }

/* приватные фото: во всю ширину, крупнее, кнопка запроса снизу */
.pvl-private-body { flex-basis: 100%; margin-top: .35rem; }
.pvl-private-thumbs { display: grid; grid-template-columns: repeat(3, 1fr); gap: .6rem; }
.pvl-private-thumbs .pv-thumb { width: 100%; height: auto; aspect-ratio: 4/3; border-radius: .8rem; }
.pvl-private-req { width: 100%; margin-top: .8rem; }
/* data-state: locked / pending / granted */
.pvl-private[data-state="pending"] .pvl-private-req { background: linear-gradient(135deg,#f59f00,#f7b731); box-shadow: 0 8px 18px rgba(245,159,0,.35); }
.pvl-private[data-state="granted"] .pv-thumb-private img { filter: none; }
.pvl-private[data-state="granted"] .pv-thumb-lock { display: none; }
.pvl-private[data-state="granted"] .pvl-private-req { background: linear-gradient(135deg,#2fb344,#5eba00); box-shadow: 0 8px 18px rgba(47,179,68,.35); }
.pvl-private-guest { display: none; }
.pvi-wrap.is-guest .pvl-private-req { display: none; }
.pvi-wrap.is-guest .pvl-private-guest { display: inline-flex; width: 100%; margin-top: .8rem; justify-content: center; }

/* --- Адаптив — как у services ------------------------------------- */
@media (max-width: 575.98px) {
    .pvi-zone + .pvi-zone { margin-top: 1.4rem; }
    .pvi-strip { gap: .6rem .75rem; padding: .75rem .9rem; }
    .pvi-icon { width: 2.5rem; height: 2.5rem; min-width: 2.5rem; border-radius: .8rem; font-size: 1.05rem; }
    .pvi-ava { width: 3.4rem; height: 3.4rem; min-width: 3.4rem; }
    .pvi-main { flex: 1 1 7rem; }
    .pvi-name { font-size: 1rem; }
    .pvk-stick .pvi-main { min-height: 3.4rem; }
    .pvk-stick .pvi-name { font-size: 1.05rem; }
    .pvk-stick .pvi-sub { margin-top: 0; }
    .pvk-stick .pvi-uname { font-size: .82rem; }
    .pvi-actions { flex-basis: 100%; margin-left: 0; }
    .pvi-actions .pvi-btn { flex: 1 1 auto; }
    .pvi-ring { width: 2.9rem; height: 2.9rem; min-width: 2.9rem; }
    .pvi-ring > b { width: 2.3rem; height: 2.3rem; font-size: .82rem; }
    /* у лайкнутых дуга скрыта (background:none) — диск на всё кольцо,
       у обычных дуга совместимости остаётся видимой */
    .pvi-ring[data-pvk-view="like"] > b { width: 2.9rem; height: 2.9rem; }
    .pvi-ring > b small { font-size: .48rem; }
    .pvi-quick { margin-top: .55rem; }
    .pvi-card { padding: 1rem .95rem; }
    .pvi-facts { grid-template-columns: 1fr 1fr; }
}
@media (prefers-reduced-motion: reduce) {
    .pvl-media-live::before { animation: none; }
    .pvi-ring[data-pvk-view="like"],
    .pvi-ring .pvi-ring-hearts { animation: none; }
    .pvk-heart-burst, .pvk-sq.pvk-just-liked, .pvk-sq.pvk-shake,
    .pvi-ring.pvk-ring-burst { animation: none !important; }
    .is-marquee .pvi-scroll { animation: none; }
    .pvi-icon, .pvi-strip, .pvi-card, .pvi-btn, .pvk-stick-back, .pvk-stick .pvi-ava { transition: none !important; }
}

/* --- Адаптация вывода существующих виджетов под стрипы ---------------- */
/* anchor в роли media-блока */
.pvb-media { display: block; }
/* счётчик «+N фото» в ленте тумб */
.pv-thumb-more { display: flex; align-items: center; justify-content: center; background: rgba(59,74,99,.85); color: #fff; font-weight: 600; font-size: .95rem; text-decoration: none; }
.pv-thumb-more:hover { color: #fff; text-decoration: none; }
/* GiftsWidget (.card.card-gifts) внутри прозрачного стрипа — как карусель */
.pvl-gifts-carousel .card { background: transparent; border: 0; box-shadow: none; }
.pvl-gifts-carousel .card-body { padding: 0; }
.pvl-gifts-carousel .card-gifts h5 { font-size: 0; margin: 0 0 .4rem; }
.pvl-gifts-carousel .card-gifts h5 .text-muted { font-size: .78rem; }
.pvl-gifts-carousel .card-gifts h5::first-line { font-size: 1.05rem; font-weight: 700; color: #232c3d; }
.pvl-gifts-carousel .gifts.row { margin: 0; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; -ms-overflow-style: none; }
.pvl-gifts-carousel .gifts.row::-webkit-scrollbar { display: none; }
.pvl-gifts-carousel .gift { flex: 0 0 auto; text-align: center; }
.pvl-gifts-carousel .gift img { width: 88px; height: 88px; object-fit: contain; display: block; margin: 0 auto .25rem; transition: transform .3s cubic-bezier(.25,.6,.35,1); }
.pvl-gifts-carousel .gift img:hover { transform: scale(1.1); }
.pvl-gifts-carousel .gift .sender { font-size: .64rem; color: #9da9bb; max-width: 88px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
body:is(.dark,.theme-dark) .pvl-gifts-carousel .card-gifts h5::first-line { color: #e6e9f0; }
/* PopularityWidget (.card) внутри стрипа — только прогресс-бар */
.pvl-popularity .card { background: transparent; border: 0; box-shadow: none; margin: 0; }
.pvl-popularity .card-body { padding: 0; }
.pvl-popularity .card h5 { font-size: .9rem; font-weight: 700; color: #232c3d; margin: 0 0 .45rem; }
.pvl-popularity .card h5 .text-muted { font-weight: 400; }
body:is(.dark,.theme-dark) .pvl-popularity .card h5 { color: #e6e9f0; }
/* «ещё»-dropdown внутри фикс-дока открывается вверх и правее */
.pvk-bottom .dropdown-menu { top: auto; bottom: calc(100% + .4rem); margin-bottom: 0; }

/* --- Тёмная тема ---------------------------------------------------- */
body:is(.dark,.theme-dark) .pvi-strip, body:is(.dark,.theme-dark) .pvi-card, body:is(.dark,.theme-dark) .pvi-photo-card { background: #23232b; border-color: rgba(255,255,255,.08); }
body:is(.dark,.theme-dark) .pvi-name, body:is(.dark,.theme-dark) .pvi-card-title, body:is(.dark,.theme-dark) .pvi-fact-v,
body:is(.dark,.theme-dark) .pvl-dating-line { color: #e6e9f0; }
body:is(.dark,.theme-dark) .pvi-ring > b { background: #23232b; color: #e6e9f0; }
body:is(.dark,.theme-dark) .pvi-ring { background: conic-gradient(var(--ring-c) calc(var(--p) * 1%), rgba(255,255,255,.12) 0); }
body:is(.dark,.theme-dark) .pvi-sub, body:is(.dark,.theme-dark) .pvi-card-caption { color: #9da9bb; }
body:is(.dark,.theme-dark) .pvi-zone-title { color: #9da9bb; }
body:is(.dark,.theme-dark) .pvi-quick-item { background: #2b2b33; border-color: rgba(255,255,255,.1); color: #c6ccda; }
body:is(.dark,.theme-dark) .pvl-pop-bar { background: rgba(255,255,255,.12); }
body:is(.dark,.theme-dark) .pvi-benefit, body:is(.dark,.theme-dark) .pvi-about { color: #c6ccda; }
body:is(.dark,.theme-dark) .pvi-btn-ghost { color: #9da9bb; box-shadow: inset 0 0 0 1px rgba(255,255,255,.2); }
body:is(.dark,.theme-dark) .pvi-btn-ghost:hover { color: #e6e9f0; box-shadow: inset 0 0 0 1px rgba(255,255,255,.35); }
body:is(.dark,.theme-dark) .pvk-dock { background: rgba(30,30,36,.95); border-color: rgba(255,255,255,.1); }
body:is(.dark,.theme-dark) .pvk-sq-ghost { color: #9da9bb; box-shadow: inset 0 0 0 1px rgba(255,255,255,.2); }
body:is(.dark,.theme-dark) .pvk-sq-ghost:hover { color: #e6e9f0; }
body:is(.dark,.theme-dark) .pvk-sq.btn-not-liked { color: #9da9bb; box-shadow: inset 0 0 0 2px rgba(255,255,255,.25); }
body:is(.dark,.theme-dark) .pvk-sq.btn-not-liked:hover { color: #f66d9b; box-shadow: inset 0 0 0 2px rgba(246,109,155,.55); }
body:is(.dark,.theme-dark) .pvk-spy-label { color: #9da9bb; }
body:is(.dark,.theme-dark) .pv-thumb { background: #2b2b33; }
body:is(.dark,.theme-dark) .pvb-media { background: #2b2b33; }
body:is(.dark,.theme-dark) .pvl-gifts { background: transparent; border-color: transparent; box-shadow: none; }
body:is(.dark,.theme-dark) .pvl-gifts-label { background: rgba(214,51,132,.22); }
body:is(.dark,.theme-dark) .pvl-gifts .pvk-action { background: #2b2b33; box-shadow: inset 0 0 0 1px rgba(255,255,255,.14); color: #9da9bb; }
body:is(.dark,.theme-dark) .pvl-gifts .pvk-action:hover,
body:is(.dark,.theme-dark) .pvl-gifts .pvk-action:focus { color: #fff; }
body:is(.dark,.theme-dark) .pvc-gifts .gift-carousel-prev, body:is(.dark,.theme-dark) .pvc-gifts .gift-carousel-next { background: rgba(43,43,51,.94); color: #c6ccda; }
body:is(.dark,.theme-dark) .pvc-gifts .gift-carousel-dot { background: rgba(255,255,255,.22); }
body:is(.dark,.theme-dark) .pvc-gifts .gift-carousel-dot.active { background: #5c9cff; }
body:is(.dark,.theme-dark) .pvl-drop-blur { color: #e6e9f0; }
body:is(.dark,.theme-dark) .pvl-drop-blur a { color: #5c9cff; }

/* Auto-режим (body.auto): тёмная по prefers-color-scheme, пока гость не выбрал тему вручную
   (тогда body получает theme-light/theme-dark — см. base.php guest toggle) */
@media (prefers-color-scheme: dark) {
    body.auto:not(.theme-dark):not(.theme-light) .pvl-gifts-carousel .card-gifts h5::first-line { color: #e6e9f0; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-popularity .card h5 { color: #e6e9f0; }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-strip,
    body.auto:not(.theme-dark):not(.theme-light) .pvi-card,
    body.auto:not(.theme-dark):not(.theme-light) .pvi-photo-card { background: #23232b; border-color: rgba(255,255,255,.08); }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-name,
    body.auto:not(.theme-dark):not(.theme-light) .pvi-card-title,
    body.auto:not(.theme-dark):not(.theme-light) .pvi-fact-v,
    body.auto:not(.theme-dark):not(.theme-light) .pvl-dating-line { color: #e6e9f0; }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-ring > b { background: #23232b; color: #e6e9f0; }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-ring { background: conic-gradient(var(--ring-c) calc(var(--p) * 1%), rgba(255,255,255,.12) 0); }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-sub,
    body.auto:not(.theme-dark):not(.theme-light) .pvi-card-caption { color: #9da9bb; }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-zone-title { color: #9da9bb; }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-quick-item { background: #2b2b33; border-color: rgba(255,255,255,.1); color: #c6ccda; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-pop-bar { background: rgba(255,255,255,.12); }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-benefit,
    body.auto:not(.theme-dark):not(.theme-light) .pvi-about { color: #c6ccda; }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-btn-ghost { color: #9da9bb; box-shadow: inset 0 0 0 1px rgba(255,255,255,.2); }
    body.auto:not(.theme-dark):not(.theme-light) .pvi-btn-ghost:hover { color: #e6e9f0; box-shadow: inset 0 0 0 1px rgba(255,255,255,.35); }
    body.auto:not(.theme-dark):not(.theme-light) .pvk-dock { background: rgba(30,30,36,.95); border-color: rgba(255,255,255,.1); }
    body.auto:not(.theme-dark):not(.theme-light) .pvk-sq-ghost { color: #9da9bb; box-shadow: inset 0 0 0 1px rgba(255,255,255,.2); }
    body.auto:not(.theme-dark):not(.theme-light) .pvk-sq-ghost:hover { color: #e6e9f0; }
    body.auto:not(.theme-dark):not(.theme-light) .pvk-sq.btn-not-liked { color: #9da9bb; box-shadow: inset 0 0 0 2px rgba(255,255,255,.25); }
    body.auto:not(.theme-dark):not(.theme-light) .pvk-sq.btn-not-liked:hover { color: #f66d9b; box-shadow: inset 0 0 0 2px rgba(246,109,155,.55); }
    body.auto:not(.theme-dark):not(.theme-light) .pvk-spy-label { color: #9da9bb; }
    body.auto:not(.theme-dark):not(.theme-light) .pv-thumb { background: #2b2b33; }
    body.auto:not(.theme-dark):not(.theme-light) .pvb-media { background: #2b2b33; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-gifts { background: transparent; border-color: transparent; box-shadow: none; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-gifts-label { background: rgba(214,51,132,.22); }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-gifts .pvk-action { background: #2b2b33; box-shadow: inset 0 0 0 1px rgba(255,255,255,.14); color: #9da9bb; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-gifts .pvk-action:hover,
    body.auto:not(.theme-dark):not(.theme-light) .pvl-gifts .pvk-action:focus { color: #fff; }
    body.auto:not(.theme-dark):not(.theme-light) .pvc-gifts .gift-carousel-prev,
    body.auto:not(.theme-dark):not(.theme-light) .pvc-gifts .gift-carousel-next { background: rgba(43,43,51,.94); color: #c6ccda; }
    body.auto:not(.theme-dark):not(.theme-light) .pvc-gifts .gift-carousel-dot { background: rgba(255,255,255,.22); }
    body.auto:not(.theme-dark):not(.theme-light) .pvc-gifts .gift-carousel-dot.active { background: #5c9cff; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-drop-blur { color: #e6e9f0; }
    body.auto:not(.theme-dark):not(.theme-light) .pvl-drop-blur a { color: #5c9cff; }
}

/* своя анкета, мобильная: нижний док не нужен — «Редактировать» строкой внутри стрипа */
.pvl-own-edit-mobile { display: none; }
@media (max-width: 767.98px) {
    .pvi-wrap.is-own .pvk-bottom { display: none !important; }
    .pvi-wrap.is-own .pvl-own-edit-mobile { display: flex; }
    /* иконка подарка на мобильной — сразу модалка, без выезжающей подписи */
    .pvl-gifts-label { display: none !important; }
}
