SHA256
272 lines
5.1 KiB
CSS
272 lines
5.1 KiB
CSS
/* Shared avatar component styles. */
|
|
|
|
.avatar-preview-circle {
|
|
width: 124px;
|
|
height: 124px;
|
|
margin: 0 auto;
|
|
border-radius: 50%;
|
|
overflow: hidden;
|
|
border: 1px solid rgba(155, 182, 233, 0.46);
|
|
background: rgba(13, 26, 50, 0.86);
|
|
box-shadow: inset 0 0 0 1px rgba(240, 248, 255, 0.1);
|
|
}
|
|
|
|
|
|
.avatar-preview-circle img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
object-position: center;
|
|
display: block;
|
|
}
|
|
|
|
|
|
.avatar-wizard-preview {
|
|
width: 140px;
|
|
height: 140px;
|
|
}
|
|
|
|
|
|
.avatar-wizard-meta {
|
|
font-size: 13px;
|
|
line-height: 1.35;
|
|
color: #d9e7ff;
|
|
word-break: break-word;
|
|
}
|
|
|
|
|
|
.avatar-wizard-error {
|
|
min-height: 18px;
|
|
font-size: 13px;
|
|
color: #f6a8b3;
|
|
}
|
|
|
|
|
|
.avatar-wizard-actions {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 10px;
|
|
}
|
|
|
|
|
|
.avatar-wizard-choice-grid {
|
|
display: grid;
|
|
gap: 10px;
|
|
}
|
|
|
|
|
|
.avatar {
|
|
width: 40px;
|
|
height: 40px;
|
|
min-width: 40px;
|
|
min-height: 40px;
|
|
flex: 0 0 auto;
|
|
aspect-ratio: 1 / 1;
|
|
border-radius: 50%;
|
|
background: linear-gradient(130deg, #3c4f73, #243352);
|
|
display: grid;
|
|
place-items: center;
|
|
font-weight: 700;
|
|
color: #e5ebff;
|
|
font-size: 14px;
|
|
}
|
|
|
|
|
|
.avatar.avatar-xs,
|
|
.avatar.xs {
|
|
width: 20px;
|
|
height: 20px;
|
|
min-width: 20px;
|
|
min-height: 20px;
|
|
font-size: 9px;
|
|
}
|
|
|
|
|
|
.avatar.avatar-sm,
|
|
.avatar.small {
|
|
width: 28px;
|
|
height: 28px;
|
|
min-width: 28px;
|
|
min-height: 28px;
|
|
font-size: 10px;
|
|
}
|
|
|
|
|
|
.avatar.avatar-md,
|
|
.avatar.medium {
|
|
width: 40px;
|
|
height: 40px;
|
|
min-width: 40px;
|
|
min-height: 40px;
|
|
font-size: 14px;
|
|
}
|
|
|
|
|
|
.avatar.avatar-lg,
|
|
.avatar.big {
|
|
width: 56px;
|
|
height: 56px;
|
|
min-width: 56px;
|
|
min-height: 56px;
|
|
font-size: 18px;
|
|
}
|
|
|
|
|
|
.avatar.avatar-xl,
|
|
.avatar.large,
|
|
.avatar.xlarge {
|
|
width: 96px;
|
|
height: 96px;
|
|
min-width: 96px;
|
|
min-height: 96px;
|
|
font-size: 26px;
|
|
}
|
|
|
|
|
|
.avatar-image {
|
|
position: relative;
|
|
overflow: hidden;
|
|
display: grid;
|
|
place-items: center;
|
|
}
|
|
|
|
|
|
.avatar-image > .avatar-fallback,
|
|
.avatar-image > img {
|
|
grid-area: 1 / 1;
|
|
}
|
|
|
|
|
|
.avatar-fallback {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: grid;
|
|
place-items: center;
|
|
opacity: 1;
|
|
transition: opacity 120ms ease;
|
|
}
|
|
|
|
|
|
.avatar-image img {
|
|
width: 100%;
|
|
height: 100%;
|
|
object-fit: cover;
|
|
object-position: center;
|
|
border-radius: 50%;
|
|
display: block;
|
|
opacity: 0;
|
|
transition: opacity 120ms ease;
|
|
}
|
|
|
|
|
|
.avatar-image.has-image img {
|
|
opacity: 1;
|
|
}
|
|
|
|
|
|
.avatar-image.has-image .avatar-fallback {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
}
|
|
.avatar img {
|
|
width: 100%;
|
|
height: 100%;
|
|
display: block;
|
|
object-fit: cover;
|
|
}
|
|
|
|
|
|
/* ===== Единый шаблон аватаров (2026-08-22) =====
|
|
* Базовая аватарка повторяет принцип орбов экрана «Связи»:
|
|
* - fallback: нейтральный серый круг + белые инициалы;
|
|
* - фото занимает тот же внутренний круг;
|
|
* - стеклянный внешний круг остаётся поверх всегда, независимо от наличия фото;
|
|
* - усиленное свечение включается модификатором .avatar-glow, не меняя геометрию аватара.
|
|
*/
|
|
.avatar.avatar-image.avatar-framed {
|
|
position: relative;
|
|
overflow: visible;
|
|
isolation: isolate;
|
|
display: grid;
|
|
place-items: center;
|
|
border: 0;
|
|
background: transparent;
|
|
color: #ffffff;
|
|
box-shadow: none;
|
|
}
|
|
|
|
|
|
.avatar.avatar-image.avatar-framed > .avatar-fallback,
|
|
.avatar.avatar-image.avatar-framed > .avatar-photo {
|
|
grid-area: 1 / 1;
|
|
place-self: center;
|
|
width: 92.5%;
|
|
height: 92.5%;
|
|
border-radius: 50%;
|
|
z-index: 1;
|
|
}
|
|
|
|
|
|
.avatar.avatar-image.avatar-framed > .avatar-fallback {
|
|
display: grid;
|
|
place-items: center;
|
|
overflow: hidden;
|
|
background: #454b55;
|
|
color: #ffffff;
|
|
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.42);
|
|
box-shadow:
|
|
inset 0 1px 0 rgba(255, 255, 255, 0.08),
|
|
inset 0 -8px 16px rgba(0, 0, 0, 0.16);
|
|
}
|
|
|
|
|
|
.avatar.avatar-image.avatar-framed > .avatar-photo {
|
|
display: block;
|
|
object-fit: cover;
|
|
object-position: center;
|
|
opacity: 0;
|
|
transition: opacity 120ms ease;
|
|
}
|
|
|
|
|
|
.avatar.avatar-image.avatar-framed.has-image > .avatar-photo {
|
|
opacity: 1;
|
|
}
|
|
|
|
|
|
.avatar.avatar-image.avatar-framed.has-image > .avatar-fallback {
|
|
opacity: 0;
|
|
visibility: hidden;
|
|
}
|
|
|
|
|
|
/* Второй круг — тот же стеклянный overlay, который используется в «Связях». */
|
|
.avatar.avatar-image.avatar-framed::after {
|
|
content: "";
|
|
position: absolute;
|
|
inset: 50% auto auto 50%;
|
|
width: 119%;
|
|
height: 119%;
|
|
transform: translate(-50%, -50%);
|
|
border: 0;
|
|
border-radius: 0;
|
|
background: url("../assets/glass_overlay_faithful.png") center / contain no-repeat;
|
|
box-shadow: none;
|
|
opacity: 1;
|
|
pointer-events: none;
|
|
z-index: 3;
|
|
}
|
|
|
|
|
|
/* Опциональный усиленный ореол для состояний «сияющий» и будущих экранов. */
|
|
.avatar.avatar-image.avatar-framed.avatar-glow::before {
|
|
content: "";
|
|
position: absolute;
|
|
inset: -16%;
|
|
border-radius: 50%;
|
|
background: radial-gradient(circle, rgba(139, 232, 255, 0.36) 0%, rgba(116, 217, 255, 0.14) 48%, rgba(116, 217, 255, 0) 74%);
|
|
filter: blur(3px);
|
|
pointer-events: none;
|
|
z-index: -1;
|
|
}
|