/* AivanCrate — Профиль игрока в стиле V2 (тёмная тема + палитра иконки Aivan; цвет модератора остаётся акцентом) */
body:has(.ppx), .ac-site-main:has(.ppx) {
    background:
        radial-gradient(900px 320px at 10% -10%, rgba(59, 73, 255, .35), transparent 60%),
        radial-gradient(760px 300px at 95% 0%, rgba(29, 39, 201, .3), transparent 55%),
        linear-gradient(180deg, var(--av2-bg) 0%, var(--av2-bg-2) 55%, var(--av2-bg) 100%) fixed !important;
}
body:has(.ppx) footer { background: var(--av2-bg); border-top: 0; color: var(--av2-muted); }
.ppx { color: var(--av2-ink); }
.ppx .ppv2-grid-floor { opacity: .3; }

/* Панели */
html body .ppx.player-profile-v2 .ppv2-hero,
html body .ppx.player-profile-v2 .ppv2-panel {
    border: 1px solid color-mix(in srgb, var(--ppv2-accent) 40%, rgba(143, 160, 255, .25)) !important;
    box-shadow: 0 0 0 2px #000, 0 22px 50px -24px color-mix(in srgb, var(--ppv2-accent) 80%, transparent) !important;
    color: var(--av2-ink) !important;
}
/* Keep the uploaded image and its theme overlay from styles.css. A background
   shorthand on the hero would reset both, including background-size/position. */
