/* Zenaria v3, группа d: рейтинги, герой, гильдия, голосование.
   Разметку таблиц и списков рисуют app.js / pages.js со старыми классами (rank-grid, ranks, cls-cell, hp-tasks, ach-list, line-chart…),
   здесь они оформлены в духе главной и набора xp-*. Всё ограничено контейнерами pd-*, чтобы не задеть другие страницы. */

/* ---------- общее ---------- */
.pd-note { color: var(--faint); font-size: 14px; line-height: 1.5; margin: 0; }
.pd-note a { color: var(--accent-2); }
.pd-ch { display: flex; align-items: center; gap: 10px; font-size: 17px; font-weight: 600; letter-spacing: -.01em; color: var(--text); margin: 0; }
.pd-ch .ico, .pd-rating .x-card > h3 .ico { width: 18px; height: 18px; color: var(--accent-2); }
.pd-block { margin-top: 16px; }
.pd-rating .xp-cols2 > .x-card { grid-column: auto; }  /* v3.css даёт .x-card span 4, в двухколоночной сетке это ломает раскладку */
.pd-rating .x-card, .pd-hero .x-card, .pd-guild .x-card, .pd-vote .x-card { min-width: 0; }
.pd-hero .x-card-head, .pd-vote .x-card-head { flex-wrap: wrap; align-items: center; }
.pd-rating .x-card > h3 { display: flex; align-items: center; gap: 10px; color: var(--text); font-size: 16px; font-weight: 600; margin: 0 0 14px; }
.pd-rating .x-card .pd-note { margin: 0 0 14px; }
.pd-rating .x-card .pd-note:last-child { margin: 16px 0 0; }

.pd-rating .hero-link, .pd-hero .hero-link, .pd-guild .hero-link, .pd-castle .hero-link { color: var(--text); text-decoration: none; font-weight: 500; }
.pd-rating .hero-link:hover, .pd-hero .hero-link:hover, .pd-guild .hero-link:hover, .pd-castle .hero-link:hover { color: var(--accent-2); }
.pd-rating .on-dot, .pd-hero .on-dot, .pd-guild .on-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--live); flex: none;
  vertical-align: 2px; margin-right: 7px; box-shadow: 0 0 0 0 rgb(70 214 140 / .5); animation: xPulse 2.4s infinite; }
.pd-rating .badge, .pd-guild .badge { display: inline-flex; align-items: center; padding: 1px 8px; margin-left: 6px; border-radius: 999px; font-size: 11px; font-weight: 600;
  background: rgb(255 255 255 / .07); color: var(--dim); vertical-align: 2px; white-space: nowrap; }
.pd-rating .badge-accent, .pd-guild .badge-accent { background: rgb(227 38 54 / .16); color: var(--accent-2); }
.pd-rating .av, .pd-hero .av, .pd-guild .av { width: 30px; height: 30px; border-radius: 50%; object-fit: cover; flex: none; }
.pd-rating .av-empty, .pd-guild .av-empty { display: block; background: var(--glass-hi); }
.pd-rating .empty, .pd-hero .empty, .pd-guild .empty { color: var(--faint); font-size: 14px; margin: 0; }
.pd-rating .empty-art, .pd-hero .empty-art, .pd-guild .empty-art { display: grid; justify-items: center; gap: 12px; padding: 28px 12px; text-align: center; }
.pd-rating .empty-art img, .pd-hero .empty-art img, .pd-guild .empty-art img { width: 44px; height: auto; opacity: .35; filter: grayscale(1); }
.pd-rating .empty-art p, .pd-hero .empty-art p, .pd-guild .empty-art p { max-width: 40ch; line-height: 1.5; }

/* ---------- рейтинги: вкладки, фильтр, поиск ---------- */
.pd-rank-top { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; }
.pd-castle { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: 14px; color: var(--dim); }
.pd-castle .ico { width: 18px; height: 18px; color: var(--accent-2); }
.pd-panel { margin-top: 24px; }
.pd-tools { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px; margin-bottom: 14px; }
.pd-cls .chip { min-height: 36px; transition: color .2s, border-color .2s, background-color .2s; }
.pd-cls .chip:hover { color: var(--text); border-color: rgb(255 255 255 / .28); }
.pd-cls .chip.is-on:hover { border-color: var(--accent); }
.pd-cls .chip img { display: inline-block; width: 22px; height: 22px; border-radius: 50%; object-fit: cover; margin-left: -6px; }
.pd-panel > .pd-note { margin: 0 0 14px; }

