| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182 |
- // ─────────────────────────────────────────────────────────────
- // D3 보상/응원/지위아이템 — 장착 배지 · 닉네임 이펙트 · 레벨 진행바 · 상점 미리보기
- // D6 토큰 변수만 사용. 등락엔 --az-accent 미사용(D6 원칙).
- // ─────────────────────────────────────────────────────────────
- // ── 장착 배지 (닉네임 옆) ──
- .equipped-badge {
- display: inline-flex;
- align-items: center;
- gap: 3px;
- margin-left: var(--sp-2);
- padding: 1px 7px;
- border-radius: 999px;
- background: var(--bg-subtle);
- border: 1px solid var(--border-default);
- font-size: var(--fs-2xs);
- font-weight: 600;
- line-height: 1.5;
- white-space: nowrap;
- vertical-align: middle;
- &__icon {
- width: 12px;
- height: 12px;
- object-fit: contain;
- }
- &__emoji {
- font-size: var(--fs-xs);
- line-height: 1;
- }
- &__label {
- max-width: 8em;
- overflow: hidden;
- text-overflow: ellipsis;
- }
- }
- // ── 닉네임 이펙트 ──
- .nickname-effect {
- font-weight: 700;
- // EffectPayload.animation 키에 대응하는 프리셋 (없으면 색상만)
- &--glow {
- text-shadow: 0 0 6px currentColor;
- }
- &--pulse {
- animation: nickname-pulse 1.6s ease-in-out infinite;
- }
- &--gradient {
- background: linear-gradient(90deg, var(--az-accent), var(--price-up));
- -webkit-background-clip: text;
- background-clip: text;
- color: transparent;
- }
- }
- @keyframes nickname-pulse {
- 0%, 100% { opacity: 1; }
- 50% { opacity: 0.55; }
- }
- // 접근성 — 모션 최소화 선호 시 애니메이션 정지
- @media (prefers-reduced-motion: reduce) {
- .nickname-effect--pulse {
- animation: none;
- }
- }
- // ── 레벨/보상 위젯 ──
- .level-card {
- display: flex;
- flex-direction: column;
- gap: var(--sp-5);
- padding: var(--sp-6);
- border: 1px solid var(--border-default);
- border-radius: var(--radius);
- background: var(--bg-elevated);
- &__grade {
- display: flex;
- align-items: center;
- gap: var(--sp-4);
- }
- &__grade-img {
- width: 40px;
- height: 40px;
- object-fit: contain;
- }
- &__grade-name {
- font-size: var(--fs-xl);
- font-weight: 800;
- }
- &__exp {
- font-size: var(--fs-sm);
- color: var(--text-muted);
- font-variant-numeric: tabular-nums;
- }
- &__bar {
- position: relative;
- height: 12px;
- border-radius: 999px;
- background: var(--bg-subtle);
- overflow: hidden;
- }
- &__bar-fill {
- position: absolute;
- inset: 0 auto 0 0;
- background: var(--az-accent);
- border-radius: 999px;
- transition: width .3s ease;
- }
- &__next {
- font-size: var(--fs-sm);
- color: var(--text-secondary);
- font-variant-numeric: tabular-nums;
- }
- }
- // ── 오늘 보상 캡 표 ──
- .reward-today {
- border: 1px solid var(--border-default);
- border-radius: var(--radius);
- overflow: hidden;
- &__header {
- display: flex;
- justify-content: space-between;
- gap: var(--sp-4);
- padding: var(--sp-5) var(--sp-6);
- background: var(--bg-elevated);
- border-bottom: 1px solid var(--border-default);
- font-weight: 700;
- }
- &__total {
- font-variant-numeric: tabular-nums;
- color: var(--az-accent);
- }
- &__row {
- display: grid;
- grid-template-columns: 1fr auto auto;
- gap: var(--sp-4);
- align-items: center;
- padding: var(--sp-4) var(--sp-6);
- border-bottom: 1px solid var(--border-light);
- font-size: var(--fs-sm);
- &:last-child {
- border-bottom: 0;
- }
- }
- &__name {
- font-weight: 600;
- }
- &__earned {
- font-variant-numeric: tabular-nums;
- color: var(--text-secondary);
- }
- &__cap {
- font-variant-numeric: tabular-nums;
- font-size: var(--fs-xs);
- color: var(--text-muted);
- }
- &__cap--full {
- color: var(--price-down);
- }
- }
|