html body .ppx.player-profile-v2 .ppv2-hero:not(.has-hero-bg),
html body .ppx.player-profile-v2 .ppv2-panel {
    background: linear-gradient(165deg, color-mix(in srgb, var(--ppv2-accent) 18%, rgba(9, 13, 58, .94)), rgba(4, 6, 30, .95)) !important;
}
html body .ppx.player-profile-v2 .ppv2-hero { transform: perspective(900px) rotateX(var(--rx, 0deg)) rotateY(var(--ry, 0deg)); transition: transform .25s ease; }
html body .ppx.player-profile-v2 .ppv2-tab-nav { background: rgba(2, 3, 20, .55) !important; border-bottom: 1px solid var(--av2-line) !important; }
html body .ppx.player-profile-v2 .ppv2-tabs .tab-btn { color: var(--av2-ink) !important; }
html body .ppx.player-profile-v2 .ppv2-tabs .tab-btn.active { background: linear-gradient(180deg, var(--av2-blue-2), var(--ppv2-accent)) !important; box-shadow: 0 0 0 2px #000 !important; }
html body .ppx.player-profile-v2 .ppv2-achieve-card { background: linear-gradient(105deg, color-mix(in srgb, var(--ppv2-accent) 12%, transparent), transparent 45%), rgba(2, 3, 20, .55) !important; }
html body .ppx.player-profile-v2 .ppv2-filters { background: rgba(2, 3, 20, .55); border-color: var(--av2-line); }
.ppx .card { background: var(--av2-card); border-color: var(--av2-line); color: var(--av2-ink); }
.ppx .text-muted { color: var(--av2-muted) !important; }

/* Аватар, ник, ранг */
.ppx .ppv2-avatar { border-radius: 14px !important; box-shadow: 0 0 0 3px #000, 0 0 0 6px color-mix(in srgb, var(--ppv2-accent) 70%, #fff), 0 18px 40px rgba(0, 0, 0, .55) !important; cursor: pointer; }
.ppx .ppv2-avatar.is-jump { animation: ppxJump .7s cubic-bezier(.3, .7, .4, 1); }
@keyframes ppxJump { 0% { transform: translateY(0) rotate(0); } 45% { transform: translateY(-46px) rotate(180deg); } 100% { transform: translateY(0) rotate(360deg); } }
.ppx .ppv2-nickname { font-family: "Oxygene1", "PusabGD", system-ui, sans-serif; font-weight: 400; text-transform: uppercase; letter-spacing: .02em; font-size: clamp(1.3rem, 2.6vw, 1.9rem); text-shadow: 0 3px 0 #000, 0 0 16px color-mix(in srgb, var(--ppv2-accent) 70%, transparent); }
.ppx .ppv2-rank { display: inline-block; font-family: "Oxygene1", "PusabGD", sans-serif; font-weight: 400; padding: .3rem .9rem; border-radius: .7rem; color: #fff; background: linear-gradient(180deg, var(--av2-blue-2), var(--av2-blue)); box-shadow: 0 0 0 2px #000; text-shadow: 0 2px 0 #000; }
.ppx .player-rank-wrap.rank-1.ppv2-rank { color: #1a1300; text-shadow: none; background: linear-gradient(180deg, #ffe680, #d4a40a); }
.ppx .player-rank-wrap.rank-2.ppv2-rank { color: #111; text-shadow: none; background: linear-gradient(180deg, #ffffff, #b8bfd6); }
.ppx .player-rank-wrap.rank-3.ppv2-rank { background: linear-gradient(180deg, #f0a35b, #9a5419); }
.ppx .ppv2-hud-stat { background: rgba(2, 3, 20, .55) !important; border: 1px solid var(--av2-line) !important; border-radius: .8rem !important; }
.ppx .ppv2-hud-label { color: var(--av2-sky) !important; }
.ppx .ppv2-hud-value { font-family: "Oxygene1", "PusabGD", sans-serif; font-weight: 400 !important; color: #fff !important; text-shadow: 0 2px 0 #000; }
.ppx .ppv2-xp-bar { background: rgba(2, 3, 20, .7) !important; box-shadow: 0 0 0 1px #000; }
.ppx .ppv2-xp-fill { background: linear-gradient(90deg, var(--av2-blue), var(--ppv2-accent), var(--av2-sky)) !important; transition: width 1.2s cubic-bezier(.2, .9, .3, 1); }
.ppx .ppv2-chip-btn { background: rgba(2, 3, 20, .8) !important; color: #fff !important; border: 1px solid var(--av2-line) !important; border-radius: .7rem !important; }
.ppx .ppv2-chip-btn:hover { background: linear-gradient(180deg, var(--av2-blue-2), var(--av2-blue)) !important; }
.ppx .ppv2-cta, .ppx .btn-primary { background: linear-gradient(180deg, var(--av2-blue-2), var(--av2-blue)) !important; border: 0 !important; color: #fff !important; box-shadow: 0 0 0 2px #000 !important; font-weight: 800; }
.ppx .level-row-v2 { border-radius: .7rem; }
.ppx .level-row-v2-thumb { border-radius: .45rem; box-shadow: 0 0 0 1px #000; }
.ppx .level-row-v2-rank { font-family: "Oxygene1", "PusabGD", sans-serif; font-weight: 400; color: var(--av2-sky); }
.ppx-copy-link { margin-top: .4rem; }
html body .ppx .player-achievements-panel > div, html body .ppx .tab-content, html body .ppx .tab-pane, html body .ppx .card-body { background: transparent !important; }
.ppx .ppv2-rank, .ppx .ppv2-nickname, .ppx .ppv2-hud-value { text-transform: uppercase; }
html body .ppx.player-profile-v2 .ppv2-ov-fav, html body .ppx.player-profile-v2 .ppv2-ov-card, html body .ppx.player-profile-v2 .ppv2-ov-id, html body .ppx.player-profile-v2 .ppv2-ov-friends { background: rgba(2, 3, 20, .5); border-color: var(--av2-line); box-shadow: 0 0 0 1px #000; }
html body .ppx.player-profile-v2 .ppv2-ov-peak { background: linear-gradient(155deg, rgba(255, 216, 74, .18), rgba(2, 3, 20, .5) 58%); border-color: rgba(255, 216, 74, .45); }
html body .ppx.player-profile-v2 .ppv2-ov-hello { background: linear-gradient(120deg, color-mix(in srgb, var(--ppv2-accent) 22%, transparent), rgba(2, 3, 20, .5)); border-color: var(--av2-line); box-shadow: 0 0 0 1px #000; }
html body .ppx.player-profile-v2 .ppv2-ov-id li { background: rgba(2, 3, 20, .55); }

/* Ник с подсветкой роли: буквы целиком переливаются цветом роли (без чёрной тени сквозь прозрачную заливку) */
.ppx .ppv2-nickname .nick-role, .ppx .ppv2-nickname .player-nickname-moderator {
    text-shadow: none !important;
    filter: drop-shadow(0 2px 0 #000) drop-shadow(0 0 8px color-mix(in srgb, var(--ppv2-accent) 60%, transparent)) !important;
}
.ppx .ppv2-nickname:has(.nick-role, .player-nickname-moderator) { text-shadow: none; }

/* «Кто они»: все плитки одного формата */
.ppx .num-grouped, .ppx .num-g, .ppx .num-sep { font: inherit !important; letter-spacing: inherit !important; color: inherit !important; }
html body .ppx.player-profile-v2 .ppv2-ov-id ul { display: grid; grid-template-columns: repeat(auto-fill, minmax(10rem, 1fr)); gap: .5rem; }
html body .ppx.player-profile-v2 .ppv2-ov-id li {
    display: flex; flex-direction: column; gap: .25rem; min-height: 4rem; justify-content: center; padding: .55rem .7rem;
    border: 1px solid var(--av2-line); border-radius: .8rem; box-shadow: 0 0 0 1px #000; transition: transform .15s, border-color .15s, background .15s;
}
html body .ppx.player-profile-v2 .ppv2-ov-id li > span { font-size: .62rem !important; font-weight: 800 !important; letter-spacing: .07em; text-transform: uppercase; color: var(--av2-sky) !important; }
html body .ppx.player-profile-v2 .ppv2-ov-id li > b {
    font-family: "Oxygene1", "PusabGD", system-ui, sans-serif !important; font-weight: 400 !important; font-size: 1.1rem !important;
    text-transform: uppercase; color: #fff !important; text-shadow: 0 2px 0 #000; font-variant-numeric: normal;
}
html body .ppx.player-profile-v2 .ppv2-ov-id li.is-link { cursor: pointer; }
html body .ppx.player-profile-v2 .ppv2-ov-id li.is-link:hover { transform: translateY(-3px); border-color: var(--ppv2-accent); background: color-mix(in srgb, var(--ppv2-accent) 18%, rgba(2, 3, 20, .55)); }
html body .ppx.player-profile-v2 .ppv2-ov-id li.is-link::after { content: "→"; align-self: flex-end; margin-top: -1.1rem; font-size: .8rem; color: var(--av2-muted); opacity: 0; transition: opacity .15s, transform .15s; }
html body .ppx.player-profile-v2 .ppv2-ov-id li.is-link:hover::after { opacity: 1; transform: translateX(3px); }
.ppx .ppv2-ov-card, .ppx .ppv2-ov-fav, .ppx .ppv2-ov-friends { transition: transform .2s, box-shadow .2s; }
.ppx .ppv2-ov-card:hover, .ppx .ppv2-ov-fav:hover, .ppx .ppv2-ov-friends:hover { transform: translateY(-3px); box-shadow: 0 0 0 1px #000, 0 16px 30px -18px var(--ppv2-accent) !important; }
.ppx .tab-pane-content { animation: ppxTab .3s ease; }
@keyframes ppxTab { from { opacity: 0; transform: translateY(6px); } }
.ppx .ppv2-achieve-card { transition: transform .15s, border-color .15s; }
.ppx .ppv2-achieve-card:hover { transform: translateX(4px); }
.ppx-confetti { position: fixed; inset: 0; pointer-events: none; z-index: 2000; }
