/* ZAMZMAT V35 - theme-safe visual layer. Never override core theme panels. */
:root{
  --zz-ui-accent:var(--zz-accent,#8b5cf6);
  --zz-live:var(--zz-accent,#38d9c5);
  --zz-live-soft:rgba(56,217,197,.22);
}
html.theme_switching::after{content:"";position:fixed;inset:0;z-index:2147483000;pointer-events:none;background:linear-gradient(135deg,rgba(255,255,255,.04),transparent 40%,rgba(139,92,246,.06));animation:zzThemeFlash .24s ease both}
@keyframes zzThemeFlash{0%{opacity:0}35%{opacity:1}100%{opacity:0}}
/* Do not paint sidebars, menus or profiles. The selected theme controls them. */
#container_users .user_item:not(.offline){position:relative;overflow:hidden;}
#container_users .user_item:not(.offline)::after{content:"";position:absolute;top:0;left:-35%;width:25%;height:100%;pointer-events:none;background:linear-gradient(90deg,transparent,rgba(255,255,255,.16),transparent);transform:skewX(-14deg);animation:zzOnlineSweep 4.2s ease-in-out infinite}
@keyframes zzOnlineSweep{0%,48%{left:-35%;opacity:0}60%{opacity:1}86%,100%{left:120%;opacity:0}}
/* Live level badge: a small circle beside the username. */
.zz_level_badge{display:inline-flex!important;vertical-align:middle;align-items:center;justify-content:center;width:21px;height:21px;min-width:21px;margin-inline:4px 3px;border-radius:50%;font-size:10px!important;line-height:21px!important;font-weight:900!important;color:#fff!important;border:1px solid rgba(255,255,255,.65);box-shadow:0 0 7px var(--zz-level-color),inset 0 0 5px rgba(255,255,255,.18);background:radial-gradient(circle at 35% 28%,rgba(255,255,255,.38),var(--zz-level-color) 52%,rgba(0,0,0,.28));text-shadow:0 1px 2px rgba(0,0,0,.55);}
.zz_level_badge.small{width:19px;height:19px;min-width:19px;line-height:19px!important;font-size:9px!important;margin-inline:3px 2px}
/* Level colors cycle smoothly with the actual level number. */
/* Gift / wallet lightweight public cards. */
.public_gift_log,.wallet_share_log{position:relative;display:flex;align-items:center;gap:9px;margin:4px auto;padding:7px 10px;max-width:92%;border:1px solid rgba(255,215,80,.42);border-radius:12px;background:rgba(0,0,0,.08);box-shadow:0 0 10px rgba(255,190,60,.13);overflow:hidden}
.public_gift_log::before,.wallet_share_log::before{content:"";position:absolute;inset:0;background:linear-gradient(105deg,transparent 40%,rgba(255,255,255,.20) 50%,transparent 60%);transform:translateX(-100%);animation:zzLightSweep 2.8s linear infinite;pointer-events:none}
@keyframes zzLightSweep{0%{transform:translateX(-100%)}65%,100%{transform:translateX(100%)}}
.public_gift_icon_wrap,.wallet_share_icon{position:relative;z-index:1;width:42px;height:42px;min-width:42px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:rgba(0,0,0,.12);border:1px solid rgba(255,255,255,.30)}
.public_gift_image{width:34px;height:34px;object-fit:contain}
.public_gift_text,.wallet_share_text{position:relative;z-index:1;min-width:0;line-height:1.45}
.public_gift_line,.wallet_share_line{font-weight:800;color:inherit}
.public_gift_title,.wallet_share_title{font-size:11px;opacity:.82}
.wallet_share_log.gold{border-color:rgba(255,211,72,.55)}
.wallet_share_log.ruby{border-color:rgba(255,90,150,.55)}
.wallet_share_icon.gold{box-shadow:0 0 10px rgba(255,211,72,.22)}
.wallet_share_icon.ruby{box-shadow:0 0 10px rgba(255,90,150,.22)}
/* Rank banner stays lightweight. */
#rank_change_banner{position:fixed!important;top:72px!important;right:18px!important;z-index:99999!important;display:none!important;padding:10px 15px!important;border:1px solid rgba(255,255,255,.35)!important;border-radius:10px!important;background:rgba(20,20,28,.92)!important;color:#fff!important;box-shadow:0 8px 24px rgba(0,0,0,.25)!important;font-weight:800!important}
#rank_change_banner.rank_change_banner_show{display:block!important;animation:zzBannerIn .25s ease both!important}
@keyframes zzBannerIn{from{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:none}}
/* Private selector cards follow the active theme instead of a black global card. */
.zamzmat_private_theme_grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:9px}
.zamzmat_private_theme_card{border:1px solid rgba(255,255,255,.20);border-radius:12px;padding:7px;cursor:pointer;background:rgba(0,0,0,.10);color:inherit;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}
.zamzmat_private_theme_card:hover,.zamzmat_private_theme_card.selected{transform:translateY(-1px);border-color:rgba(255,255,255,.60);box-shadow:0 0 14px rgba(139,92,246,.18)}
.zamzmat_private_theme_preview{min-height:82px;border-radius:9px;background-size:cover!important;background-position:center!important;background-repeat:no-repeat!important;border:1px solid rgba(255,255,255,.20)}
@media(max-width:560px){.zamzmat_private_theme_grid{grid-template-columns:1fr 1fr;gap:6px;padding:7px}.zz_level_badge{width:20px;height:20px;min-width:20px;line-height:20px!important}}
@media(prefers-reduced-motion:reduce){html.theme_switching::after,#container_users .user_item:not(.offline)::after,.public_gift_log::before,.wallet_share_log::before{animation:none!important}}

/* V36 restored lightweight gift celebration */
.gift_celebration_overlay{
  position:fixed;
  inset:0;
  z-index:1000000;
  display:grid;
  place-items:center;
  padding:18px;
  opacity:0;
  visibility:hidden;
  pointer-events:none;
  background:radial-gradient(circle at 50% 45%,rgba(155,108,255,.17),transparent 34%);
}
.gift_celebration_overlay.gift_celebration_show{
  visibility:visible;
  animation:zzGiftOverlay 4s ease both;
}
.gift_celebration_card{
  position:relative;
  width:min(330px,88vw);
  padding:26px 22px 22px;
  text-align:center;
  border-radius:24px;
  border:1px solid rgba(255,255,255,.32);
  background:linear-gradient(145deg,rgba(20,12,38,.96),rgba(62,28,84,.92));
  box-shadow:0 22px 60px rgba(0,0,0,.46),0 0 38px rgba(155,108,255,.28),inset 0 0 30px rgba(255,255,255,.05);
  transform:translateY(12px) scale(.84);
  animation:none;
  overflow:hidden;
}

.gift_celebration_card.gift_celebration_card_show{
  animation:zzGiftCard 4s cubic-bezier(.18,.78,.22,1) both;
}
.gift_celebration_glow{
  position:absolute;
  inset:-34%;
  pointer-events:none;
  background:radial-gradient(circle,rgba(255,255,255,.18),transparent 52%);
  animation:zzGiftGlow 1.15s ease-in-out infinite alternate;
}
.gift_celebration_icon{
  position:relative;
  width:104px;
  height:104px;
  margin:0 auto 12px;
  display:grid;
  place-items:center;
  border-radius:28px;
  background:radial-gradient(circle at 35% 25%,rgba(255,255,255,.32),rgba(155,108,255,.18) 48%,rgba(0,0,0,.18));
  border:1px solid rgba(255,255,255,.22);
  box-shadow:0 0 28px rgba(155,108,255,.35),inset 0 0 24px rgba(255,255,255,.07);
}
.gift_celebration_icon img{
  max-width:78px;
  max-height:78px;
  object-fit:contain;
  filter:drop-shadow(0 7px 13px rgba(0,0,0,.35));
}
.gift_celebration_title{
  position:relative;
  font-size:20px;
  font-weight:900;
  color:#fff;
  text-shadow:0 0 12px rgba(255,255,255,.18);
}
.gift_celebration_text{
  position:relative;
  margin-top:7px;
  font-size:13px;
  color:rgba(255,255,255,.82);
}
.gift_confetti{
  position:absolute;
  inset:0;
  overflow:hidden;
  pointer-events:none;
}
.gift_confetti i{
  position:absolute;
  left:50%;
  top:46%;
  width:8px;
  height:17px;
  border-radius:2px;
  background:linear-gradient(135deg,#fff,#72f5d6 45%,#9b6cff 85%);
  box-shadow:0 0 8px rgba(255,255,255,.25);
  transform:translate(-50%,-50%) rotate(0deg);
  animation:zzGiftPiece var(--gd) ease-out both;
}
.gift_confetti i:nth-child(3n){background:linear-gradient(135deg,#fff,#ff8ccf)}
.gift_confetti i:nth-child(3n+1){background:linear-gradient(135deg,#fff,#72f5d6)}
.gift_confetti i:nth-child(3n+2){background:linear-gradient(135deg,#fff,#ffd86e)}
@keyframes zzGiftOverlay{
  0%{opacity:0}
  7%{opacity:1}
  80%{opacity:1}
  100%{opacity:0}
}
@keyframes zzGiftCard{
  0%{transform:translateY(12px) scale(.84);opacity:0}
  13%{transform:translateY(0) scale(1);opacity:1}
  80%{transform:translateY(0) scale(1);opacity:1}
  100%{transform:translateY(-9px) scale(.96);opacity:0}
}
@keyframes zzGiftGlow{
  from{transform:scale(.82);opacity:.35}
  to{transform:scale(1.12);opacity:.88}
}
@keyframes zzGiftPiece{
  0%{opacity:0;transform:translate(-50%,-50%) rotate(0deg) scale(.55)}
  16%{opacity:1}
  100%{opacity:0;transform:translate(calc(-50% + var(--gx)),calc(-50% + var(--gy))) rotate(var(--gr)) scale(1)}
}



/* Lightweight gold/ruby celebration. */
.wallet_share_toast{position:fixed;top:82px;left:50%;z-index:2147482999;min-width:220px;max-width:90vw;padding:11px 16px;border-radius:14px;background:linear-gradient(135deg,rgba(30,24,8,.97),rgba(72,48,7,.95));color:#fff7cf;border:1px solid rgba(255,215,75,.72);box-shadow:0 0 24px rgba(255,194,40,.28);font-weight:900;text-align:center;pointer-events:none;opacity:0;transform:translate(-50%,-8px) scale(.94);}
.wallet_share_toast.ruby{background:linear-gradient(135deg,rgba(40,8,24,.97),rgba(88,16,53,.95));color:#ffd9ec;border-color:rgba(255,92,170,.72);box-shadow:0 0 24px rgba(255,92,170,.28)}
.wallet_share_toast_show{animation:zzWalletToast 2.35s ease both}
@keyframes zzWalletToast{0%{opacity:0;transform:translate(-50%,-8px) scale(.94)}12%{opacity:1;transform:translate(-50%,0) scale(1)}78%{opacity:1;transform:translate(-50%,0) scale(1)}100%{opacity:0;transform:translate(-50%,-6px) scale(.97)}}
.zz_level_badge{position:relative!important;flex-direction:column!important;width:23px!important;height:23px!important;min-width:23px!important;line-height:1!important;margin-inline:4px 2px!important;font-size:9px!important;gap:0!important}
.zz_level_badge .zz_level_num{font-size:10px;font-weight:1000;line-height:11px}
.zz_level_badge .zz_level_xp{font-size:6px;line-height:7px;opacity:.95;letter-spacing:.1px}
.zz_level_badge.small{width:24px!important;height:24px!important;min-width:24px!important}
.zz_level_online{display:flex!important;margin:2px auto 0!important}
/* Stronger, theme-aware surfaces; never transparent, never forced black. */
#container_users,#container_users .user_item,#left_menu,#left_menu_content,#chat_left,#chat_left_data,#chat_left_menu,#chat_left_menu .float_content,#chat_right,#chat_right_data,#right_panel_bar,#left_panel_bar{background:var(--zz-panel,rgba(16,20,30,.94))!important;background-color:var(--zz-panel,rgba(16,20,30,.94))!important;opacity:1!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
#left_menu_content .left_menu_item,.fmenu_item{background:var(--zz-panel2,var(--zz-panel,rgba(16,20,30,.94)))!important;opacity:1!important;border-bottom:1px solid rgba(255,255,255,.07)}
#container_users .user_item{background:var(--zz-panel2,var(--zz-panel,rgba(16,20,30,.94)))!important}
#container_users .user_item:hover,#left_menu_content .left_menu_item:hover,.fmenu_item:hover{filter:brightness(1.08)}
@media(prefers-reduced-motion:reduce){.wallet_share_toast_show,.gift_celebration_overlay.gift_celebration_show,.gift_celebration_card.gift_celebration_card_show,.gift_celebration_glow,.gift_confetti i{animation:none!important}}

/* V37 FINAL: public gift card restored to the rich animated style. */
.public_gift_log{
  position:relative!important;display:flex!important;align-items:center!important;gap:10px!important;
  margin:6px auto!important;padding:10px 14px!important;max-width:92%!important;min-height:72px!important;
  border:1px solid rgba(255,215,80,.72)!important;border-radius:16px!important;
  background:linear-gradient(135deg,rgba(48,22,0,.96),rgba(125,67,0,.94),rgba(42,18,0,.96))!important;
  box-shadow:0 0 18px rgba(255,184,0,.30),inset 0 0 18px rgba(255,215,80,.09)!important;
  overflow:hidden!important;animation:zzPublicGiftGlow 1.45s ease-in-out infinite alternate,zzPublicGiftFloat 3.2s ease-in-out infinite!important;
}
.public_gift_log::before{content:""!important;position:absolute!important;inset:-40% -10%!important;background:linear-gradient(105deg,transparent 35%,rgba(255,255,255,.52) 48%,transparent 61%)!important;transform:translateX(-90%)!important;animation:zzGiftCardShine 2.25s linear infinite!important;pointer-events:none!important}
.public_gift_icon_wrap{position:relative!important;z-index:1!important;width:58px!important;height:58px!important;min-width:58px!important;flex:0 0 58px!important;display:flex!important;align-items:center!important;justify-content:center!important;border-radius:50%!important;background:radial-gradient(circle,#fff7bd 0,#ffd13b 35%,#8c4b00 74%)!important;border:2px solid rgba(255,245,170,.94)!important;box-shadow:0 0 20px rgba(255,205,40,.78),inset 0 0 12px rgba(255,255,255,.35)!important;overflow:hidden!important}
.public_gift_image{width:48px!important;height:48px!important;object-fit:contain!important;filter:drop-shadow(0 0 11px rgba(255,238,120,.98))!important;animation:zzGiftImageFloat .9s ease-in-out infinite alternate!important}
.public_gift_text{position:relative!important;z-index:1!important;min-width:0!important;line-height:1.45!important}
.public_gift_line{font-weight:900!important;color:#fff7d5!important;text-shadow:0 0 8px rgba(255,215,80,.55)!important}
.public_gift_title{font-size:13px!important;font-weight:800!important;color:#ffd95b!important;margin-top:3px!important}
@keyframes zzPublicGiftGlow{from{filter:brightness(.98);box-shadow:0 0 14px rgba(255,184,0,.24),inset 0 0 14px rgba(255,215,80,.07)}to{filter:brightness(1.12);box-shadow:0 0 28px rgba(255,198,35,.52),inset 0 0 22px rgba(255,235,130,.12)}}
@keyframes zzPublicGiftFloat{50%{transform:translateY(-1px)}}
@keyframes zzGiftCardShine{to{transform:translateX(90%)}}
@keyframes zzGiftImageFloat{from{transform:translateY(2px) scale(.96)}to{transform:translateY(-3px) scale(1.06)}}

/* V37: level badge belongs under the avatar, not beside the username. */
.chat_avatar{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:2px!important}
.chat_avatar .zz_level_badge{order:3!important;margin:0!important;width:27px!important;height:16px!important;min-width:27px!important;border-radius:999px!important;font-size:0!important;line-height:1!important;flex:none!important;box-shadow:0 0 7px var(--zz-level-color),inset 0 0 4px rgba(255,255,255,.20)!important}
.chat_avatar .zz_level_badge .zz_level_num{font-size:8px!important;line-height:8px!important;font-weight:900!important}
.chat_avatar .zz_level_badge .zz_level_xp{font-size:5px!important;line-height:6px!important;letter-spacing:.1px!important}
.user_item_avatar{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;gap:2px!important}
#container_users .zz_level_online{position:relative!important;display:flex!important;align-items:center!important;justify-content:center!important;flex-direction:column!important;width:27px!important;height:16px!important;min-width:27px!important;margin:1px auto 0!important;border-radius:999px!important;font-size:0!important;line-height:1!important;box-shadow:0 0 7px var(--zz-level-color),inset 0 0 4px rgba(255,255,255,.20)!important}
#container_users .zz_level_online .zz_level_num{font-size:8px!important;line-height:8px!important;font-weight:900!important}
#container_users .zz_level_online .zz_level_xp{font-size:5px!important;line-height:5px!important}

/* V37: restore the colored message squares by rank. */
.chat_log:not(.sys_log){margin:5px 5px!important;padding:5px!important;border-radius:8px!important;border:1px solid transparent!important;background:rgba(0,0,0,.10)!important}
.chat_log.rank_message_0{border-color:rgba(160,160,160,.38)!important;background:rgba(90,90,90,.18)!important}
.chat_log.rank_message_1{border-color:rgba(190,205,220,.50)!important;background:rgba(150,165,180,.16)!important}
.chat_log.rank_message_10{border-color:rgba(230,145,75,.58)!important;background:rgba(150,75,25,.20)!important}
.chat_log.rank_message_20{border-color:rgba(80,180,255,.60)!important;background:rgba(30,110,175,.20)!important}
.chat_log.rank_message_30{border-color:rgba(70,235,165,.62)!important;background:rgba(20,125,85,.20)!important}
.chat_log.rank_message_40{border-color:rgba(70,220,240,.64)!important;background:rgba(15,125,145,.21)!important}
.chat_log.rank_message_50{border-color:rgba(195,130,255,.68)!important;background:rgba(105,40,155,.22)!important}
.chat_log.rank_message_60{border-color:rgba(255,100,195,.70)!important;background:rgba(145,25,100,.22)!important}
.chat_log.rank_message_70{border-color:rgba(255,100,105,.72)!important;background:rgba(130,25,35,.22)!important}
.chat_log.rank_message_80{border-color:rgba(255,195,70,.78)!important;background:rgba(150,85,10,.24)!important;box-shadow:0 0 11px rgba(255,180,50,.20)!important}
.chat_log.rank_message_85{border-color:rgba(90,255,190,.80)!important;background:rgba(10,130,85,.24)!important;box-shadow:0 0 12px rgba(70,255,185,.22)!important}
.chat_log.rank_message_90{border-color:rgba(100,165,255,.84)!important;background:rgba(25,80,170,.24)!important;box-shadow:0 0 13px rgba(80,155,255,.24)!important}
.chat_log.rank_message_95{border-color:rgba(235,145,255,.88)!important;background:rgba(120,35,155,.24)!important;box-shadow:0 0 14px rgba(220,100,255,.27)!important}
.chat_log.rank_message_100{border-color:rgba(255,224,100,.98)!important;background:rgba(170,115,10,.28)!important;box-shadow:0 0 18px rgba(255,215,80,.32)!important}

/* V37: connected-user cards are opaque enough to remain readable on every theme. */
#container_users .user_item{background:var(--zz-panel2,rgba(18,22,32,.90))!important;opacity:1!important}
#container_users .user_item.rank_frame_0{background:rgba(90,90,90,.25)!important}
#container_users .user_item.rank_frame_1{background:rgba(150,165,180,.22)!important}
#container_users .user_item.rank_frame_10{background:rgba(150,75,25,.25)!important}
#container_users .user_item.rank_frame_20{background:rgba(30,110,175,.25)!important}
#container_users .user_item.rank_frame_30{background:rgba(20,125,85,.25)!important}
#container_users .user_item.rank_frame_40{background:rgba(15,125,145,.26)!important}
#container_users .user_item.rank_frame_50{background:rgba(105,40,155,.27)!important}
#container_users .user_item.rank_frame_60{background:rgba(145,25,100,.27)!important}
#container_users .user_item.rank_frame_70{background:rgba(130,25,35,.27)!important}
#container_users .user_item.rank_frame_80{background:rgba(150,85,10,.28)!important}
#container_users .user_item.rank_frame_85{background:rgba(10,130,85,.28)!important}
#container_users .user_item.rank_frame_90{background:rgba(25,80,170,.28)!important}
#container_users .user_item.rank_frame_95{background:rgba(120,35,155,.28)!important}
#container_users .user_item.rank_frame_100{background:rgba(170,115,10,.30)!important}

/* V37: profile cover is independent from the selected chat theme. */
.profile_background{background-image:none!important;background-color:var(--zz-profile-panel,rgba(20,24,34,.96))!important;background-size:cover!important;background-position:center!important}
.profile_background.cover_size{background-image:var(--zz-profile-cover)!important}

@media(prefers-reduced-motion:reduce){
 .public_gift_log,.public_gift_image{animation:none!important}
}


/* V38: rank message cards - up to Diamond are colored only; ranks above Diamond glow progressively. */
.chat_log.rank_message_0,.chat_log.rank_message_1,.chat_log.rank_message_10,.chat_log.rank_message_20,.chat_log.rank_message_30,.chat_log.rank_message_40,.chat_log.rank_message_50,.chat_log.rank_message_60{box-shadow:none!important;animation:none!important}
.chat_log.rank_message_70{box-shadow:0 0 9px rgba(255,100,105,.28),inset 0 0 6px rgba(255,120,120,.08)!important;animation:zzRankGlow70 2.8s ease-in-out infinite alternate!important}
.chat_log.rank_message_80{box-shadow:0 0 13px rgba(255,195,70,.34),inset 0 0 8px rgba(255,230,120,.10)!important;animation:zzRankGlow80 2.6s ease-in-out infinite alternate!important}
.chat_log.rank_message_85{box-shadow:0 0 17px rgba(90,255,190,.40),inset 0 0 10px rgba(160,255,220,.11)!important;animation:zzRankGlow85 2.4s ease-in-out infinite alternate!important}
.chat_log.rank_message_90{box-shadow:0 0 21px rgba(100,165,255,.48),inset 0 0 12px rgba(160,210,255,.12)!important;animation:zzRankGlow90 2.2s ease-in-out infinite alternate!important}
.chat_log.rank_message_95{box-shadow:0 0 26px rgba(235,145,255,.58),inset 0 0 14px rgba(245,180,255,.14)!important;animation:zzRankGlow95 2s ease-in-out infinite alternate!important}
.chat_log.rank_message_100{box-shadow:0 0 32px rgba(255,224,100,.68),inset 0 0 16px rgba(255,245,180,.18)!important;animation:zzRankGlow100 1.8s ease-in-out infinite alternate!important}
@keyframes zzRankGlow70{from{filter:brightness(1)}to{filter:brightness(1.06)}}
@keyframes zzRankGlow80{from{filter:brightness(1)}to{filter:brightness(1.09)}}
@keyframes zzRankGlow85{from{filter:brightness(1)}to{filter:brightness(1.12)}}
@keyframes zzRankGlow90{from{filter:brightness(1)}to{filter:brightness(1.15)}}
@keyframes zzRankGlow95{from{filter:brightness(1)}to{filter:brightness(1.18)}}
@keyframes zzRankGlow100{from{filter:brightness(1)}to{filter:brightness(1.22)}}
.chat_avatar .zz_level_badge,#container_users .zz_level_online{width:29px!important;height:13px!important;min-width:29px!important;margin:-1px auto 0!important;border-radius:0 0 10px 10px!important;background:linear-gradient(180deg,rgba(255,255,255,.20),rgba(0,0,0,.24))!important;border:1px solid var(--zz-level-color)!important;border-top:0!important;box-shadow:0 0 6px var(--zz-level-color)!important;animation:zzLevelPulse 2.2s ease-in-out infinite!important}
.chat_avatar .zz_level_badge .zz_level_num,#container_users .zz_level_online .zz_level_num{font-size:7px!important;line-height:12px!important;font-weight:900!important;display:inline!important}
.chat_avatar .zz_level_badge .zz_level_xp,#container_users .zz_level_online .zz_level_xp{font-size:6px!important;line-height:12px!important;font-weight:900!important;display:inline!important;margin-left:1px!important}
@keyframes zzLevelPulse{50%{filter:brightness(1.12);transform:translateY(1px)}}
#ptyping{z-index:8!important;bottom:1px!important;left:10px!important;padding:2px 7px!important;border:1px solid rgba(255,255,255,.12)!important;background:rgba(15,18,28,.86)!important;box-shadow:0 3px 12px rgba(0,0,0,.18)!important}
#ptyping_text{width:auto!important;min-width:42px!important;height:18px!important;font-size:10px!important;font-weight:700!important}
.zz_typing_dots{display:inline-block;animation:zzTypingPulse 1.1s ease-in-out infinite}
@keyframes zzTypingPulse{0%,100%{opacity:.55}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){.chat_log.rank_message_70,.chat_log.rank_message_80,.chat_log.rank_message_85,.chat_log.rank_message_90,.chat_log.rank_message_95,.chat_log.rank_message_100,.chat_avatar .zz_level_badge,#container_users .zz_level_online,.zz_typing_dots{animation:none!important}}


/* ZAMZMAT V39: private read avatar, Instagram-style typing dots, compact attached 1Lv badge. */
#ptyping_text{font-size:0!important;min-width:28px!important;width:28px!important;height:18px!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important}
.zz_typing_dots{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:3px!important;height:14px!important}
.zz_typing_dots i{display:block!important;width:4px!important;height:4px!important;border-radius:50%!important;background:currentColor!important;opacity:.35!important;animation:zzTypingDot 1.05s infinite ease-in-out!important}
.zz_typing_dots i:nth-child(2){animation-delay:.14s!important}.zz_typing_dots i:nth-child(3){animation-delay:.28s!important}
@keyframes zzTypingDot{0%,70%,100%{opacity:.25;transform:translateY(0) scale(.85)}35%{opacity:1;transform:translateY(-2px) scale(1)}}
.prdate .prview{display:inline-flex!important;width:15px!important;height:15px!important;min-width:15px!important;align-items:center!important;justify-content:center!important;margin-inline:2px 4px!important;border:0!important;background:transparent!important;opacity:0!important}
.prdate .prview.prview_hide{display:inline-flex!important;opacity:0!important}.prdate .prview.prviewed{opacity:1!important}
.prdate .prview.prviewed img{display:block!important;width:14px!important;height:14px!important;border-radius:50%!important;object-fit:cover!important;border:1px solid rgba(255,255,255,.72)!important;box-shadow:0 0 5px rgba(255,255,255,.22)!important}
/* Attached half-circle: one compact, bold value such as 1Lv directly under the avatar. */
.chat_avatar .zz_level_badge,#container_users .zz_level_online{box-sizing:border-box!important;width:30px!important;height:14px!important;min-width:30px!important;margin:-2px auto 0!important;padding:0 3px!important;display:flex!important;align-items:center!important;justify-content:center!important;flex:none!important;border-radius:0 0 10px 10px!important;border:1px solid var(--zz-level-color)!important;border-top:0!important;background:linear-gradient(180deg,rgba(255,255,255,.18),rgba(0,0,0,.26))!important;color:#fff!important;font-size:7px!important;line-height:13px!important;font-weight:1000!important;letter-spacing:0!important;white-space:nowrap!important;box-shadow:0 0 6px var(--zz-level-color)!important;animation:zzLevelPulse 2.2s ease-in-out infinite!important}
.chat_avatar .zz_level_badge.small{width:30px!important;height:14px!important;min-width:30px!important}
/* Strong, visible rank squares; Diamond and below are static, higher ranks glow progressively. */
.chat_log.rank_message_0{background:rgba(150,150,150,.20)!important;border-color:rgba(190,190,190,.48)!important}
.chat_log.rank_message_1{background:rgba(180,190,205,.20)!important;border-color:rgba(215,225,235,.55)!important}
.chat_log.rank_message_10{background:rgba(170,85,25,.24)!important;border-color:rgba(240,155,75,.64)!important}
.chat_log.rank_message_20{background:rgba(25,105,185,.25)!important;border-color:rgba(85,180,255,.68)!important}
.chat_log.rank_message_30{background:rgba(20,135,90,.25)!important;border-color:rgba(75,240,170,.70)!important}
.chat_log.rank_message_40{background:rgba(15,130,150,.26)!important;border-color:rgba(80,225,245,.72)!important}
.chat_log.rank_message_50{background:rgba(110,45,165,.27)!important;border-color:rgba(205,140,255,.76)!important}
.chat_log.rank_message_60{background:rgba(155,25,105,.28)!important;border-color:rgba(255,110,200,.80)!important;box-shadow:none!important;animation:none!important}
.chat_log.rank_message_70{box-shadow:0 0 10px rgba(255,100,105,.30)!important;animation:zzRankGlow70 2.8s ease-in-out infinite alternate!important}
.chat_log.rank_message_80{box-shadow:0 0 14px rgba(255,195,70,.38)!important;animation:zzRankGlow80 2.6s ease-in-out infinite alternate!important}
.chat_log.rank_message_85{box-shadow:0 0 18px rgba(90,255,190,.44)!important;animation:zzRankGlow85 2.4s ease-in-out infinite alternate!important}
.chat_log.rank_message_90{box-shadow:0 0 22px rgba(100,165,255,.52)!important;animation:zzRankGlow90 2.2s ease-in-out infinite alternate!important}
.chat_log.rank_message_95{box-shadow:0 0 28px rgba(235,145,255,.62)!important;animation:zzRankGlow95 2s ease-in-out infinite alternate!important}
.chat_log.rank_message_100{box-shadow:0 0 35px rgba(255,224,100,.72)!important;animation:zzRankGlow100 1.8s ease-in-out infinite alternate!important}
@media(prefers-reduced-motion:reduce){.zz_typing_dots i,.chat_avatar .zz_level_badge,#container_users .zz_level_online,.chat_log.rank_message_70,.chat_log.rank_message_80,.chat_log.rank_message_85,.chat_log.rank_message_90,.chat_log.rank_message_95,.chat_log.rank_message_100{animation:none!important}}


/* ZAMZMAT V40: rank icon beside avatar; username remains name-only. */
.chat_avatar,.user_item_avatar{position:relative!important;}
.chat_avatar .zz_rank_avatar{position:absolute!important;top:2px!important;right:-5px!important;z-index:6!important;width:16px!important;height:16px!important;display:flex!important;align-items:center!important;justify-content:center!important;pointer-events:none!important;}
.chat_avatar .zz_rank_avatar .zz_rank_icon{width:15px!important;height:15px!important;max-width:15px!important;object-fit:contain!important;display:block!important;filter:drop-shadow(0 0 3px rgba(255,255,255,.38))!important;}
#container_users .user_item_avatar .zz_rank_avatar{position:absolute!important;top:0!important;right:-4px!important;z-index:8!important;width:17px!important;height:17px!important;display:flex!important;align-items:center!important;justify-content:center!important;pointer-events:none!important;}
#container_users .user_item_avatar .zz_rank_avatar .zz_rank_icon{width:16px!important;height:16px!important;object-fit:contain!important;display:block!important;filter:drop-shadow(0 0 3px rgba(255,255,255,.45))!important;}
#container_users .icrank{display:none!important;}

/* V40: compact attached half-circle level badge, always one string such as 1Lv. */
.chat_avatar .zz_level_badge,#container_users .zz_level_online{width:30px!important;height:13px!important;min-width:30px!important;margin:-2px auto 0!important;padding:0 2px!important;border-radius:0 0 11px 11px!important;border-top:0!important;font-size:7px!important;line-height:12px!important;font-weight:1000!important;letter-spacing:0!important;white-space:nowrap!important;display:flex!important;align-items:center!important;justify-content:center!important;}
.chat_avatar .zz_level_badge .zz_level_num,#container_users .zz_level_online .zz_level_num,.chat_avatar .zz_level_badge .zz_level_xp,#container_users .zz_level_online .zz_level_xp{font-size:0!important;}

/* V40: Instagram-style private typing bubble; avatar + three moving dots. */
#ptyping{z-index:9999!important;bottom:34px!important;left:8px!important;right:auto!important;padding:3px 6px!important;border-radius:14px!important;background:rgba(20,24,35,.96)!important;border:1px solid rgba(255,255,255,.18)!important;box-shadow:0 5px 18px rgba(0,0,0,.32)!important;min-height:22px!important;}
#ptyping .btable_auto{display:flex!important;align-items:center!important;gap:5px!important;}
#ptyping_avatar{width:18px!important;height:18px!important;display:block!important;}
#ptyping_av{width:18px!important;height:18px!important;border-radius:50%!important;object-fit:cover!important;display:block!important;border:1px solid rgba(255,255,255,.55)!important;}
#ptyping_text{width:28px!important;min-width:28px!important;height:18px!important;padding:0!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:0!important;}
.zz_typing_dots{display:inline-flex!important;gap:3px!important;align-items:center!important;justify-content:center!important;width:22px!important;height:14px!important;}
.zz_typing_dots i{display:block!important;width:4px!important;height:4px!important;min-width:4px!important;border-radius:50%!important;background:#fff!important;opacity:.3!important;animation:zzTypingDotV40 1s ease-in-out infinite!important;}
.zz_typing_dots i:nth-child(2){animation-delay:.15s!important}.zz_typing_dots i:nth-child(3){animation-delay:.30s!important}
@keyframes zzTypingDotV40{0%,65%,100%{opacity:.3;transform:translateY(0)}32%{opacity:1;transform:translateY(-3px)}}

/* V40: strong colored rank squares, each rank has its own color; owner is bright gold. */
.chat_log.rank_message_0{background:linear-gradient(90deg,rgba(105,105,115,.26),rgba(65,65,75,.12))!important;border:1px solid rgba(185,185,195,.62)!important;}
.chat_log.rank_message_1{background:linear-gradient(90deg,rgba(205,215,225,.28),rgba(115,125,140,.12))!important;border:1px solid rgba(225,235,245,.72)!important;}
.chat_log.rank_message_10{background:linear-gradient(90deg,rgba(205,105,35,.32),rgba(95,45,15,.12))!important;border:1px solid rgba(245,150,75,.82)!important;}
.chat_log.rank_message_20{background:linear-gradient(90deg,rgba(30,125,220,.32),rgba(15,55,120,.12))!important;border:1px solid rgba(90,190,255,.84)!important;}
.chat_log.rank_message_30{background:linear-gradient(90deg,rgba(25,165,105,.34),rgba(10,75,55,.12))!important;border:1px solid rgba(85,245,175,.86)!important;}
.chat_log.rank_message_40{background:linear-gradient(90deg,rgba(20,165,190,.34),rgba(10,75,90,.12))!important;border:1px solid rgba(90,235,250,.88)!important;}
.chat_log.rank_message_50{background:linear-gradient(90deg,rgba(125,60,195,.36),rgba(60,25,105,.12))!important;border:1px solid rgba(215,150,255,.90)!important;}
.chat_log.rank_message_60{background:linear-gradient(90deg,rgba(205,35,125,.38),rgba(95,15,60,.12))!important;border:1px solid rgba(255,120,210,.94)!important;}
.chat_log.rank_message_70{background:linear-gradient(90deg,rgba(215,45,55,.38),rgba(100,15,25,.12))!important;border:1px solid rgba(255,110,120,.96)!important;box-shadow:0 0 10px rgba(255,80,90,.32)!important;}
.chat_log.rank_message_80{background:linear-gradient(90deg,rgba(225,145,25,.40),rgba(100,55,5,.12))!important;border:1px solid rgba(255,205,80,.98)!important;box-shadow:0 0 14px rgba(255,190,45,.38)!important;}
.chat_log.rank_message_85{background:linear-gradient(90deg,rgba(25,185,120,.42),rgba(5,80,50,.12))!important;border:1px solid rgba(105,255,195,1)!important;box-shadow:0 0 18px rgba(75,255,185,.42)!important;}
.chat_log.rank_message_90{background:linear-gradient(90deg,rgba(45,120,230,.44),rgba(15,55,125,.12))!important;border:1px solid rgba(120,190,255,1)!important;box-shadow:0 0 22px rgba(80,160,255,.48)!important;}
.chat_log.rank_message_95{background:linear-gradient(90deg,rgba(185,65,230,.46),rgba(75,20,105,.12))!important;border:1px solid rgba(245,165,255,1)!important;box-shadow:0 0 27px rgba(225,105,255,.58)!important;}
.chat_log.rank_message_100{background:linear-gradient(90deg,rgba(255,175,15,.52),rgba(105,55,0,.12))!important;border:1px solid rgba(255,235,105,1)!important;box-shadow:0 0 34px rgba(255,205,55,.72),inset 0 0 12px rgba(255,245,170,.16)!important;animation:zzOwnerGold 1.8s ease-in-out infinite alternate!important;}
@keyframes zzOwnerGold{from{filter:brightness(1)}to{filter:brightness(1.18)}}

/* V40: remove visible CodyChat branding from login welcome area. */

/* ZAMZMAT V42: restore compact original-style name/rank placement. */
.chat_avatar{width:40px!important;min-width:40px!important;vertical-align:top!important;}
.chat_avatar .zz_rank_avatar{display:none!important;}
.chat_avatar .zz_level_badge{position:relative!important;z-index:4!important;}
.cname{display:flex!important;align-items:center!important;gap:3px!important;min-width:0!important;white-space:nowrap!important;}
.zz_rank_inline{display:inline-flex!important;align-items:center!important;justify-content:center!important;width:18px!important;height:18px!important;min-width:18px!important;flex:none!important;vertical-align:middle!important;}
.zz_rank_inline_icon{width:17px!important;height:17px!important;object-fit:contain!important;display:block!important;filter:drop-shadow(0 0 3px rgba(255,255,255,.45))!important;}
.cname .username{display:inline-block!important;overflow:hidden!important;text-overflow:ellipsis!important;max-width:180px!important;}
#container_users .user_item_avatar{width:40px!important;min-width:40px!important;display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;}
#container_users .user_item_data{display:table-cell!important;vertical-align:middle!important;}
#container_users .user_item_data .username{display:flex!important;align-items:center!important;gap:3px!important;white-space:nowrap!important;}
#container_users .zz_rank_avatar{display:none!important;}
#container_users .zz_rank_inline{width:17px!important;height:17px!important;min-width:17px!important;}
#container_users .zz_rank_inline_icon{width:16px!important;height:16px!important;}
/* Keep the level attached directly under the avatar in both places. */
.chat_avatar .zz_level_badge,#container_users .zz_level_online{width:30px!important;height:14px!important;min-width:30px!important;margin:-1px auto 0!important;padding:0!important;border-radius:0 0 11px 11px!important;border-top:0!important;display:flex!important;align-items:center!important;justify-content:center!important;font-size:7px!important;font-weight:1000!important;line-height:13px!important;white-space:nowrap!important;}
.chat_avatar .zz_level_badge .zz_level_num,#container_users .zz_level_online .zz_level_num,.chat_avatar .zz_level_badge .zz_level_xp,#container_users .zz_level_online .zz_level_xp{display:none!important;}
/* V42 rank squares: visible for every rank, each rank has a distinct color. */
.chat_log.rank_message_0,.chat_log.rank_message_1,.chat_log.rank_message_10,.chat_log.rank_message_20,.chat_log.rank_message_30,.chat_log.rank_message_40,.chat_log.rank_message_50,.chat_log.rank_message_60{border-width:1px!important;border-style:solid!important;box-shadow:inset 0 0 0 1px rgba(255,255,255,.035)!important;}
.chat_log.rank_message_0{background:rgba(130,130,140,.32)!important;border-color:#aeb0b8!important}
.chat_log.rank_message_1{background:rgba(185,195,210,.32)!important;border-color:#d8e0ea!important}
.chat_log.rank_message_10{background:rgba(205,105,35,.34)!important;border-color:#f09b55!important}
.chat_log.rank_message_20{background:rgba(30,125,220,.34)!important;border-color:#69bfff!important}
.chat_log.rank_message_30{background:rgba(25,165,105,.35)!important;border-color:#70efb2!important}
.chat_log.rank_message_40{background:rgba(20,165,190,.36)!important;border-color:#79efff!important}
.chat_log.rank_message_50{background:rgba(125,60,195,.38)!important;border-color:#d99cff!important}
.chat_log.rank_message_60{background:rgba(205,35,125,.40)!important;border-color:#ff7fd6!important}
.chat_log.rank_message_70{background:rgba(215,45,55,.40)!important;border-color:#ff7b86!important}
.chat_log.rank_message_80{background:rgba(225,145,25,.42)!important;border-color:#ffd66d!important}
.chat_log.rank_message_85{background:rgba(25,185,120,.44)!important;border-color:#8dffd0!important}
.chat_log.rank_message_90{background:rgba(45,120,230,.46)!important;border-color:#8fc5ff!important}
.chat_log.rank_message_95{background:rgba(185,65,230,.48)!important;border-color:#f0b0ff!important}
.chat_log.rank_message_100{background:linear-gradient(90deg,rgba(255,175,15,.56),rgba(105,55,0,.22))!important;border-color:#ffef83!important;box-shadow:0 0 30px rgba(255,210,60,.65),inset 0 0 12px rgba(255,245,170,.18)!important;}
/* V42: one read avatar only, on the latest consecutive read outgoing message. */
.prdate .prview{width:16px!important;height:16px!important;min-width:16px!important;margin-inline:2px 4px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;opacity:0!important;vertical-align:middle!important;}
.prdate .prview.prview_hide{opacity:0!important;}
.prdate .prview.prviewed{opacity:1!important;}
.prdate .prview.prviewed img{width:15px!important;height:15px!important;border-radius:50%!important;object-fit:cover!important;border:1px solid rgba(255,255,255,.72)!important;box-shadow:0 0 5px rgba(255,255,255,.25)!important;}
/* V42: ensure the three typing dots are always visible when the other side is typing. */
#ptyping{display:none;z-index:99999!important;}
#ptyping .btable_auto{display:flex!important;align-items:center!important;gap:5px!important;}
#ptyping_avatar{width:18px!important;height:18px!important;display:block!important;}
#ptyping_av{width:18px!important;height:18px!important;border-radius:50%!important;object-fit:cover!important;}
#ptyping_text{width:30px!important;min-width:30px!important;height:18px!important;display:flex!important;align-items:center!important;justify-content:center!important;padding:0!important;font-size:0!important;}
.zz_typing_dots{display:inline-flex!important;gap:3px!important;align-items:center!important;justify-content:center!important;width:24px!important;height:16px!important;}
.zz_typing_dots i{display:block!important;width:4px!important;height:4px!important;border-radius:50%!important;background:#fff!important;opacity:.35!important;animation:zzTypingDotV42 900ms ease-in-out infinite!important;}
.zz_typing_dots i:nth-child(2){animation-delay:140ms!important}.zz_typing_dots i:nth-child(3){animation-delay:280ms!important}
@keyframes zzTypingDotV42{0%,70%,100%{opacity:.3;transform:translateY(0)}35%{opacity:1;transform:translateY(-3px)}}