.pd-search { position: relative; width: min(300px, 100%); }
.pd-search > .ico { position: absolute; left: 16px; top: 50%; width: 18px; height: 18px; transform: translateY(-50%); color: var(--faint); pointer-events: none; }
.v3 .pd-search input[type="search"] { padding-left: 44px; border-radius: 999px; min-height: 44px; }
.pd-search input[type="search"]::-webkit-search-cancel-button { filter: invert(1) opacity(.5); }
.pd-search .search-list { position: absolute; left: 0; right: 0; top: calc(100% + 6px); z-index: 30; list-style: none; margin: 0; padding: 6px; border-radius: 14px;
  background: rgb(14 16 21 / .96); border: 1px solid var(--line-hi); box-shadow: 0 20px 50px -12px rgb(0 0 0 / .7);
  backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px); max-height: 360px; overflow-y: auto; }
.pd-search .search-list li { display: flex; gap: 12px; align-items: center; padding: 8px 10px; border-radius: 10px; cursor: pointer; font-size: 14px; }
.pd-search .search-list li > span { display: grid; min-width: 0; }
.pd-search .search-list li[aria-selected="true"], .pd-search .search-list li[data-name]:hover { background: rgb(255 255 255 / .06); }
.pd-search .search-list strong { font-weight: 500; }
.pd-search .search-list .rank-sub { font-size: 12px; color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pd-search .search-list .av { width: 34px; height: 34px; }
.pd-search .search-list .search-empty { cursor: default; color: var(--faint); }

/* ---------- таблицы рейтингов (xp-table + классы из JS) ---------- */
.pd-tw { -webkit-overflow-scrolling: touch; }
.pd-rating .rank-grid th.c-num, .pd-rating .rank-grid td.c-num { text-align: right; }
.pd-rating .rank-grid th.is-sort { color: var(--accent-2); }
.pd-rating .rank-grid td.is-sort { color: var(--text); font-weight: 600; }
.pd-rating .rank-grid td.c-num:not(.is-sort) { color: var(--dim); }
.pd-rating .rank-grid .c-n { width: 56px; padding-right: 4px; }
.pd-rating .rank-grid .place { display: inline-grid; place-items: center; min-width: 28px; height: 28px; padding: 0 6px; border-radius: 999px;
  font-size: 13px; font-weight: 600; color: var(--faint); font-variant-numeric: tabular-nums; }
.pd-rating .rank-grid tr.top1 .place { background: var(--accent); color: #fff; box-shadow: 0 6px 18px -6px rgb(227 38 54 / .7); }
.pd-rating .rank-grid tr.top2 .place { background: rgb(227 38 54 / .22); color: #ffd4d7; }
.pd-rating .rank-grid tr.top3 .place { background: rgb(255 255 255 / .08); color: var(--text); }
.pd-rating .rank-grid tr.top1 td { background: linear-gradient(90deg, rgb(227 38 54 / .07), transparent 60%); }
.pd-rating .rank-grid .c-cls { width: 88px; }
.pd-rating .cls-cell { display: inline-flex; align-items: center; gap: 8px; }
.pd-rating .cls-cell b { font-size: 12px; font-weight: 600; letter-spacing: .02em; color: var(--faint); }
.pd-rating .rank-grid .c-name { min-width: 150px; }
.pd-rating .rank-grid .t-sub { display: block; margin-top: 2px; font-size: 12px; color: var(--faint); font-weight: 400; }
.pd-rating .rank-grid .t-dim { color: var(--faint); }
.pd-rating .rank-grid .t-empty { padding: 40px 16px; text-align: center; color: var(--faint); }
.pd-rating .rank-grid .c-guild, .pd-rating .rank-grid .c-map { white-space: nowrap; }
.pd-rating .rank-grid .c-map { color: var(--faint); font-size: 13px; }
.pd-rating .gmark { display: inline-block; vertical-align: -4px; margin-right: 8px; border-radius: 4px; image-rendering: pixelated; }
.pd-rating .gmark-lg { vertical-align: -9px; border-radius: 6px; }
.pd-rating .rank-grid td .skeleton { margin: 4px 0; }

/* ---------- Гены ---------- */
.pd-gens { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.pd-gens:empty { display: none; }
.pd-gens .gens-card { display: grid; gap: 2px; padding: 22px; border: 1px solid var(--line); border-radius: var(--radius);
  background: linear-gradient(180deg, var(--glass), rgb(255 255 255 / .015)); }
.pd-gens .gens-card strong { font-size: 20px; font-weight: 600; letter-spacing: -.02em; }
.pd-gens .gens-card > span:not(.stat-v):not(.t-sub) { font-size: 14px; color: var(--dim); }
.pd-gens .gens-card .stat-v { margin-top: 12px; font-size: clamp(30px, 3vw, 42px); font-weight: 600; letter-spacing: -.035em; line-height: 1; }
.pd-gens .gens-card .t-sub { font-size: 13px; color: var(--faint); }
.pd-gens .gens-duprian { border-color: rgb(255 176 112 / .25); background: radial-gradient(120% 140% at 0% 0%, rgb(255 176 112 / .09), transparent 55%), linear-gradient(180deg, var(--glass), rgb(255 255 255 / .015)); }
.pd-gens .gens-vanert { border-color: rgb(143 200 245 / .25); background: radial-gradient(120% 140% at 0% 0%, rgb(143 200 245 / .09), transparent 55%), linear-gradient(180deg, var(--glass), rgb(255 255 255 / .015)); }
.pd-rating .gens-duprian strong, .pd-rating .gens-tag.gens-duprian { color: #ffb070; }
.pd-rating .gens-vanert strong, .pd-rating .gens-tag.gens-vanert { color: #8fc8f5; }
.pd-rating .gens-tag { font-weight: 600; font-size: 13px; }

/* ---------- турнир и сезон ---------- */
.pd-phead { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 14px 24px; margin-bottom: 18px; }
.pd-phead .xp-h2 { margin: 0 0 8px; }
.pd-actions { display: flex; align-items: center; gap: 18px; }
.pd-select { display: block; }
.v3 .pd-select select { width: auto; min-width: 180px; min-height: 42px; padding: 0 38px 0 16px; border-radius: 999px; font-size: 14px; cursor: pointer; appearance: none; -webkit-appearance: none;
  background: rgb(255 255 255 / .04) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%23a3a6ad' stroke-width='1.6'/%3E%3C/svg%3E") no-repeat right 15px center; }
.pd-select select option { background: #0e1015; color: var(--text); }
.pd-prize:empty { display: none; }
.pd-prize { display: block; margin: 0 0 16px; }
.pd-prize strong { color: var(--text); }

.pd-sbar { margin: 0 0 18px; }
.pd-strack { height: 8px; }
.pd-smarks { display: flex; justify-content: space-between; gap: 12px; margin-top: 8px; font-size: 13px; color: var(--faint); }
.pd-sinfo { margin-top: 16px; }
.pd-sinfo .xp-ticks b { color: var(--text); }
.pd-prizes { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--line); }
.pd-prizes li { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--line); color: var(--dim); font-size: 15px; line-height: 1.45; }
.pd-prizes .place-n { display: inline-flex; flex: none; }
.pd-prizes .place { display: grid; place-items: center; width: 30px; height: 30px; border-radius: 50%; font-size: 13px; font-weight: 600; background: rgb(255 255 255 / .08); color: var(--text); }
.pd-prizes .top1 .place { background: var(--accent); color: #fff; }
.pd-prizes .top2 .place { background: rgb(227 38 54 / .22); color: #ffd4d7; }

/* списки ol.ranks (турнир, состав гильдии) */
.pd-list ol, .pd-list .ranks { list-style: none; margin: 0; padding: 0; }
.pd-list .ranks li { display: grid; grid-template-columns: 26px 1fr auto; gap: 12px; align-items: center; padding: 10px 0; border-bottom: 1px solid var(--line); font-size: 14px; min-height: 52px; }
.pd-list .ranks.with-av li { grid-template-columns: 26px 30px 1fr auto; }
.pd-list .ranks li:last-child { border-bottom: 0; }
.pd-list .rank-n { color: var(--faint); font-variant-numeric: tabular-nums; font-weight: 500; }
.pd-list .rank-n .ico { width: 16px; height: 16px; color: var(--accent-2); }
.pd-list .ranks li:nth-child(-n+3) .rank-n { color: var(--accent-2); }
.pd-list .rank-name { display: block; min-width: 0; }
.pd-list .rank-sub { display: block; font-size: 12px; color: var(--faint); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.pd-list .rank-val { text-align: right; font-variant-numeric: tabular-nums; font-weight: 500; }
.pd-list .rank-val small { color: var(--faint); font-weight: 400; }
.pd-list .rank-val .rank-sub { font-weight: 400; }
.pd-roster { padding: 8px 24px; }
.pd-roster > .skeleton { margin: 10px 0; }

/* ---------- страница героя ---------- */
.pd-htitle { display: flex; align-items: center; gap: clamp(16px, 2.4vw, 28px); }
.pd-htitle h1 { margin-bottom: 10px; overflow-wrap: anywhere; }
.pd-htitle .x-lead a { color: var(--accent-2); text-decoration: none; }
.pd-htitle .x-lead a:hover { text-decoration: underline; }
.pd-hav { width: clamp(72px, 8vw, 104px); height: auto; aspect-ratio: 1; border-radius: 50%; object-fit: cover; flex: none;
  border: 1px solid var(--line-hi); box-shadow: 0 0 0 6px rgb(255 255 255 / .03), 0 18px 40px -16px rgb(227 38 54 / .5); }
.pd-gmark { width: clamp(56px, 6vw, 72px); height: auto; aspect-ratio: 1; border-radius: 14px; flex: none; image-rendering: pixelated; border: 1px solid var(--line-hi); }
.pd-facts { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 0; margin-top: 20px; color: var(--dim); font-size: 15px; }
.pd-facts:empty { display: none; }
.pd-facts .dot-sep { margin: 0 12px; color: var(--faint); }
.pd-facts .on-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: var(--live); margin-right: 8px; animation: xPulse 2.4s infinite; }

/* график роста */
.pd-chart { position: relative; margin-top: 4px; min-height: 120px; }
.pd-chart .line-chart { display: block; width: 100%; height: auto; overflow: visible; }
.pd-chart .line-chart .grid { stroke: var(--line); stroke-width: 1; }
.pd-chart .line-chart .axis { fill: var(--faint); font: 12px var(--font); font-variant-numeric: tabular-nums; }
.pd-chart .line-chart .line { fill: none; stroke: var(--accent); stroke-width: 2.25; stroke-linejoin: round; stroke-linecap: round; vector-effect: non-scaling-stroke; }
.pd-chart .line-chart stop { stop-color: var(--accent); }
.pd-chart .line-chart .cross { stroke: rgb(255 255 255 / .28); stroke-width: 1; stroke-dasharray: 3 4; vector-effect: non-scaling-stroke; }
.pd-chart .line-chart .mark { fill: var(--accent-2); stroke: var(--bg); stroke-width: 3; }
.pd-chart .line-chart .hit { fill: transparent; cursor: crosshair; }
.pd-ctable { margin-top: 14px; border-top: 1px solid var(--line); padding-top: 14px; }
.pd-ctable summary { cursor: pointer; color: var(--dim); font-size: 14px; font-weight: 500; width: fit-content; }
.pd-ctable summary:hover { color: var(--text); }
.pd-ctable .pd-tw { margin-top: 12px; max-height: 420px; }
.pd-ctable .data-table { width: 100%; border-collapse: collapse; font-size: 14px; font-variant-numeric: tabular-nums; }
.pd-ctable .data-table th { position: sticky; top: 0; text-align: right; padding: 12px 16px; font-size: 12px; font-weight: 500; color: var(--faint); background: #111318; border-bottom: 1px solid var(--line); white-space: nowrap; }
.pd-ctable .data-table td { text-align: right; padding: 10px 16px; border-bottom: 1px solid var(--line); color: var(--dim); }
.pd-ctable .data-table th:first-child, .pd-ctable .data-table td:first-child { text-align: left; color: var(--text); }
.pd-ctable .data-table tr:last-child td { border-bottom: 0; }

/* подсказка графика (pages.js добавляет .tip в body) */
body.v3 > .tip { position: fixed; left: 0; top: 0; z-index: 60; pointer-events: none; display: grid; gap: 2px; padding: 9px 13px; border-radius: 12px;
  background: rgb(14 16 21 / .94); border: 1px solid var(--line-hi); box-shadow: 0 14px 34px -10px rgb(0 0 0 / .7); font-size: 13px; color: var(--dim); white-space: nowrap;
  backdrop-filter: blur(14px); -webkit-backdrop-filter: blur(14px); }
body.v3 > .tip strong { color: var(--text); font-weight: 600; }

/* Путь героя */
.pd-hptasks { list-style: none; margin: 0; padding: 0; display: grid; gap: 4px; }
.pd-hptasks li { display: grid; grid-template-columns: 1fr minmax(120px, 200px) 96px; gap: 16px; align-items: center; padding: 8px 0; font-size: 15px; color: var(--dim); }
.pd-hptasks .hp-bar { display: block; height: 6px; border-radius: 999px; background: rgb(255 255 255 / .07); overflow: hidden; }
.pd-hptasks .hp-bar span { display: block; height: 100%; border-radius: inherit; background: linear-gradient(90deg, #b3121f, var(--accent)); }
.pd-hptasks .hp-t-val { text-align: right; font-variant-numeric: tabular-nums; font-size: 14px; color: var(--faint); }
.pd-hptasks li.is-done { color: var(--text); }
.pd-hptasks li.is-done .hp-t-name::after { content: ""; display: inline-block; width: 14px; height: 14px; margin-left: 8px; vertical-align: -2px; background: var(--live);
  -webkit-mask: url(/icons/check.svg) center / contain no-repeat; mask: url(/icons/check.svg) center / contain no-repeat; }
.pd-hptasks li.is-done .hp-bar span { background: linear-gradient(90deg, var(--accent), var(--accent-2)); }
.pd-hptasks li.is-done .hp-t-val { color: var(--text); }

/* достижения: цвета ступеней tier-1..4 сохранены */
.pd-achl { list-style: none; padding: 0; margin: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 8px; }
.pd-achl li { display: grid; grid-template-columns: 20px 1fr auto; gap: 12px; align-items: center; padding: 12px 14px; border-radius: 12px;
  border: 1px solid var(--line); background: rgb(255 255 255 / .025); }
.pd-achl .ico { width: 18px; height: 18px; background: #9aa0a8; }
.pd-achl strong { display: block; font-weight: 600; font-size: 15px; line-height: 1.3; color: #c9ccd2; }
.pd-achl small { display: block; font-size: 13px; color: var(--faint); margin-top: 2px; line-height: 1.35; }
.pd-achl time { font-size: 12px; color: var(--faint); white-space: nowrap; font-variant-numeric: tabular-nums; }
.pd-achl .tier-2 strong { color: #8fd49a; } .pd-achl .tier-2 .ico { background: #6cbf7a; }
.pd-achl .tier-3 strong { color: #8fb8f0; } .pd-achl .tier-3 .ico { background: #6f9fe0; }
.pd-achl .tier-4 strong { color: #ffd27a; } .pd-achl .tier-4 .ico { background: #f0b848; }
.pd-achl .tier-4 { border-color: rgb(240 184 72 / .3); background: radial-gradient(120% 160% at 0% 0%, rgb(240 184 72 / .08), transparent 60%), rgb(255 255 255 / .025); }

/* ---------- голосование ---------- */
.pd-vote .xp-grid { align-items: start; }
.pd-vote .x-card > .pd-ch { margin-bottom: 18px; }
.pd-vbtn { display: flex; flex-wrap: wrap; align-items: center; gap: 16px; min-height: 60px; margin: 0 0 26px; }
.pd-vbtn img { max-width: 100%; height: auto; }
.pd-vbtn a:not(.x-btn) { display: inline-block; line-height: 0; border-radius: 6px; transition: transform .25s var(--ease), filter .25s; }
.pd-vbtn a:not(.x-btn):hover { transform: translateY(-2px); filter: drop-shadow(0 8px 20px rgb(227 38 54 / .45)); }
.pd-vote .xp-ticks li { font-size: 15px; }
.pd-mine { margin: 18px 0 0; padding: 14px 16px; border-radius: 14px; background: rgb(227 38 54 / .1); border: 1px solid rgb(227 38 54 / .3); color: #ffd4d7; font-size: 15px; line-height: 1.5; }
.pd-mine:empty { display: none; }
.pd-mine strong { color: var(--text); }
.pd-vrew > .xp-note { margin-top: 18px; }
.pd-vfine { display: grid; gap: 10px; margin-top: 20px; padding-top: 18px; border-top: 1px solid var(--line); font-size: 14px; line-height: 1.55; color: var(--faint); }

/* ---------- адаптив ---------- */
@media (max-width: 900px) {
  .pd-rating .rank-grid .c-map { display: none; }
}
@media (max-width: 767px) {
  .pd-panel { margin-top: 18px; }
  .pd-tools { flex-direction: column; align-items: stretch; }
  .pd-search { width: 100%; }
  .pd-cls { flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; margin: 0 -16px; padding: 0 16px; }
  .pd-cls::-webkit-scrollbar { display: none; }
  .pd-cls .chip { flex: none; }
  .pd-rating .rank-grid th, .pd-rating .rank-grid td { padding-left: 10px; padding-right: 10px; }
  .pd-rating .rank-grid .c-n { width: 44px; }
  .pd-rating .rank-grid .c-cls { width: auto; }
  .pd-rating .cls-cell b { display: none; }
  .pd-rating .rank-grid .c-name { min-width: 120px; }
  .pd-gens { grid-template-columns: 1fr 1fr; gap: 10px; }
  .pd-gens .gens-card { padding: 16px; }
  .pd-actions { width: 100%; justify-content: space-between; }
  .pd-roster { padding: 4px 16px; }
  .pd-list .ranks li { gap: 10px; }
  .pd-htitle { align-items: flex-start; }
  .pd-facts { font-size: 14px; }
  .pd-facts .dot-sep { margin: 0 8px; }
  .pd-hptasks li { grid-template-columns: 1fr auto; gap: 6px 12px; padding: 10px 0; border-bottom: 1px solid var(--line); }
  .pd-hptasks li:last-child { border-bottom: 0; }
  .pd-hptasks .hp-bar { grid-column: 1 / -1; grid-row: 2; }
  .pd-achl { grid-template-columns: 1fr; }
  .pd-vbtn .x-btn { flex: 1 1 100%; }
}
@media (max-width: 420px) {
  .pd-achl li { grid-template-columns: 20px 1fr; }
  .pd-achl time { grid-column: 2; }
  .pd-list .ranks.with-av li { grid-template-columns: 22px 28px 1fr auto; }
  .pd-list .av { width: 28px; height: 28px; }
}
@media (prefers-reduced-motion: reduce) {
  .pd-rating .on-dot, .pd-hero .on-dot, .pd-guild .on-dot, .pd-facts .on-dot { animation: none; }
}
@media (max-width: 767px) {
  .v3 .pd-cls, .v3 #cls-filter { max-width: 100%; flex-wrap: nowrap; overflow-x: auto; scrollbar-width: none; }
  .v3 .pd-cls::-webkit-scrollbar { display: none; }
  .v3 .xp-tabs { max-width: 100%; }
}
.v3 .pd-bg { display: flex; align-items: center; gap: 24px; flex-wrap: wrap; }
.v3 .pd-bg > div { flex: 1 1 320px; }
.v3 .pd-bg-btn img { display: block; width: 88px; height: 31px; }
.v3 .pd-bg-text { color: var(--dim); font-size: 15px; line-height: 1.55; margin-top: 6px; }

/* ===== Голосование: список площадок и лучшие голосующие ===== */
.pd-sites { list-style: none; margin: 4px 0 20px; padding: 0; display: grid; gap: 8px; }
.pd-site { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 14px; background: rgb(255 255 255 / .02); }
.pd-site.is-done { border-color: rgb(52 211 153 / .35); }
.pd-site-n { flex: 1 1 auto; min-width: 0; display: grid; gap: 2px; }
.pd-site-n b { font-size: 16px; font-weight: 600; }
.pd-site-n small { font-size: 12px; color: var(--faint); }
.pd-site-badge { flex: none; line-height: 0; }
.pd-site-badge img { max-height: 31px; width: auto; }
.pd-site-st { flex: none; font-size: 13px; color: var(--live, #34d399); }
.pd-site-btn { flex: none; min-height: 44px; }
.pd-vtop { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.pd-vtop li { display: flex; align-items: center; gap: 10px; padding: 12px 16px; border: 1px solid var(--line); border-radius: 14px; background: rgb(255 255 255 / .02); }
.pd-vtop-p { display: grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: rgb(227 38 54 / .15); color: var(--accent-2); font-weight: 600; }
.pd-vtop a { color: var(--text); text-decoration: none; font-weight: 600; }
.pd-vtop small { color: var(--faint); }
@media (max-width: 767px) { .pd-site { flex-wrap: wrap; } .pd-site-badge { display: none; } .pd-site-btn { flex: 1 1 100%; } }
.pd-site-nick { flex: 0 1 150px; }
.pd-nick { width: 100%; min-height: 44px; }
.pd-site-btn.is-off { opacity: .6; }
@media (max-width: 767px) { .pd-site-nick { flex: 1 1 100%; } }
@media (max-width: 480px) {
  .pd-rating .rank-grid .c-cls, .pd-rating .rank-grid .c-guild, .pd-rating .rank-grid .c-map { display: none; }
  .pd-rating .rank-grid .c-n { width: 34px; padding-right: 0; }
  .pd-rating .rank-grid .c-name { min-width: 104px; }
  .pd-rating .rank-grid th, .pd-rating .rank-grid td { padding-left: 8px; padding-right: 8px; }
}

.pd-vcomm { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 16px; margin: 18px 0 0; font-size: 14px; color: var(--faint); }
.pd-vcomm a { display: inline-flex; align-items: center; gap: 6px; color: var(--dim); text-decoration: none; font-weight: 500; }
.pd-vcomm a:hover { color: var(--text); }

/* статус площадок: засчитан, отправлен; кнопка ждёт следующих суток */
.pd-vtoday { margin: 0 0 12px; padding: 10px 14px; border-radius: 12px; background: rgb(255 255 255 / .04); color: var(--dim); font-size: 14px; }
.pd-site.is-sent { border-color: rgb(242 193 78 / .35); }
.pd-site.is-sent .pd-site-st { color: #f2c14e; }
.pd-site-st { max-width: 220px; text-align: right; line-height: 1.35; }
.pd-site-btn.is-wait { opacity: .55; pointer-events: auto; cursor: not-allowed; background: transparent !important; border-color: var(--line) !important; color: var(--dim) !important; }
@media (max-width: 767px) { .pd-site-st { max-width: none; text-align: left; flex: 1 1 100%; } }
.v3 .pd-site-btn.is-wait { background: transparent !important; background-image: none !important; box-shadow: none !important; border: 1px solid var(--line) !important; color: var(--dim) !important; }
.v3 .pd-site.is-sent .pd-site-st { color: #f2c14e !important; }

/* гильдия: место, замок, союз */
.pd-gfacts { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 16px 0 0; padding: 0; }
.pd-gfacts li { display: inline-flex; align-items: center; gap: 8px; padding: 8px 14px; border-radius: 999px; border: 1px solid var(--line-hi); background: var(--glass); font-size: 14px; color: var(--dim); }
.pd-gfacts li.is-castle { border-color: rgb(242 193 78 / .45); color: #f2c14e; }
.pd-gfacts .ico { width: 16px; height: 16px; } .pd-gfacts a { color: var(--text); }
.pd-gnote { margin: 16px 0 0; color: var(--faint); font-size: 14px; } .pd-gnote a { color: var(--accent-2); }
.pd-sec-row { display: flex; align-items: baseline; justify-content: space-between; gap: 12px; } .pd-sec-row .xp-h2 { margin-bottom: 20px; }
.xp-stat b small { font-size: .5em; color: var(--faint); font-weight: 500; }

/* ---------- 03.10: строка площадки сеткой — статус под названием, ничего не наезжает ---------- */
.v3 .pd-site { display: grid; grid-template-columns: minmax(0, 1fr) auto auto; grid-template-areas: "n x b"; align-items: center; gap: 4px 14px; padding: 14px 16px; }
.v3 .pd-site-n { grid-area: n; }
.v3 .pd-site-badge, .v3 .pd-site-nick { grid-area: x; }
.v3 .pd-site-btn { grid-area: b; white-space: nowrap; }
.v3 .pd-site-st { grid-area: st; max-width: none; text-align: left; font-size: 12.5px; }
.v3 .pd-site.is-done, .v3 .pd-site.is-sent { grid-template-areas: "n x b" "st x b"; }
.v3 .pd-site.is-done .pd-site-badge, .v3 .pd-site.is-sent .pd-site-badge, .v3 .pd-site.is-done .pd-site-nick, .v3 .pd-site.is-sent .pd-site-nick { display: none; }
.v3 .pd-site.is-done .pd-site-st { color: var(--live, #34d399) !important; }
.v3 .pd-site-st::before { content: ""; display: inline-block; width: 6px; height: 6px; margin-right: 7px; border-radius: 50%; background: currentColor; vertical-align: 2px; }
@media (max-width: 767px) {
  .v3 .pd-site, .v3 .pd-site.is-done, .v3 .pd-site.is-sent { grid-template-columns: 1fr; grid-template-areas: "n" "st" "x" "b"; gap: 10px; }
  .v3 .pd-site-badge { display: none; }
  .v3 .pd-site-btn { width: 100%; justify-content: center; }
}

/* ---------- 03.10: голосование — награды строками с камнями, ровная типографика ---------- */
.v3 .pd-rw { list-style: none; margin: 0; padding: 0; display: grid; }
.v3 .pd-rw li { display: grid; grid-template-columns: 44px minmax(0, 1fr); align-items: center; gap: 14px; padding: 12px 0; font-size: 14.5px; line-height: 1.5; color: var(--dim); }
.v3 .pd-rw li + li { border-top: 1px solid rgb(255 255 255 / .06); }
.v3 .pd-rw strong { color: var(--text); font-weight: 600; }
.v3 .pd-rw-ico { display: grid; place-items: center; width: 44px; height: 44px; border-radius: 12px; background: radial-gradient(circle at 50% 40%, rgb(255 255 255 / .08), rgb(255 255 255 / .02) 70%); }
.v3 .pd-rw-ico img { width: 34px; height: 34px; object-fit: contain; filter: drop-shadow(0 4px 8px rgb(0 0 0 / .6)); }
.v3 .pd-rw-ico .ico { width: 20px; height: 20px; color: #f2c14e; }
.v3 .pd-rw li:last-child .pd-rw-ico { background: rgb(242 193 78 / .12); }
.v3 .pd-vote .xp-steps { margin-top: 22px; gap: 12px; }
.v3 .pd-vote .xp-steps li { font-size: 15px; line-height: 1.55; align-items: start; }
.v3 .pd-vote .xp-steps li > span { padding-top: 6px; }
.v3 .pd-vcomm { margin-top: 24px; padding-top: 20px; border-top: 1px solid rgb(255 255 255 / .06); font-size: 14px; }
.v3 .pd-vcomm a { font-size: 14px; }
.v3 .pd-vcomm .brand-ico { width: 18px; height: 18px; }
.v3 .pd-vrew > .xp-note, .v3 .pd-vrew > .pd-mine { margin-top: 16px; }
.v3 .pd-vfine { font-size: 13.5px; }
.v3 .pd-site-n b { font-size: 16px; }
.v3 .pd-vtoday { font-size: 14px; }
.v3 .pd-rw li { grid-template-columns: 32px minmax(0, 1fr); gap: 12px; }
.v3 .pd-rw-ico { width: 32px; height: 32px; border-radius: 9px; }
.v3 .pd-rw-ico img { width: 22px; height: 22px; }
.v3 .pd-rw-ico .ico { width: 16px; height: 16px; }

/* ---------- 04.10: характеристики героя ---------- */
.v3 .pd-statbars { list-style: none; margin: 4px 0 0; padding: 0; display: grid; gap: 12px; }
.v3 .pd-statbars li { display: grid; grid-template-columns: 120px minmax(0, 1fr) 80px 44px; align-items: center; gap: 14px; font-size: 14px; }
.v3 .pd-sb-t { color: var(--dim); }
.v3 .pd-sb-bar { height: 8px; border-radius: 99px; background: rgb(255 255 255 / .06); overflow: hidden; }
.v3 .pd-sb-bar i { display: block; height: 100%; border-radius: inherit; background: var(--sb, var(--accent)); }
.v3 .pd-statbars b { text-align: right; font-variant-numeric: tabular-nums; }
.v3 .pd-statbars small { color: var(--faint); text-align: right; font-variant-numeric: tabular-nums; }
.v3 .pd-sb-str { --sb: #ff5a66; } .v3 .pd-sb-agi { --sb: #7ed89a; } .v3 .pd-sb-vit { --sb: #f2c14e; } .v3 .pd-sb-ene { --sb: #5fb4ff; } .v3 .pd-sb-cmd { --sb: #c08bff; }
@media (max-width: 640px) { .v3 .pd-statbars li { grid-template-columns: 90px minmax(0, 1fr) 64px; } .v3 .pd-statbars small { display: none; } }
.v3 .rk-stats { display: block; margin-top: 2px; font-size: 11.5px; color: var(--faint); font-variant-numeric: tabular-nums; white-space: nowrap; }

/* ---------- 04.10: мои голоса ---------- */
.v3 .pd-vwhen { display: flex; gap: 10px; align-items: flex-start; margin: 18px 0 0; font-size: 13.5px; line-height: 1.55; color: var(--dim); }
.v3 .pd-vwhen .ico { flex: none; width: 16px; height: 16px; margin-top: 2px; color: var(--accent-2); }
.v3 .pd-vlog-card { padding: 8px 24px; }
.v3 .pd-vlog { list-style: none; margin: 0; padding: 0; }
.v3 .pd-vlog li { display: grid; grid-template-columns: 80px 120px minmax(0, 1fr); gap: 12px; align-items: baseline; padding: 12px 0; font-size: 14px; }
.v3 .pd-vlog li + li { border-top: 1px solid rgb(255 255 255 / .06); }
.v3 .pd-vlog-day { color: var(--faint); font-variant-numeric: tabular-nums; }
.v3 .pd-vlog-msg { color: var(--dim); }
.v3 .pd-vlog .is-ok .pd-vlog-msg { color: #7ed89a; } .v3 .pd-vlog .is-wait .pd-vlog-msg { color: #f2c14e; }
.v3 .pd-vlog .is-warn .pd-vlog-msg { color: #ffb36b; } .v3 .pd-vlog .is-bad .pd-vlog-msg { color: var(--faint); }
.v3 .pd-vlog a { color: var(--accent-2); }
.v3 .pd-vlog-empty { display: block !important; color: var(--faint); }
@media (max-width: 640px) { .v3 .pd-vlog li { grid-template-columns: 60px minmax(0, 1fr); } .v3 .pd-vlog-msg { grid-column: 1 / -1; } }
