/* Profile and user-profile feature styles. */ .badge.profile-badge-trigger { user-select: none; -webkit-user-select: none; -webkit-touch-callout: none; } .badge.profile-badge-trigger:active { transform: scale(0.98); filter: brightness(0.96); } .badge.profile-badge-trigger { cursor: pointer; } .badge.profile-toggle-btn { color: #fff; background: transparent; background-image: none; border: 0; box-shadow: none; text-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; transition: transform 90ms ease, box-shadow 90ms ease, background-color 90ms ease, filter 120ms ease; } .badge.profile-toggle-btn:hover { color: #fff; background: transparent; border: 0; box-shadow: none; filter: brightness(1.12); } .badge.profile-toggle-btn:active { color: #fff; background: rgba(0, 0, 0, 0.12); border: 0; box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.58), inset 0 -1px 2px rgba(255, 255, 255, 0.08); transform: translateY(1px) scale(0.97); filter: brightness(0.9); } .badge.profile-toggle-btn:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.62); outline-offset: 2px; } .profile-help-modal[hidden] { display: none; } .profile-help-modal { position: fixed; inset: 0; z-index: 20; } .profile-help-backdrop { position: absolute; inset: 0; background: rgba(5, 9, 16, 0.72); backdrop-filter: blur(4px); } .profile-help-dialog { position: absolute; left: 16px; right: 16px; bottom: 24px; display: grid; gap: 12px; padding: 16px; box-shadow: var(--shadow); } .profile-help-text { color: #d8e3ff; line-height: 1.45; font-size: 14px; } .profile-data-help p { margin-top: 6px; line-height: 1.4; color: #d8e3ff; } .profile-param-list { gap: 8px; } .profile-identity-lines { display: grid; gap: 4px; } .profile-identity-line { line-height: 1.2; color: #eef3ff; font-size: 17px; } .profile-identity-login { font-weight: 700; font-size: 20px; } .profile-avatar-block { display: grid; justify-items: center; gap: 8px; } .profile-avatar { position: relative; overflow: hidden; } .profile-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: center; display: block; } .profile-avatar-change-btn { min-height: 34px; padding: 6px 10px; } .profile-param-item { padding: 10px; gap: 6px; } .profile-param-head { display: flex; justify-content: space-between; gap: 8px; } .profile-param-value { font-size: 15px; color: #eef3ff; word-break: break-word; } .profile-param-value-small { font-size: 13px; } .profile-gender-select, .profile-relation-select { min-height: 46px; border-radius: 12px; border: 1px solid rgba(157, 185, 238, 0.35); background: linear-gradient(150deg, rgba(23, 43, 79, 0.9), rgba(10, 22, 44, 0.92)); color: #eef4ff; font-weight: 600; letter-spacing: 0.01em; } .profile-gender-select:focus, .profile-relation-select:focus { border-color: rgba(120, 211, 255, 0.9); box-shadow: 0 0 0 3px rgba(65, 174, 255, 0.2); } .profile-relative-search-meta { font-size: 12px; line-height: 1.35; } .profile-relative-search-suggest { max-height: 180px; overflow-y: auto; border: 1px solid rgba(150, 174, 224, 0.3); border-radius: 12px; background: rgba(9, 18, 35, 0.94); padding: 6px; } .profile-relative-suggest-item { width: 100%; text-align: left; border-radius: 9px; padding: 8px 10px; cursor: pointer; margin-bottom: 6px; } .profile-relative-suggest-item:last-child { margin-bottom: 0; } .profile-relative-suggest-item:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.62); outline-offset: 2px; } .profile-relative-suggest-item::before, .profile-relative-suggest-item::after { background: transparent; background-image: none; border-color: transparent; box-shadow: none; } .profile-param-time { font-size: 12px; } .profile-avatar img { width: 100%; height: 100%; object-fit: cover; object-position: center; border-radius: 50%; display: block; opacity: 0; transition: opacity 120ms ease; } .user-relations-list { gap: 6px; } .user-rel-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; align-items: center; gap: 10px; min-height: 38px; padding: 6px 8px; border-radius: 10px; border: 1px solid rgba(255, 255, 255, 0.08); background: rgba(8, 14, 24, 0.34); color: #d8e3ff; font-size: 14px; } .user-rel-text { min-height: 1em; color: #dbe8ff; line-height: 1.3; } .user-rel-action { min-height: 32px; padding: 5px 10px; white-space: nowrap; } .user-rel-row.is-empty .user-rel-text { color: transparent; } .user-rel-opinions-wrap { display: grid; gap: 8px; padding: 6px 8px; border-radius: 10px; border: 1px dashed rgba(131, 196, 255, 0.45); background: rgba(9, 18, 31, 0.42); } .user-rel-opinions-wrap.is-empty .user-rel-opinions-list { display: none; } .user-rel-opinions-list { display: grid; gap: 6px; } .user-rel-opinion-item { color: #d7e6ff; line-height: 1.35; font-size: 13px; } .user-rel-opinions-hint { color: rgba(173, 199, 236, 0.9); font-size: 12px; } .user-opinion-modal-btn { text-align: left; } .user-opinion-modal-btn.is-add { border-color: rgba(97, 170, 255, 0.7); color: #9fcbff; } .user-opinion-modal-btn.is-remove { border-color: rgba(255, 120, 120, 0.72); color: #ff9b9b; } .profile-screen .avatar-xl, .profile-screen .avatar.large { position: relative; border-radius: 50%; overflow: hidden; border: 1px solid rgba(130, 198, 255, 0.62); background: radial-gradient(circle at 30% 28%, rgba(161, 204, 255, 0.95), rgba(89, 141, 220, 0.92) 46%, rgba(32, 71, 136, 0.95) 72%, rgba(20, 48, 99, 0.98) 100%); color: #f3f8ff; box-shadow: inset 0 1px 0 rgba(240, 248, 255, 0.6), inset 0 -10px 18px rgba(12, 33, 72, 0.5), 0 0 0 2px rgba(72, 155, 248, 0.28), 0 12px 24px rgba(8, 24, 55, 0.42); } .profile-screen .avatar-xl::after, .profile-screen .avatar.large::after { content: ""; position: absolute; top: 14%; left: 18%; width: 42%; height: 28%; border-radius: 50%; background: radial-gradient(circle, rgba(255, 255, 255, 0.5), rgba(255, 255, 255, 0) 72%); pointer-events: none; } /* ===== Profile glass style (same visual family as DM) ===== */ .profile-screen { position: relative; isolation: isolate; color: rgba(255, 255, 255, 0.9); min-height: 100%; gap: 4px; align-content: start; grid-auto-rows: max-content; } .profile-screen::before { content: ""; position: absolute; inset: -12px -12px 0; z-index: -1; pointer-events: none; background: radial-gradient(260px 260px at 86% 10%, rgba(147, 112, 219, 0.22), transparent 72%), radial-gradient(220px 220px at 14% 84%, rgba(147, 112, 219, 0.18), transparent 72%), radial-gradient(220px 220px at 76% 68%, rgba(212, 175, 55, 0.14), transparent 75%), radial-gradient(190px 190px at 26% 20%, rgba(212, 175, 55, 0.1), transparent 74%), #05070A; } .profile-screen .card, .profile-screen .profile-param-item, .profile-screen .profile-relative-search-suggest { background: rgba(20, 25, 35, 0.4); backdrop-filter: blur(25px); -webkit-backdrop-filter: blur(25px); border: 1px solid transparent; box-shadow: 0 8px 32px rgba(0, 0, 0, 0.37); } .profile-top-actions { display: flex; justify-content: flex-end; gap: 8px; } .profile-top-action-btn { position: relative; width: 48px; height: 48px; min-width: 48px; min-height: 48px; padding: 0; display: inline-flex; align-items: center; justify-content: center; border-radius: 15px; } .profile-top-icon-btn img { width: 48px; height: 48px; display: block; opacity: 0.94; filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.34)); } .profile-top-icon-btn.is-active { border-color: transparent; background: rgba(212, 175, 55, 0.12); box-shadow: 0 10px 22px rgba(0, 0, 0, 0.22); } .profile-top-icon-btn:hover { border-color: rgba(230, 236, 245, 0.28); } .profile-info-modal { padding: 16px; background: rgba(2, 5, 11, 0.7); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); } .profile-info-modal__card { width: min(100%, 430px); max-height: calc(100dvh - 32px); overflow: auto; padding: 20px; gap: 18px; border: 1px solid rgba(142, 180, 242, 0.34); border-radius: 16px; background: rgba(13, 23, 42, 0.96); box-shadow: 0 24px 64px rgba(0, 0, 0, 0.52); font-family: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Segoe UI", sans-serif; } .profile-info-modal__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; } .profile-info-modal__eyebrow { margin: 0 0 5px; color: rgba(177, 203, 244, 0.7); font-size: 12px; font-weight: 600; line-height: 1.2; } .profile-info-modal__title { color: #f4f7ff; font-size: 22px; font-weight: 700; line-height: 1.18; } .profile-info-modal__close { display: grid; flex: 0 0 32px; width: 32px; height: 32px; padding: 0; place-items: center; border: 1px solid rgba(171, 195, 235, 0.25); border-radius: 8px; background: rgba(145, 172, 223, 0.1); color: rgba(244, 247, 255, 0.94); font-size: 25px; font-weight: 300; line-height: 1; cursor: pointer; } .profile-info-modal__close:hover { background: rgba(145, 172, 223, 0.2); } .profile-info-modal__content { display: grid; gap: 18px; color: rgba(229, 237, 255, 0.86); font-size: 16px; line-height: 1.52; } .profile-info-modal__lead { margin: 0; } .profile-info-modal__section { padding-top: 16px; border-top: 1px solid rgba(174, 200, 242, 0.18); } .profile-info-modal__section-title { margin: 0 0 10px; color: rgba(244, 247, 255, 0.95); font-size: 15px; font-weight: 650; line-height: 1.35; } .profile-info-modal__list { display: grid; gap: 8px; margin: 0; padding-left: 22px; } .profile-info-modal__list li { padding-left: 2px; } .profile-info-modal__footer { display: flex; justify-content: flex-end; } .profile-info-modal__confirm { min-width: 112px; font-weight: 650; } @media (max-width: 360px) { .profile-info-modal__card { padding: 16px; gap: 16px; } .profile-info-modal__title { font-size: 20px; } .profile-info-modal__content { font-size: 15px; } } .profile-links-header-btn { white-space: pre-line; line-height: 1.1; } .profile-main-card { position: relative; margin-top: 0; padding: 8px; gap: 4px; } .profile-main-card .profile-top-actions { position: absolute; top: 8px; right: 8px; z-index: 2; } .profile-status-row { align-items: center; gap: 6px; } .profile-status-row .status-line { flex: 1 1 auto; min-height: 16px; margin: 0; line-height: 1.2; } .profile-refresh-btn { min-height: 28px; padding: 5px 8px; font-size: 12px; line-height: 1.1; } .profile-main-card > .row { margin: 0; } .profile-main-card > .row:first-child { margin-top: 0; } .profile-main-card .profile-identity-lines { gap: 2px; } .profile-main-card .profile-identity-line { font-size: 15px; } .profile-main-card .profile-identity-login { font-size: 17px; } .profile-main-card .profile-avatar { margin-top: 4px; margin-bottom: 4px; } .profile-main-card .profile-param-list { gap: 6px; } .profile-main-card .profile-param-item { padding: 8px 9px; } .profile-screen::before { content: none; } .profile-screen .profile-param-item { border: 0; } .profile-screen .profile-main-card { border-color: transparent; } /* ===== Профиль другого пользователя: плавающая композиция без рамок (2026-09-01) ===== */ .user-profile-screen::before { content: ""; position: absolute; z-index: -1; inset: 4% 0 14%; pointer-events: none; background: radial-gradient(circle at 50% 27%, rgba(73, 113, 189, 0.16), transparent 29%), radial-gradient(circle at 25% 58%, rgba(49, 198, 255, 0.08), transparent 24%), radial-gradient(circle at 76% 56%, rgba(224, 190, 86, 0.07), transparent 25%); filter: blur(18px); } .user-profile-status { min-height: 0; margin: 0; text-align: center; font-size: 12px; } .user-profile-status:empty { display: none; } .user-profile-body { display: flex; flex-direction: column; align-items: stretch; min-height: 0; padding: 0 0 10px; } .user-profile-full-name { width: min(88%, 340px); margin: -5px auto clamp(13px, 2vh, 17px); color: rgba(239, 246, 255, 0.94); font-size: clamp(16px, 4.5vw, 19px); font-weight: 700; line-height: 1.2; text-align: center; overflow-wrap: anywhere; } .user-profile-hero { display: grid; grid-template-columns: minmax(0, 1fr) var(--user-profile-avatar-size) minmax(0, 1fr); grid-template-rows: 1fr 1fr; align-items: stretch; width: 100%; height: var(--user-profile-avatar-size); margin-top: 0; } .user-profile-avatar-slot { grid-column: 2; grid-row: 1 / 3; width: var(--user-profile-avatar-size); height: var(--user-profile-avatar-size); display: grid; place-items: center; align-self: center; justify-self: center; z-index: 2; } .user-profile-screen .user-profile-hero-avatar.avatar, .user-profile-screen .user-profile-hero-avatar.avatar-image { width: 100%; height: 100%; min-width: 100%; min-height: 100%; overflow: visible; border: 0; background: transparent; box-shadow: none; } /* На профиле используем ту же стеклянную обводку аватара, что и в остальных местах приложения. */ .user-profile-screen .user-profile-hero-avatar.avatar-framed::after { display: block; } .user-profile-screen .user-profile-hero-avatar.avatar-framed > .avatar-fallback, .user-profile-screen .user-profile-hero-avatar.avatar-framed > .avatar-photo { width: 92.5%; height: 92.5%; } .user-profile-screen .user-profile-hero-avatar.avatar-glow::before { inset: -12%; opacity: 0.5; } .user-profile-screen .user-profile-hero-avatar .avatar-fallback { font-size: clamp(34px, 9vw, 58px); font-weight: 800; } .user-profile-about-inline { width: min(86%, 340px); margin: clamp(28px, 4.6vh, 36px) auto 0; padding: 0; border: 0; background: transparent; box-shadow: none; color: rgba(225, 234, 248, 0.82); font-size: 14px; line-height: 1.5; text-align: center; white-space: pre-wrap; overflow-wrap: anywhere; } .user-profile-metric { width: min(100%, 92px); min-width: 0; padding: 0; border: 0; background: transparent; box-shadow: none; display: flex; flex-direction: column; align-items: center; gap: 5px; color: #fff; cursor: pointer; transition: transform 90ms ease, box-shadow 90ms ease, background-color 90ms ease, filter 120ms ease; } .user-profile-metric:hover { filter: brightness(1.12); } .user-profile-metric:active { background: rgba(0, 0, 0, 0.12); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.58), inset 0 -1px 2px rgba(255, 255, 255, 0.08); transform: translateY(1px) scale(0.97); filter: brightness(0.9); } .user-profile-metric:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.62); outline-offset: 2px; } .user-profile-metric:focus-visible .user-profile-metric-circle, .user-profile-metric:active .user-profile-metric-circle { transform: scale(0.94); } .user-profile-metric-circle { width: var(--user-profile-metric-size); height: var(--user-profile-metric-size); min-width: var(--user-profile-metric-size); min-height: var(--user-profile-metric-size); border-radius: 50%; display: grid; place-items: center; border: 0; background: rgba(14, 25, 43, 0.34); box-shadow: none; color: rgba(238, 246, 255, 0.94); font-size: clamp(15px, 4.2vw, 19px); font-weight: 800; line-height: 1; transition: transform 120ms ease, filter 160ms ease, box-shadow 160ms ease; } .user-profile-metric.is-glowing .user-profile-metric-circle { color: var(--app-topbar-gold); background: rgba(14, 25, 43, 0.42); box-shadow: 0 0 8px var(--app-topbar-blue-glow), 0 0 22px var(--app-topbar-blue-glow-soft), 0 0 38px rgba(72, 145, 255, 0.18); text-shadow: 0 0 5px var(--app-topbar-blue-glow), 0 0 14px var(--app-topbar-blue-glow-soft); } .user-profile-metric-label { width: 100%; min-height: 24px; color: rgba(205, 220, 243, 0.78); font-size: clamp(9px, 2.8vw, 11px); font-weight: 600; line-height: 1.08; text-align: center; } /* Парные подписи читаются от центра: у левых к аватару прижат конец текста, у правых — начало. */ .user-profile-hero .user-profile-metric.is-top-left .user-profile-metric-label, .user-profile-hero .user-profile-metric.is-bottom-left .user-profile-metric-label { text-align: right; align-self: flex-end; } .user-profile-hero .user-profile-metric.is-top-right .user-profile-metric-label, .user-profile-hero .user-profile-metric.is-bottom-right .user-profile-metric-label { text-align: left; align-self: flex-start; } .user-profile-channel-metrics { width: 66.666%; margin: clamp(22px, 4vh, 30px) auto 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: start; justify-items: center; } .user-profile-channel-metrics .user-profile-metric { width: 100%; } .user-profile-channel-metrics .user-profile-metric-label { min-height: 16px; font-size: 11px; } .user-profile-actions-wrap { position: relative; width: min(86%, 310px); margin: clamp(18px, 3.4vh, 26px) auto 0; } .user-profile-actions { display: grid; grid-template-columns: repeat(3, 1fr); align-items: center; justify-items: center; } .user-profile-action-btn { width: 54px; height: 54px; min-width: 54px; min-height: 54px; padding: 7px; display: grid; place-items: center; border-radius: 50%; cursor: pointer; opacity: 0.9; color: #fff; background: transparent; border: 0; box-shadow: none; text-shadow: none; backdrop-filter: none; -webkit-backdrop-filter: none; transition: transform 90ms ease, box-shadow 90ms ease, background-color 90ms ease, filter 120ms ease, opacity 160ms ease; } .user-profile-action-btn:hover { opacity: 1; color: #fff; background: transparent; border: 0; box-shadow: none; filter: brightness(1.12); } .user-profile-action-btn:focus-visible { opacity: 1; outline: 2px solid rgba(255, 255, 255, 0.62); outline-offset: 2px; filter: drop-shadow(0 0 10px rgba(95, 196, 255, 0.42)); } .user-profile-action-btn:active { color: #fff; background: rgba(0, 0, 0, 0.12); border: 0; box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.58), inset 0 -1px 2px rgba(255, 255, 255, 0.08); transform: translateY(1px) scale(0.97); filter: brightness(0.9); } .user-profile-action-btn.is-active { filter: drop-shadow(0 0 9px rgba(83, 211, 255, 0.52)); } .user-profile-action-btn::before, .user-profile-action-btn::after { background: transparent; background-image: none; border-color: transparent; box-shadow: none; } .user-profile-action-btn img { display: block; width: 32px; height: 32px; object-fit: contain; } .user-profile-action-btn.is-links img { width: 39px; height: 39px; filter: brightness(1.08); } .user-profile-action-svg { width: 38px; height: 38px; overflow: visible; fill: none; stroke: currentColor; stroke-width: 2.8; stroke-linecap: round; stroke-linejoin: round; } .user-profile-add-menu { position: absolute; z-index: 12; left: 0; bottom: calc(100% + 8px); width: min(190px, 68vw); padding: 6px 4px; border: 0; border-radius: 18px; background: linear-gradient(180deg, rgba(13, 20, 35, 0.93), rgba(5, 10, 20, 0.88)); box-shadow: 0 18px 42px rgba(0, 0, 0, 0.38); backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); transform-origin: 28px 100%; animation: user-profile-menu-in 130ms ease-out both; } .user-profile-add-menu[hidden] { display: none !important; } .user-profile-add-menu.is-busy { pointer-events: none; opacity: 0.58; } .user-profile-add-option { width: 100%; min-height: 42px; padding: 8px 11px; border: 0; border-radius: 12px; background: transparent; box-shadow: none; display: grid; grid-template-columns: 1fr 24px; align-items: center; gap: 8px; text-align: left; color: #fff; font-size: 13px; cursor: pointer; transition: transform 90ms ease, box-shadow 90ms ease, background-color 90ms ease, filter 120ms ease; } .user-profile-add-option:hover { color: #fff; background: transparent; border: 0; box-shadow: none; filter: brightness(1.12); } .user-profile-add-option:active { color: #fff; background: rgba(0, 0, 0, 0.12); border: 0; box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.58), inset 0 -1px 2px rgba(255, 255, 255, 0.08); transform: translateY(1px) scale(0.97); filter: brightness(0.9); } .user-profile-add-option:focus-visible { outline: 2px solid rgba(255, 255, 255, 0.62); outline-offset: 2px; } .user-profile-add-option-check { color: #8deeff; font-weight: 800; text-align: center; text-shadow: 0 0 9px rgba(89, 224, 255, 0.7); } .user-profile-detail-links { width: min(86%, 330px); margin: clamp(16px, 3vh, 24px) auto 0; display: flex; align-items: center; justify-content: space-between; gap: 30px; } .user-profile-detail-links button { position: relative; isolation: isolate; min-height: 38px; padding: 5px 8px; border: 0; background: transparent; box-shadow: none; font-size: 15px; font-weight: 650; cursor: pointer; } .user-profile-detail-links button::before { content: ""; position: absolute; z-index: -1; left: 50%; top: 50%; width: 112px; height: 34px; transform: translate(-50%, -50%); border-radius: 50%; pointer-events: none; filter: blur(4px); } .user-profile-sheet-backdrop { position: fixed; z-index: 1400; inset: 0; display: flex; align-items: flex-end; justify-content: center; padding: 0 max(10px, env(safe-area-inset-right)) max(10px, env(safe-area-inset-bottom)) max(10px, env(safe-area-inset-left)); background: rgba(0, 0, 0, 0.34); backdrop-filter: blur(3px); -webkit-backdrop-filter: blur(3px); } .user-profile-sheet { width: min(100%, 410px); max-height: min(58vh, 480px); overflow: auto; padding: 10px 20px calc(22px + env(safe-area-inset-bottom)); border: 0; border-radius: 28px 28px 18px 18px; background: radial-gradient(circle at 50% -12%, rgba(73, 145, 211, 0.16), transparent 42%), linear-gradient(180deg, rgba(13, 20, 34, 0.96), rgba(5, 9, 17, 0.97)); box-shadow: 0 -20px 55px rgba(0, 0, 0, 0.46); animation: user-profile-sheet-in 180ms ease-out both; } .user-profile-sheet-handle { width: 42px; height: 4px; margin: 1px auto 14px; border-radius: 999px; background: rgba(211, 226, 246, 0.2); } .user-profile-sheet-title { margin-bottom: 16px; color: #f2f7ff; font-size: 19px; font-weight: 800; text-align: center; } .user-profile-sheet-content { display: grid; gap: 13px; } .user-profile-sheet-copy { white-space: pre-wrap; overflow-wrap: anywhere; color: rgba(225, 234, 248, 0.88); font-size: 14px; line-height: 1.58; } .user-profile-sheet-copy.is-muted { color: rgba(194, 207, 229, 0.56); text-align: center; } .user-profile-contact-row { display: grid; grid-template-columns: minmax(70px, auto) minmax(0, 1fr); gap: 14px; align-items: baseline; } .user-profile-contact-row span { color: rgba(181, 198, 225, 0.56); font-size: 12px; } .user-profile-contact-row b { overflow-wrap: anywhere; color: rgba(233, 240, 252, 0.9); font-size: 14px; font-weight: 600; text-align: right; } @keyframes user-profile-menu-in { from { opacity: 0; transform: translateY(8px) scale(0.96); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes user-profile-sheet-in { from { opacity: 0; transform: translateY(24px); } to { opacity: 1; transform: translateY(0); } } @media (max-height: 700px) { .user-profile-channel-metrics { margin-top: 18px; } .user-profile-actions-wrap { margin-top: 16px; } .user-profile-detail-links { margin-top: 14px; } } @media (max-width: 350px) { .user-profile-screen { --user-profile-metric-size: 40px; } .user-profile-metric-label { font-size: 9px; } .user-profile-actions-wrap { width: 92%; } } /* Боковые метрики: круг строго остаётся внутри высоты аватара, подпись может быть ниже. */ .user-profile-hero > .user-profile-metric { position: relative; height: var(--user-profile-metric-size); gap: 0; } .user-profile-hero > .user-profile-metric .user-profile-metric-label { position: absolute; top: calc(100% + 5px); left: 0; } /* ===== Профиль другого пользователя: геометрия v4 (2026-09-01) ===== * - однородный фон без локальных пятен; * - аватар +10% относительно v3; * - все малые круги +10% и строго симметричны по четвертям высоты аватара; * - неактивные круги полностью прозрачные; * - активное состояние даёт только внешний ореол невидимой окружности (эффект затмения); * - подписи якорятся на собственных кругах и остаются в боковых колонках. */ .user-profile-screen::before { display: none; content: none; } .user-profile-body { padding-top: clamp(10px, 1.8vh, 16px); } .user-profile-hero { grid-template-columns: minmax(0, 1fr) var(--user-profile-avatar-size) minmax(0, 1fr); grid-template-rows: repeat(2, minmax(0, 1fr)); height: var(--user-profile-avatar-size); margin-top: 0; overflow: visible; } /* Боковые метрики имеют ровно размер своего невидимого круга. Это исключает разные смещения слева/справа из-за ширины текста. */ .user-profile-hero > .user-profile-metric { position: relative; width: var(--user-profile-metric-size); min-width: var(--user-profile-metric-size); height: var(--user-profile-metric-size); padding: 0; gap: 0; justify-self: center; align-self: center; overflow: visible; } .user-profile-metric.is-top-right { justify-self: start; grid-column: 3; padding-left: 0; grid-row: 1; align-self: center; } .user-profile-metric.is-top-left { justify-self: end; grid-column: 1; padding-right: 0; grid-row: 1; align-self: center; } .user-profile-metric.is-bottom-right { justify-self: start; grid-column: 3; padding-left: 0; grid-row: 2; align-self: center; flex-direction: column; } .user-profile-metric.is-bottom-left { justify-self: end; grid-column: 1; padding-right: 0; grid-row: 2; align-self: center; flex-direction: column; } .user-profile-metric-circle { position: relative; z-index: 1; width: var(--user-profile-metric-size); height: var(--user-profile-metric-size); min-width: var(--user-profile-metric-size); min-height: var(--user-profile-metric-size); border: 0; background: transparent; box-shadow: none; color: rgba(238, 246, 255, 0.94); font-size: clamp(16px, 4.5vw, 20px); } /* Свет идёт от геометрии невидимой окружности, а не от заливки/рамки. */ .user-profile-metric.is-glowing .user-profile-metric-circle { border: 0; background: transparent; color: var(--app-topbar-gold); box-shadow: 0 0 7px 1px var(--app-topbar-blue-glow), 0 0 20px 4px var(--app-topbar-blue-glow-soft), 0 0 34px 8px rgba(72, 145, 255, 0.12); text-shadow: none; } /* Подпись всегда привязана к центру собственного круга и не влияет на его позицию. */ .user-profile-hero > .user-profile-metric .user-profile-metric-label { position: absolute; top: calc(100% + 5px); left: 50%; width: clamp(76px, 22vw, 104px); min-height: 0; transform: translateX(-50%); padding: 0; text-align: center; align-self: auto; line-height: 1.05; pointer-events: none; } /* Чуть сильнее уводим подписи от аватара к внешним краям, оставаясь связанными с центром соответствующего круга. */ .user-profile-hero > .user-profile-metric.is-top-left .user-profile-metric-label, .user-profile-hero > .user-profile-metric.is-bottom-left .user-profile-metric-label { left: calc(50% - clamp(3px, 1.1vw, 5px)); } .user-profile-hero > .user-profile-metric.is-top-right .user-profile-metric-label, .user-profile-hero > .user-profile-metric.is-bottom-right .user-profile-metric-label { left: calc(50% + clamp(3px, 1.1vw, 5px)); } /* Нижние счётчики используют ту же прозрачную окружность и размер. */ .user-profile-channel-metrics { margin-top: clamp(28px, 4.6vh, 36px); } .user-profile-channel-metrics .user-profile-metric { gap: 5px; } .user-profile-channel-metrics .user-profile-metric-label { position: static; width: 100%; transform: none; text-align: center; } @media (max-height: 700px) { .user-profile-body { padding-top: 8px; } .user-profile-channel-metrics { margin-top: 25px; } } @media (max-width: 350px) { .user-profile-screen { --user-profile-avatar-size: min(36.96vw, 147px); --user-profile-metric-size: 46px; } .user-profile-hero > .user-profile-metric .user-profile-metric-label { width: 72px; font-size: 9px; } } /* ===== 2026-08-28: единое dropdown-меню для чатов / каналов / профиля ===== */ .profile-head-menu .dropdown-menu__item > img { width: 27px; height: 27px; min-width: 27px; flex-basis: 27px; filter: drop-shadow(0 0 6px rgba(101, 183, 255, 0.36)); } .profile-shine-not-interested { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border-radius: 50%; border: 1px solid rgba(170, 180, 205, 0.34); background: rgba(116, 126, 148, 0.14); color: #d7deea; font-size: 20px; line-height: 1; } .profile-param-value { white-space: pre-wrap; overflow-wrap: anywhere; } .profile-shine-not-interested img { width: 22px; height: 22px; display: block; } /* Profile v18 statistics/lists */ .profile-stats-grid {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px} .profile-stat-card {display:flex;flex-direction:column;align-items:flex-start;gap:3px;text-align:left;cursor:pointer} .profile-stat-card b {font-size:22px} .profile-stat-card span {font-size:12px;opacity:.78} .profile-list-row {width:100%;align-items:center;justify-content:flex-start;gap:12px;text-align:left;cursor:pointer;background:transparent;border:0;box-shadow:none;color:#fff} .profile-list-row-text {display:flex;flex:1 1 auto;flex-direction:column;align-items:flex-start;gap:3px;min-width:0;overflow:hidden} .profile-list-row-text b, .profile-list-row-text small {display:block;width:100%;text-align:left;overflow-wrap:anywhere} .profile-list-row-text small {opacity:.68} .profile-bottom-actions {justify-content:center;gap:12px;position:sticky;bottom:12px;z-index:3} .profile-about:empty {display:none} /* ===== Профиль другого пользователя: встроенные вкладки деталей (2026-09-02) ===== * «Духовный путь» и «Контакты» переключают содержимое прямо в свободной области * страницы. Активная кнопка отмечается отдельным сияющим эллипсом вокруг текста. */ .user-profile-screen { position: relative; min-height: 100%; gap: 0; isolation: isolate; overflow-x: hidden; --user-profile-avatar-size: min(36.96vw, 147px); --user-profile-metric-size: clamp(46px, 13.2vw, 53px); margin-top: 0; background: transparent; display: flex; flex-direction: column; } .user-profile-body { flex: 1 0 auto; } .user-profile-detail-links { flex: 0 0 auto; } .user-profile-detail-links button { overflow: visible; } .user-profile-detail-tab-label { position: relative; z-index: 0; display: inline-flex; min-height: 34px; align-items: center; justify-content: center; color: rgba(229, 239, 253, 0.86); transition: color 150ms ease, filter 150ms ease; } .user-profile-detail-tab-label::before { content: ""; position: absolute; z-index: -1; left: 50%; top: 50%; width: calc(100% + 24px); min-width: 112px; height: 34px; transform: translate(-50%, -50%); border: 1px solid transparent; border-radius: 50%; opacity: 0; pointer-events: none; transition: opacity 150ms ease, border-color 150ms ease, box-shadow 150ms ease; } .user-profile-detail-links button.is-active .user-profile-detail-tab-label { color: #f4f9ff; filter: brightness(1.08); } .user-profile-detail-links button.is-active .user-profile-detail-tab-label::before { opacity: 1; border-color: rgba(144, 218, 255, 0.9); box-shadow: 0 0 5px rgba(139, 220, 255, 0.82), 0 0 13px rgba(72, 145, 255, 0.58), 0 0 26px rgba(72, 145, 255, 0.28), inset 0 0 9px rgba(139, 220, 255, 0.16); } .user-profile-detail-panel { width: min(92%, 360px); flex: 1 1 auto; min-height: clamp(104px, 18vh, 170px); margin: clamp(7px, 1.5vh, 12px) auto 0; padding: clamp(10px, 2vh, 16px) 4px 4px; color: rgba(225, 234, 248, 0.88); overflow-wrap: anywhere; } .user-profile-detail-panel[hidden] { display: none !important; } .user-profile-detail-copy { white-space: pre-wrap; overflow-wrap: anywhere; color: rgba(225, 234, 248, 0.88); font-size: 14px; line-height: 1.58; } .user-profile-detail-copy.is-muted { color: rgba(194, 207, 229, 0.56); text-align: center; } .user-profile-detail-panel .user-profile-contact-row { padding: 4px 0; } @media (max-height: 700px) { .user-profile-detail-panel { min-height: 88px; margin-top: 5px; padding-top: 8px; } } /* ===== Профиль другого пользователя: сияние активной вкладки от букв (2026-09-02) ===== * Без жёсткой рамки: синий свет рождается на глифах текста и мягко затухает * в вытянутом эллиптическом ореоле вокруг подписи. */ .user-profile-detail-tab-label::before { width: calc(100% + 34px); min-width: 118px; height: 40px; border: 0; background: radial-gradient( ellipse at center, rgba(105, 218, 255, 0.20) 0%, rgba(72, 160, 255, 0.14) 34%, rgba(54, 110, 255, 0.07) 56%, transparent 76% ); box-shadow: none; filter: blur(5px); transform: translate(-50%, -50%) scale(0.88); transition: opacity 160ms ease, transform 180ms ease, filter 180ms ease; } .user-profile-detail-links button.is-active .user-profile-detail-tab-label { color: #effbff; filter: none; text-shadow: 0 0 1px rgba(245, 253, 255, 0.98), 0 0 4px rgba(126, 222, 255, 0.98), 0 0 8px rgba(78, 181, 255, 0.92), 0 0 15px rgba(55, 126, 255, 0.72), 0 0 25px rgba(55, 126, 255, 0.42); } .user-profile-detail-links button.is-active .user-profile-detail-tab-label::before { opacity: 1; border: 0; background: radial-gradient( ellipse at center, rgba(112, 224, 255, 0.22) 0%, rgba(74, 166, 255, 0.16) 34%, rgba(51, 107, 255, 0.08) 57%, transparent 78% ); box-shadow: none; filter: blur(6px); transform: translate(-50%, -50%) scale(1); } /* Saved profiles */ .profiles-screen { gap: 14px; } .profiles-summary { padding: 0 2px; } .profiles-list { gap: 10px; } .profiles-row { display: grid; grid-template-columns: minmax(0, 1fr) 44px; align-items: center; gap: 8px; padding: 8px 8px 8px 14px; } .profiles-row.is-active { border-color: rgba(255, 255, 255, 0.34); } .profiles-select { min-width: 0; display: flex; align-items: center; gap: 10px; padding: 9px 0; text-align: left; font: inherit; } .profiles-select:not(:disabled) { cursor: pointer; } .profiles-login { min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-weight: 650; } .profiles-close { width: 38px; height: 38px; border-radius: 50%; font-size: 27px; line-height: 1; cursor: pointer; } .profiles-actions { margin-top: 4px; } .profiles-close-all { margin-top: 4px; } /* ===== 2026-09-09: profile layout — identity, social row, about card ===== */ .user-profile-identity { width: min(88%, 340px); margin: 12px auto 0; text-align: center; } .user-profile-identity .user-profile-full-name { width: 100%; margin: 0; color: rgba(244, 248, 255, 0.96); font-size: clamp(17px, 4.8vw, 20px); font-weight: 700; line-height: 1.2; } .user-profile-login { margin-top: 4px; color: rgba(199, 211, 229, 0.62); font-size: 12px; font-weight: 500; line-height: 1.2; overflow-wrap: anywhere; } .user-profile-social-metrics { width: min(92%, 360px); margin: 22px auto 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); align-items: start; justify-items: center; gap: 4px; } .user-profile-social-metrics .user-profile-metric { width: 100%; min-height: 58px; gap: 5px; justify-content: flex-start; } .user-profile-social-metrics .user-profile-metric-circle, .user-profile-metric-value-combined { width: auto; min-width: 0; height: auto; min-height: 0; border-radius: 0; background: transparent; box-shadow: none; color: rgba(240, 246, 255, 0.95); font-size: clamp(17px, 4.7vw, 20px); font-weight: 800; line-height: 1.1; white-space: nowrap; } .user-profile-social-metrics .user-profile-metric-label { position: static; width: 100%; min-height: 0; transform: none; color: rgba(203, 216, 236, 0.72); font-size: 11px; line-height: 1.15; text-align: center; } .user-profile-about-card { width: min(88%, 344px); margin: 20px auto 0; } .user-profile-about-title { margin: 0 0 7px 3px; color: rgba(224, 233, 247, 0.82); font-size: 12px; font-weight: 650; line-height: 1.2; } .user-profile-about-field { min-height: 68px; padding: 13px 14px; border: 1px solid rgba(210, 220, 234, 0.14); border-radius: 14px; background: rgba(162, 172, 186, 0.16); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04); color: rgba(236, 242, 251, 0.9); font-size: 13px; line-height: 1.5; text-align: left; white-space: pre-wrap; overflow-wrap: anywhere; } .user-profile-about-field.is-empty { color: rgba(199, 210, 226, 0.46); } .user-profile-detail-links.user-profile-detail-links--below-about { width: min(88%, 344px); margin: 10px auto 0; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); align-items: center; gap: 10px; } .user-profile-detail-links--below-about > :first-child { justify-self: start; } .user-profile-detail-links--below-about > :last-child { justify-self: end; } .user-profile-detail-links--below-about button { width: auto; min-width: 0; padding-left: 6px; padding-right: 6px; } .profile-list-tabs { width: min(92%, 360px); margin: 4px auto 10px; padding: 3px; display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3px; border: 1px solid rgba(205, 221, 244, 0.12); border-radius: 14px; background: rgba(14, 25, 43, 0.24); } .profile-list-tab { min-height: 36px; padding: 7px 10px; border: 0; border-radius: 11px; background: transparent; color: rgba(207, 219, 237, 0.72); font: inherit; font-size: 12px; font-weight: 650; cursor: pointer; } .profile-list-tab.is-active { background: rgba(156, 177, 204, 0.18); color: rgba(246, 249, 255, 0.97); box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.06); } @media (max-height: 700px) { .user-profile-identity { margin-top: 8px; } .user-profile-social-metrics { margin-top: 16px; } .user-profile-about-card { margin-top: 15px; } }