* {
    box-sizing: border-box;
}

/* Final shape lock */
.btn,
button,
input[type="button"],
input[type="submit"],
input[type="reset"],
.attachment-delete-btn,
.signin-form button,
.signin-done {
    border-radius: 999px !important;
}

.card,
.forum-card,
.thread-card,
.post-title-card,
.post-content-card,
.reply-card,
.list-card,
.user-table tr,
.signin-modal-box,
.ad-box,
.friend-links,
.attachment-inline-card,
.editor-toolbar,
.captcha-box,
.search input,
input,
select,
textarea {
    border-radius: 6px !important;
}

.brand-mark,
.btn,
.hero .btn,
.page-head .btn,
.image-badge,

.btn:hover,
.hero .btn:hover,
.page-head .btn:hover {
    background: var(--pd-accent-hover) !important;
}

.btn-light,
.signin-form button,
.signin-done {
    background: #eef1f7 !important;
}

.settings-test-form {
    margin-top: 14px;
}

body {
    margin: 0;
    background: #fff;
    color: #243241;
    font-family: "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
    font-size: 14px;
}


a {
    color: var(--pd-accent);
    text-decoration: none;
}

a:hover {
    color: var(--pd-accent-hover);
}

.wrap {
    width: 1024px;
    max-width: 94%;
    margin: 0 auto;
}


.nav {
    min-height: 62px;
    overflow: hidden;
    padding: 14px 0;
}

.brand {
    float: left;
    display: inline-flex;
    align-items: center;
    gap: 10px;
    font-size: 26px;
    line-height: 34px;
    font-weight: 800;
    color: #34303f;
}

.brand-mark {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    overflow: hidden;
    border-radius: 29%;
    clip-path: path("M19 0 C32 0 38 6 38 19 C38 32 32 38 19 38 C6 38 0 32 0 19 C0 6 6 0 19 0Z");
    background: var(--pd-accent);
    color: #fff !important;
    box-shadow: 0 8px 18px rgba(0, 108, 255, .24);
    font-size: 20px;
    line-height: 1;
}

.brand-mark i {
    color: #fff !important;
    line-height: 1;
}

.brand-name {
    line-height: 34px;
}


.signin-form {
    display: inline-block;
    margin: 0 0 0 14px;
}

.signin-form button,
.signin-done {
    display: inline-block;
    width: auto;
    margin: 0;
    padding: 5px 10px;
    border: 1px solid #cfe0eb;
    border-radius: 999px;
    color: var(--pd-accent);
    background: #f3f9fd;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.4;
    cursor: pointer;
}

.signin-done {
    color: #7a8793;
    background: #f5f7f9;
    cursor: default;
}

.signin-modal-overlay {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(45, 41, 58, .22);
}

.signin-modal-box {
    width: 520px;
    max-width: 94vw;
    max-height: 82vh;
    overflow: auto;
    padding: 20px;
    border: 1px solid #d8e3ec;
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 18px 48px rgba(45, 41, 58, .2);
}

.signin-modal-box h2 {
    margin: 0 0 8px;
    color: #34303f;
}

.signin-rank-mini {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin: 14px 0;
}

.signin-rank-mini h3 {
    margin: 0 0 8px;
    font-size: 15px;
    color: #34303f;
}

.signin-rank-mini ol {
    margin: 0;
    padding-left: 18px;
    color: #6f7f8f;
    font-size: 13px;
    line-height: 1.8;
}

.user-mini {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    vertical-align: middle;
}

.notification-link {
    position: relative;
    display: inline-flex;
    align-items: center;
}

.notification-bell-link {
    font-size: 19px;
    line-height: 1;
}

.bell-icon {
    display: inline-block;
    transform-origin: 50% 0;
    animation: pdBellShake .85s ease-in-out infinite;
    filter: drop-shadow(0 2px 4px rgba(229, 57, 53, .25));
}

@keyframes pdBellShake {
    0%, 100% { transform: rotate(0deg); }
    15% { transform: rotate(16deg); }
    30% { transform: rotate(-14deg); }
    45% { transform: rotate(10deg); }
    60% { transform: rotate(-8deg); }
    75% { transform: rotate(4deg); }
}

.user-avatar {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid #d8e3ec;
    vertical-align: middle;
}

.card {
    display: block;
    width: 100%;
    background: #fff;
    border: 1px solid #e5edf3;
    border-radius: 12px;
    box-shadow: 0 6px 20px rgba(42, 80, 110, .06);
    padding: 20px;
    margin-top: 16px;
}

.hero,
.page-head {
    overflow: hidden;
}

.hero h1,
.page-head h1,
.post-title-card h1 {
    margin: 0 0 8px;
    color: #34303f;
}

/* 帖子页：标题、正文、回复使用三个同级独立框 */
.post-title-card .post-meta {
    margin-bottom: 10px;
}

.post-title-card h1 {
    margin: 0;
    line-height: 1.5;
    font-size: 22px;
}

.post-content-card {
    min-height: 260px;
}

.post-content-box {
    padding: 0;
}

.content-page-nav {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid #edf2f7;
}

.content-page-nav a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 32px;
    height: 32px;
    margin-right: 6px;
    border: 1px solid #d8e6ef;
    border-radius: 8px;
    background: #fff;
    color: #5b5568;
}

.content-page-nav a.active {
    color: #fff;
    border-color: var(--pd-accent);
    background: var(--pd-accent);
}

/* 板块页“返回首页”小字链接 */
.page-head h1 .back-home {
    margin-left: 10px;
    font-size: 13px;
    font-weight: normal;
    color: var(--pd-accent);
    vertical-align: middle;
}

.page-head h1 .back-home:hover {
    color: var(--pd-accent-hover);
    text-decoration: none;
}

/* 首页“最新帖子”行内手机端发帖按钮：桌面端隐藏 */
.mobile-post-btn {
    display: none !important;
}

/* 首页列表作者信息行里的手机版浏览/回复统计：桌面端隐藏 */
.meta-metrics {
    display: none;
}

.hero p,
.page-head p,
.muted {
    color: #6f7f8f;
}

.hero .btn,
.page-head .btn {
    float: right;
    margin-top: 10px;
}

.btn {
    display: inline-block;
    border: 0;
    border-radius: 8px;
    background: var(--pd-accent);
    color: #fff !important;
    padding: 10px 16px;
    cursor: pointer;
    font-weight: bold;
}

.btn:hover {
    background: var(--pd-accent-hover);
}

.btn-light {
    background: #eef5fb;
    color: var(--pd-accent) !important;
    margin-left: 8px;
}

.btn-light:hover {
    background: #dfeef8;
}

.btn-small {
    padding: 8px 12px;
    font-size: 12px;
}

.grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 300px;
    gap: 24px;
    align-items: start;
    overflow: visible;
}

.grid > section {
    float: none;
    width: auto;
    max-width: 100%;
    min-width: 0;
}

.grid > aside {
    float: none;
    width: auto;
    min-width: 0;
}

.section-title {
    font-size: 18px;
    margin: 22px 0 10px;
    color: #34303f;
}

.latest-title-menu {
    display: flex;
    align-items: center;
    justify-content: space-between;
}

.latest-title-filter {
    position: relative;
    display: inline-block;
}

.latest-title-filter .section-title {
    margin-right: auto;
}

.latest-title-trigger {
    cursor: pointer;
}

.latest-title-dropdown {
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    position: absolute;
    left: 0;
    top: 100%;
    z-index: 30;
    min-width: 128px;
    padding: 8px;
    border: 1px solid #e5edf3;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 10px 28px rgba(45, 41, 58, .14);
    transform: translateY(6px);
    transition: opacity .15s ease, transform .15s ease, visibility .15s ease;
}

.latest-title-dropdown a {
    display: block;
    padding: 9px 10px;
    border-radius: 7px;
    color: #5b5568;
    font-size: 14px;
}

.latest-title-dropdown a:hover {
    color: var(--pd-accent);
    background: #f1f7fb;
}

.latest-title-filter:hover .latest-title-dropdown {
    visibility: visible;
    opacity: 1;
    pointer-events: auto;
    transform: translateY(0);
}

.image-badge {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 5px;
    border-radius: 4px;
    color: #fff;
    background: var(--pd-accent);
    font-size: 12px;
    line-height: 1.4;
    font-weight: 700;
}

.forum-card {
    display: block;
    overflow: hidden;
    color: inherit;
    min-height: 86px;
}

.forum-card > div:first-child {
    float: left;
    width: 70%;
}

.forum-card h3 {
    margin: 0 0 8px;
    font-size: 18px;
}

.forum-card p {
    margin: 0;
    color: #6f7f8f;
}

.stats {
    float: right;
    width: 25%;
    text-align: right;
    color: #6f7f8f;
}

.stats strong {
    display: block;
    margin-left: 0;
    color: #34303f;
    font-size: 18px;
}

.side-forum-card {
    min-height: 0;
    padding: 16px;
}

.side-forum-card > div:first-child,
.side-forum-card .stats {
    float: none;
    width: 100%;
    text-align: left;
}

.side-forum-card .stats {
    margin-top: 10px;
}

.side-forum-card .stats strong {
    display: inline-block;
    margin-right: 4px;
}

.ad-box {
    margin: 14px 0;
    text-align: center;
    overflow: hidden;
}

.ad-box img {
    max-width: 100%;
    height: auto;
    vertical-align: top;
}

.ad-top {
    margin-top: 16px;
}

.ad-sidebar {
    margin: 0 0 12px;
}

.ad-footer {
    margin: 24px 0 0;
}

.ad-preview {
    margin: 10px 0 16px;
    padding: 10px;
    border: 1px solid #edf2f7;
    border-radius: 8px;
    background: #fff;
}

.ad-preview img {
    max-width: 100%;
    height: auto;
}

.inline-check {
    width: auto;
    margin-right: 6px;
}

.latest-list .list-row a {
    font-size: 16px;
}

.list-row {
    position: relative;
    overflow: hidden;
    padding: 12px 0;
    border-bottom: 1px solid #edf2f7;
}

.list-row:last-child {
    border-bottom: 0;
}

.list-row a {
    font-weight: bold;
    color: #243241;
}

.list-row p {
    margin: 5px 0 0;
    color: #7a8793;
    font-size: 12px;
}

.list-main {
    float: left;
    width: 78%;
}

.list-metrics {
    float: right;
    width: 20%;
    text-align: right;
    color: #b8c0c8;
    font-size: 13px;
    padding-top: 9px;
    white-space: nowrap;
}

.list-metrics span {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-left: 14px;
    line-height: 1;
}

.metric svg {
    width: 16px;
    height: 16px;
    stroke: #c3cad1;
    fill: none;
    stroke-width: 1.8;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.metric-view svg circle {
    fill: none;
}

.thread-list {
    padding: 0;
}

.filter-tabs {
    margin-top: 14px;
    border-bottom: 1px solid #edf2f7;
}

.filter-tabs a {
    display: inline-block;
    padding: 10px 16px;
    margin-right: 4px;
    color: #6f7f8f;
    border: 1px solid transparent;
    border-bottom: 0;
    border-radius: 8px 8px 0 0;
}

.filter-tabs a.active {
    color: var(--pd-accent);
    background: #fff;
    border-color: #edf2f7;
    font-weight: 700;
}

.category-tabs {
    margin-top: 8px;
}

.thread-row {
    overflow: hidden;
    padding: 16px 20px;
    border-bottom: 1px solid #edf2f7;
}

.thread-row:last-child {
    border-bottom: 0;
}

.thread-main {
    float: left;
    width: 75%;
}

.thread-title {
    font-size: 16px;
    font-weight: 700;
    color: #243241;
}

.thread-main p {
    margin: 6px 0 0;
    color: #7a8793;
}

.thread-count {
    float: right;
    width: 20%;
    text-align: right;
    color: #7a8793;
    line-height: 1.7;
}

.tag {
    display: inline-block;
    margin-right: 5px;
    padding: 2px 6px;
    border-radius: 6px;
    font-size: 12px;
}

.tag.red {
    background: #fff1f0;
    color: #c0392b;
}

.tag.good {
    background: #eef1f7;
    color: #1f6fa8;
}

.category-tag {
    display: inline-block;
    margin-right: 6px;
    padding: 2px 6px;
    border-radius: 4px;
    color: #6b4b00;
    background: #fff4d6;
    font-size: 12px;
    font-weight: 700;
}

.forum-table {
    width: 100%;
    border-collapse: collapse;
    margin-top: 10px;
    table-layout: fixed;
}

.forum-table th,
.forum-table td {
    padding: 8px 6px;
    border-bottom: 1px solid #edf2f7;
    text-align: left;
    vertical-align: middle;
    word-break: break-all;
}

.forum-table th {
    color: #6f7f8f;
    font-size: 12px;
    font-weight: 700;
}

.forum-table input[type="text"],
.forum-table input[type="number"] {
    margin: 0;
    padding: 7px 8px;
    font-size: 13px;
}

.forum-name-col {
    width: 118px;
}

.forum-desc-col {
    width: 155px;
}

.forum-category-col {
    width: 255px;
}

.forum-limit-col {
    width: 250px;
}

.forum-order-col {
    width: 60px;
}

.forum-del-col {
    width: 64px;
    text-align: center;
}

.forum-table .forum-order-input {
    width: 48px;
    max-width: 48px;
    padding-left: 6px;
    padding-right: 4px;
    text-align: center;
}

.forum-table .category-cell,
.forum-table .limit-cell {
    width: auto;
}

.forum-admin-table .forum-category-cell input[type="text"] {
    width: 145px;
    min-width: 0;
}

.forum-admin-table .forum-limit-cell input[type="text"] {
    width: 140px;
    min-width: 0;
}

.forum-admin-table .category-inline {
    margin-right: 6px;
    font-size: 12px;
}

.forum-admin-table td:last-child label {
    display: inline-flex;
    align-items: center;
    gap: 3px;
    margin: 0;
    white-space: nowrap;
    font-size: 12px;
}

.add-forum-grid {
    display: grid;
    grid-template-columns: 1fr 1fr 80px;
    gap: 14px;
    align-items: end;
}

.category-cell {
    white-space: nowrap;
}

.limit-cell {
    white-space: nowrap;
}

.category-inline {
    display: inline-block;
    margin-right: 8px;
    white-space: nowrap;
}

.category-cell input[type="text"] {
    display: inline-block;
    width: calc(100% - 72px);
    min-width: 150px;
}

.limit-cell input[type="text"] {
    display: inline-block;
    width: calc(100% - 72px);
    min-width: 120px;
}

.ban-form {
    margin-bottom: 18px;
}

.admin-page-title {
    margin-bottom: 6px;
}

.admin-page-title h1 {
    margin: 0;
}

.admin-back-row {
    margin: 4px 0 14px;
}

.user-search {
    margin: 12px 0;
}

.user-table {
    table-layout: fixed;
}

.user-table th:nth-child(1),
.user-table td:nth-child(1) {
    width: 48px;
}

.user-table th:nth-child(2),
.user-table td:nth-child(2) {
    width: 52px;
}

.user-table th:nth-child(3),
.user-table td:nth-child(3) {
    width: 108px;
}

.user-table th:nth-child(4),
.user-table td:nth-child(4) {
    width: 118px;
}

.user-table th:nth-child(5),
.user-table td:nth-child(5) {
    width: 118px;
}

.user-table th:nth-child(6),
.user-table td:nth-child(6) {
    width: 78px;
}

.user-table th:nth-child(7),
.user-table td:nth-child(7) {
    width: 148px;
}

.user-table th:last-child,
.user-table td:last-child {
    width: 320px;
}

.admin-user-avatar {
    width: 36px;
    height: 36px;
    object-fit: cover;
    border-radius: 8px;
    background: #f1f1f1;
    vertical-align: middle;
}

/* 个人设置 - 头像来源选择 */
.profile-avatar-choose {
    display: flex;
    align-items: center;
    gap: 18px;
    margin: 6px 0 10px;
    flex-wrap: wrap;
}
.profile-avatar-choose .profile-avatar-preview {
    margin: 0;
    flex: 0 0 auto;
}
.profile-avatar-sources {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.profile-avatar-radio {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0;
    font-weight: 500;
    cursor: pointer;
}
.profile-avatar-radio input {
    width: auto;
    margin: 0;
}
.profile-avatar-panel {
    margin: 0 0 8px;
    padding: 12px 14px;
    background: #f6f7fb;
    border: 1px solid #e6e8f0;
    border-radius: 8px;
}
.profile-avatar-panel > *:last-child { margin-bottom: 0; }
body.theme-pd-dark .profile-avatar-panel { background: #23262e; border-color: #333844; }
body.theme-pd-dark .admin-user-avatar { background: #23262e; }

.user-actions form {
    display: grid;
    grid-template-columns: auto auto;
    gap: 6px;
    align-items: center;
    margin: 3px 0;
}

.user-actions .user-action-clear {
    display: block;
}

.user-actions .user-action-clear .btn {
    width: 100%;
}

.user-actions input[type="number"] {
    width: 64px;
    margin: 0;
    padding: 7px 8px;
}

.user-actions input[type="password"] {
    width: 108px;
    margin: 0;
    padding: 7px 8px;
}

.user-actions .btn-small {
    padding: 7px 9px;
    white-space: nowrap;
}

.user-actions .user-action-moderator {
    display: block;
}

.user-actions .user-action-moderator .btn {
    width: 100%;
}

.moderator-badge {
    display: inline-block;
    margin-left: 5px;
    padding: 1px 6px;
    border-radius: 999px;
    color: #7a4b00;
    background: #fff0c2;
    border: 1px solid #f2d27a;
    font-size: 12px;
    font-weight: 700;
    line-height: 1.5;
}

.btn-danger {
    background: #d93025;
}

.btn-danger:hover {
    background: #b42318;
}

.danger-link {
    color: #d93025;
    font-weight: 700;
}

.post-meta {
    color: #7a8793;
    font-size: 13px;
    margin-bottom: 10px;
}

.admin-tools {
    float: right;
    display: inline-flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
    justify-content: flex-end;
    max-width: 100%;
}

.admin-tools a {
    margin-left: 0;
}

.action-badge {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    min-width: 30px;
    min-height: 26px;
    padding: 0;
    color: var(--badge-color, var(--pd-accent)) !important;
    font-size: 12px;
    font-weight: 800;
    line-height: 1;
    white-space: nowrap;
    background: var(--badge-bg, #eef1f7);
    border: 1px solid var(--badge-border, #dce0ee);
    border-radius: 4px;
    cursor: pointer;
}

.action-badge i {
    font-size: 12px;
    line-height: 1;
}

.action-badge > span {
    position: absolute;
    left: 50%;
    bottom: calc(100% + 8px);
    z-index: 20;
    width: max-content;
    max-width: 180px;
    padding: 6px 8px;
    color: #fff;
    font-size: 12px;
    line-height: 1;
    white-space: nowrap;
    pointer-events: none;
    background: #111827;
    border-radius: 4px;
    opacity: 0;
    transform: translate(-50%, 4px);
    transition: opacity .14s ease, transform .14s ease;
}

.action-badge > span::after {
    position: absolute;
    top: 100%;
    left: 50%;
    width: 0;
    height: 0;
    margin-left: -5px;
    content: "";
    border: 5px solid transparent;
    border-top-color: #111827;
}

.action-badge:hover > span,
.action-badge:focus-visible > span {
    opacity: 1;
    transform: translate(-50%, 0);
}

.action-badge:hover {
    color: var(--badge-hover-color, #fff) !important;
    background: var(--badge-hover-bg, var(--badge-color, var(--pd-accent)));
    border-color: var(--badge-hover-border, var(--badge-color, var(--pd-accent)));
}

.action-badge.is-loading {
    opacity: .55;
    pointer-events: none;
}

.action-badge-edit {
    --badge-color: var(--pd-accent);
    --badge-bg: #eef1f7;
    --badge-border: #dce0ee;
}

.action-badge-move {
    --badge-color: #0f766e;
    --badge-bg: #ecfdf5;
    --badge-border: #b7ead9;
}

.action-badge-pin {
    --badge-color: var(--pd-accent);
    --badge-bg: #eef1f7;
    --badge-border: #dce0ee;
}

.action-badge-feature {
    --badge-color: #ca8a04;
    --badge-bg: #fffbeb;
    --badge-border: #fde68a;
}
/* 加精按钮已选中（已加精）：实心星 + 填充底色 */
.action-badge-feature.is-active {
    --badge-color: #b45309;
    --badge-bg: #fef3c7;
    --badge-border: #fcd34d;
}

.action-badge-reply {
    --badge-color: var(--pd-accent);
    --badge-bg: #eef1f7;
    --badge-border: #dce0ee;
}

.action-badge-danger {
    --badge-color: #d93025;
    --badge-bg: #fff1f0;
    --badge-border: #ffd0cc;
}

.action-badge-muted,
.action-badge-static {
    --badge-color: #64748b;
    --badge-bg: #f6f8fb;
    --badge-border: #e2e8f0;
}

.action-badge-static {
    cursor: default;
    --badge-hover-color: #64748b;
    --badge-hover-bg: #f6f8fb;
    --badge-hover-border: #e2e8f0;
}

button.action-badge {
    font-family: inherit;
}

.action-badge-static {
    width: auto;
    min-width: 0;
    padding: 0 8px;
    gap: 5px;
}

.action-badge-static > span {
    position: static;
    width: auto;
    max-width: none;
    padding: 0;
    color: inherit;
    background: transparent;
    opacity: 1;
    transform: none;
}

.action-badge-static > span::after {
    display: none;
}

/* 静态徽章（如 IP）无 tooltip：悬浮/聚焦时不要继承 tooltip 的平移，避免文字错位 */
.action-badge-static:hover > span,
.action-badge-static:focus-visible > span {
    transform: none;
}

/* IP 徽章：默认仅国旗，悬浮展开 IP + 地理位置 */
.action-badge-static.pd-ip-badge {
    display: inline-flex;
    align-items: center;
    gap: 0;
    padding: 0 6px;
    overflow: hidden;
    transition: gap .18s ease, padding .18s ease;
}
.pd-ip-badge .pd-ip-icon {
    display: none;
}
.pd-ip-flag-wrap {
    display: inline-flex;
    align-items: center;
    line-height: 0;
}
.pd-ip-flag {
    width: 21px;
    height: 16px;
    line-height: 16px;
    border-radius: 0;
    box-shadow: 0 0 0 1px rgba(0, 0, 0, .1);
    flex: 0 0 auto;
}
.pd-ip-detail {
    max-width: 0;
    opacity: 0;
    overflow: hidden;
    white-space: nowrap;
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
    transition: max-width .22s ease, opacity .18s ease, margin .18s ease;
}
.pd-ip-badge.has-flag .pd-ip-detail {
    max-width: 0;
    opacity: 0;
    margin-left: 0;
}
.pd-ip-badge:hover,
.pd-ip-badge:focus-within {
    gap: 6px;
    padding: 0 10px;
}
.pd-ip-badge:hover .pd-ip-detail,
.pd-ip-badge:focus-within .pd-ip-detail {
    max-width: 280px;
    opacity: 1;
    margin-left: 2px;
}
.pd-ip-badge:not(.has-flag) .pd-ip-icon {
    display: inline;
}
.pd-ip-badge:not(.has-flag) .pd-ip-detail {
    max-width: none;
    opacity: 1;
}

.move-thread-form {
    display: inline-block;
    margin-left: 8px;
}

.move-thread-form select {
    width: 96px;
    padding: 2px 4px;
    margin: 0 3px 0 0;
    font-size: 12px;
}

.move-thread-form button {
    padding: 0;
    border: 0;
    background: none;
    color: var(--pd-accent);
    cursor: pointer;
    font-size: 12px;
}

.content {
    line-height: 1.9;
    font-size: 15px;
    word-break: break-word;
}

.content-link {
    color: var(--pd-accent);
    border-bottom: 1px dashed rgba(31, 120, 180, .45);
    font-weight: 600;
}

.content-link:hover {
    color: var(--pd-accent-hover);
    border-bottom-style: solid;
}

.remote-img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 12px 0;
    border-radius: 8px;
}

.content img,
.attachment-img,
.remote-img {
    transition: max-width .18s ease, transform .18s ease, box-shadow .18s ease;
}

.content img:hover,
.attachment-img:hover,
.remote-img:hover {
    position: relative;
    z-index: 20;
    max-width: 900px;
    height: auto;
    transform: scale(1.02);
    box-shadow: 0 12px 36px rgba(45, 41, 58, .22);
}

.footer-friend-links {
    color: #7a8793;
}

.footer-friend-links a {
    margin-left: 8px;
    color: #7a8793;
}

.attachment-list {
    margin-top: 18px;
    padding-top: 14px;
    border-top: 1px solid #edf2f7;
    overflow: hidden;
}

.reply-attachments {
    margin-top: 10px;
    padding-top: 10px;
}

.attachment-list h3 {
    margin: 0 0 12px;
    color: #34303f;
}

.attachment-img {
    display: inline-block;
    width: 480px;
    max-width: 100%;
    height: auto;
    margin: 0 12px 12px 0;
    border-radius: 8px;
    border: 1px solid #e5edf3;
    vertical-align: top;
}

.reply-attachments .attachment-img {
    display: inline-block;
    width: 220px;
    max-width: 100%;
}

.attachment-file {
    display: block;
    padding: 10px 12px;
    margin-bottom: 8px;
    border: 1px solid #e5edf3;
    border-radius: 8px;
    background: #fff;
}

.attachment-inline-card {
    display: block;
    max-width: 560px;
    margin: 12px 0;
    padding: 12px 14px;
    border: 1px solid #dce0ee;
    border-radius: 10px;
    background: #f8f6ff;
    color: #5b5568;
}

.attachment-inline-link {
    display: block;
    color: inherit;
}

.attachment-inline-card strong,
.attachment-inline-card span {
    display: block;
}

.attachment-inline-card strong {
    color: #34303f;
    font-size: 15px;
}

.attachment-inline-card span {
    margin-top: 4px;
    color: #6f7f8f;
    font-size: 12px;
}

.attachment-delete-form {
    display: inline-block;
    margin: 6px 0 10px;
}

.attachment-inline-card .attachment-delete-form {
    display: block;
    margin: 8px 0 0;
}

.attachment-delete-btn {
    border: 0;
    border-radius: 999px;
    background: #d64b4b;
    color: #fff;
    cursor: pointer;
    font-size: 12px;
    line-height: 1;
    padding: 6px 10px;
}

.attachment-delete-btn:hover {
    background: #b93636;
}

.reply {
    padding: 14px 0;
    border-bottom: 1px solid #edf2f7;
}

.floor-replies {
    margin: 6px 0 0;
    padding: 0;
    border-left: 0;
    background: transparent;
    border-radius: 0;
}

.floor-reply {
    padding: 4px 0 4px 18px;
    color: #5b5568;
    font-size: 13px;
}

.floor-reply span {
    color: #9aa8b5;
    font-size: 12px;
}

.floor-reply-form {
    display: flex;
    gap: 8px;
    margin-top: 8px;
    padding-left: 18px;
}

.floor-label {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 7px;
    border-radius: 999px;
    background: #eef6fb;
    color: var(--pd-accent);
    font-size: 12px;
}

.floor-icon {
    margin-left: 3px;
    font-size: 13px;
}

.floor-reply-actions {
    float: right;
}

.floor-reply-toggle,
.floor-reply-submit {
    vertical-align: middle;
}

.notification-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 8px 0 16px;
}

.notification-actions form {
    margin: 0;
}

.floor-reply-form input {
    flex: 1;
    margin: 0;
}

.notification-list {
    display: grid;
    gap: 10px;
}

.notification-item {
    display: block;
    padding: 12px 14px;
    border: 1px solid #e5edf3;
    border-radius: 10px;
    background: #fff;
}

.notification-item span {
    display: block;
    margin-top: 4px;
    color: #9aa8b5;
    font-size: 12px;
}

.reply:last-child {
    border-bottom: 0;
}

.narrow,
.narrow-card {
    max-width: 560px;
    margin-left: auto;
    margin-right: auto;
}

.auth-passkey {
    width: 100%;
    margin-top: 10px;
}

.passkey-card h2 {
    margin-top: 0;
}

.passkey-list {
    display: grid;
    gap: 10px;
    margin-top: 16px;
}

.passkey-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 12px;
    border: 1px solid #e5edf5;
    border-radius: 6px;
    background: #fff;
}

.passkey-item p {
    margin: 4px 0 0;
}


label {
    display: block;
    margin: 12px 0 6px;
    color: #5b5568;
    font-weight: bold;
}

input,
select,
textarea {
    width: 100%;
    border: 1px solid #d8e3ec;
    border-radius: 8px;
    padding: 11px 12px;
    outline: none;
    font-size: 14px;
    background: #fff;
}

textarea {
    resize: vertical;
}

.post-form-card {
    max-width: none;
    width: 100%;
    margin: 0;
}

/* 发帖独立页：占满白框内容区，不再套小卡片 */
body.theme-pd.page-post .pd-page-frame main.wrap,
body.theme-pd-dark.page-post .pd-page-frame main.wrap {
    width: 100%;
    max-width: none;
    padding-top: 14px;
    padding-left: 20px;
    padding-right: 20px;
}
body.page-post .pd-post-page {
    width: 100%;
    max-width: none;
    margin: 0;
    padding: 0 0 8px;
    background: transparent;
    border: 0;
    box-shadow: none;
}
body.page-post .pd-post-form {
    width: 100%;
}
body.page-post .pd-post-meta {
    display: grid;
    grid-template-columns: minmax(0, 3fr) minmax(140px, 1fr);
    gap: 14px;
    align-items: end;
    margin-bottom: 16px;
}
body.page-post .pd-post-field-title {
    grid-column: 1;
}
body.page-post .pd-post-field-forum {
    grid-column: 2;
}
body.page-post .pd-post-field-category {
    grid-column: 1 / -1;
}
body.page-post .pd-post-field label,
body.page-post .pd-post-editor > label {
    display: block;
    margin: 0 0 8px;
    font-weight: 700;
}
body.page-post .pd-post-field select,
body.page-post .pd-post-field input {
    width: 100%;
    margin: 0;
}
body.page-post .pd-post-editor {
    width: 100%;
}
body.page-post .pd-post-editor .markdown-editor {
    margin-bottom: 0;
}
body.page-post .pd-post-editor .editor-pane textarea {
    min-height: min(58vh, 640px);
}
body.page-post .pd-post-actions {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    margin-top: 18px;
}
body.page-post .pd-post-actions .btn {
    min-width: 140px;
}
body.page-post .md-preview-box {
    width: min(1160px, calc(100vw - 84px));
}
@media (max-width: 900px) {
    body.page-post .pd-post-meta {
        grid-template-columns: 1fr;
    }
    body.page-post .md-preview-box {
        width: min(920px, calc(100vw - 40px));
    }
}

.post-content-textarea {
    min-height: 320px;
    line-height: 1.8;
}

/* Markdown 双栏编辑器 */
.markdown-editor {
    margin: 8px 0 16px;
}
.markdown-editor .editor-upload-tip {
    display: block;
    margin: 0 0 8px;
    font-size: 12px;
}
.markdown-editor .editor-toolbar {
    display: flex;
    flex-wrap: wrap;
    gap: 4px;
    align-items: center;
    padding: 8px 10px;
    background: #f7f8fc;
    border: 1px solid #d8e3ec;
    border-radius: 8px 8px 0 0 !important;
}
.markdown-editor .editor-toolbar-label {
    display: inline-flex;
    gap: 5px;
    align-items: center;
    height: 32px;
    margin-right: 4px;
    font-size: 12px;
    font-weight: 700;
    color: #6a7078;
    white-space: nowrap;
}
.markdown-editor .editor-toolbar button,
.markdown-editor .editor-toolbar .editor-file {
    display: inline-flex;
    flex: 0 0 32px;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    margin: 0;
    padding: 0;
    font-size: 13px;
    line-height: 1;
    color: #5b5568;
    cursor: pointer;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 5px !important;
}
.markdown-editor .editor-heading-menu {
    position: relative;
    flex: 0 0 32px;
    width: 32px;
    height: 32px;
}
.markdown-editor .editor-heading-menu > [data-heading-toggle] {
    width: 100%;
    height: 100%;
}
.markdown-editor .editor-heading-dropdown {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    z-index: 30;
    display: grid;
    gap: 4px;
    min-width: 82px;
    padding: 6px;
    background: #fff;
    border: 1px solid #d8e3ec;
    border-radius: 5px;
    box-shadow: 0 12px 28px rgba(20, 24, 36, .14);
}
.markdown-editor .editor-heading-dropdown[hidden] {
    display: none !important;
}
.markdown-editor .editor-toolbar .editor-heading-dropdown button {
    flex: none;
    justify-content: flex-start;
    width: 100%;
    height: 30px;
    min-height: 30px;
    padding: 0 10px;
    font-size: 12px;
    font-weight: 700;
    color: #26232f;
    text-align: left;
    border: 1px solid transparent;
    border-radius: 5px;
}
.markdown-editor .editor-toolbar button:hover,
.markdown-editor .editor-toolbar .editor-file:hover,
.markdown-editor .editor-toolbar .editor-heading-dropdown button:hover {
    color: var(--pd-accent);
    background: #fff;
    border-color: #c6cce0;
}
.markdown-editor .editor-toolbar .editor-file input {
    display: none;
}
.markdown-editor .editor-toolbar .editor-md-import {
    flex: 0 0 auto;
    gap: 5px;
    width: auto;
    padding: 0 8px;
    font-size: 12px;
    font-weight: 700;
    color: var(--pd-accent);
    white-space: nowrap;
}
.markdown-editor .editor-toolbar-spacer {
    flex: 1 1 auto;
    min-width: 12px;
}
.markdown-editor .editor-toolbar-meta {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    min-height: 32px;
    font-size: 11px;
    color: #6a7078;
    white-space: nowrap;
}
.markdown-editor .editor-toolbar-separator {
    width: 1px;
    height: 15px;
    background: #d8e3ec;
}
.markdown-editor .editor-preview-btn {
    display: inline-flex !important;
    flex: 0 0 auto !important;
    gap: 5px;
    width: auto !important;
    min-width: 0;
    height: 32px;
    padding: 0 10px !important;
    font-size: 12px;
    font-weight: 700;
    color: var(--pd-accent) !important;
    background: #fff !important;
    border: 1px solid #c6cce0 !important;
    border-radius: 5px !important;
}
.markdown-editor .editor-preview-btn:hover {
    color: #fff !important;
    background: var(--pd-accent) !important;
    border-color: var(--pd-accent) !important;
}
.markdown-editor .editor-pane {
    display: block;
    min-height: 0;
    overflow: hidden;
    background: #fff;
    border: 1px solid #d8e3ec;
    border-top: 0;
    border-radius: 0 0 8px 8px !important;
}
.markdown-editor .editor-pane textarea {
    display: block;
    width: 100%;
    min-height: 360px;
    margin: 0;
    padding: 16px 18px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    font-size: 14px;
    line-height: 1.7;
    color: #26232f;
    background: #fff;
    border: 0;
    border-radius: 0 !important;
    resize: vertical;
    box-shadow: none;
}
.markdown-editor .editor-pane textarea:focus {
    outline: none;
    box-shadow: inset 0 0 0 2px rgba(34, 116, 165, .18);
}
.markdown-editor.is-compact .editor-pane textarea {
    min-height: 180px;
}
@media (max-width: 860px) {
    .markdown-editor .editor-pane textarea {
        min-height: 240px;
    }
    .markdown-editor .editor-toolbar-spacer {
        display: none;
    }
    .markdown-editor .editor-toolbar-meta {
        width: 100%;
        margin-top: 4px;
    }
}

/* Markdown 预览弹窗 */
.md-preview-overlay.is-open {
    display: flex;
}
.md-preview-box {
    width: min(920px, calc(100vw - 40px));
    max-height: min(86vh, 900px);
    display: flex;
    flex-direction: column;
    padding: 20px 22px 18px;
}
.md-preview-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 36px 14px 0;
}
.md-preview-head h2 {
    margin: 0;
    font-size: 18px;
    line-height: 1.3;
}
.md-preview-badge {
    display: inline-flex;
    gap: 5px;
    align-items: center;
    padding: 3px 8px;
    font-size: 11px;
    font-weight: 700;
    color: var(--pd-accent);
    background: #eef1f7;
    border-radius: 5px;
}
.md-preview-body {
    flex: 1 1 auto;
    min-height: 240px;
    max-height: calc(86vh - 160px);
    overflow: auto;
    padding: 16px 18px;
    margin-bottom: 14px;
    line-height: 1.8;
    background: #f7f9fc;
    border: 1px solid #d8e3ec;
    border-radius: 6px;
}
.md-preview-body .empty {
    color: #8a9098;
}
body.theme-pd-dark .md-preview-body,
body.theme-pd-dark .md-preview-badge {
    color: var(--pd-text);
    background: rgba(0, 0, 0, .18);
    border-color: var(--pd-border);
}
body.theme-pd-dark .md-preview-badge {
    color: var(--pd-accent);
}

/* Markdown 正文 / 预览排版 */
.pd-md-body,
.post-content-box,
.reply .content,
.md-preview-body {
    word-wrap: break-word;
}
.pd-md-body > *:first-child,
.post-content-box > *:first-child,
.reply .content > *:first-child,
.md-preview-body > *:first-child {
    margin-top: 0;
}
.pd-md-body h1,
.pd-md-body h2,
.pd-md-body h3,
.pd-md-body h4,
.pd-md-body h5,
.post-content-box h1,
.post-content-box h2,
.post-content-box h3,
.post-content-box h4,
.post-content-box h5,
.reply .content h1,
.reply .content h2,
.reply .content h3,
.reply .content h4,
.reply .content h5,
.md-preview-body h1,
.md-preview-body h2,
.md-preview-body h3,
.md-preview-body h4,
.md-preview-body h5 {
    margin: 1.25em 0 .55em;
    font-weight: 700;
    line-height: 1.35;
    color: #26232f;
}
.pd-md-body h1, .post-content-box h1, .md-preview-body h1 { font-size: 1.55em; }
.pd-md-body h2, .post-content-box h2, .md-preview-body h2 { font-size: 1.35em; }
.pd-md-body h3, .post-content-box h3, .md-preview-body h3 { font-size: 1.18em; }
.pd-md-body p,
.post-content-box p,
.reply .content p,
.md-preview-body p {
    margin: 0 0 1em;
}
.pd-md-body ul,
.pd-md-body ol,
.post-content-box ul,
.post-content-box ol,
.reply .content ul,
.reply .content ol,
.md-preview-body ul,
.md-preview-body ol {
    margin: 0 0 1em;
    padding-left: 1.4em;
}
.pd-md-body blockquote,
.post-content-box blockquote,
.reply .content blockquote,
.md-preview-body blockquote {
    margin: 0 0 1em;
    padding: 8px 14px;
    color: #5b5568;
    background: #eef1f7;
    border-left: 3px solid var(--pd-accent);
}
.pd-md-body pre,
.post-content-box pre,
.reply .content pre,
.md-preview-body pre {
    margin: 0 0 1em;
    padding: 14px;
    overflow: auto;
    color: #e5e7eb;
    background: #111827;
    border-radius: 6px;
}
.pd-md-body code,
.post-content-box code,
.reply .content code,
.md-preview-body code {
    padding: .12em .35em;
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: .92em;
    background: #eef1f7;
    border-radius: 4px;
}
.pd-md-body pre code,
.post-content-box pre code,
.reply .content pre code,
.md-preview-body pre code {
    padding: 0;
    color: inherit;
    background: transparent;
}
.pd-md-body table,
.post-content-box table,
.md-preview-body table {
    width: 100%;
    margin: 0 0 1em;
    border-collapse: collapse;
}
.pd-md-body th,
.pd-md-body td,
.post-content-box th,
.post-content-box td,
.md-preview-body th,
.md-preview-body td {
    padding: 8px 10px;
    border: 1px solid #d8e3ec;
}
.pd-md-body th,
.post-content-box th,
.md-preview-body th {
    background: #f7f8fc;
}
.pd-md-body hr,
.post-content-box hr,
.md-preview-body hr {
    margin: 1.4em 0;
    border: 0;
    border-top: 1px solid #d8e3ec;
}
body.theme-pd-dark .markdown-editor .editor-toolbar,
body.theme-pd-dark .markdown-editor .editor-pane,
body.theme-pd-dark .markdown-editor .editor-heading-dropdown {
    color: var(--pd-text);
    background: var(--pd-surface);
    border-color: var(--pd-border);
}
body.theme-pd-dark .markdown-editor .editor-toolbar {
    background: var(--pd-surface-soft);
}
body.theme-pd-dark .markdown-editor .editor-pane textarea {
    color: var(--pd-text);
    background: var(--pd-surface);
    border-color: var(--pd-border);
}
body.theme-pd-dark .markdown-editor .editor-toolbar button,
body.theme-pd-dark .markdown-editor .editor-toolbar-label,
body.theme-pd-dark .markdown-editor .editor-toolbar-meta {
    color: var(--pd-muted);
}
body.theme-pd-dark .markdown-editor .editor-preview-btn {
    color: var(--pd-accent) !important;
    background: var(--pd-surface) !important;
    border-color: var(--pd-border) !important;
}
body.theme-pd-dark .pd-md-body h1,
body.theme-pd-dark .pd-md-body h2,
body.theme-pd-dark .pd-md-body h3,
body.theme-pd-dark .post-content-box h1,
body.theme-pd-dark .post-content-box h2,
body.theme-pd-dark .post-content-box h3,
body.theme-pd-dark .md-preview-body h1,
body.theme-pd-dark .md-preview-body h2,
body.theme-pd-dark .md-preview-body h3 {
    color: var(--pd-text);
}
body.theme-pd-dark .pd-md-body blockquote,
body.theme-pd-dark .post-content-box blockquote,
body.theme-pd-dark .md-preview-body blockquote {
    color: var(--pd-muted);
    background: rgba(255, 255, 255, .05);
}
body.theme-pd-dark .pd-md-body code,
body.theme-pd-dark .post-content-box code,
body.theme-pd-dark .md-preview-body code {
    background: rgba(255, 255, 255, .08);
}

input:focus,
select:focus,
textarea:focus {
    border-color: #8791c4;
    box-shadow: 0 0 0 3px rgba(34, 116, 165, .12);
}

.captcha-box {
    margin: 12px 0;
}

.captcha-row {
    overflow: hidden;
}

.captcha-row input {
    float: left;
    width: 160px;
    max-width: calc(100% - 148px);
    letter-spacing: .18em;
    text-transform: uppercase;
}

.captcha-row img {
    float: left;
    width: 132px;
    height: 48px;
    margin-left: 12px;
    border: 1px solid #d8e3ec;
    border-radius: 6px;
    cursor: pointer;
    background: #f7fafc;
}

.hp-field {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}

.upload-captcha-row {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    margin: 12px 0 18px;
}

.captcha-col {
    flex: 1;
}

.upload-col {
    width: 150px;
    text-align: center;
    position: relative;
    padding-top: 12px;
}

.upload-icon-box {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: flex-start;
    width: 92px;
    height: auto;
    margin: 0;
    color: var(--pd-accent);
    background: transparent;
    cursor: pointer;
    font-weight: 700;
}

.upload-icon-box input {
    display: none;
}

.upload-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 76px;
    height: 52px;
    border: 1px dashed #c6cce0;
    border-radius: 10px;
    background: #f7f8fc;
}

.upload-icon svg {
    fill: none;
    stroke: #5b5568;
    stroke-width: 3;
    stroke-linecap: round;
    stroke-linejoin: round;
}

.upload-text {
    display: block;
    margin-top: 5px;
    color: #5b5568;
    font-size: 13px;
    line-height: 1.2;
}

.upload-help {
    display: inline-block;
    width: 22px;
    height: 22px;
    margin-left: 4px;
    vertical-align: top;
    padding: 0;
    border: 1px solid #cfe0eb;
    border-radius: 50%;
    color: #6f7f8f;
    background: #fff;
    cursor: pointer;
}

.upload-tip {
    display: none;
    position: absolute;
    right: 0;
    top: 92px;
    z-index: 5;
    width: 260px;
    padding: 10px 12px;
    border: 1px solid #d8e3ec;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(45, 41, 58, .12);
    text-align: left;
}

.upload-status {
    margin: 8px 0 0;
    font-size: 12px;
}

.editor-upload-tip {
    display: block;
    position: static;
    width: auto;
    margin: 8px 0;
    box-shadow: none;
}

.editor-dialog-overlay {
    position: fixed;
    inset: 0;
    z-index: 1140;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(35, 31, 45, .38);
    backdrop-filter: blur(8px);
}

.editor-dialog-overlay.is-open {
    display: flex;
}

.editor-dialog-box {
    position: relative;
    width: 430px;
    max-width: 94vw;
    padding: 22px;
    background: #fff;
    border: 1px solid #dde2ef;
    border-radius: 6px;
    box-shadow: 0 24px 70px rgba(51, 57, 97, .2);
}

.editor-dialog-box h2 {
    margin: 0 42px 16px 0;
    color: #26232f;
}

.editor-dialog-box label {
    display: block;
    margin: 10px 0 8px;
}

.editor-dialog-box input {
    width: 100%;
}

.editor-dialog-close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 32px;
    height: 32px;
    color: var(--pd-accent);
    font-size: 22px;
    line-height: 32px;
    cursor: pointer;
    background: #eef1f7;
    border: 0;
    border-radius: 50%;
}

.editor-dialog-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 18px;
}

/* 自定义确认弹窗（替换浏览器原生 confirm） */
.pd-confirm-overlay {
    position: fixed;
    inset: 0;
    z-index: 1200;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(20, 24, 36, .46);
    backdrop-filter: blur(6px);
}
.pd-confirm-overlay.is-open {
    display: flex;
}
.pd-confirm-box {
    width: 400px;
    max-width: 94vw;
    padding: 22px 22px 18px;
    color: #26232f;
    background: #fff;
    border: 1px solid #dde2ef;
    border-radius: 8px;
    box-shadow: 0 24px 70px rgba(20, 24, 36, .28);
    animation: pdConfirmIn .16s ease;
}
@keyframes pdConfirmIn {
    from { opacity: 0; transform: translateY(8px) scale(.98); }
    to { opacity: 1; transform: translateY(0) scale(1); }
}
.pd-confirm-head {
    display: flex;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 10px;
}
.pd-confirm-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    flex: 0 0 auto;
    color: #d93025;
    background: #fff1f0;
    border: 1px solid #ffd0cc;
    border-radius: 5px;
    font-size: 16px;
}
.pd-confirm-title {
    margin: 2px 0 0;
    color: #26232f;
    font-size: 17px;
    font-weight: 700;
    line-height: 1.35;
}
.pd-confirm-message {
    margin: 0 0 0 48px;
    color: #6a7078;
    font-size: 14px;
    line-height: 1.6;
}
.pd-confirm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 10px;
    margin-top: 20px;
}
.pd-confirm-actions .btn {
    min-height: 36px;
    padding: 0 16px;
    font-size: 14px;
    border-radius: 5px;
}
.pd-confirm-actions .btn-light,
.pd-confirm-actions .btn-light:hover,
.pd-confirm-actions .btn-light:active {
    color: #4a5568 !important;
    background: #eef1f7 !important;
    border: 1px solid #dde2ef;
}
.pd-confirm-actions .btn-light:hover,
.pd-confirm-actions .btn-light:active {
    color: #26232f !important;
    background: #e2e6ef !important;
    border-color: #cfd5e4;
}
.pd-confirm-actions .btn-danger {
    color: #fff !important;
    background: #d93025 !important;
    border-color: #d93025;
}
.pd-confirm-actions .btn-danger:hover,
.pd-confirm-actions .btn-danger:active {
    background: #b8251c !important;
    border-color: #b8251c;
}
body.theme-pd-dark .pd-confirm-actions .btn-light,
body.theme-pd-dark .pd-confirm-actions .btn-light:hover,
body.theme-pd-dark .pd-confirm-actions .btn-light:active {
    color: var(--pd-text) !important;
    background: var(--pd-surface-soft) !important;
    border-color: var(--pd-border);
}
body.theme-pd-dark .pd-confirm-actions .btn-light:hover,
body.theme-pd-dark .pd-confirm-actions .btn-light:active {
    background: rgba(255, 255, 255, .08) !important;
}
body.theme-pd-dark .pd-confirm-box {
    color: var(--pd-text);
    background: var(--pd-surface);
    border-color: var(--pd-border);
    box-shadow: var(--pd-shadow-soft);
}
body.theme-pd-dark .pd-confirm-title {
    color: var(--pd-text);
}
body.theme-pd-dark .pd-confirm-message {
    color: var(--pd-muted);
}
body.theme-pd-dark .pd-confirm-icon {
    color: #ff8a80;
    background: rgba(217, 48, 37, .18);
    border-color: rgba(217, 48, 37, .35);
}

.pd-upload-progress {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 1150;
    width: 280px;
    max-width: calc(100vw - 36px);
    padding: 12px;
    color: #26232f;
    background: #fff;
    border: 1px solid #dde2ef;
    border-radius: 6px;
    box-shadow: 0 18px 44px rgba(51, 57, 97, .18);
    opacity: 0;
    pointer-events: none;
    transform: translateY(12px);
    transition: opacity .18s ease, transform .18s ease;
}

.pd-upload-progress.is-visible {
    opacity: 1;
    transform: translateY(0);
}

.pd-upload-progress-title {
    display: flex;
    align-items: center;
    gap: 8px;
    font-weight: 800;
}

.pd-upload-progress-name {
    margin-top: 8px;
    overflow: hidden;
    color: #64748b;
    font-size: 12px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.pd-upload-progress-track {
    height: 6px;
    margin-top: 10px;
    overflow: hidden;
    background: #eef1f7;
    border-radius: 999px;
}

.pd-upload-progress-track span {
    display: block;
    width: 0;
    height: 100%;
    background: var(--pd-accent);
    transition: width .14s ease;
}

.pd-upload-progress-text {
    margin-top: 7px;
    color: #64748b;
    font-size: 12px;
    text-align: right;
}

.pd-upload-progress.is-done .pd-upload-progress-track span {
    background: #0f766e;
}

.pd-upload-progress.is-error .pd-upload-progress-track span {
    background: #d93025;
}


.rank-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}

.profile-avatar-preview {
    margin: 12px 0;
}

.profile-avatar-preview img {
    width: 96px;
    height: 96px;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid #d8e3ec;
    background: #f5f9fc;
}

form .btn {
    margin-top: 14px;
}

.forum-edit-form {
    padding: 12px 0;
    border-bottom: 1px solid #edf2f7;
}

.forum-edit-form:last-child {
    border-bottom: 0;
}

.forum-edit-form input {
    margin-bottom: 8px;
}

.alert {
    background: #fff5e6;
    color: #9a5a00;
    border: 1px solid #ffdfaa;
    border-radius: 8px;
    padding: 10px 12px;
    margin: 12px 0;
}

.success {
    color: #187447;
}

.danger {
    color: #b42318;
}

.search {
    overflow: hidden;
}

.search input {
    float: left;
    width: 80%;
}

.search .btn {
    float: right;
    width: 18%;
    margin-top: 0;
}

.footer {
    margin-top: 30px;
    padding: 22px 0;
    color: #7a8793;
    border-top: 1px solid #edf1f5;
}

.footer-links {
    text-align: left;
}


/* Dynamic font application */
body {
    font-family: var(--pd-content-font, "Microsoft YaHei", "PingFang SC", Arial, sans-serif);
}

.brand,
.brand-name,
h1,
h2,
h3,
.section-title,
.hero h1,
.page-head h1,
.post-title-card h1,
.latest-title-trigger,
.forum-card h2,
.thread-title,
.list-main h2,
.signin-modal-box h2,
.signin-rank-mini h3,
.admin-page-title h1 {
    font-family: var(--pd-title-font, var(--pd-content-font, "Microsoft YaHei", "PingFang SC", Arial, sans-serif));
}

.post-content-box,
.thread-main,
.list-main,
.card,
input,
select,
textarea,
button {
    font-family: var(--pd-content-font, "Microsoft YaHei", "PingFang SC", Arial, sans-serif);
}

body.use-system-page-font,
body.use-system-page-font .brand,
body.use-system-page-font .brand-name,
body.use-system-page-font h1,
body.use-system-page-font h2,
body.use-system-page-font h3,
body.use-system-page-font .section-title,
body.use-system-page-font .hero h1,
body.use-system-page-font .page-head h1,
body.use-system-page-font .post-title-card h1,
body.use-system-page-font .latest-title-trigger,
body.use-system-page-font .forum-card h2,
body.use-system-page-font .thread-title,
body.use-system-page-font .list-main h2,
body.use-system-page-font .signin-modal-box h2,
body.use-system-page-font .signin-rank-mini h3,
body.use-system-page-font .admin-page-title h1,
body.use-system-page-font .post-content-box,
body.use-system-page-font .thread-main,
body.use-system-page-font .list-main,
body.use-system-page-font .card,
body.use-system-page-font input,
body.use-system-page-font select,
body.use-system-page-font textarea,
body.use-system-page-font button {
    font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", Arial, sans-serif;
}

/* LiteNote-style toast */

/* Toast：与 LiteNote 后台 toast 样式完全一致 */
.pd-toast-stack {
    position: fixed;
    right: 24px;
    bottom: 24px;
    z-index: 3000;
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: flex-end;
    width: auto;
    max-width: calc(100vw - 48px);
    pointer-events: none;
}

.pd-toast {
    display: inline-flex;
    gap: 8px;
    align-items: center;
    justify-content: flex-start;
    width: auto;
    max-width: 100%;
    min-height: 44px;
    padding: 10px 14px;
    overflow: hidden;
    font-size: 13px;
    font-weight: 600;
    color: #fff;
    pointer-events: auto;
    background: #0f172a;
    border: 1px solid rgba(15, 23, 42, 0.1);
    border-radius: 8px;
    box-shadow: 0 12px 28px rgba(15, 23, 42, 0.18);
    animation: toast-in 0.2s ease-out;
}

.pd-toast > i {
    display: inline-grid;
    flex: 0 0 20px;
    place-items: center;
    width: 20px;
    height: 20px;
    font-size: 16px;
    transform: translateY(-1px);
}

.pd-toast > .pd-toast-message {
    flex: 1 1 auto;
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    line-height: 1.45;
    color: #fff;
    overflow-wrap: anywhere;
}

.pd-toast-success {
    background: #0f172a;
    border-color: rgba(15, 23, 42, 0.1);
}

.pd-toast-success > i {
    color: #22c55e;
}

.pd-toast-error {
    background: #0f172a;
    border-color: rgba(15, 23, 42, 0.1);
}

.pd-toast-error > i {
    color: #ef4444;
}

.pd-toast.is-leaving {
    animation: toast-out 0.18s ease-in forwards;
}

@keyframes toast-in {
    from {
        opacity: 0;
        transform: translateY(8px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@keyframes toast-out {
    to {
        opacity: 0;
        transform: translateY(8px);
    }
}

/* Admin storage tabs */
.storage-settings-tabs {
    margin: 18px 0;
    padding: 12px;
    background: #f7f8fc;
    border: 1px solid #dde2ef;
    border-radius: 6px;
}

.storage-tabs-head {
    display: inline-flex;
    gap: 6px;
    align-items: center;
    padding: 4px;
    margin-bottom: 14px;
    background: #fff;
    border: 1px solid #dde2ef;
    border-radius: 999px;
}

.storage-tab-btn {
    width: auto;
    min-height: 34px;
    padding: 0 14px;
    margin: 0;
    color: #5b5568;
    font-size: 14px;
    font-weight: 800;
    background: transparent;
    border: 0;
    border-radius: 999px;
    cursor: pointer;
}

.storage-tab-btn.active {
    color: #fff;
    background: var(--pd-accent);
}

.storage-tab-panel {
    display: none;
}

.storage-tab-panel.active {
    display: block;
}

.storage-tab-panel h2 {
    margin-top: 2px;
}


@media (max-width: 640px) {
    .storage-settings-tabs {
        padding: 10px;
    }

    .storage-tabs-head {
        display: grid;
        grid-template-columns: 1fr 1fr;
        width: 100%;
    }

    .storage-tab-btn {
        padding: 0 8px;
    }
}

/* Sticky footer and interaction polish */
html {
    min-height: 100%;
}

body {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
    opacity: 0;
    transition: opacity 180ms ease;
}

body.pd-page-ready {
    opacity: 1;
}

main.wrap {
    flex: 1 0 auto;
    width: 100%;
}

.footer {
    margin-top: auto;
    flex-shrink: 0;
}

.pd-ajax-loading main.wrap {
    opacity: .56;
    pointer-events: none;
    transition: opacity 160ms ease;
}

.pd-loading-indicator {
    position: fixed;
    top: 50%;
    left: 50%;
    z-index: 1300;
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    background: rgba(255, 255, 255, .92);
    border: 1px solid #dde2ef;
    border-radius: 999px;
    box-shadow: 0 12px 28px rgba(80, 91, 147, .16);
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(.92);
    transition: opacity 160ms ease, transform 160ms ease;
}

.pd-loading-indicator svg {
    width: 26px;
    height: 26px;
}

body.pd-is-loading .pd-loading-indicator {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}


.pd-zoomable-image {
    cursor: zoom-in;
}

.content img,
.attachment-img {
    transition: transform 180ms ease, opacity 180ms ease;
}

.content img:hover,
.attachment-img:hover {
    transform: translateY(-1px);
}

@media (prefers-reduced-motion: reduce) {
    body,
    .pd-ajax-loading main.wrap,
    .content img,
    .attachment-img {
        transition: none;
    }
}

/* Site width and search modal */
:root {
    --pd-site-width: 1024px;
}

.wrap,
main.wrap,
.footer .wrap {
    width: var(--pd-site-width);
    max-width: calc(100vw - 32px);
    margin-right: auto;
    margin-left: auto;
}

main.wrap {
    flex: 1 0 auto;
}


.grid {
    grid-template-columns: minmax(0, 700px) 300px;
}

.latest-list,
.grid > section .card {
    width: 100%;
}

.grid > aside {
    justify-self: stretch;
}

.search-modal-overlay {
    position: fixed;
    inset: 0;
    z-index: 1120;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 18px;
    background: rgba(35, 31, 45, .38);
    backdrop-filter: blur(8px);
}

.search-modal-overlay.is-open {
    display: flex;
}

.search-modal-box {
    position: relative;
    width: 520px;
    max-width: 94vw;
    padding: 22px;
    background: #fff;
    border: 1px solid #dde2ef;
    border-radius: 6px;
    box-shadow: 0 24px 70px rgba(51, 57, 97, .2);
}

.search-modal-box h2 {
    margin: 0 42px 16px 0;
    color: #26232f;
}

.search-modal-close {
    position: absolute;
    top: 12px;
    right: 12px;
    width: 32px;
    height: 32px;
    color: var(--pd-accent);
    font-size: 22px;
    line-height: 32px;
    cursor: pointer;
    background: #eef1f7;
    border: 0;
    border-radius: 50%;
}

.search-modal-form label {
    display: block;
    margin-bottom: 8px;
}

.search-modal-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
}

.search-modal-row input {
    width: 100%;
    margin: 0;
}

.search-modal-row .btn {
    width: auto;
    margin: 0;
}


@media (max-width: 860px) {
    .grid {
        display: block;
    }

    .grid > aside {
        margin-top: 18px;
    }
}

/* PHP design system */
:root {
    --php-accent: #505b93;
    --php-nav: #505b93;
    --php-nav-hover: #3f4874;
    --php-nav-active: #333961;
    --php-lavender: #cfd6e8;
    --php-lavender-light: #eaeef6;
    --php-muted-accent: #bcc2dd;
    --php-purple: #793862;
    --php-text: #333333;
    --php-text-strong: #222222;
    --php-muted: #666666;
    --php-border: #E6E6E6;
    --php-border-medium: #CCCCCC;
    --php-surface: #FFFFFF;
    --php-surface-subtle: #F2F2F2;
    --php-surface-muted: #E2E4EF;
    --pd-title-font: "Fira Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --pd-content-font: "Fira Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}

a,
body.theme-pd a,

a:hover,
body.theme-pd a:hover,

a:visited {
    color: var(--pd-accent);
}

h1,
h2,
h3,
.brand,
.section-title,
.hero h1,
.page-head h1,
.post-title-card h1,
.signin-modal-box h2,
.signin-rank-mini h3,
.search-modal-box h2 {
    color: var(--pd-accent);
    font-family: var(--pd-title-font);
    font-weight: 400;
}

h1,
.hero h1,
.page-head h1,
.post-title-card h1 {
    font-size: 32px;
    line-height: 40px;
}

h2,
.section-title,
.search-modal-box h2 {
    font-size: 24px;
    line-height: 32px;
}

h3,
.signin-rank-mini h3 {
    font-size: 20px;
    line-height: 28px;
}

.muted,
.hero p,
.page-head p,
.meta,
.thread-meta,
.forum-desc {
    color: var(--pd-muted);
}


.brand-mark {
    color: #FFFFFF;
    background: var(--pd-accent);
    box-shadow: none;
}


.card,
.footer,
.friend-links,
.signin-modal-box,
.search-modal-box,
.storage-settings-tabs,

.card,
.content-card {
    padding: 24px;
}

.latest-list .card,
.thread-list .card,
.news-card,
.forum-card {
    box-shadow: 0 1px 2px rgba(0, 0, 0, .05);
}

.grid > aside .card,
.sidebar {
    font-size: 14px;
    line-height: 21px;
    border-color: var(--php-border-medium);
}

.btn,
button.btn,
input[type="submit"],
.hero .btn,
.page-head .btn,
.search-modal-row .btn,

.hero .btn,
.page-head .btn {
    min-height: 58px;
    padding: 16px 32px;
    font-size: 20px;
}

.btn:hover,
button.btn:hover,
input[type="submit"]:hover,
.hero .btn:hover,
.page-head .btn:hover,

.btn:active,
button.btn:active,
input[type="submit"]:active {
    background: var(--php-nav-active);
}

.btn-light,
.signin-form button,
.signin-done,
.auth-passkey,
.content-page-nav a,
.storage-tab-btn,

.btn-light:hover,
.signin-form button:hover,
.auth-passkey:hover,
.content-page-nav a:hover,
.storage-tab-btn:hover {
    color: var(--pd-accent) !important;
    background: var(--pd-surface-soft);
}

.content-page-nav a.active,
.storage-tab-btn.active {
    color: #FFFFFF !important;
    background: var(--pd-accent);
    border-color: var(--pd-accent);
}

input,
select,
textarea,

input:focus,
select:focus,
textarea:focus {
    border-color: var(--pd-accent);
    box-shadow: 0 0 0 2px rgba(80, 91, 147, .12);
    outline: 0;
}

input:disabled,
select:disabled,
textarea:disabled {
    color: var(--php-border-medium);
    background: var(--pd-surface-soft);
    border-color: var(--pd-border);
}

.search-modal-overlay,
.signin-modal-overlay {
    background: rgba(34, 34, 34, .42);
    backdrop-filter: none;
}

.search-modal-close,


.tag,
.badge,
.image-badge,
.nav-badge {
    color: var(--pd-text-title);
    background: var(--php-lavender-light);
    border: 1px solid var(--php-muted-accent);
    border-radius: 4px;
}

.tag.good,
.image-badge {
    color: #FFFFFF;
    background: var(--pd-accent);
    border-color: var(--pd-accent);
}

.alert {
    color: var(--pd-text);
    background: #FFFFFF;
    border: 1px solid var(--php-border-medium);
    border-radius: 0;
}

.alert.success,
.success {
    color: #2D6A4F;
}

.danger,
.alert.danger {
    color: #9F1D35;
}

table,
.table {
    color: var(--pd-text);
    background: var(--pd-surface);
    border-color: var(--pd-border);
}

th,
td {
    border-color: var(--pd-border);
}

code,
pre {
    color: var(--pd-text-title);
    background: var(--pd-surface-soft);
    border: 1px solid var(--pd-border);
    border-radius: 0;
}


/* php.do 基础变量 — 颜色 / 按钮 / 卡片 / 字体 / 间距 */


body.theme-pd {
    /* 品牌色 */
    --pd-accent: #505b93;
    --pd-accent-hover: #3f4874;
    --pd-accent-strong: #505b93;
    --pd-red: #ff674f;
    --pd-gold: #f5a623;
    --pd-good-title: #c58a12;
    --pd-good-title-hover: #a87310;
    --pd-top-title: #d1495b;
    --pd-top-title-hover: #b83a4a;
    --pd-top-board-title: #e05a4a;
    --pd-top-board-title-hover: #c94a3a;

    /* 文字 */
    --pd-text: #3f3f3f;
    --pd-text-title: #333333;
    --pd-text-body: #333333;
    --pd-muted: #969696;
    --pd-faint: #96999e;
    --pd-text-on-accent: #ffffff;

    /* 表面 */
    --pd-page: #f7f7f8;
    --pd-surface: #ffffff;
    --pd-surface-soft: #f6f7f9;
    --pd-surface-raised: #fbfbfc;
    --pd-line: #eceff3;
    --pd-border: #d8d8d8;

    /* 导航 */
    --pd-nav-bg: #ffffff;
    --pd-nav-border: #e7e8eb;
    --pd-nav-shadow: 0 1px 6px rgba(20, 20, 20, .04);

    /* 卡片 */
    --pd-card-bg: var(--pd-surface);
    --pd-card-border: 1px solid var(--pd-border);
    --pd-card-radius: .25rem;
    --pd-card-radius-lg: 7px;
    --pd-card-shadow: 0 .125rem .5rem rgba(0, 0, 0, .08);
    --pd-card-shadow-subtle: 0 1px 0 rgba(20, 20, 20, .02);
    --pd-card-padding: 1.5rem 1.625rem;

    /* 按钮 */
    --pd-btn-radius: 999px;
    --pd-control-radius: .5rem;
    --pd-btn-primary-bg: var(--pd-accent);
    --pd-btn-primary-color: var(--pd-text-on-accent);
    --pd-btn-primary-hover-bg: var(--pd-accent-hover);
    --pd-btn-secondary-bg: #f3f4f6;
    --pd-btn-secondary-border: #e3e6eb;
    --pd-btn-secondary-color: #666666;
    --pd-btn-secondary-icon: #a2a7af;
    --pd-btn-secondary-text-strong: var(--pd-text-title);
    --pd-btn-ghost-color: var(--pd-faint);
    --pd-btn-ghost-hover-bg: transparent;

    /* 字体 */
    --pd-font-sans: "Fira Sans", "Source Sans Pro", ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif;
    --pd-font-mono: "Fira Mono", "Source Code Pro", ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
    --pd-font-size-base: 16px;
    --pd-font-size-sm: .875rem;
    --pd-font-size-list-title: 1.125rem;
    --pd-font-weight-list-title: 500;
    --pd-font-size-page-title: 1.75rem;
    --pd-font-weight-page-title: 500;
    --pd-font-size-section-title: 1.5rem;
    --pd-font-weight-section-title: 500;
    --pd-font-size-body: 1rem;
    --pd-line-height-body: 1.5;

    /* 间距 */
    --pd-space-1: .5rem;
    --pd-space-2: .75rem;
    --pd-space-3: 1rem;
    --pd-space-4: 1.5rem;
    --pd-space-5: 2rem;
    --pd-shadow-soft: var(--pd-card-shadow);

    /* 首页布局 */
    --pd-home-gap: 14px;
    --pd-home-cols: minmax(0, 7fr) minmax(0, 3fr);
    --pd-home-side: calc((100% - var(--pd-home-gap)) * 0.3);
}

body.theme-pd-dark {
    --pd-page: #101217;
    --pd-surface: #181b22;
    --pd-surface-soft: #1f2430;
    --pd-surface-raised: #222734;
    --pd-border: #303643;
    --pd-line: #303643;
    --pd-text: #e6e8ee;
    --pd-text-title: #e6e8ee;
    --pd-text-body: #e6e8ee;
    --pd-muted: #a6adba;
    --pd-faint: #7d8593;
    --pd-accent: #8791c4;
    --pd-accent-hover: #9aa3d0;
    --pd-accent-strong: #b9c0dd;
    --pd-red: #ff8a78;
    --pd-good-title: #f5a623;
    --pd-good-title-hover: #ffc04d;
    --pd-top-title: #ff8a78;
    --pd-top-title-hover: #ffb0a3;
    --pd-top-board-title: #ff8a78;
    --pd-top-board-title-hover: #ffb0a3;
    --pd-nav-bg: #151821;
    --pd-nav-border: var(--pd-border);
    --pd-nav-shadow: 0 .125rem .75rem rgba(0, 0, 0, .28);
    --pd-btn-secondary-bg: var(--pd-surface-soft);
    --pd-btn-secondary-border: var(--pd-border);
    --pd-btn-secondary-color: var(--pd-muted);
    --pd-btn-secondary-icon: var(--pd-muted);
    --pd-btn-secondary-text-strong: var(--pd-text-title);
    --pd-card-shadow: 0 .125rem .75rem rgba(0, 0, 0, .28);
    --pd-shadow-soft: var(--pd-card-shadow);
}

/* php.do forum index */
body.theme-pd {
    color: var(--pd-text);
    font-family: var(--pd-content-font), var(--pd-font-sans);
}

body.theme-pd main.wrap {
    box-sizing: border-box;
    max-width: none;
    width: 100%;
    padding: 0 0 52px;
}

body.theme-pd .nav-search-form {
    display: flex;
    align-items: center;
    width: 250px;
    height: 42px;
    overflow: hidden;
    background: #fff;
    border: 1px solid #dfe3e8;
    border-radius: 5px;
}

body.theme-pd .nav-search-form input {
    flex: 1;
    min-width: 0;
    height: 100%;
    margin: 0;
    padding: 0 12px;
    color: #333;
    font-size: 15px;
    background: transparent;
    border: 0;
    border-radius: 0 !important;
    outline: 0;
}

body.theme-pd .nav-search-form button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    padding: 0;
    color: #555;
    background: #fff !important;
    border: 0;
    border-left: 1px solid #edf0f3;
    border-radius: 0 !important;
    box-shadow: none;
    cursor: pointer;
}

body.theme-pd .nav-search-form button:hover {
    color: var(--pd-accent);
    background: #f8f9fb !important;
}


body.theme-pd .pd-home-shell {
    width: min(1152px, calc(100vw - 48px));
    margin: 0 auto;
}

body.theme-pd .pd-category-bar {
    display: flex;
    align-items: center;
    gap: 20px;
    min-height: 48px;
    padding: 0 30px;
    overflow-x: auto;
    color: var(--pd-text-title);
    background: var(--pd-card-bg);
    border: var(--pd-card-border);
    border-top: 0;
    border-radius: 0 0 var(--pd-card-radius-lg) var(--pd-card-radius-lg);
    box-shadow: var(--pd-card-shadow-subtle);
    white-space: nowrap;
    scrollbar-width: none;
}

body.theme-pd .pd-category-bar::-webkit-scrollbar,
body.theme-pd .pd-feed-tabs::-webkit-scrollbar {
    display: none;
}

body.theme-pd .pd-category-bar a {
    color: #3c3c3c;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
}

body.theme-pd .pd-category-bar a:hover {
    color: var(--pd-accent);
}

body.theme-pd .pd-inner-category-bar {
    background: #fff;
    border-bottom: var(--pd-card-border);
    box-shadow: 0 1px 0 rgba(20, 20, 20, .03);
}

body.theme-pd .pd-inner-category-bar > div {
    display: flex;
    align-items: center;
    gap: 28px;
    width: min(1200px, calc(100vw - 48px));
    min-height: 54px;
    margin: 0 auto;
    overflow-x: auto;
    white-space: nowrap;
    scrollbar-width: none;
}

body.theme-pd .pd-inner-category-bar > div::-webkit-scrollbar {
    display: none;
}

body.theme-pd .pd-inner-category-bar a {
    color: #3c3c3c;
    font-size: 16px;
    font-weight: 800;
    text-decoration: none;
}

body.theme-pd .pd-inner-category-bar a:hover {
    color: var(--pd-accent);
}

body.theme-pd .pd-breadcrumb {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 22px 0;
    color: var(--pd-muted);
    font-size: 14px;
}

body.theme-pd .pd-breadcrumb a,
body.theme-pd .pd-breadcrumb strong {
    color: var(--pd-faint);
    text-decoration: none;
}

/* 首页视图切换：列表 ⇄ 版块 */
body.theme-pd .pd-home-switch {
    display: inline-flex;
    gap: 4px;
    margin-bottom: 14px;
    padding: 4px;
    background: var(--pd-card-bg);
    border: var(--pd-card-border);
    border-radius: 8px;
}
body.theme-pd .pd-home-switch button {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 32px;
    padding: 0 16px;
    color: var(--pd-muted);
    font-size: 13px;
    font-weight: 700;
    background: transparent;
    border: 0;
    border-radius: 6px;
    cursor: pointer;
}
body.theme-pd .pd-home-switch button.active {
    color: #fff;
    background: var(--pd-accent);
}

/* 视图显隐 */
body.theme-pd .pd-board { display: none; }
body.theme-pd .pd-home-shell[data-home-view="board"] .pd-home-layout { display: none; }
body.theme-pd .pd-home-shell[data-home-view="board"] .pd-board { display: block; }

/* 版块表（phpBB prosilver 骨架 + 扁平配色） */
body.theme-pd .pd-board {
    background: var(--pd-card-bg);
    border: var(--pd-card-border);
    border-radius: var(--pd-card-radius-lg);
    box-shadow: var(--pd-card-shadow-subtle);
    overflow: hidden;
}
body.theme-pd .pd-board-cat {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 76px 76px 224px;
    align-items: center;
    gap: 16px;
    padding: 10px 18px;
    color: #fff;
    background: var(--pd-accent);
    font-size: 13px;
    font-weight: 700;
}
body.theme-pd .pd-board-cat-title { grid-column: 1 / 3; font-size: 14px; }
body.theme-pd .pd-board-h { text-align: center; }
body.theme-pd .pd-board-h-last { text-align: left; }
body.theme-pd .pd-board-row {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 76px 76px 224px;
    align-items: center;
    gap: 16px;
    padding: 12px 18px;
    border-bottom: 1px solid var(--pd-line);
}
body.theme-pd .pd-board-row:last-child { border-bottom: 0; }
body.theme-pd .pd-board-row:nth-child(even) { background: var(--pd-surface-soft); }
body.theme-pd .pd-board-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    color: var(--pd-accent);
    font-size: 18px;
    background: var(--pd-surface);
    border: 1px solid var(--pd-border);
    border-radius: 50%;
    text-decoration: none;
}
body.theme-pd .pd-board-main { min-width: 0; }
body.theme-pd .pd-board-name {
    color: var(--pd-text-title);
    font-size: 15px;
    font-weight: 700;
    text-decoration: none;
}
body.theme-pd .pd-board-name:hover { color: var(--pd-accent); }
body.theme-pd .pd-board-desc {
    margin: 3px 0 0;
    color: var(--pd-muted);
    font-size: 12px;
    line-height: 1.5;
}
body.theme-pd .pd-board-num { text-align: center; color: var(--pd-text-body); }
body.theme-pd .pd-board-num b { display: block; font-size: 15px; font-weight: 700; }
body.theme-pd .pd-board-num span { display: none; }
body.theme-pd .pd-board-last { min-width: 0; }
body.theme-pd .pd-board-last-title {
    display: block;
    overflow: hidden;
    color: var(--pd-text-title);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.theme-pd .pd-board-last-title:hover { color: var(--pd-accent); }
body.theme-pd .pd-board-last-meta { margin: 2px 0 0; color: var(--pd-muted); font-size: 12px; }
body.theme-pd .pd-board-last-meta a { color: var(--pd-accent); text-decoration: none; }
body.theme-pd .pd-board-last-empty { color: var(--pd-faint); font-size: 12px; }

@media (max-width: 720px) {
    body.theme-pd .pd-board-cat { grid-template-columns: 1fr; }
    body.theme-pd .pd-board-cat-title { grid-column: auto; }
    body.theme-pd .pd-board-h { display: none; }
    body.theme-pd .pd-board-row { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 12px; }
    body.theme-pd .pd-board-icon { flex: 0 0 auto; }
    body.theme-pd .pd-board-main { flex: 1; }
    body.theme-pd .pd-board-num { display: none; }
    body.theme-pd .pd-board-last { flex-basis: 100%; margin-top: 6px; padding-left: 56px; }
}

body.theme-pd .pd-home-layout {
    display: grid;
    grid-template-columns: var(--pd-home-cols);
    gap: var(--pd-home-gap);
    align-items: start;
}

body.theme-pd .pd-feed-card,
body.theme-pd .pd-side-card {
    background: var(--pd-card-bg);
    border: var(--pd-card-border);
    border-radius: var(--pd-card-radius-lg);
    box-shadow: var(--pd-card-shadow-subtle);
}

body.theme-pd .pd-feed-card {
    display: flex;
    flex-direction: column;
    min-width: 0;
    padding: 22px;
}

body.theme-pd .pd-feed-tabs {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 14px;
    scrollbar-width: none;
}

body.theme-pd .pd-feed-tabs a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 88px;
    height: 34px;
    padding: 0 14px;
    color: #333;
    font-size: 13px;
    font-weight: 800;
    text-decoration: none;
    background: #f1f1f1;
    border: 0;
    border-radius: 4px;
}

body.theme-pd .pd-feed-tabs a.active {
    color: #fff;
    background: var(--pd-accent);
}

body.theme-pd .pd-feed-tabs .pd-rss {
    min-width: 0;
    margin-left: auto;
    padding: 0;
    gap: 8px;
    color: #8f9399;
    font-size: 15px;
    background: transparent;
}

body.theme-pd .pd-feed-tabs .pd-feed-loading {
    display: inline-flex;
    flex-shrink: 0;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    margin-left: 4px;
    opacity: 0;
    pointer-events: none;
    transition: opacity 140ms ease;
}

body.theme-pd .pd-feed-tabs .pd-feed-loading svg {
    display: block;
    width: 24px;
    height: 24px;
}

body.pd-is-feed-loading .pd-feed-tabs .pd-feed-loading {
    opacity: 1;
}

body.theme-pd-dark .pd-loading-indicator {
    background: rgba(28, 30, 38, .92);
    border-color: rgba(255, 255, 255, .12);
    box-shadow: 0 12px 28px rgba(0, 0, 0, .35);
}

body.theme-pd .pd-feed-tabs .pd-rss i {
    color: #ff9800;
    font-size: 17px;
}

body.theme-pd .pd-thread-list {
    display: grid;
}

/* 新话题提示条 */
body.theme-pd .pd-new-topics {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 100%;
    margin: 0 0 14px;
    padding: 11px 18px;
    color: #3b5bdb;
    font-size: 14px;
    font-weight: 600;
    line-height: 1.3;
    background: #e8f1ff;
    border: 0;
    border-radius: 8px;
    box-shadow: none;
    cursor: pointer;
    animation: pdNewTopics .28s ease;
}
body.theme-pd .pd-new-topics[hidden] { display: none !important; }
body.theme-pd .pd-new-topics b { font-weight: 800; }
body.theme-pd .pd-new-topics:hover { background: #dce9ff; }
body.theme-pd .pd-new-topics.is-loading { opacity: .7; pointer-events: none; }
body.theme-pd-dark .pd-new-topics {
    color: #9db4ff;
    background: rgba(80, 91, 147, .28);
}
body.theme-pd-dark .pd-new-topics:hover {
    background: rgba(80, 91, 147, .4);
}
@keyframes pdNewTopics {
    from { opacity: 0; transform: translateY(-6px); }
    to { opacity: 1; transform: translateY(0); }
}

/* 加载更多 */
body.theme-pd .pd-feed-more {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding-top: 18px;
}
body.theme-pd .pd-more-btn {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    min-width: 168px;
    height: 44px;
    padding: 0 26px;
    color: var(--pd-accent);
    font-size: 15px;
    font-weight: 700;
    background: #f4f5f9;
    border: 1px solid #e3e5ee;
    border-radius: 8px;
    cursor: pointer;
    transition: background .16s, color .16s;
}
body.theme-pd .pd-more-btn[hidden] { display: none; }
body.theme-pd .pd-more-btn:hover { color: #fff; background: var(--pd-accent); border-color: var(--pd-accent); }
body.theme-pd .pd-more-btn .pd-more-spin {
    display: none;
    width: 16px;
    height: 16px;
    border: 2px solid currentColor;
    border-top-color: transparent;
    border-radius: 50%;
    animation: pdSpin .7s linear infinite;
}
body.theme-pd .pd-more-btn.is-loading .pd-more-spin { display: inline-block; }
body.theme-pd .pd-more-btn.is-loading .pd-more-label { opacity: .7; }
@keyframes pdSpin { to { transform: rotate(360deg); } }
body.theme-pd .pd-feed-end {
    padding: 6px 0 2px;
    color: #9aa0a6;
    font-size: 13px;
}
body.theme-pd .pd-feed-end[hidden] { display: none; }

/* 深色适配 */
body.theme-pd-dark .pd-more-btn { background: #23262e; border-color: #333844; color: #c8ccff; }
body.theme-pd-dark .pd-more-btn:hover { background: var(--pd-accent); border-color: var(--pd-accent); color: #fff; }
body.theme-pd-dark .pd-feed-end { color: #6b7280; }

body.theme-pd .pd-thread-row {
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 12px;
    align-items: center;
    min-height: 60px;
    padding: 9px 12px;
    border-bottom: 1px solid var(--pd-line);
}

/* 斑马纹行：偶数行浅底，hover 高亮，贴近 prosilver 列表观感 */
body.theme-pd .pd-thread-row:nth-child(even) {
    background: var(--pd-surface-soft);
}

body.theme-pd .pd-thread-row:hover {
    background: var(--pd-line);
}

body.theme-pd .pd-thread-row:last-child {
    border-bottom: 0;
}

body.theme-pd .pd-avatar {
    display: block;
    width: 48px;
    height: 48px;
    overflow: hidden;
    background: #eef0f4;
    border-radius: 0;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
}

body.theme-pd .pd-avatar img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

body.theme-pd .pd-thread-main {
    min-width: 0;
}

body.theme-pd .pd-thread-main h2 {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    margin: 0 0 5px;
    color: var(--pd-text-title);
    font-family: var(--pd-content-font), var(--pd-font-sans);
    font-size: 14px;
    line-height: 1.35;
}

body.theme-pd .pd-thread-main h2 a {
    min-width: 0;
    color: var(--pd-text-title);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

body.theme-pd .pd-thread-main h2 a:hover {
    color: var(--pd-accent);
}

body.theme-pd .pd-thread-main p {
    display: flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
    margin: 0;
    color: #929292;
    font-size: 12px;
    line-height: 1.35;
}

/* 「New」标记：FontAwesome rectangle-new 图标 + 轻微呼吸动画 */
body.theme-pd .pd-new {
    margin-left: 5px;
    color: var(--pd-red);
    font-size: 16px;
    line-height: 1;
    vertical-align: middle;
    animation: pdNewPulse 1.8s ease-in-out infinite;
}
@keyframes pdNewPulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50% { opacity: .72; transform: scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
    body.theme-pd .pd-new { animation: none; }
}
body.theme-pd-dark .pd-new {
    color: #ff7a5c;
}

body.theme-pd .pd-pill,
body.theme-pd .pd-topic-tag {
    display: inline-flex;
    align-items: center;
    height: 24px;
    padding: 0 7px;
    color: var(--pd-red) !important;
    font-size: 14px;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    background: #fff3ef;
    border-radius: 3px;
}
/* 关键词/分类徽章文字不加粗、字号 -1 */
body.theme-pd .pd-topic-tag { font-weight: 400; font-size: 13px; }

body.theme-pd .pd-author-link,
body.theme-pd .pd-reply-author {
    color: inherit;
    font-weight: 400;
    text-decoration: none;
}

body.theme-pd .pd-author-link:hover,
body.theme-pd .pd-reply-author:hover {
    color: var(--pd-accent);
}

body.theme-pd .pd-pill-outline {
    margin-right: 8px;
    color: var(--pd-red) !important;
    background: #fff;
    border: 1px solid var(--pd-red);
}

body.theme-pd .pd-good {
    color: #5a6499 !important;
    background: #f0edff;
}

/* 置顶/精华：正方形实心图标徽章 */
body.theme-pd .pd-badge-sq {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    margin-right: 6px;
    padding: 0;
    font-size: 12px;
    line-height: 1;
    color: #fff !important;
    border-radius: 4px;
    vertical-align: middle;
    flex: 0 0 auto;
}
body.theme-pd .pd-badge-sq i {
    color: #fff;
}
body.theme-pd .pd-badge-top {
    background: var(--pd-red);
}
body.theme-pd .pd-badge-good {
    background: var(--pd-gold);
}

body.theme-pd .pd-thread-main h2 a.pd-title-good,
body.theme-pd .thread-title.pd-title-good,
body.theme-pd .post-title-card h1.pd-title-good {
    color: var(--pd-good-title) !important;
}

body.theme-pd .pd-thread-main h2 a.pd-title-good:hover,
body.theme-pd .thread-title.pd-title-good:hover {
    color: var(--pd-good-title-hover) !important;
}

body.theme-pd .pd-thread-main h2 a.pd-title-top,
body.theme-pd .thread-title.pd-title-top,
body.theme-pd .post-title-card h1.pd-title-top {
    color: var(--pd-top-title) !important;
}

body.theme-pd .pd-thread-main h2 a.pd-title-top-board,
body.theme-pd .thread-title.pd-title-top-board,
body.theme-pd .post-title-card h1.pd-title-top-board {
    color: var(--pd-top-board-title) !important;
}

body.theme-pd .pd-thread-main h2 a.pd-title-top:hover,
body.theme-pd .thread-title.pd-title-top:hover,
body.theme-pd .post-title-card h1.pd-title-top:hover {
    color: var(--pd-top-title-hover) !important;
}

body.theme-pd .pd-thread-main h2 a.pd-title-top-board:hover,
body.theme-pd .thread-title.pd-title-top-board:hover,
body.theme-pd .post-title-card h1.pd-title-top-board:hover {
    color: var(--pd-top-board-title-hover) !important;
}

body.theme-pd .pd-thread-main h2 a.pd-title-top.pd-title-good,
body.theme-pd .thread-title.pd-title-top.pd-title-good,
body.theme-pd .post-title-card h1.pd-title-top.pd-title-good {
    color: var(--pd-top-title) !important;
}

/* 徽章/按钮样式变体：柔和底色系（可用于置顶/精华/分类等各种标签） */
body.theme-pd .pd-pill-blue    { color: #1d6fb8 !important; background: #e8f2fc; }
body.theme-pd .pd-pill-green   { color: #2f8f4e !important; background: #e7f6ec; }
body.theme-pd .pd-pill-amber   { color: #b7791f !important; background: #fdf3e0; }
body.theme-pd .pd-pill-red     { color: #d1495b !important; background: #fdeaec; }
body.theme-pd .pd-pill-purple  { color: #6b4bd6 !important; background: #f0ecfd; }
body.theme-pd .pd-pill-cyan    { color: #1a8a9d !important; background: #e4f6f8; }
body.theme-pd .pd-pill-slate   { color: #5a6270 !important; background: #eef0f3; }

/* 实心风格 */
body.theme-pd .pd-pill-solid {
    color: #fff !important;
    background: var(--pd-accent);
}
body.theme-pd .pd-pill-solid-red    { color: #fff !important; background: #e05d44; }
body.theme-pd .pd-pill-solid-green  { color: #fff !important; background: #35a862; }
body.theme-pd .pd-pill-solid-amber  { color: #fff !important; background: #f0951f; }

/* 描边风格（任意色，跟随当前文字色描边） */
body.theme-pd .pd-pill-line {
    background: transparent;
    border: 1px solid currentColor;
}

/* 渐变风格 */
body.theme-pd .pd-pill-gradient {
    color: #fff !important;
    background: linear-gradient(135deg, #6b7bd6, #9d6bd6);
    border: 0;
}

/* 深色适配：柔和底色改为半透明彩底 */
body.theme-pd-dark .pd-pill-blue    { color: #7fc0f5 !important; background: rgba(29,111,184,.18); }
body.theme-pd-dark .pd-pill-green   { color: #7fd6a0 !important; background: rgba(47,143,78,.18); }
body.theme-pd-dark .pd-pill-amber   { color: #f0c778 !important; background: rgba(183,121,31,.20); }
body.theme-pd-dark .pd-pill-red     { color: #f39aa6 !important; background: rgba(209,73,91,.18); }
body.theme-pd-dark .pd-pill-purple  { color: #b7a4f5 !important; background: rgba(107,75,214,.20); }
body.theme-pd-dark .pd-pill-cyan    { color: #7fd4de !important; background: rgba(26,138,157,.18); }
body.theme-pd-dark .pd-pill-slate   { color: #b7bdc8 !important; background: rgba(90,98,112,.22); }

body.theme-pd .pd-image-icon {
    color: #c6c8cc;
    font-size: 18px;
}
body.theme-pd .pd-attach-icon {
    margin-left: 4px;
    color: #c6c8cc;
    font-size: 15px;
    transform: rotate(15deg);
    transition: color .16s ease, transform .16s ease;
}
body.theme-pd .pd-thread-row:hover .pd-attach-icon {
    color: #8b8f96;
    transform: rotate(0deg);
}

body.theme-pd .pd-thread-stats {
    display: flex;
    align-items: center;
    gap: 18px;
    min-width: 116px;
    justify-content: flex-end;
    color: #9b9ea3;
    font-size: 16px;
    font-weight: 400;
}

body.theme-pd .pd-thread-stats span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

body.theme-pd .pd-thread-stats i {
    color: #aeb1b7;
    font-size: 16px;
}

body.theme-pd .pd-home-sidebar {
    display: grid;
    gap: 14px;
}

body.theme-pd .pd-side-card {
    padding: 16px 20px;
}

body.theme-pd .pd-side-card h2 {
    display: flex;
    align-items: center;
    gap: 10px;
    margin: 0 0 12px;
    padding-bottom: 11px;
    color: #424242;
    font-size: 14px;
    font-weight: 700;
    border-bottom: 1px solid var(--pd-line);
}

body.theme-pd .pd-side-card h2 span {
    width: 4px;
    height: 16px;
    background: var(--pd-accent);
    border-radius: 5px;
}

body.theme-pd .pd-must-read ul {
    display: grid;
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
}

body.theme-pd .pd-must-read li {
    position: relative;
    padding-left: 16px;
    color: #444;
    font-size: 12px;
    font-weight: 500;
    line-height: 1.5;
}

body.theme-pd .pd-must-read li::before {
    content: "";
    position: absolute;
    left: 0;
    top: .72em;
    width: 4px;
    height: 4px;
    background: #c4c7cc;
    border-radius: 50%;
}

body.theme-pd .pd-post-button {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    height: 42px;
    color: var(--pd-btn-primary-color);
    font-size: 14px;
    font-weight: 900;
    text-decoration: none;
    background: var(--pd-btn-primary-bg);
    border-radius: var(--pd-card-radius-lg);
}

body.theme-pd .pd-ad {
    min-height: 118px;
    padding: 18px 22px;
    overflow: hidden;
    color: #fff;
    border-radius: 7px;
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .18);
}

body.theme-pd .pd-ad strong,
body.theme-pd .pd-ad span,
body.theme-pd .pd-ad em {
    display: block;
}

body.theme-pd .pd-ad strong {
    font-size: 24px;
    font-weight: 950;
    line-height: 1.15;
}

body.theme-pd .pd-ad span {
    margin-top: 8px;
    font-size: 16px;
    font-weight: 800;
}

body.theme-pd .pd-ad em {
    margin-top: 10px;
    font-style: normal;
    font-size: 15px;
    font-weight: 800;
}

body.theme-pd .pd-ad-warm {
    color: #f06b00;
    background: radial-gradient(circle at 90% 10%, #ffe3c8 0 26%, transparent 27%), linear-gradient(135deg, #fff2df, #ffd8bb);
}

body.theme-pd .pd-ad-dark {
    background: linear-gradient(135deg, #0d0d0f, #222), repeating-linear-gradient(0deg, transparent 0 8px, rgba(255, 255, 255, .08) 8px 9px);
}

body.theme-pd .pd-ad-cyan {
    color: #08556c;
    background: linear-gradient(135deg, #cff8ff, #52d7e5 48%, #34c889);
}

body.theme-pd .footer {
    margin-top: 26px;
    padding: 0 0 42px;
    background: transparent;
    border: 0;
    box-shadow: none;
}

body.theme-pd .footer .wrap {
    width: min(1200px, calc(100vw - 48px));
    max-width: none;
}

body.theme-pd .footer-panel {
    display: grid;
    grid-template-columns: minmax(260px, 1fr) minmax(360px, 1.45fr) minmax(210px, .75fr);
    gap: 34px;
    align-items: start;
    padding: 28px 0 0;
    color: #7f8792;
    border-top: 1px solid #e6e9ee;
}

body.theme-pd .footer-brand {
    display: grid;
    gap: 12px;
}

body.theme-pd .footer-logo {
    display: inline-flex;
    width: 172px;
    text-decoration: none;
}

body.theme-pd .footer-logo img {
    display: block;
    width: 100%;
    height: auto;
}

body.theme-pd .footer-brand p {
    max-width: 360px;
    margin: 0;
    color: #6f7681;
    font-size: 14px;
    line-height: 1.6;
}

body.theme-pd .footer-copyright {
    display: grid;
    gap: 5px;
    color: #9299a4;
    font-size: 13px;
    line-height: 1.45;
}

body.theme-pd .footer-link-groups {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 24px;
}

body.theme-pd .footer-link-group {
    display: grid;
    align-content: start;
    gap: 8px;
}

body.theme-pd .footer-link-group h2 {
    margin: 0 0 4px;
    color: #3f444c;
    font-size: 15px;
    font-weight: 800;
}

body.theme-pd .footer-link-group a {
    display: flex;
    align-items: center;
    width: fit-content;
    color: #6d737c;
    font-size: 14px;
    font-weight: 500;
    line-height: 1.35;
    text-decoration: none;
}

body.theme-pd .footer-link-group a:hover {
    color: var(--pd-accent);
}

body.theme-pd .footer-social {
    display: grid;
    justify-items: end;
    gap: 14px;
}

body.theme-pd .footer-social-links {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 8px;
}

body.theme-pd .footer-social-links a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    height: 36px;
    padding: 0 11px;
    color: #60656d;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
    background: #fff;
    border: 1px solid #e4e7ec;
    border-radius: 5px;
}

body.theme-pd .footer-social-links a:hover {
    color: var(--pd-accent);
    border-color: #cfd6e8;
    background: #f7f8fc;
}

body.theme-pd .footer-qr {
    display: grid;
    justify-items: center;
    gap: 8px;
    width: 112px;
    padding: 12px 10px 10px;
    color: #737b86;
    font-size: 12px;
    font-weight: 700;
    text-align: center;
    background: #fff;
    border: 1px solid #e4e7ec;
    border-radius: var(--pd-card-radius);
}

body.theme-pd .footer-qr span {
    display: inline-grid;
    place-items: center;
    width: 74px;
    height: 74px;
    color: #8b92a0;
    font-size: 34px;
    background:
        linear-gradient(90deg, #d9dde5 1px, transparent 1px) 0 0 / 8px 8px,
        linear-gradient(#d9dde5 1px, transparent 1px) 0 0 / 8px 8px,
        #f7f8fa;
    border: 1px solid #dfe3e8;
    border-radius: 3px;
}

/* 右侧圆形工具栏（Uiverse cir-rail 风格） */
body.theme-pd .pd-right-toolbar.cir-rail {
    --color-cloud: #ffffff;
    --color-edge: #e3e8ee;
    --color-mist: #5b6472;
    --color-ink: #0e1116;
    --color-citrus: #ff7a3d;

    position: fixed;
    right: 22px;
    bottom: 92px;
    z-index: 80;
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    padding: 10px;
    background: var(--color-cloud);
    border: 1px solid var(--color-edge);
    border-radius: 999px;
    box-shadow:
        0 1px 1px rgba(14, 17, 22, 0.04),
        0 20px 40px -24px rgba(14, 17, 22, 0.22);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b {
    position: relative;
    display: inline-grid;
    place-items: center;
    width: 44px;
    height: 44px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--color-mist);
    text-decoration: none;
    cursor: pointer;
    transition:
        background-color 220ms cubic-bezier(0.22, 1, 0.36, 1),
        color 220ms cubic-bezier(0.22, 1, 0.36, 1),
        opacity 220ms cubic-bezier(0.22, 1, 0.36, 1),
        transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b svg {
    width: 20px;
    height: 20px;
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b:hover {
    background: #f3f6fa;
    color: var(--color-ink);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--brand {
    background: var(--color-ink);
    color: var(--color-cloud);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--brand:hover {
    background: #1a1f28;
    color: var(--color-cloud);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--active {
    background: var(--color-ink);
    color: var(--color-cloud);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--active:hover {
    background: #1a1f28;
    color: var(--color-cloud);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--brand.cir-rail__b--active {
    background: var(--color-ink);
    color: var(--color-cloud);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__badge {
    position: absolute;
    top: 4px;
    right: 2px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    display: inline-grid;
    place-items: center;
    background: var(--color-citrus, #ff7a3d);
    color: var(--color-cloud, #ffffff);
    border: 2px solid var(--color-cloud, #ffffff);
    border-radius: 999px;
    font-size: 10px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1;
    pointer-events: none;
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__form {
    margin: 0;
    display: contents;
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--done {
    color: #16a34a;
    cursor: default;
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b--logout:hover {
    color: #ef4444;
    background: #fef2f2;
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__b--logout:hover {
    color: #fca5a5;
    background: rgba(239, 68, 68, .16);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b:focus-visible {
    outline: none;
    box-shadow: 0 0 0 3px rgba(46, 125, 239, 0.32);
}

body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__sep {
    width: 24px;
    height: 1px;
    background: var(--color-edge);
    margin: 4px 0;
}

body.theme-pd .pd-right-toolbar.cir-rail [data-tooltip]::after {
    content: attr(data-tooltip);
    position: absolute;
    top: 50%;
    right: calc(100% + 10px);
    transform: translateY(-50%) translateX(6px);
    padding: 5px 10px;
    color: #fff;
    font-size: 12px;
    font-weight: 600;
    line-height: 1;
    white-space: nowrap;
    background: rgba(23, 32, 46, .92);
    border-radius: 6px;
    opacity: 0;
    pointer-events: none;
    transition: opacity .16s ease, transform .16s ease;
}

body.theme-pd .pd-right-toolbar.cir-rail [data-tooltip]:hover::after {
    opacity: 1;
    transform: translateY(-50%) translateX(0);
}

/* 回到顶部：滚过半页后显示 */
body.theme-pd .pd-right-toolbar.cir-rail:not(.is-scrolled) [data-scroll-top],
body.theme-pd .pd-right-toolbar.cir-rail:not(.is-scrolled) .cir-rail__sep--scroll {
    display: none;
}

body.theme-pd .pd-right-toolbar.cir-rail.is-scrolled [data-scroll-top] {
    animation: cirRailPop .34s cubic-bezier(.34, 1.56, .64, 1);
}

@keyframes cirRailPop {
    from {
        opacity: 0;
        transform: scale(.6);
    }
    to {
        opacity: 1;
        transform: scale(1);
    }
}

@media (max-width: 1180px) {
    body.theme-pd .pd-home-shell {
        width: min(1000px, calc(100vw - 32px));
    }

    body.theme-pd .footer-panel {
        grid-template-columns: minmax(240px, .9fr) minmax(0, 1.1fr);
    }

    body.theme-pd .footer-social {
        grid-column: 1 / -1;
        grid-template-columns: minmax(0, 1fr) auto;
        justify-items: start;
        align-items: center;
    }

    body.theme-pd .footer-social-links {
        justify-content: flex-start;
    }

    body.theme-pd .pd-home-layout {
        grid-template-columns: 1fr;
    }

    body.theme-pd .pd-home-sidebar {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    body.theme-pd .pd-must-read,
    body.theme-pd .pd-post-button {
        grid-column: 1 / -1;
    }
}


    body.theme-pd .nav-search-form {
        flex: 0 0 40px;
        width: 40px;
        height: 40px;
        background: #f8f9fb;
    }

    body.theme-pd .nav-search-form:focus-within {
        position: absolute;
        left: 10px;
        right: 10px;
        z-index: 10;
        width: auto;
    }

    body.theme-pd .nav-search-form input {
        flex: 0 1 0;
        padding: 0;
        width: 0;
    }

    body.theme-pd .nav-search-form button {
        flex: 0 0 40px;
        width: 40px;
        height: 40px;
    }

    body.theme-pd .nav-search-form:focus-within input {
        padding: 0 12px;
        width: auto;
    }

    body.theme-pd .pd-home-shell {
        width: calc(100vw - 20px);
    }

    body.theme-pd .footer .wrap {
        width: calc(100vw - 20px);
    }

    body.theme-pd .footer-panel {
        grid-template-columns: 1fr;
        gap: 24px;
        padding-top: 22px;
    }

    body.theme-pd .footer-logo {
        width: 150px;
    }

    body.theme-pd .footer-link-groups {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        gap: 20px;
    }

    body.theme-pd .footer-social {
        grid-template-columns: 1fr;
        justify-items: start;
    }

    body.theme-pd .pd-category-bar {
        gap: 20px;
        min-height: 56px;
        padding: 0 16px;
    }

    body.theme-pd .pd-category-bar a {
        font-size: 15px;
    }

    body.theme-pd .pd-inner-category-bar > div {
        gap: 20px;
        width: calc(100vw - 20px);
        min-height: 50px;
    }

    body.theme-pd .pd-inner-category-bar a {
        font-size: 15px;
    }

    body.theme-pd .pd-feed-card {
        padding: 16px;
    }

    body.theme-pd .pd-feed-tabs {
        gap: 8px;
        overflow-x: auto;
        padding-bottom: 2px;
    }

    body.theme-pd .pd-feed-tabs a {
        min-width: 88px;
        height: 40px;
        padding: 0 12px;
        font-size: 15px;
    }

    body.theme-pd .pd-thread-row {
        grid-template-columns: 46px minmax(0, 1fr);
        gap: 12px;
        min-height: 88px;
    }

    body.theme-pd .pd-avatar {
        width: 44px;
        height: 44px;
    }

    body.theme-pd .pd-thread-main h2 {
        font-size: 15px;
    }

    body.theme-pd .pd-thread-main p {
        gap: 8px;
        flex-wrap: wrap;
        font-size: 13px;
    }

    body.theme-pd .pd-thread-stats {
        grid-column: 2;
        justify-content: flex-start;
        min-width: 0;
        margin-top: -6px;
        font-size: 13px;
    }

    body.theme-pd .pd-home-sidebar {
        grid-template-columns: 1fr;
    }

    body.theme-pd .footer .wrap {
        width: calc(100vw - 20px);
    }

    body.theme-pd .pd-right-toolbar.cir-rail {
        right: 10px;
        bottom: 16px;
        padding: 8px;
    }

    body.theme-pd .pd-right-toolbar.cir-rail .cir-rail__b {
        width: 40px;
        height: 40px;
    }
}

/* php.do inner pages */
body.theme-pd.page-forum main.wrap,
body.theme-pd.page-thread main.wrap,
body.theme-pd.page-search main.wrap,
body.theme-pd.page-post main.wrap,
body.theme-pd.page-edit-thread main.wrap,
body.theme-pd.page-tags main.wrap,
body.theme-pd.page-user main.wrap,
body.theme-pd.page-profile main.wrap,
body.theme-pd.page-messages main.wrap,
body.theme-pd.page-page main.wrap,
body.theme-pd.page-login main.wrap,
body.theme-pd.page-register main.wrap {
    box-sizing: border-box;
    width: 100%;
    max-width: 100%;
    padding: 24px 20px 56px;
}

body.theme-pd .pd-page-head,
body.theme-pd .pd-user-head,
body.theme-pd .post-title-card,
body.theme-pd .post-content-card,
body.theme-pd .replies,
body.theme-pd.page-thread main.wrap > .card:not(.post-title-card):not(.post-content-card):not(.replies),
body.theme-pd.page-user main.wrap > .card,
body.theme-pd.page-tags main.wrap > .card,
body.theme-pd.page-profile main.wrap > .card,
body.theme-pd.page-messages main.wrap > .card,
body.theme-pd.page-page main.wrap > .card,
body.theme-pd.page-login main.wrap > .card,
body.theme-pd.page-register main.wrap > .card,
body.theme-pd .thread-list,
body.theme-pd.page-search .thread-list {
    color: var(--pd-text);
    background: var(--pd-card-bg);
    border: var(--pd-card-border);
}

body.theme-pd .pd-page-head,
body.theme-pd .page-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    margin: 0 0 16px;
    padding: 24px 26px;
}

body.theme-pd .page-head h1,
body.theme-pd .post-title-card h1 {
    margin: 0;
    color: #333;
    font-family: var(--pd-content-font), -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 26px;
    font-weight: 900;
    line-height: 1.25;
}

body.theme-pd .page-head p {
    margin: 8px 0 0;
    color: #85898f;
    font-size: 15px;
}

body.theme-pd .page-head .back-home {
    margin-left: 10px;
    color: #8f9399;
    font-size: 14px;
    font-weight: 700;
    text-decoration: none;
}

body.theme-pd .page-head .btn,
body.theme-pd.page-thread main.wrap > .card .btn {
    height: 42px;
    padding: 0 18px;
    color: #fff !important;
    font-size: 16px;
    font-weight: 850;
    background: var(--pd-accent);
    border: 0;
    border-radius: 5px;
    box-shadow: none;
}

body.theme-pd .filter-tabs {
    display: flex;
    gap: 10px;
    margin: 0 0 12px;
    overflow-x: auto;
    scrollbar-width: none;
}

body.theme-pd .filter-tabs::-webkit-scrollbar {
    display: none;
}

body.theme-pd .filter-tabs a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 74px;
    height: 38px;
    padding: 0 14px;
    color: #4d5259;
    font-size: 15px;
    font-weight: 800;
    text-decoration: none;
    white-space: nowrap;
    background: #f1f2f4;
    border: 0;
    border-radius: 4px;
}

body.theme-pd .filter-tabs a.active {
    color: #fff;
    background: var(--pd-accent);
}

body.theme-pd .category-tabs {
    padding-bottom: 6px;
}

body.theme-pd .thread-list {
    margin: 0;
    padding: 12px 26px;
}

body.theme-pd .thread-row {
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr) 132px;
    gap: 18px;
    align-items: center;
    min-height: 92px;
    padding: 16px 0;
    border-bottom: 1px solid var(--pd-line);
}

body.theme-pd .thread-row:last-child {
    border-bottom: 0;
}

body.theme-pd .thread-main {
    min-width: 0;
}

body.theme-pd .thread-title {
    display: block;
    overflow: hidden;
    color: #333 !important;
    font-size: 19px;
    font-weight: 900;
    line-height: 1.35;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-decoration: none;
}

body.theme-pd .thread-title:hover {
    color: var(--pd-accent) !important;
}

body.theme-pd .thread-main p {
    margin: 8px 0 0;
    color: #8f9399;
    font-size: 14px;
    line-height: 1.4;
}

body.theme-pd .thread-count {
    display: flex;
    justify-content: flex-end;
    gap: 16px;
    color: #9b9ea3;
    font-size: 15px;
    font-weight: 400;
}

body.theme-pd .thread-count span {
    display: inline-flex;
    align-items: center;
    gap: 7px;
}

body.theme-pd .thread-count i {
    color: #aeb1b7;
}

body.theme-pd .tag,
body.theme-pd .category-tag {
    display: inline-flex;
    align-items: center;
    height: 23px;
    margin-right: 7px;
    padding: 0 7px;
    color: var(--pd-red) !important;
    font-size: 13px;
    font-weight: 800;
    line-height: 1;
    vertical-align: 2px;
    background: #fff3ef !important;
    border: 1px solid rgba(255, 103, 79, .22);
    border-radius: 3px;
    text-decoration: none;
}

body.theme-pd .tag.good {
    color: #5a6499 !important;
    background: #f0edff !important;
    border-color: rgba(90, 100, 153, .18);
}

body.theme-pd .pd-thread-title-card {
    padding: 22px 26px 24px;
}

/* 帖子主卡片：标题 + 正文 + 底部广告合并一体 */
body.theme-pd .pd-thread-main-card.post-content-card,
body.theme-pd .pd-thread-main-card.post-content-card.card {
    margin-top: 0;
}
body.theme-pd .pd-thread-main-card .post-content-box {
    margin-top: 20px;
    padding-top: 20px;
    border-top: var(--pd-card-border);
}
body.theme-pd .pd-thread-main-card .pd-reactions {
    margin-top: 18px;
}
body.theme-pd .pd-thread-main-card .ad-box.ad-thread {
    margin-top: 20px;
    padding-top: 16px;
    border-top: var(--pd-card-border);
    text-align: center;
}
body.theme-pd .pd-thread-main-card .ad-box.ad-thread img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 0 auto;
}
body.theme-pd .pd-thread-main-card .ad-box.ad-thread a {
    display: block;
}


/* 帖子页面包屑：与帖子卡片同色边框、同等上下间距 */
body.theme-pd .pd-thread-breadcrumb {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 8px 12px;
    min-width: 0;
    margin: 0 0 14px;
    padding: 8px 14px;
    color: #8a9099;
    font-size: 13px;
    line-height: 1.4;
    background: var(--pd-card-bg);
    border: var(--pd-card-border);
    border-radius: var(--pd-card-radius-lg);
    box-shadow: var(--pd-card-shadow-subtle);
}

/* 面包屑左侧链接组：可收缩，标题过长时省略号 */
body.theme-pd .pd-thread-breadcrumb .pd-crumb-trail {
    display: flex;
    align-items: center;
    gap: 8px;
    min-width: 0;
    flex: 1 1 8rem;
    overflow: hidden;
}

/* 面包屑右侧管理工具组：不收缩，靠右 */
body.theme-pd .pd-thread-breadcrumb .pd-crumb-tools.admin-tools,
body.theme-pd .pd-thread-breadcrumb .pd-crumb-tools {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    flex: 0 0 auto;
    flex-shrink: 0;
    float: none;
    margin: 0 0 0 auto;
    gap: 8px;
    max-width: 100%;
}
body.theme-pd .pd-thread-breadcrumb .pd-crumb-tools .action-badge,
body.theme-pd .pd-thread-breadcrumb .pd-crumb-tools a {
    font-size: 12px;
    flex: 0 0 auto;
    margin: 0;
}

body.theme-pd .pd-thread-breadcrumb .pd-crumb-trail a {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    flex: 0 0 auto;
    min-width: 0;
    color: var(--pd-accent);
    font-size: 13px;
    font-weight: 600;
    text-decoration: none;
    transition: color .15s ease;
}
body.theme-pd .pd-thread-breadcrumb .pd-crumb-trail a:hover {
    color: var(--pd-accent-hover);
}
body.theme-pd .pd-thread-breadcrumb .pd-crumb-trail a i {
    font-size: 12px;
    opacity: .85;
}
body.theme-pd .pd-thread-breadcrumb .pd-crumb-sep {
    flex: 0 0 auto;
    color: #c0c4cc;
    font-size: 12px;
    line-height: 1;
    user-select: none;
}
body.theme-pd .pd-thread-breadcrumb .pd-crumb-current {
    flex: 0 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #6a7078;
    font-size: 13px;
    font-weight: 500;
}

body.theme-pd-dark .pd-thread-breadcrumb {
    background: var(--pd-surface);
    border-color: var(--pd-border);
    color: var(--pd-muted);
    box-shadow: var(--pd-shadow-soft);
}
body.theme-pd-dark .pd-thread-breadcrumb a {
    color: #a8b0d4;
}
body.theme-pd-dark .pd-thread-breadcrumb .pd-crumb-trail a {
    color: #a8b0d4;
}
body.theme-pd-dark .pd-thread-breadcrumb .pd-crumb-trail a:hover {
    color: #c5cae8;
}
body.theme-pd-dark .pd-thread-breadcrumb .pd-crumb-sep {
    color: #4a5060;
}
body.theme-pd-dark .pd-thread-breadcrumb .pd-crumb-current {
    color: #b6bcc8;
}

body.theme-pd .pd-thread-title-row {
    display: grid;
    grid-template-columns: 62px minmax(0, 1fr);
    gap: 18px;
    align-items: center;
}

body.theme-pd .pd-author-avatar,
body.theme-pd .pd-reply-avatar {
    width: 58px;
    height: 58px;
    object-fit: cover;
    background: #eef0f4;
    border-radius: 0;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
}

body.theme-pd .post-meta {
    color: #8d929a;
    font-size: 14px;
    line-height: 1.5;
}

/* 主楼标题区：meta 在标题下方左侧（作者 · 等级 · 发布时间） */
body.theme-pd .pd-thread-title-meta {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 6px;
}
body.theme-pd .pd-thread-title-meta .pd-author-link {
    color: #3a3f47;
    font-weight: 600;
}
body.theme-pd .pd-thread-title-meta .pd-meta-time {
    color: #9298a1;
    font-size: 13px;
}
body.theme-pd-dark .pd-thread-title-meta .pd-author-link { color: #e6e6e6; }
body.theme-pd-dark .pd-thread-title-meta .pd-meta-time { color: #9a9a9a; }

/* 帖子正文底部右侧：昵称 · 等级 · 浏览 · 回复 */
body.theme-pd .pd-thread-foot-stats {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 16px;
    color: #9298a1;
    font-size: 13px;
}
body.theme-pd .pd-thread-foot-stats .pd-author-link {
    color: #3a3f47;
    font-weight: 600;
    text-decoration: none;
}
body.theme-pd .pd-thread-foot-stats .pd-foot-nums {
    color: #9298a1;
}
body.theme-pd-dark .pd-thread-foot-stats { color: #9a9a9a; }
body.theme-pd-dark .pd-thread-foot-stats .pd-author-link { color: #e6e6e6; }

body.theme-pd .pd-thread-votes {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 16px;
}

body.theme-pd .pd-thread-votes form {
    margin: 0;
}

body.theme-pd .pd-vote-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 7px;
    min-width: 78px;
    height: 36px;
    padding: 0 12px;
    color: var(--pd-btn-secondary-color) !important;
    font-size: 14px;
    font-weight: 900;
    text-decoration: none;
    background: var(--pd-btn-secondary-bg) !important;
    border: 1px solid var(--pd-btn-secondary-border);
    border-radius: var(--pd-control-radius) !important;
    box-shadow: none;
    cursor: pointer;
}

body.theme-pd .pd-vote-button i {
    color: var(--pd-btn-secondary-icon);
}

body.theme-pd .pd-vote-button strong {
    color: var(--pd-btn-secondary-text-strong);
    font-weight: 950;
}

body.theme-pd .pd-vote-button:hover,
body.theme-pd .pd-vote-button.active {
    color: var(--pd-btn-primary-color) !important;
    background: var(--pd-btn-primary-bg) !important;
    border-color: var(--pd-btn-primary-bg);
}

body.theme-pd .pd-vote-button:hover i,
body.theme-pd .pd-vote-button:hover strong,
body.theme-pd .pd-vote-button.active i,
body.theme-pd .pd-vote-button.active strong {
    color: var(--pd-btn-primary-color);
}

body.theme-pd .post-content-card {
    margin-top: 14px;
    padding: 26px;
}

body.theme-pd .post-content-box,
body.theme-pd .reply .content {
    color: var(--pd-text-body);
    font-size: var(--pd-font-size-base);
    line-height: 1.78;
}

body.theme-pd .content a {
    color: var(--pd-accent);
}

body.theme-pd .replies {
    margin-top: 14px;
    padding: 0;
    overflow: hidden;
}

body.theme-pd .replies > h2 {
    margin: 0;
    padding: 18px 24px;
    color: var(--pd-text-title);
    background: var(--pd-surface-raised);
    border-bottom: 1px solid var(--pd-line);
}

body.theme-pd .pd-reply-pagination {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: center;
    gap: 6px;
    margin: 0;
    padding: 16px 24px 20px;
    border-top: 1px solid var(--pd-line);
}
body.theme-pd .pd-reply-pagination a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 34px;
    height: 34px;
    padding: 0 10px;
    border: 1px solid #d8e6ef;
    border-radius: 8px;
    background: #fff;
    color: var(--pd-accent);
    font-size: 14px;
    font-weight: 600;
    text-decoration: none;
    transition: background .15s ease, color .15s ease, border-color .15s ease;
}
body.theme-pd .pd-reply-pagination a:hover {
    background: #f2f4f8;
    border-color: #c5cad4;
}
body.theme-pd .pd-reply-pagination a.active {
    color: #fff;
    border-color: var(--pd-accent);
    background: var(--pd-accent);
}
body.theme-pd-dark .pd-reply-pagination {
    border-top-color: var(--pd-border);
}
body.theme-pd-dark .pd-reply-pagination a {
    background: var(--pd-surface);
    border-color: var(--pd-border);
    color: #a8b0d4;
}
body.theme-pd-dark .pd-reply-pagination a.active {
    background: var(--pd-accent);
    border-color: var(--pd-accent);
    color: #fff;
}

body.theme-pd .reply {
    display: grid;
    grid-template-columns: 74px minmax(0, 1fr);
    gap: 22px;
    margin: 0;
    padding: 34px 30px 28px;
    border-bottom: 1px solid var(--pd-line);
}

body.theme-pd .reply:last-child {
    border-bottom: 0;
}

body.theme-pd .pd-reply-body {
    position: relative;
    min-width: 0;
}

body.theme-pd .pd-reply-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 18px;
    min-height: 42px;
    margin: 0 0 18px;
}

body.theme-pd .reply .post-meta {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 12px;
    margin: 0;
    color: #989ca2;
    font-size: 16px;
}

body.theme-pd .reply .post-meta strong,
body.theme-pd .pd-reply-author {
    color: #555;
    font-size: 18px;
    font-weight: 900;
}

body.theme-pd .pd-level {
    display: inline-flex;
    align-items: center;
    height: 19px;
    padding: 0 6px;
    color: #fff;
    font-size: 11px;
    font-weight: 800;
    line-height: 1;
    letter-spacing: .2px;
    background: var(--pd-accent);
    border-radius: 5px;
}

body.theme-pd .pd-meta-sep {
    width: 1px;
    height: 20px;
    background: var(--pd-line);
}

body.theme-pd .pd-only-author {
    color: #8f9399;
    font-weight: 800;
    text-decoration: none;
}

body.theme-pd .pd-only-author:hover {
    color: var(--pd-accent);
}

body.theme-pd .pd-floor-no {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 54px;
    height: 44px;
    padding: 0 10px;
    color: #9a9a9a;
    font-size: 18px;
    font-weight: 900;
    background: #f7f7f7;
    border-radius: 6px;
}

body.theme-pd .reply .content {
    min-height: 72px;
    color: #333;
    font-size: 20px;
    line-height: 1.75;
}

body.theme-pd .pd-signature {
    margin-top: 56px;
    padding-top: 0;
    color: #333;
    border-top: 1px dashed #d9dde3;
}

body.theme-pd .pd-signature span {
    display: inline-block;
    position: relative;
    top: -11px;
    padding-right: 12px;
    color: var(--pd-accent);
    font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", monospace;
    font-size: 14px;
    letter-spacing: 1.5px;
    background: #fff;
}

body.theme-pd .pd-signature p {
    margin: 8px 0 0;
    color: #444;
    font-size: 16px;
    line-height: 1.6;
}

body.theme-pd .pd-reply-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-top: 28px;
    color: #999;
}

/* 帖子底部：默认淡化，悬浮清晰（类似 Discuz 楼层底栏） */
@media (hover: hover) and (pointer: fine) {
    body.theme-pd .reply .pd-signature,
    body.theme-pd .reply .pd-reply-actions,
    body.theme-pd .pd-thread-main-card > .pd-signature {
        opacity: .36;
        filter: saturate(.7);
        transition: opacity .22s ease, filter .22s ease;
    }
    body.theme-pd .reply:hover .pd-signature,
    body.theme-pd .reply:hover .pd-reply-actions,
    body.theme-pd .pd-thread-main-card:hover > .pd-signature,
    body.theme-pd .reply:focus-within .pd-signature,
    body.theme-pd .reply:focus-within .pd-reply-actions {
        opacity: 1;
        filter: none;
    }
}

body.theme-pd .pd-reply-actions > div {
    display: flex;
    align-items: center;
    gap: 18px;
}

body.theme-pd .pd-reply-actions-main {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}

body.theme-pd .pd-post-votes {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

body.theme-pd .pd-post-votes form {
    margin: 0;
}

body.theme-pd .pd-vote-button-sm {
    min-width: 64px;
    height: 32px;
    padding: 0 10px;
    font-size: 13px;
    gap: 5px;
}

body.theme-pd .pd-reply-action {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 0;
    color: var(--pd-btn-ghost-color);
    font-size: 17px;
    font-weight: 800;
    text-decoration: none;
    background: var(--pd-btn-ghost-hover-bg);
    border: 0;
    cursor: pointer;
}

body.theme-pd .pd-reply-action.pd-report {
    width: 30px;
    height: 30px;
    min-width: 30px;
    padding: 0;
    color: #96999e;
    background: #f6f8fb;
    border: 1px solid #e2e8f0;
    border-radius: 5px;
    cursor: pointer;
    transition: color .15s ease, background .15s ease, border-color .15s ease;
}

body.theme-pd .pd-reply-action i {
    color: #b0b3b8;
    font-size: 20px;
}

body.theme-pd .pd-reply-action.pd-report i {
    font-size: 14px;
    color: #96999e;
}

body.theme-pd .pd-reply-action:hover,
body.theme-pd .pd-reply-action:hover i {
    color: var(--pd-accent);
}

body.theme-pd .pd-reply-action.pd-report:hover {
    color: #d93025;
    background: #fff1f0;
    border-color: #ffd0cc;
}

body.theme-pd .pd-reply-action.pd-report:hover i {
    color: #d93025;
}

body.theme-pd .pd-reply-actions > div:last-child {
    gap: 8px;
}

body.theme-pd .pd-reply-actions .admin-tools {
    gap: 8px;
}

body.theme-pd .pd-report {
    cursor: default;
}

body.theme-pd .floor-label {
    display: inline-flex;
    align-items: center;
    height: 22px;
    padding: 0 7px;
    color: #6c7480;
    background: #f1f2f4;
    border-radius: 99px;
}

body.theme-pd .floor-replies {
    display: grid;
    gap: 8px;
    margin-top: 22px;
    padding: 12px;
    background: #f7f8fa;
    border: var(--pd-card-border);
    border-radius: 6px;
}

body.theme-pd .floor-replies:empty {
    display: none;
}

body.theme-pd .floor-reply {
    margin: 0;
    padding: 8px 10px;
    color: #555;
    font-size: 14px;
    line-height: 1.55;
    background: #fff;
    border: 1px solid #eef0f3;
    border-radius: 6px;
}

body.theme-pd .floor-reply strong {
    color: #333;
}

body.theme-pd .floor-reply span {
    margin-left: 8px;
    color: #a0a4aa;
    font-size: 12px;
}

body.theme-pd .floor-reply-form {
    display: flex;
    gap: 8px;
    margin-top: 2px;
}

body.theme-pd .floor-reply-form input {
    flex: 1;
    height: 36px;
    padding: 0 12px;
    border: 1px solid #dfe3e8;
    border-radius: 5px;
}

body.theme-pd .floor-reply-toggle,
body.theme-pd .floor-reply-submit,
body.theme-pd .action-badge {
    border-radius: 5px;
}

body.theme-pd.page-thread main.wrap > .card:not(.post-title-card):not(.post-content-card):not(.replies) {
    margin-top: 14px;
    padding: 22px 24px;
}

body.theme-pd.page-thread textarea,
body.theme-pd.page-post textarea,
body.theme-pd.page-edit-thread textarea,
body.theme-pd.page-thread input,
body.theme-pd.page-post input,
body.theme-pd.page-edit-thread input,
body.theme-pd.page-thread select,
body.theme-pd.page-post select,
body.theme-pd.page-edit-thread select {
    border-color: #dfe3e8;
    border-radius: 5px;
}

body.theme-pd .pd-user-head {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    align-items: center;
}

body.theme-pd .pd-user-head .pd-author-avatar {
    width: 72px;
    height: 72px;
}

body.theme-pd .pd-list-heading {
    margin: 8px 0 10px;
    padding-bottom: 14px;
    color: #333;
    font-size: 20px;
    font-weight: 900;
    border-bottom: 1px solid var(--pd-line);
}

body.theme-pd .pd-empty {
    margin: 18px 0;
    color: #8f9399;
}

body.theme-pd .pd-user-replies {
    margin-top: 14px;
}

body.theme-pd .pd-static-page {
    padding: 28px 30px;
}

body.theme-pd .pd-static-page p {
    margin: 0 0 14px;
    color: #444;
    font-size: 17px;
    line-height: 1.8;
}

body.theme-pd .pd-static-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 24px;
    padding-top: 18px;
    border-top: 1px solid var(--pd-line);
}

body.theme-pd .pd-static-links a {
    display: inline-flex;
    align-items: center;
    height: 34px;
    padding: 0 12px;
    color: #4d5259;
    font-size: 14px;
    font-weight: 850;
    text-decoration: none;
    background: #f1f2f4;
    border-radius: 4px;
}

body.theme-pd .pd-static-links a.active {
    color: #fff;
    background: var(--pd-accent);
}

body.theme-pd .pd-auth-page {
    width: min(520px, 100%);
    margin: 32px auto 0;
    padding: 28px 30px;
}

body.theme-pd .pd-auth-head h1 {
    margin: 0;
    color: #333;
    font-size: 28px;
    font-weight: 950;
}

body.theme-pd .pd-auth-head p {
    margin: 8px 0 20px;
    color: #85898f;
    font-size: 15px;
    line-height: 1.6;
}

body.theme-pd .pd-auth-page label {
    display: block;
    margin: 14px 0 7px;
    color: #444;
    font-weight: 850;
}

body.theme-pd .pd-auth-page input {
    width: 100%;
    height: 42px;
    border-color: #dfe3e8;
    border-radius: 5px !important;
}

body.theme-pd .pd-auth-page .auth-passkey {
    width: 100%;
    height: 44px;
    margin: 18px 0 0;
    border-radius: 5px !important;
}

body.theme-pd .pd-auth-page .auth-passkey {
    margin-top: 10px;
}

body.theme-pd .pd-auth-switch {
    margin: 18px 0 0;
    color: #85898f;
    text-align: center;
}

body.theme-pd .pd-auth-switch a {
    color: var(--pd-accent);
    font-weight: 900;
}

@media (max-width: 900px) {
    body.theme-pd.page-forum main.wrap,
    body.theme-pd.page-thread main.wrap,
    body.theme-pd.page-search main.wrap,
    body.theme-pd.page-post main.wrap,
    body.theme-pd.page-edit-thread main.wrap,
    body.theme-pd.page-tags main.wrap,
    body.theme-pd.page-user main.wrap,
    body.theme-pd.page-profile main.wrap,
    body.theme-pd.page-page main.wrap,
    body.theme-pd.page-login main.wrap,
    body.theme-pd.page-register main.wrap {
        width: 100%;
        max-width: 100%;
        padding-top: 14px;
    }

    body.theme-pd .page-head {
        align-items: flex-start;
        flex-direction: column;
        padding: 18px;
    }

    body.theme-pd .pd-user-head {
        grid-template-columns: 52px minmax(0, 1fr);
    }

    body.theme-pd .pd-user-head .pd-author-avatar {
        width: 52px;
        height: 52px;
    }

    body.theme-pd .thread-list {
        padding: 6px 16px;
    }

    body.theme-pd .thread-row {
        grid-template-columns: 46px minmax(0, 1fr);
        gap: 12px;
        min-height: 88px;
    }

    body.theme-pd .thread-row .pd-avatar {
        width: 44px;
        height: 44px;
    }

    body.theme-pd .thread-title {
        font-size: 17px;
    }

    body.theme-pd .thread-main p {
        font-size: 13px;
    }

    body.theme-pd .thread-count {
        grid-column: 2;
        justify-content: flex-start;
        margin-top: -5px;
        font-size: 13px;
    }

    body.theme-pd .pd-thread-title-card,
    body.theme-pd .pd-thread-main-card,
    body.theme-pd .post-content-card {
        padding: 18px;
    }

    body.theme-pd .pd-thread-title-row,
    body.theme-pd .reply {
        grid-template-columns: 44px minmax(0, 1fr);
        gap: 12px;
    }

    body.theme-pd .pd-author-avatar,
    body.theme-pd .pd-reply-avatar {
        width: 44px;
        height: 44px;
    }

    body.theme-pd .post-title-card h1 {
        font-size: 21px;
    }

    body.theme-pd .reply {
        padding: 20px 16px;
    }

    body.theme-pd .pd-reply-header {
        align-items: flex-start;
        margin-bottom: 12px;
    }

    body.theme-pd .reply .post-meta {
        gap: 8px;
        font-size: 13px;
    }

    body.theme-pd .reply .post-meta strong {
        font-size: 15px;
    }

    body.theme-pd .pd-level {
        height: 18px;
        font-size: 10px;
    }

    body.theme-pd .pd-floor-no {
        min-width: 42px;
        height: 36px;
        font-size: 15px;
    }

    body.theme-pd .reply .content {
        min-height: 44px;
        font-size: 16px;
    }

    body.theme-pd .pd-signature {
        margin-top: 30px;
    }

    body.theme-pd .pd-reply-actions {
        margin-top: 20px;
    }

    body.theme-pd .pd-thread-votes {
        flex-wrap: wrap;
    }

    body.theme-pd .pd-reply-action {
        font-size: 14px;
    }

    body.theme-pd .floor-reply-form {
        flex-direction: column;
    }
}

/* php.net component scale pass */
body.theme-pd {
    font-family: var(--pd-font-sans);
    font-size: var(--pd-font-size-base);
    line-height: var(--pd-line-height-body);
}

body.theme-pd code,
body.theme-pd pre,
body.theme-pd kbd,
body.theme-pd .pd-signature span {
    font-family: var(--pd-font-mono);
}

body.theme-pd .pd-home-shell,
body.theme-pd .footer .wrap,
body.theme-pd .pd-inner-category-bar > div {
    width: min(1200px, calc(100vw - 3rem));
}

body.theme-pd.page-forum main.wrap,
body.theme-pd.page-thread main.wrap,
body.theme-pd.page-search main.wrap,
body.theme-pd.page-post main.wrap,
body.theme-pd.page-edit-thread main.wrap,
body.theme-pd.page-tags main.wrap,
body.theme-pd.page-user main.wrap,
body.theme-pd.page-profile main.wrap,
body.theme-pd.page-messages main.wrap,
body.theme-pd.page-page main.wrap,
body.theme-pd.page-login main.wrap,
body.theme-pd.page-register main.wrap {
    width: 100%;
    max-width: 100%;
}

body.theme-pd .pd-feed-card,
body.theme-pd .pd-side-card,
body.theme-pd .pd-page-head,
body.theme-pd .pd-user-head,
body.theme-pd .post-title-card,
body.theme-pd .post-content-card,
body.theme-pd .replies,
body.theme-pd.page-thread main.wrap > .card:not(.post-title-card):not(.post-content-card):not(.replies),
body.theme-pd.page-user main.wrap > .card,
body.theme-pd.page-tags main.wrap > .card,
body.theme-pd.page-profile main.wrap > .card,
body.theme-pd.page-messages main.wrap > .card,
body.theme-pd.page-page main.wrap > .card,
body.theme-pd.page-login main.wrap > .card,
body.theme-pd.page-register main.wrap > .card,
body.theme-pd .thread-list,
body.theme-pd.page-search .thread-list,
body.theme-pd .pd-category-bar,
body.theme-pd .pd-static-page,
body.theme-pd .pd-auth-page {
    border-radius: var(--pd-card-radius) !important;
    box-shadow: var(--pd-shadow-soft);
}

body.theme-pd .pd-feed-card,
body.theme-pd .pd-side-card,
body.theme-pd .pd-page-head,
body.theme-pd .page-head,
body.theme-pd .post-title-card,
body.theme-pd .post-content-card,
body.theme-pd.page-thread main.wrap > .card:not(.post-title-card):not(.post-content-card):not(.replies),
body.theme-pd .pd-static-page,
body.theme-pd .pd-auth-page {
    padding: var(--pd-space-4);
}

body.theme-pd .pd-category-bar a,
body.theme-pd .pd-inner-category-bar a {
    font-size: 1rem;
    font-weight: 500;
}

body.theme-pd .nav-search-form,
body.theme-pd .pd-feed-tabs a,
body.theme-pd .filter-tabs a,
body.theme-pd .page-head .btn,
body.theme-pd.page-thread main.wrap > .card .btn,
body.theme-pd .pd-vote-button,
body.theme-pd .pd-static-links a,
body.theme-pd .footer-page-nav a,
body.theme-pd .footer-friend-links a {
    border-radius: var(--pd-control-radius) !important;
}

body.theme-pd .pd-breadcrumb,
body.theme-pd .pd-feed-tabs,
body.theme-pd .filter-tabs {
    margin-bottom: var(--pd-space-3);
}

body.theme-pd .pd-thread-row,
body.theme-pd .thread-row {
    min-height: 5.5rem;
    padding: var(--pd-space-3) 0;
}

body.theme-pd .pd-thread-main h2,
body.theme-pd .thread-title {
    font-size: var(--pd-font-size-list-title);
    font-weight: var(--pd-font-weight-list-title);
    line-height: 1.35;
}

body.theme-pd .pd-thread-main p,
body.theme-pd .thread-main p,
body.theme-pd .post-meta,
body.theme-pd .pd-thread-stats,
body.theme-pd .thread-count,
body.theme-pd .pd-side-card,
body.theme-pd .pd-must-read li {
    font-size: .875rem;
}

body.theme-pd .page-head h1,
body.theme-pd .post-title-card h1,
body.theme-pd .pd-auth-head h1 {
    font-size: var(--pd-font-size-page-title);
    font-weight: var(--pd-font-weight-page-title);
    line-height: 1.25;
}

body.theme-pd .pd-side-card h2,
body.theme-pd .replies > h2,
body.theme-pd .pd-list-heading {
    font-size: var(--pd-font-size-section-title);
    font-weight: var(--pd-font-weight-section-title);
}

body.theme-pd .post-content-box,
body.theme-pd .reply .content,
body.theme-pd .pd-static-page p {
    font-size: var(--pd-font-size-body);
    line-height: var(--pd-line-height-body);
}

body.theme-pd .reply {
    grid-template-columns: 3.75rem minmax(0, 1fr);
    gap: var(--pd-space-3);
    padding: var(--pd-space-4);
}

body.theme-pd .reply .post-meta,
body.theme-pd .reply .post-meta strong,
body.theme-pd .pd-reply-author,
body.theme-pd .pd-reply-action {
    font-size: .875rem;
}

body.theme-pd .pd-floor-no {
    border-radius: var(--pd-card-radius);
}

body.theme-pd .pd-level {
    border-radius: 5px;
}

body.theme-pd .floor-replies,
body.theme-pd .floor-reply {
    border-radius: var(--pd-card-radius);
}


@media (max-width: 900px) {
    body.theme-pd .pd-home-shell,
    body.theme-pd .footer .wrap,
    body.theme-pd .pd-inner-category-bar > div {
        width: calc(100vw - 1.25rem);
    }

    body.theme-pd.page-forum main.wrap,
    body.theme-pd.page-thread main.wrap,
    body.theme-pd.page-search main.wrap,
    body.theme-pd.page-post main.wrap,
    body.theme-pd.page-edit-thread main.wrap,
    body.theme-pd.page-tags main.wrap,
    body.theme-pd.page-user main.wrap,
    body.theme-pd.page-profile main.wrap,
    body.theme-pd.page-page main.wrap,
    body.theme-pd.page-login main.wrap,
    body.theme-pd.page-register main.wrap {
        width: 100%;
        max-width: 100%;
    }

    body.theme-pd .pd-feed-card,
    body.theme-pd .pd-side-card,
    body.theme-pd .pd-page-head,
    body.theme-pd .page-head,
    body.theme-pd .post-title-card,
    body.theme-pd .post-content-card,
    body.theme-pd.page-thread main.wrap > .card:not(.post-title-card):not(.post-content-card):not(.replies),
    body.theme-pd .pd-static-page,
    body.theme-pd .pd-auth-page {
        padding: var(--pd-space-3);
    }

    body.theme-pd .page-head h1,
    body.theme-pd .post-title-card h1,
    body.theme-pd .pd-auth-head h1 {
        font-size: 1.5rem;
    }

    body.theme-pd .pd-thread-main h2,
    body.theme-pd .thread-title {
        font-size: 1rem;
    }

    body.theme-pd .pd-home-layout,
    body.theme-pd .pd-home-sidebar {
        grid-template-columns: 1fr;
    }

    body.theme-pd .pd-must-read,
    body.theme-pd .pd-post-button {
        grid-column: auto;
    }
}

/* PHP official dark variant */
body.theme-pd-dark {
    color: var(--pd-text);
    background: var(--pd-page);
}

body.theme-pd-dark a {
    color: var(--pd-accent-strong);
}


body.theme-pd-dark .nav-search-form,

body.theme-pd-dark .nav-search-form input {
    color: var(--pd-text);
}

body.theme-pd-dark .nav-search-form input::placeholder {
    color: var(--pd-faint);
}

body.theme-pd-dark .nav-search-form button {
    color: var(--pd-muted);
    background: var(--pd-surface) !important;
    border-left-color: var(--pd-border);
}

body.theme-pd-dark .nav-search-form button:hover,

body.theme-pd-dark .pd-category-bar,
body.theme-pd-dark .pd-inner-category-bar {
    background: var(--pd-surface);
    border-color: var(--pd-border);
    box-shadow: 0 .0625rem 0 rgba(255, 255, 255, .03);
}

body.theme-pd-dark .pd-category-bar a,
body.theme-pd-dark .pd-inner-category-bar a {
    color: #d4d8e1;
}

body.theme-pd-dark .pd-category-bar a:hover,
body.theme-pd-dark .pd-inner-category-bar a:hover {
    color: #fff;
}

body.theme-pd-dark .pd-breadcrumb,
body.theme-pd-dark .pd-breadcrumb a,
body.theme-pd-dark .pd-breadcrumb strong,
body.theme-pd-dark .post-meta,
body.theme-pd-dark .thread-main p,
body.theme-pd-dark .pd-thread-main p,
body.theme-pd-dark .thread-count,
body.theme-pd-dark .pd-thread-stats,
body.theme-pd-dark .page-head p,
body.theme-pd-dark .muted {
    color: var(--pd-muted);
}

body.theme-pd-dark .pd-feed-card,
body.theme-pd-dark .pd-side-card,
body.theme-pd-dark .pd-page-head,
body.theme-pd-dark .pd-user-head,
body.theme-pd-dark .post-title-card,
body.theme-pd-dark .post-content-card,
body.theme-pd-dark .replies,
body.theme-pd-dark.page-thread main.wrap > .card:not(.post-title-card):not(.post-content-card):not(.replies),
body.theme-pd-dark.page-user main.wrap > .card,
body.theme-pd-dark.page-tags main.wrap > .card,
body.theme-pd-dark.page-profile main.wrap > .card,
body.theme-pd-dark.page-messages main.wrap > .card,
body.theme-pd-dark.page-page main.wrap > .card,
body.theme-pd-dark.page-login main.wrap > .card,
body.theme-pd-dark.page-register main.wrap > .card,
body.theme-pd-dark .thread-list,
body.theme-pd-dark.page-search .thread-list,
body.theme-pd-dark .pd-category-bar,
body.theme-pd-dark .pd-static-page,
body.theme-pd-dark .pd-auth-page,
body.theme-pd-dark .card,
body.theme-pd-dark .signin-modal-box,
body.theme-pd-dark .editor-dialog-box,
body.theme-pd-dark .pd-confirm-box {
    color: var(--pd-text);
    background: var(--pd-surface);
    border-color: var(--pd-border);
    box-shadow: var(--pd-shadow-soft);
}

body.theme-pd-dark .pd-feed-tabs a,
body.theme-pd-dark .filter-tabs a,
body.theme-pd-dark .pd-vote-button,
body.theme-pd-dark .floor-label,
body.theme-pd-dark .btn-light,
body.theme-pd-dark .footer-page-nav a,
body.theme-pd-dark .footer-friend-links a,
body.theme-pd-dark .nav-more-item {
    color: #d4d8e1 !important;
    background: var(--pd-surface-soft) !important;
    border-color: var(--pd-border);
}

body.theme-pd-dark .pd-feed-tabs a.active,
body.theme-pd-dark .filter-tabs a.active,
body.theme-pd-dark .pd-post-button,
body.theme-pd-dark .btn,
body.theme-pd-dark .page-head .btn,
body.theme-pd-dark.page-thread main.wrap > .card .btn {
    color: #fff !important;
    background: var(--pd-accent) !important;
    border-color: var(--pd-accent);
}

body.theme-pd-dark .pd-feed-tabs a:hover,
body.theme-pd-dark .filter-tabs a:hover,
body.theme-pd-dark .footer-page-nav a:hover,
body.theme-pd-dark .footer-friend-links a:hover,
body.theme-pd-dark .nav-more-item:hover {
    color: #fff !important;
    background: var(--pd-surface-raised) !important;
    border-color: #444d62;
}

body.theme-pd-dark .pd-feed-tabs .pd-rss {
    color: var(--pd-muted) !important;
    background: transparent !important;
}

body.theme-pd-dark .pd-thread-row,
body.theme-pd-dark .thread-row,
body.theme-pd-dark .reply,
body.theme-pd-dark .replies > h2,
body.theme-pd-dark .pd-side-card h2 {
    border-color: var(--pd-line);
}

body.theme-pd-dark .pd-thread-main h2,
body.theme-pd-dark .pd-thread-main h2 a,
body.theme-pd-dark .thread-title,
body.theme-pd-dark .page-head h1,
body.theme-pd-dark .post-title-card h1,
body.theme-pd-dark .pd-auth-head h1,
body.theme-pd-dark .pd-side-card h2,
body.theme-pd-dark .replies > h2,
body.theme-pd-dark .pd-list-heading,
body.theme-pd-dark .post-content-box,
body.theme-pd-dark .reply .content,
body.theme-pd-dark .pd-static-page p,
body.theme-pd-dark .pd-reply-author,
body.theme-pd-dark .reply .post-meta strong,
body.theme-pd-dark .floor-reply strong,
body.theme-pd-dark h1,
body.theme-pd-dark h2,
body.theme-pd-dark h3,
body.theme-pd-dark label {
    color: var(--pd-text) !important;
}

body.theme-pd-dark .pd-thread-main h2 a:hover,
body.theme-pd-dark .thread-title:hover,
body.theme-pd-dark .content a,
body.theme-pd-dark .pd-author-link:hover,
body.theme-pd-dark .pd-reply-author:hover,
body.theme-pd-dark .pd-reply-action:hover,
body.theme-pd-dark .pd-reply-action:hover i {
    color: var(--pd-accent-strong) !important;
}

body.theme-pd-dark .pd-avatar,
body.theme-pd-dark .pd-author-avatar,
body.theme-pd-dark .pd-reply-avatar {
    background: #2a303c;
}

body.theme-pd-dark .pd-pill,
body.theme-pd-dark .pd-topic-tag,
body.theme-pd-dark .tag,
body.theme-pd-dark .category-tag {
    color: #ffae9f !important;
    background: rgba(255, 138, 120, .13) !important;
    border-color: rgba(255, 138, 120, .28);
}

body.theme-pd-dark .pd-pill-outline {
    background: transparent !important;
    border-color: rgba(255, 138, 120, .58);
}

body.theme-pd-dark .pd-good,
body.theme-pd-dark .tag.good {
    color: #cfd6e8 !important;
    background: rgba(135, 145, 196, .18) !important;
    border-color: rgba(135, 145, 196, .34);
}

body.theme-pd-dark .pd-badge-sq { color: #fff !important; }
body.theme-pd-dark .pd-badge-top { background: #d1495b; }
body.theme-pd-dark .pd-thread-main h2 a.pd-title-good,
body.theme-pd-dark .thread-title.pd-title-good,
body.theme-pd-dark .post-title-card h1.pd-title-good {
    color: var(--pd-good-title) !important;
}

body.theme-pd-dark .pd-thread-main h2 a.pd-title-good:hover,
body.theme-pd-dark .thread-title.pd-title-good:hover {
    color: var(--pd-good-title-hover) !important;
}

body.theme-pd-dark .pd-thread-main h2 a.pd-title-top,
body.theme-pd-dark .thread-title.pd-title-top,
body.theme-pd-dark .post-title-card h1.pd-title-top {
    color: var(--pd-top-title) !important;
}

body.theme-pd-dark .pd-thread-main h2 a.pd-title-top-board,
body.theme-pd-dark .thread-title.pd-title-top-board,
body.theme-pd-dark .post-title-card h1.pd-title-top-board {
    color: var(--pd-top-board-title) !important;
}

body.theme-pd-dark .pd-thread-main h2 a.pd-title-top:hover,
body.theme-pd-dark .thread-title.pd-title-top:hover,
body.theme-pd-dark .post-title-card h1.pd-title-top:hover {
    color: var(--pd-top-title-hover) !important;
}

body.theme-pd-dark .pd-thread-main h2 a.pd-title-top-board:hover,
body.theme-pd-dark .thread-title.pd-title-top-board:hover,
body.theme-pd-dark .post-title-card h1.pd-title-top-board:hover {
    color: var(--pd-top-board-title-hover) !important;
}

body.theme-pd-dark .pd-thread-main h2 a.pd-title-top.pd-title-good,
body.theme-pd-dark .thread-title.pd-title-top.pd-title-good,
body.theme-pd-dark .post-title-card h1.pd-title-top.pd-title-good {
    color: var(--pd-top-title) !important;
}

body.theme-pd-dark .pd-badge-good { background: var(--pd-gold); }

body.theme-pd-dark .pd-image-icon,
body.theme-pd-dark .pd-attach-icon,
body.theme-pd-dark .pd-thread-stats i,
body.theme-pd-dark .thread-count i,
body.theme-pd-dark .pd-reply-action,
body.theme-pd-dark .pd-reply-action i,
body.theme-pd-dark .pd-only-author {
    color: var(--pd-faint);
}

body.theme-pd-dark .pd-must-read li {
    color: #d4d8e1;
}

body.theme-pd-dark .pd-must-read li::before {
    background: #626b7a;
}

body.theme-pd-dark .replies > h2,
body.theme-pd-dark .pd-floor-no,
body.theme-pd-dark .floor-replies {
    background: var(--pd-surface-soft);
}

body.theme-pd-dark .pd-meta-sep {
    background: var(--pd-border);
}

body.theme-pd-dark .pd-floor-no {
    color: var(--pd-muted);
}

body.theme-pd-dark .pd-signature {
    color: var(--pd-text);
    border-top-color: #3a4150;
}

body.theme-pd-dark .pd-signature span {
    color: var(--pd-accent-strong);
    background: var(--pd-surface);
}

body.theme-pd-dark .pd-signature p,
body.theme-pd-dark .floor-reply {
    color: #d4d8e1;
}

body.theme-pd-dark .floor-replies,
body.theme-pd-dark .floor-reply {
    border-color: var(--pd-border);
}

body.theme-pd-dark .floor-reply {
    background: #171a21;
}

body.theme-pd-dark input,
body.theme-pd-dark select,
body.theme-pd-dark textarea,
body.theme-pd-dark .floor-reply-form input {
    color: var(--pd-text);
    background: #11141a;
    border-color: #3a4150;
}

body.theme-pd-dark input::placeholder,
body.theme-pd-dark textarea::placeholder {
    color: var(--pd-faint);
}

body.theme-pd-dark .pd-vote-button strong,
body.theme-pd-dark .pd-vote-button i {
    color: var(--pd-muted);
}

body.theme-pd-dark .pd-vote-button:hover,
body.theme-pd-dark .pd-vote-button.active {
    color: #fff !important;
    background: var(--pd-accent) !important;
    border-color: var(--pd-accent);
}

body.theme-pd-dark .pd-vote-button:hover strong,
body.theme-pd-dark .pd-vote-button:hover i,
body.theme-pd-dark .pd-vote-button.active strong,
body.theme-pd-dark .pd-vote-button.active i {
    color: #fff;
}

body.theme-pd-dark .footer {
    background: transparent;
}

body.theme-pd-dark .footer-panel {
    color: var(--pd-faint);
    border-top-color: var(--pd-border);
}

body.theme-pd-dark .footer-brand p,
body.theme-pd-dark .footer-copyright,
body.theme-pd-dark .footer-link-group a {
    color: var(--pd-muted);
}

body.theme-pd-dark .footer-logo {
    padding: 4px 8px;
    background: #fff;
    border-radius: var(--pd-card-radius);
}

body.theme-pd-dark .footer-link-group h2 {
    color: var(--pd-text);
}

body.theme-pd-dark .footer-link-group a:hover {
    color: #fff;
}

body.theme-pd-dark .footer-social-links a,
body.theme-pd-dark .footer-qr {
    color: #d4d8e1;
    background: var(--pd-surface) !important;
    border-color: var(--pd-border);
}

body.theme-pd-dark .footer-social-links a:hover {
    color: #fff;
    background: var(--pd-surface-raised) !important;
    border-color: #444d62;
}

body.theme-pd-dark .footer-qr span {
    color: var(--pd-muted);
    background:
        linear-gradient(90deg, #343b49 1px, transparent 1px) 0 0 / 8px 8px,
        linear-gradient(#343b49 1px, transparent 1px) 0 0 / 8px 8px,
        #151821;
    border-color: var(--pd-border);
}

body.theme-pd-dark .pd-right-toolbar.cir-rail {
    --color-cloud: #1c1f26;
    --color-edge: #343b49;
    --color-mist: #9ca3af;
    --color-ink: #f3f4f6;
    box-shadow:
        0 1px 1px rgba(0, 0, 0, 0.12),
        0 20px 40px -24px rgba(0, 0, 0, 0.45);
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__b:hover {
    background: #2a3140;
    color: var(--color-ink);
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__b--brand {
    background: var(--color-ink);
    color: #1c1f26;
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__b--brand:hover {
    background: #e5e7eb;
    color: #1c1f26;
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__b--active {
    background: var(--color-ink);
    color: #1c1f26;
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__b--active:hover {
    background: #e5e7eb;
    color: #1c1f26;
}

body.theme-pd-dark .pd-right-toolbar.cir-rail .cir-rail__badge {
    border-color: var(--color-cloud);
}

/* ==========================================================================
   分类导航行 · 深色/浅色切换按钮 · 顶部加载指示（新增）
   ========================================================================== */

/* 3) 菜单栏与分类导航之间留出一点空隙 */
.pd-category-nav {
    margin-top: 10px;
}

.pd-category-nav-inner {
    display: flex;
    align-items: center;
    gap: 22px;
    max-width: 1200px;
    margin: 0 auto;
    padding: 8px 34px;
    overflow-x: auto;
    white-space: nowrap;
    scrollbar-width: none;
}

.pd-category-nav-inner::-webkit-scrollbar {
    display: none;
}

.pd-category-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
    color: #3c3c3c;
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
}

.pd-category-link:hover,
.pd-category-link.active {
    color: var(--pd-accent);
}

/* 菜单栏与分类导航内的链接一律不加下划线（盖过全局 a{underline}） */
body.theme-pd .pd-category-nav a,
body.theme-pd-dark .pd-category-nav a,
body.theme-pd .pd-category-nav a:hover,
body.theme-pd-dark .pd-category-nav a:hover {
    text-decoration: none;
}

.pd-cat-icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 20px;
    height: 20px;
    font-size: 16px;
    line-height: 1;
}

.pd-cat-icon-img {
    width: 20px;
    height: 20px;
    object-fit: contain;
    border-radius: 4px;
}

.pd-cat-icon-svg {
    width: 20px;
    height: 20px;
}

.pd-cat-icon-svg svg {
    width: 100%;
    height: 100%;
    display: block;
}

/* 分类导航：浅色主题 */
body.theme-pd .pd-category-nav {
    background: #fff;
    border-top: var(--pd-card-border);
    border-bottom: var(--pd-card-border);
    box-shadow: 0 1px 4px rgba(20, 20, 20, .03);
}

/* 分类导航：深色主题 */
body.theme-pd-dark .pd-category-nav {
    background: var(--pd-surface);
    border-top: 1px solid var(--pd-border);
    border-bottom: 1px solid var(--pd-border);
    box-shadow: 0 1px 0 rgba(255, 255, 255, .03);
}

body.theme-pd-dark .pd-category-link {
    color: #d4d8e1;
}

body.theme-pd-dark .pd-category-link:hover,
body.theme-pd-dark .pd-category-link.active {
    color: #fff;
}

/* 移除主导航后，让搜索/按钮组靠右对齐 */

/* 1) 顶部菜单栏的深色/浅色切换按钮 */
.nav-theme-toggle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 46px;
    height: 46px;
    padding: 0;
    color: #333;
    font-size: 17px;
    background: #fff;
    border: 1px solid #dfe3e8;
    border-radius: 5px;
    cursor: pointer;
    transition: color 140ms ease, border-color 140ms ease, background 140ms ease;
}

.nav-theme-toggle:hover {
    color: var(--pd-accent);
    border-color: #cfd6e8;
    background: #f7f8fc;
}

/* 浅色模式显示月亮（点击切换到深色） */
[data-theme-toggle] .nav-theme-sun {
    display: none;
}

[data-theme-toggle] .nav-theme-moon {
    display: inline-block;
}

/* 侧边工具栏三态主题图标：太阳=浅色，月亮=深色，显示器=跟随系统 */
body.theme-pd .pd-right-toolbar.cir-rail [data-theme-toggle] [data-theme-icon] {
    display: none;
    width: 20px;
    height: 20px;
}

body.theme-pd .pd-right-toolbar.cir-rail [data-theme-toggle][data-theme-mode="light"] [data-theme-icon="light"],
body.theme-pd .pd-right-toolbar.cir-rail [data-theme-toggle][data-theme-mode="dark"] [data-theme-icon="dark"],
body.theme-pd .pd-right-toolbar.cir-rail [data-theme-toggle][data-theme-mode="system"] [data-theme-icon="system"] {
    display: block;
}

/* 深色模式下显示太阳（点击切回浅色） */
body.theme-pd-dark .nav-theme-toggle {
    color: var(--pd-text);
    background: var(--pd-surface);
    border-color: var(--pd-border);
}

body.theme-pd-dark .nav-theme-toggle:hover {
    color: #fff;
    background: #252b38;
    border-color: #444d62;
}

body.theme-pd-dark [data-theme-toggle] .nav-theme-sun {
    display: inline-block;
}

body.theme-pd-dark [data-theme-toggle] .nav-theme-moon {
    display: none;
}

/* 4) 页面切换：模糊层中央圆形加载指示 */
.pd-loading-indicator {
    position: fixed;
    top: 50%;
    left: 50%;
    right: auto;
    z-index: 1300;
    display: grid;
    place-items: center;
    width: 52px;
    height: 52px;
    background: rgba(255, 255, 255, .92);
    border: 1px solid #dde2ef;
    border-radius: 999px;
    box-shadow: 0 12px 28px rgba(80, 91, 147, .16);
    opacity: 0;
    pointer-events: none;
    transform: translate(-50%, -50%) scale(.92);
    transition: opacity 160ms ease, transform 160ms ease;
}

.pd-loading-indicator svg {
    width: 26px;
    height: 26px;
}

body.pd-is-loading .pd-loading-indicator {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
}

body.pd-is-loading main.wrap {
    filter: blur(2px);
    opacity: .7;
    pointer-events: none;
    transition: filter 160ms ease, opacity 160ms ease;
}

@media (prefers-reduced-motion: reduce) {
    body.pd-is-loading main.wrap {
        transition: none;
    }
}

@media (max-width: 640px) {
    .pd-category-nav-inner {
        gap: 16px;
        padding: 6px 16px;
    }

    .pd-category-link {
        font-size: 15px;
    }

    .pd-loading-indicator {
        width: 46px;
        height: 46px;
    }
}

/* 后台主导航图标编辑区 */
.nav-icon-grid select,
.nav-icon-cell select,
.nav-icon-cell textarea,
.nav-icon-cell input[type="text"] {
    width: 100%;
}

.nav-icon-cell {
    min-width: 220px;
}

.nav-icon-cell > * + * {
    margin-top: 6px;
}

.nav-icon-preview {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 30px;
    height: 30px;
    font-size: 18px;
    color: var(--pd-accent);
}

.nav-icon-preview .pd-cat-icon-img,
.nav-icon-preview .pd-cat-icon-svg {
    width: 24px;
    height: 24px;
}

/* 第三方登录（OAuth）按钮 */
.pd-oauth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 20px 0 14px;
    color: #8a8f99;
    font-size: 13px;
    white-space: nowrap;
}

.pd-oauth-divider::before,
.pd-oauth-divider::after {
    content: "";
    flex: 1;
    height: 1px;
    background: #e5e7eb;
}

.pd-oauth-buttons {
    display: flex;
    flex-direction: column;
    gap: 10px;
}

.pd-oauth-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    width: 100%;
    font-weight: 600;
}

.pd-oauth-btn i {
    font-size: 17px;
}

.pd-oauth-github {
    color: #fff !important;
    background: #24292f !important;
    border-color: #24292f !important;
}

.pd-oauth-github:hover {
    background: #32383f !important;
    border-color: #32383f !important;
}

.pd-oauth-google {
    color: #3c4043 !important;
    background: #fff !important;
    border: 1px solid #dadce0 !important;
}

.pd-oauth-google:hover {
    background: #f7f8f9 !important;
}

.pd-oauth-google i {
    color: #4285f4;
}

body.theme-pd-dark .pd-oauth-divider::before,
body.theme-pd-dark .pd-oauth-divider::after {
    background: var(--pd-border);
}

body.theme-pd-dark .pd-oauth-google {
    color: #e8eaed !important;
    background: #2a2f3a !important;
    border-color: #3a4150 !important;
}

body.theme-pd-dark .pd-oauth-google:hover {
    background: #323847 !important;
}

/* ============================================================
   phpBB 式页头（banner + 导航栏 + 面包屑）
   Tailwind preflight 已关闭，这里给页头做作用域内 reset + 组件样式
   ============================================================ */
.pd-topbar { width: 100%; padding-top: 14px; }
.pd-topbar-inner { max-width: 1200px; margin: 0 auto; }
.pd-topbar a { text-decoration: none !important; }
.pd-topbar ul, .pd-topbar li { list-style: none; margin: 0; padding: 0; }

.pd-banner {
    display: flex;
    align-items: center;
    min-height: 200px;
    padding: 0 28px;
    background: linear-gradient(120deg, #5a6aa8 0%, var(--pd-accent) 58%, var(--pd-accent-hover) 100%);
}
.pd-banner-logo img { height: 52px; }
.pd-banner-btn {
    display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; border-radius: 8px;
    color: #fff; background: rgba(255,255,255,.16); border: 0; cursor: pointer;
    transition: background .15s ease;
}
.pd-banner-btn:hover { background: rgba(255,255,255,.3); }

.pd-navbar { background: #4f5b93; padding: 0 28px; box-shadow: 0 2px 4px rgba(0,0,0,.2); }

/* 头部：banner 图铺满 banner+菜单两段，菜单栏透明叠图 */
.pd-topbar-hasbg { position: relative; }
.pd-topbar-bg {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    z-index: 0;
}
.pd-topbar-scrim {
    position: absolute;
    inset: 0;
    z-index: 0;
    background: linear-gradient(180deg,
        rgba(0, 0, 0, .30) 0%,
        rgba(0, 0, 0, .08) 32%,
        rgba(0, 0, 0, .06) 70%,
        rgba(0, 0, 0, .14) 100%);
}
.pd-topbar-hasbg .pd-banner {
    position: relative;
    z-index: 2;
    min-height: 191px;
    background: transparent;
}
.pd-topbar-hasbg .pd-navbar {
    position: relative;
    z-index: 1;
    background: rgba(0, 0, 0, .28);
    -webkit-backdrop-filter: blur(3px) saturate(115%);
    backdrop-filter: blur(3px) saturate(115%);
    border-top: 1px solid rgba(255, 255, 255, .10);
    box-shadow: none;
}
.pd-topbar-hasbg .pd-navbar .pd-menu-link,
.pd-topbar-hasbg .pd-navbar .pd-menu-link span,
.pd-topbar-hasbg .pd-navbar .pd-menu-link i {
    color: rgba(255, 255, 255, .90);
    font-size: 14px;
    font-weight: 500;
    text-shadow: 0 1px 4px rgba(0, 0, 0, .55);
    transition: color .12s ease, background .12s ease;
}
.pd-topbar-hasbg .pd-navbar .pd-menu-link:hover {
    color: #fff;
    background: rgba(255, 255, 255, .10);
}
.pd-topbar-hasbg .pd-navbar .pd-menu-link:hover span,
.pd-topbar-hasbg .pd-navbar .pd-menu-link:hover i {
    color: #fff;
    background: transparent;
}
.pd-topbar-hasbg .pd-navbar .pd-menu-link.active {
    color: #fff;
    font-size: 16px;
    font-weight: 800;
    background: rgba(0, 0, 0, .30);
    -webkit-backdrop-filter: blur(12px) saturate(135%);
    backdrop-filter: blur(12px) saturate(135%);
    border-radius: 0;
    text-shadow: 0 1px 6px rgba(0, 0, 0, .65);
}
.pd-topbar-hasbg .pd-navbar .pd-menu-link.active span,
.pd-topbar-hasbg .pd-navbar .pd-menu-link.active i {
    color: #fff;
    background: transparent;
    font-size: inherit;
    font-weight: inherit;
    text-shadow: inherit;
    -webkit-backdrop-filter: none;
    backdrop-filter: none;
}
.pd-menu { display: flex; }
.pd-navbar .pd-menu-link {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 13px 15px;
    font-size: 15px;
    font-weight: 600;
    transition: background .12s ease, color .12s ease;
}
.pd-navbar .pd-menu-link,
.pd-navbar .pd-menu-link span,
.pd-navbar .pd-menu-link i {
    color: rgba(255, 255, 255, .82);
}
.pd-navbar .pd-menu-link:hover {
    color: #fff;
    background: rgba(0, 0, 0, .06);
}
.pd-navbar .pd-menu-link:hover span,
.pd-navbar .pd-menu-link:hover i {
    color: #fff;
    background: transparent;
}
.pd-navbar .pd-menu-link.active {
    color: #fff;
    background: rgba(0, 0, 0, .1);
}
.pd-navbar .pd-menu-link.active span,
.pd-navbar .pd-menu-link.active i {
    color: #fff;
    background: transparent;
}
.pd-menu-link i, .pd-menu-link .pd-cat-icon { font-size: 14px; }
.pd-menu-link .pd-cat-icon-img { width: 16px; height: 16px; filter: brightness(0) invert(1); }
.pd-menu-link .pd-cat-icon-svg svg { fill: currentColor; }

.pd-navbar-right { padding: 6px 4px; }
.pd-search { height: 34px; background: #fff; border-radius: 6px; overflow: hidden; }
.pd-search input { border: 0; outline: 0; height: 34px; padding: 0 10px; width: 140px; max-width: 40vw; background: transparent; font-size: 14px; color: #333; }
.pd-search button { border: 0; background: transparent; padding: 0 10px; color: #666; cursor: pointer; height: 34px; }

.pd-btn { display: inline-flex; align-items: center; gap: 6px; height: 34px; padding: 0 14px; border-radius: 6px; font-size: 14px; font-weight: 700; cursor: pointer; }
.pd-btn-ghost { color: #fff; background: rgba(255,255,255,.12); }
.pd-btn-ghost:hover, .pd-btn-ghost.active { background: rgba(255,255,255,.24); }
.pd-btn-solid { color: var(--pd-accent-hover); background: #fff; }
.pd-btn-solid:hover, .pd-btn-solid.active { background: #eef1f7; }

.pd-user-trigger { display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 10px; border-radius: 6px; color: #fff; background: rgba(255,255,255,.12); border: 0; cursor: pointer; font-weight: 600; font-size: 14px; }
.pd-user-trigger:hover { background: rgba(255,255,255,.24); }
.pd-user-trigger img { width: 24px; height: 24px; border-radius: 50%; object-fit: cover; }

.pd-user-avatar-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 999px;
    overflow: hidden;
    border: 2px solid rgba(255, 255, 255, .35);
    box-shadow: 0 4px 14px rgba(0, 0, 0, .18);
    transition: transform .16s ease, border-color .16s ease;
}

.pd-user-avatar-link:hover {
    transform: translateY(-1px);
    border-color: rgba(255, 255, 255, .65);
}

.pd-user-avatar-link img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}
.pd-user-menu { position: absolute; top: 100%; right: 0; min-width: 194px; padding: 6px; margin-top: 6px; background: #fff; border: 1px solid #e6e8ee; border-radius: 10px; box-shadow: 0 12px 30px rgba(20,20,20,.14); z-index: 60; }
.pd-user-menu a, .pd-user-menu button, .pd-user-static { display: flex; align-items: center; gap: 9px; width: 100%; padding: 9px 11px; border-radius: 7px; color: #333; font-size: 14px; background: transparent; border: 0; cursor: pointer; text-align: left; }
.pd-user-menu a:hover, .pd-user-menu button:hover { background: #f2f4f8; color: var(--pd-accent); }
.pd-user-menu form { margin: 0; }
.pd-user-static { color: #8a8f99; }

.pd-breadcrumb { padding: 9px 6px; font-size: 13px; color: #7a7f8a; display: flex; align-items: center; gap: 8px; }
.pd-breadcrumb a { color: var(--pd-accent); }
.pd-crumb-sep { color: #b6bcc8; }
.pd-crumb-cur { color: #444; font-weight: 600; }

.pd-burger { color: #fff; background: transparent; border: 0; font-size: 18px; padding: 11px 12px; cursor: pointer; }

@media (max-width: 640px) {
    .pd-menu { flex-direction: column; width: 100%; align-items: stretch; }
    .pd-menu-link { padding: 12px 14px; }
    .pd-navbar-right { width: 100%; padding: 8px 4px; }
    .pd-search input { width: 100%; max-width: none; flex: 1; }
    .pd-search { flex: 1; }
}

/* 深色主题下页头保持石板蓝（banner/navbar 不反色） */
body.theme-pd-dark .pd-user-menu { background: #1c2130; border-color: #2b3242; box-shadow: 0 12px 30px rgba(0,0,0,.5); }
body.theme-pd-dark .pd-user-menu a, body.theme-pd-dark .pd-user-menu button { color: #d4d8e1; }
body.theme-pd-dark .pd-user-menu a:hover, body.theme-pd-dark .pd-user-menu button:hover { background: #262d3c; color: #fff; }
body.theme-pd-dark .pd-breadcrumb { color: #8b93a3; }
body.theme-pd-dark .pd-crumb-cur { color: #cfd4df; }

/* ============================================================
   phpBB 风格页面外壳：灰褐底 + 白色圆角立体内容框
   ============================================================ */

.pd-page-frame {
    width: calc(100% - 44px);
    max-width: 1200px;
    margin: 24px auto 30px;
    background: #ffffff;
    border-radius: 10px;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, .42),
                0 1px 0 rgba(255, 255, 255, .9) inset,
                0 7px 22px rgba(0, 0, 0, .30);
    overflow: hidden;
}
body.theme-pd-dark .pd-page-frame {
    background: #12151c;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, .05),
                0 7px 22px rgba(0, 0, 0, .6);
}

/* 页头铺满框宽、banner 顶角交给外框圆角裁切 */
.pd-page-frame .pd-topbar { padding-top: 0; }
.pd-page-frame .pd-topbar-inner { max-width: none; margin: 0; padding: 0; }
.pd-page-frame .pd-banner { border-radius: 0; }

/* 正文区在白框内留出内边距（灰褐底只在框外显示） */
.pd-page-frame main.wrap { padding-bottom: 42px; }
body.theme-pd .pd-page-frame main.wrap { background: transparent; }

/* PHP 官网风背景：深底 + 4px 极细斜纹纹理（复刻 php.net bg-texture） */
body.theme-pd,
body.theme-pd-dark {
    background-color: #262626 !important;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='4' height='4'%3E%3Cpath d='M0 0L4 4M0 4L4 0' stroke='%23000000' stroke-width='.5' stroke-opacity='.28'/%3E%3C/svg%3E") !important;
    background-size: 4px 4px !important;
    background-attachment: fixed !important;
}

/* 侧边栏搜索框 */
.pd-side-search {
    display: flex;
    align-items: center;
    height: 42px;
    background: #fff;
    border: 1px solid #dfe3e8;
    border-radius: 8px;
    overflow: hidden;
    margin-bottom: 12px;
}
.pd-side-search input {
    flex: 1; min-width: 0; height: 100%; padding: 0 12px;
    border: 0; outline: 0; background: transparent; font-size: 15px; color: #333;
}
.pd-side-search button {
    height: 100%; width: 44px; border: 0; background: transparent;
    color: #666; cursor: pointer; border-left: 1px solid #eef0f3;
}
.pd-side-search button:hover { color: var(--pd-accent); background: #f7f8fb; }
body.theme-pd-dark .pd-side-search { background: var(--pd-surface); border-color: var(--pd-border); }
body.theme-pd-dark .pd-side-search input { color: var(--pd-text); }
body.theme-pd-dark .pd-side-search button { color: var(--pd-muted); border-left-color: var(--pd-border); }

/* logo：悬浮轻微放大 + 禁止选中/拖拽（右键已在 HTML 层禁用） */
.pd-banner-logo img {
    transition: transform .18s ease;
    transform-origin: left center;
    user-select: none;
    -webkit-user-drag: none;
    -webkit-touch-callout: none;
}
.pd-banner-logo:hover img { transform: scale(1.06); }

/* 顶部菜单合并为一行：超出则横向滚动（隐藏滚动条） */
.pd-menu {
    flex: 1;
    min-width: 0;
    flex-wrap: nowrap;
    overflow-x: auto;
    scrollbar-width: none;
}
.pd-menu::-webkit-scrollbar { display: none; }
.pd-menu-link { flex: 0 0 auto; white-space: nowrap; }
@media (max-width: 640px) {
    .pd-menu { flex: none; overflow-x: visible; }
}

/* 导航栏右侧搜索框：宽度与首页侧栏一致（25%） */
/* 导航栏右侧工具组：搜索 + RSS */
.pd-navbar-tools {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex: 0 0 auto;
}
.pd-navbar-tools .pd-navbar-rss { margin-left: 0; }

/* 导航栏搜索：默认只显示放大镜，悬浮/聚焦时向左展开搜索框 */
.pd-navbar-search {
    display: inline-flex;
    align-items: center;
    height: 34px;
    flex: 0 0 auto;
    background: transparent;
    border: 1px solid transparent;
    border-radius: 999px;
    overflow: hidden;
    transition: background-color .2s ease, border-color .2s ease;
}
.pd-navbar-search-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 34px;
    flex: 0 0 auto;
    padding: 0;
    border: 0;
    background: transparent;
    color: rgba(255, 255, 255, .85);
    font-size: 15px;
    cursor: pointer;
    transition: color .12s ease;
}
.pd-topbar-hasbg .pd-navbar-search-btn { color: rgba(255, 255, 255, .9); text-shadow: 0 1px 4px rgba(0, 0, 0, .55); }
.pd-navbar-search-input {
    width: 0;
    min-width: 0;
    height: 100%;
    padding: 0;
    border: 0;
    outline: 0;
    background: transparent;
    font-size: 14px;
    color: #333;
    opacity: 0;
    transition: width .24s ease, opacity .2s ease, padding .24s ease;
}
/* 展开态：悬浮整块、或聚焦输入框、或输入框已有内容 */
.pd-navbar-search:hover,
.pd-navbar-search:focus-within {
    background: #fff;
    border-color: #e5e7eb;
}
.pd-navbar-search:hover .pd-navbar-search-input,
.pd-navbar-search:focus-within .pd-navbar-search-input {
    width: 168px;
    padding: 0 12px 0 4px;
    opacity: 1;
}
.pd-navbar-search:hover .pd-navbar-search-btn,
.pd-navbar-search:focus-within .pd-navbar-search-btn { color: var(--pd-accent); text-shadow: none; }
@media (max-width: 640px) {
    .pd-navbar-search:hover .pd-navbar-search-input,
    .pd-navbar-search:focus-within .pd-navbar-search-input { width: 128px; }
}

/* 入站必看条目：取消加粗，用常规 400 字重 */
body.theme-pd .pd-must-read li,
body.theme-pd-dark .pd-must-read li {
    font-weight: 400;
}

/* 白框内正文区左右内边距（提高专属性以盖过基础 main.wrap 规则），并让 home-shell 填满 */
/* 左右各 20px：1200px 白框内正文可用宽约 1160px；勿写 shorthand padding，避免盖掉内页 padding-top */
body.theme-pd .pd-page-frame main.wrap,
body.theme-pd-dark .pd-page-frame main.wrap {
    padding-left: 20px;
    padding-right: 20px;
    padding-bottom: 42px;
}

/* 帖子页：菜单栏 ↔ 面包屑 ↔ 帖子卡片，上下间距统一为 14px */
body.theme-pd.page-thread .pd-page-frame main.wrap,
body.theme-pd-dark.page-thread .pd-page-frame main.wrap {
    padding-top: 14px;
}

body.theme-pd .pd-page-frame .pd-home-shell,
body.theme-pd-dark .pd-page-frame .pd-home-shell {
    width: 100%;
    max-width: none;
    margin: 22px 0 0;
}

/* 面包屑行右端搜索框：宽度与首页侧栏一致（25%），右对齐 */
.pd-crumb-search {
    margin-left: auto;
    flex: 0 0 var(--pd-home-side);
    max-width: 46vw;
    display: flex;
    align-items: center;
    height: 38px;
    background: #fff;
    border: 1px solid #dfe3e8;
    border-radius: 8px;
    overflow: hidden;
    transition: border-color .15s ease, box-shadow .15s ease;
}
/* 点击/聚焦：外框变主题淡紫 + 淡紫光晕 */
.pd-crumb-search:focus-within {
    border-color: var(--pd-accent);
    box-shadow: 0 0 0 3px rgba(80, 91, 147, .18);
}
.pd-crumb-search input {
    flex: 1;
    min-width: 0;
    height: 100%;
    padding: 0 4px 0 12px;
    border: 0;
    outline: 0;
    background: transparent;
    font-size: 14px;
    color: #333;
}
/* 按钮只保留放大镜图标，无边框/无底色 */
.pd-crumb-search button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 100%;
    width: 40px;
    border: 0;
    background: transparent;
    color: #8a8f99;
    cursor: pointer;
    transition: color .12s ease;
}
.pd-crumb-search button:hover { color: var(--pd-accent); }
body.theme-pd-dark .pd-crumb-search { background: var(--pd-surface); border-color: var(--pd-border); }
body.theme-pd-dark .pd-crumb-search:focus-within { border-color: #8791c4; box-shadow: 0 0 0 3px rgba(135, 145, 196, .22); }
body.theme-pd-dark .pd-crumb-search input { color: var(--pd-text); }
body.theme-pd-dark .pd-crumb-search button { color: var(--pd-muted); }
@media (max-width: 640px) {
    .pd-crumb-search { flex: 1 1 100%; margin-left: 0; max-width: none; }
}

/* ===== 搜索模态窗（快捷键 ⌘/Ctrl+K 或 / 打开） ===== */
.pd-search-window {
    position: fixed;
    inset: 0;
    z-index: 2000;
    display: none;
    align-items: flex-start;
    justify-content: center;
    padding: 12vh 16px 16px;
    background: rgba(15, 17, 22, .55);
    backdrop-filter: blur(3px);
}
.pd-search-window.is-open { display: flex; }
.pd-search-window-box {
    width: 100%;
    max-width: 560px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 24px 60px rgba(0, 0, 0, .4);
    overflow: hidden;
}
.pd-search-window form {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 0 18px;
    height: 60px;
    border-bottom: 1px solid #eef0f3;
}
.pd-search-window form > i { color: #8a8f99; font-size: 18px; }
.pd-search-window input {
    flex: 1;
    min-width: 0;
    height: 100%;
    border: 0;
    outline: 0;
    background: transparent;
    font-size: 17px;
    color: #222;
}
.pd-search-window kbd {
    padding: 3px 7px;
    border: 1px solid #dfe3e8;
    border-radius: 5px;
    background: #f6f7fa;
    color: #888;
    font-size: 12px;
    font-family: inherit;
}
.pd-search-window-hint {
    padding: 11px 18px;
    color: #9aa0ac;
    font-size: 12.5px;
    background: #fafbfc;
    display: flex;
    gap: 6px;
    align-items: center;
    flex-wrap: wrap;
}
body.theme-pd-dark .pd-search-window-box { background: #1a1e28; }
body.theme-pd-dark .pd-search-window form { border-bottom-color: #2a3040; }
body.theme-pd-dark .pd-search-window input { color: #e6e8ee; }
body.theme-pd-dark .pd-search-window kbd { background: #232a38; border-color: #333c4e; color: #aeb4c0; }
body.theme-pd-dark .pd-search-window-hint { background: #161a22; color: #8b93a3; }

/* ============================================================
   修复"加载时发暗/像没样式"：内容显示不再依赖 JS(pd-page-ready)
   ============================================================ */
body {
    opacity: 1;
    animation: pdBodyFadeIn 240ms ease-out;
}
@keyframes pdBodyFadeIn { from { opacity: 0; } to { opacity: 1; } }

/* 页头关键布局兜底（不依赖 Tailwind，CDN 慢/被墙也不错位） */
.pd-banner { position: relative; z-index: 2; width: 100%; overflow: visible; }
.pd-banner > img { position: absolute; top: 0; left: 0; width: 100%; height: 100%; object-fit: cover; }
.pd-banner > span { position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, .25); }
.pd-banner-logo { position: relative; z-index: 2; display: inline-flex; align-items: center; }
.pd-banner > div { position: absolute; top: 16px; right: 16px; z-index: 2; display: flex; align-items: center; gap: 8px; }
.pd-navbar { position: relative; z-index: 1; display: flex; flex-wrap: wrap; align-items: center; }
.pd-menu { display: flex; align-items: center; }
.hs-dropdown { position: relative; display: inline-flex; }
.pd-user-menu.hidden { display: none; }
.pd-burger { display: none; }
@media (max-width: 640px) {
    .pd-burger { display: inline-flex; align-items: center; }
}

/* 后台设置页 tabs */
.settings-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 4px 0 20px;
    padding-bottom: 12px;
    border-bottom: 1px solid #e6e8ee;
}
.settings-tabs button {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 9px 15px;
    border: 1px solid #e0e3ea;
    border-radius: 8px;
    background: #f6f7fa;
    color: #555;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
}
.settings-tabs button:hover { color: var(--pd-accent); border-color: #cfd6e8; }
.settings-tabs button.active { color: #fff; background: var(--pd-accent); border-color: var(--pd-accent); }
.settings-panel h2 { display: flex; align-items: center; gap: 9px; margin-top: 0; }
.settings-panel h2 i { color: var(--pd-accent); }
body.theme-pd-dark .settings-tabs { border-bottom-color: var(--pd-border); }
body.theme-pd-dark .settings-tabs button { background: var(--pd-surface); border-color: var(--pd-border); color: var(--pd-muted); }
body.theme-pd-dark .settings-tabs button.active { background: var(--pd-accent); color: #fff; border-color: var(--pd-accent); }
body.theme-pd-dark .settings-panel h2 i { color: #8791c4; }

/* ============================================================
   重构页脚（深色纹理底上的浅色页脚）
   ============================================================ */
.site-footer {
    margin-top: 24px;
    padding: 42px 0 34px;
    border-top: 1px solid rgba(255, 255, 255, .07);
}
.site-footer-inner {
    max-width: 1200px;
    margin: 0 auto;
    padding: 0 28px;
}
.site-footer-top {
    display: flex;
    flex-wrap: wrap;
    gap: 48px;
    justify-content: space-between;
}
.site-footer-brand { flex: 1 1 280px; max-width: 380px; }
.site-footer-logo { display: inline-block; }
.site-footer-logo img { height: 34px; width: auto; user-select: none; -webkit-user-drag: none; }
.site-footer-desc { margin: 16px 0; color: #9298a6; font-size: 14px; line-height: 1.7; }
.site-footer-social { display: flex; gap: 10px; }
.site-footer-social a {
    display: inline-flex; align-items: center; justify-content: center;
    width: 38px; height: 38px; border-radius: 8px;
    color: #c3c8d2; background: rgba(255, 255, 255, .06);
    border: 1px solid rgba(255, 255, 255, .08);
    font-size: 17px; transition: color .15s, background .15s, border-color .15s;
}
.site-footer-social a:hover { color: #fff; background: #4f5b93; border-color: #4f5b93; }

.site-footer-top { align-items: center; }
.site-footer-brand { max-width: none; }
.site-footer-social { flex: 0 0 auto; }

.site-footer-links {
    display: flex; flex-wrap: wrap; align-items: center; gap: 6px 22px;
    margin-top: 26px; padding-top: 22px;
    border-top: 1px solid rgba(255, 255, 255, .06);
}
.site-footer-links a { color: #9298a6; font-size: 14px; transition: color .12s ease; }
.site-footer-links a:hover { color: #fff; }
.site-footer-friends { margin-top: 14px; padding-top: 0; border-top: 0; gap: 6px 16px; }
.site-footer-friends-label { color: #6b707b; font-size: 13px; }
.site-footer-friends a { color: #7f8593; font-size: 13px; }

.site-footer-bottom {
    margin-top: 22px; padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, .06);
    display: flex; flex-wrap: wrap; align-items: center;
    justify-content: space-between; gap: 12px 20px;
    color: #71767f; font-size: 13px;
}
.site-footer-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.site-footer-copy { margin-left: auto; color: #8b909d; }
.site-footer-icp a { color: #8b909d; }
.site-footer-icp a:hover { color: #fff; }

/* 页脚两行布局：行1 logo / 统计 / 社交；行2 版权 / 菜单 */
.site-footer-row { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; }
.site-footer-row1 { justify-content: space-between; }
.site-footer-row1 .site-footer-stats { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 10px; }
.site-footer-row2 {
    margin-top: 22px; padding-top: 20px;
    border-top: 1px solid rgba(255, 255, 255, .06);
    justify-content: space-between;
    color: #8b909d; font-size: 13px;
}
.site-footer-row2 .site-footer-copy { margin-left: 0; }
.site-footer-row2 .site-footer-links { margin: 0; padding: 0; border: 0; }
.site-footer-row.site-footer-friends { margin-top: 14px; gap: 6px 16px; }

/* 页脚性能/在线指标芯片 */
.pd-stat-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 30px;
    padding: 4px 11px 4px 5px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .05);
    border: 1px solid rgba(255, 255, 255, .08);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .04);
    transition: background .15s ease, border-color .15s ease, transform .15s ease;
}
.pd-stat-chip:hover {
    background: rgba(255, 255, 255, .08);
    border-color: rgba(255, 255, 255, .14);
    transform: translateY(-1px);
}
.pd-stat-chip__ico {
    display: grid;
    place-items: center;
    flex: 0 0 22px;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    font-size: 10px;
    line-height: 1;
}
.pd-stat-chip__body {
    display: flex;
    flex-direction: column;
    gap: 1px;
    min-width: 0;
    line-height: 1.1;
}
.pd-stat-chip__k {
    font-size: 9px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: #7a808d;
}
.pd-stat-chip__v {
    font-size: 12px;
    font-weight: 700;
    font-variant-numeric: tabular-nums;
    color: #eceff4;
}
.pd-stat-chip--time .pd-stat-chip__ico {
    background: rgba(34, 197, 94, .18);
    color: #4ade80;
    box-shadow: 0 0 0 1px rgba(74, 222, 128, .22);
}
.pd-stat-chip--sql .pd-stat-chip__ico {
    background: rgba(59, 130, 246, .18);
    color: #60a5fa;
    box-shadow: 0 0 0 1px rgba(96, 165, 250, .22);
}
.pd-stat-chip--online .pd-stat-chip__ico {
    background: rgba(249, 115, 22, .18);
    color: #fb923c;
    box-shadow: 0 0 0 1px rgba(251, 146, 60, .22);
}
.pd-stat-chip--time:hover { border-color: rgba(74, 222, 128, .28); }
.pd-stat-chip--sql:hover { border-color: rgba(96, 165, 250, .28); }
.pd-stat-chip--online:hover { border-color: rgba(251, 146, 60, .28); }

/* ===== 关于 / 社区页 ===== */
body.theme-pd .pd-about {
    max-width: 960px;
    margin: 0 auto;
    padding: 4px 0 10px;
}
body.theme-pd .pd-about-hero {
    text-align: center;
    padding: 34px 24px 30px;
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 12px;
}
body.theme-pd .pd-about-hero h1 {
    margin: 0;
    font-size: 30px;
    font-weight: 800;
    color: var(--pd-accent);
    letter-spacing: .5px;
}
body.theme-pd .pd-about-slogan {
    margin: 8px 0 0;
    color: #8a8f98;
    font-size: 15px;
}
body.theme-pd .pd-about-topstats {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 14px 34px;
    margin-top: 22px;
}
body.theme-pd .pd-about-topstat {
    display: flex;
    flex-direction: column;
    align-items: center;
    min-width: 72px;
}
body.theme-pd .pd-about-topstat b { font-size: 22px; font-weight: 800; color: #222; }
body.theme-pd .pd-about-topstat span { margin-top: 2px; font-size: 13px; color: #8a8f98; }

body.theme-pd .pd-about-block { margin-top: 30px; }
body.theme-pd .pd-about-block > h2 {
    margin: 0 0 14px;
    padding-left: 11px;
    font-size: 19px;
    font-weight: 800;
    color: #333;
    border-left: 4px solid var(--pd-accent);
    line-height: 1.1;
}
body.theme-pd .pd-about-text { color: #555; font-size: 15px; line-height: 1.9; }

body.theme-pd .pd-staff-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 12px;
}
body.theme-pd .pd-staff-card {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 12px;
    text-decoration: none;
    transition: border-color .15s, transform .12s;
}
body.theme-pd .pd-staff-card:hover { border-color: var(--pd-accent); transform: translateY(-1px); }
body.theme-pd .pd-staff-avatar {
    width: 46px;
    height: 46px;
    flex: 0 0 auto;
    object-fit: cover;
    background: #f1f1f1;
    border-radius: 0;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
}
body.theme-pd .pd-staff-meta { display: flex; flex-direction: column; min-width: 0; }
body.theme-pd .pd-staff-name {
    font-size: 15px; font-weight: 700; color: #333;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
body.theme-pd .pd-staff-title {
    margin-top: 2px; font-size: 12px; color: #9298a6;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}

body.theme-pd .pd-about-contact p { margin: 0 0 8px; color: #555; font-size: 14px; line-height: 1.8; }
body.theme-pd .pd-about-contact p.muted { color: #9298a6; }
body.theme-pd .pd-about-contact a { color: var(--pd-accent); font-weight: 700; }

body.theme-pd .pd-about-activity {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
}
body.theme-pd .pd-about-metric {
    padding: 16px 18px;
    background: #fff;
    border: 1px solid #ececec;
    border-radius: 12px;
}
body.theme-pd .pd-about-metric b { display: block; font-size: 26px; font-weight: 800; color: var(--pd-accent); }
body.theme-pd .pd-about-metric span { display: block; margin-top: 4px; font-size: 14px; color: #333; }
body.theme-pd .pd-about-metric em { display: block; margin-top: 2px; font-size: 12px; color: #9298a6; font-style: normal; }

@media (max-width: 640px) {
    body.theme-pd .pd-about-activity { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

body.theme-pd-dark .pd-about-hero,
body.theme-pd-dark .pd-staff-card,
body.theme-pd-dark .pd-about-metric { background: #2b2b2b; border-color: #3a3a3a; }
body.theme-pd-dark .pd-about-topstat b,
body.theme-pd-dark .pd-about-block > h2,
body.theme-pd-dark .pd-staff-name,
body.theme-pd-dark .pd-about-metric span { color: #e6e6e6; }
body.theme-pd-dark .pd-about-text,
body.theme-pd-dark .pd-about-contact p { color: #c2c2c2; }

/* 首页侧栏「关于社区」卡片 */
body.theme-pd .pd-community-slogan {
    margin: 0 0 12px;
    color: #8a8f98;
    font-size: 13px;
    line-height: 1.6;
}
body.theme-pd .pd-community-stats {
    display: flex;
    gap: 8px;
    margin-bottom: 14px;
}
body.theme-pd .pd-community-stats > div {
    flex: 1;
    min-width: 0;
    text-align: center;
    padding: 10px 4px;
    background: #f6f7fb;
    border-radius: 8px;
}
body.theme-pd .pd-community-stats b { display: block; font-size: 16px; font-weight: 800; color: var(--pd-accent); }
body.theme-pd .pd-community-stats span { display: block; margin-top: 2px; font-size: 11px; color: #8a8f98; }
body.theme-pd .pd-community-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    font-weight: 700;
    color: var(--pd-accent);
    text-decoration: none;
    transition: gap .15s ease;
}
body.theme-pd .pd-community-link:hover { gap: 10px; }
body.theme-pd-dark .pd-community-stats > div { background: #23262e; }

/* 首页侧栏「用户数目 / 欢迎新用户」卡片 */
body.theme-pd .pd-newuser-total { margin: 0; color: #6a6f78; font-size: 14px; }
body.theme-pd .pd-newuser-total b { color: var(--pd-accent); font-weight: 800; }
body.theme-pd .pd-newuser-sub { margin: 16px 0 13px; font-size: 15px; font-weight: 800; color: #333; }
body.theme-pd .pd-newuser-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 14px 8px;
}
body.theme-pd .pd-newuser {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 0;
    text-decoration: none;
}
body.theme-pd .pd-newuser img {
    width: 52px;
    height: 52px;
    object-fit: cover;
    background: #f1f1f1;
    border-radius: 0;
    -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath fill='%23fff' d='M12 0c9.601 0 12 2.399 12 12 0 9.601-2.399 12-12 12-9.601 0-12-2.399-12-12C0 2.399 2.399 0 12 0z'/%3E%3C/svg%3E");
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
    transition: transform .12s ease;
}
body.theme-pd .pd-newuser:hover img { transform: translateY(-2px); }
body.theme-pd .pd-newuser span {
    max-width: 100%;
    font-size: 12px;
    color: #555;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
body.theme-pd .pd-newuser:hover span { color: var(--pd-accent); }
body.theme-pd-dark .pd-newuser-total { color: #b0b0b0; }
body.theme-pd-dark .pd-newuser-sub { color: #e6e6e6; }
body.theme-pd-dark .pd-newuser span { color: #b8b8b8; }

@media (max-width: 640px) {
    .site-footer-top { gap: 24px; }
    .site-footer-inner { padding: 0 18px; }
    .site-footer-copy { margin-left: 0; }
}

/* 帖子卡片两行化：第二行 = 元信息(左) + 统计(右)，头像超级椭圆 */
body.theme-pd .pd-thread-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 14px;
    min-width: 0;
}
body.theme-pd .pd-thread-meta > p {
    flex: 1 1 auto;
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.theme-pd .pd-thread-meta > .pd-thread-stats {
    flex: 0 0 auto;
    min-width: 0;
    justify-content: flex-end;
    margin: 0;
}

time.pd-time {
    cursor: help;
    border-bottom: 1px dotted currentColor;
}

/* 首页帖子 meta 里的版块（类别）名称徽章：直角，不同板块不同颜色 */
body.theme-pd .pd-forum-tag {
    display: inline-flex;
    align-items: center;
    margin-left: 10px;
    padding: 2px 9px;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.4;
    text-decoration: none;
    white-space: nowrap;
    border: 1px solid transparent;
    border-radius: 0;
    transition: filter .15s ease;
}
body.theme-pd .pd-forum-tag:hover {
    filter: brightness(.96);
}
/* 8 色板：柔和底 + 同色系文字/边框 */
body.theme-pd .pd-forum-tag-0 { color: #1d6fb8; background: #e8f2fc; border-color: #cfe4f7; }
body.theme-pd .pd-forum-tag-1 { color: #2f8f4e; background: #e7f6ec; border-color: #cdeed7; }
body.theme-pd .pd-forum-tag-2 { color: #b7791f; background: #fdf3e0; border-color: #f6e3bf; }
body.theme-pd .pd-forum-tag-3 { color: #d1495b; background: #fdeaec; border-color: #f7ced4; }
body.theme-pd .pd-forum-tag-4 { color: #6b4bd6; background: #f0ecfd; border-color: #ddd3f7; }
body.theme-pd .pd-forum-tag-5 { color: #1a8a9d; background: #e4f6f8; border-color: #c4ebef; }
body.theme-pd .pd-forum-tag-6 { color: #c2410c; background: #fdece2; border-color: #f7d4c0; }
body.theme-pd .pd-forum-tag-7 { color: #5a6270; background: #eef0f3; border-color: #dde1e8; }

body.theme-pd-dark .pd-forum-tag { border-color: transparent; }
body.theme-pd-dark .pd-forum-tag-0 { color: #7fc0f5; background: rgba(29,111,184,.18); }
body.theme-pd-dark .pd-forum-tag-1 { color: #7fd6a0; background: rgba(47,143,78,.18); }
body.theme-pd-dark .pd-forum-tag-2 { color: #f0c778; background: rgba(183,121,31,.20); }
body.theme-pd-dark .pd-forum-tag-3 { color: #f39aa6; background: rgba(209,73,91,.18); }
body.theme-pd-dark .pd-forum-tag-4 { color: #b7a4f5; background: rgba(107,75,214,.20); }
body.theme-pd-dark .pd-forum-tag-5 { color: #7fd4de; background: rgba(26,138,157,.18); }
body.theme-pd-dark .pd-forum-tag-6 { color: #f0a878; background: rgba(194,65,12,.20); }
body.theme-pd-dark .pd-forum-tag-7 { color: #b7bdc8; background: rgba(90,98,112,.22); }

/* ===== 手写工具类（替代已移除的 Tailwind，仅覆盖 header.php 实际用到的类） ===== */
.mx-auto { margin-left: auto; margin-right: auto; }
.px-3 { padding-left: .75rem; padding-right: .75rem; }
.relative { position: relative; }
.absolute { position: absolute; }
.w-full { width: 100%; }
.w-auto { width: auto; }
.inline-flex { display: inline-flex; }
.flex { display: flex; }
.flex-wrap { flex-wrap: wrap; }
.items-center { align-items: center; }
.gap-2 { gap: .5rem; }
.z-10 { z-index: 10; }
.right-4 { right: 1rem; }
.top-4 { top: 1rem; }
.rounded-t-xl { border-top-left-radius: .75rem; border-top-right-radius: .75rem; }
.text-xs { font-size: .75rem; }
.hidden { display: none; }
@media (min-width: 640px) {
    .sm\:px-4 { padding-left: 1rem; padding-right: 1rem; }
    .sm\:inline { display: inline; }
    .sm\:hidden { display: none; }
    .sm\:flex { display: flex; }
}

/* ===== 右侧工具栏最终定位（放最后，覆盖前面泄漏/冲突的规则）===== */
/* 桌面默认：贴视口右侧、约 2/3 高度 */
body.theme-pd .pd-right-toolbar.cir-rail {
    top: 64%;
    bottom: auto;
    right: 22px;
    left: auto;
    transform: translateY(-50%);
}
/* 宽屏：贴内容框（1200px）右侧 */
@media (min-width: 1320px) {
    body.theme-pd .pd-right-toolbar.cir-rail {
        right: auto;
        left: calc(50% + 606px);
    }
}
/* 移动端：回到右下角 */
@media (max-width: 760px) {
    body.theme-pd .pd-right-toolbar.cir-rail {
        top: auto;
        bottom: 16px;
        right: 10px;
        left: auto;
        transform: none;
    }
}

/* 导航栏最右侧 RSS 订阅按钮（图标,点击复制地址） */
.pd-navbar-rss {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    flex: 0 0 auto;
    color: rgba(255, 255, 255, .85);
    background: transparent;
    border: 0;
    cursor: pointer;
    font-size: 17px;
    transition: color .12s ease;
}
.pd-navbar-rss i {
    display: inline-block;
    transform: scale(1.2);
    transform-origin: center;
    transition: transform .16s cubic-bezier(.34, 1.56, .64, 1);
}
.pd-navbar-rss:hover { color: #ffc107; }
.pd-navbar-rss:hover i { transform: scale(1.45); }
.pd-navbar-rss.is-copied,
.pd-navbar-rss.is-copied:hover { color: #22c55e; }
.pd-navbar-rss.is-copied i { transform: scale(1.3); }
.pd-topbar-hasbg .pd-navbar-rss { color: rgba(255, 255, 255, .9); text-shadow: 0 1px 4px rgba(0, 0, 0, .55); }
.pd-topbar-hasbg .pd-navbar-rss:hover { color: #ffd43b; }
.pd-topbar-hasbg .pd-navbar-rss.is-copied,
.pd-topbar-hasbg .pd-navbar-rss.is-copied:hover { color: #34d399; }

/* 顶部加载彩色进度条（仅首页初次进入 / 强制刷新） */
.pd-topload {
    position: fixed;
    top: 5px;
    left: 0;
    right: 0;
    z-index: 3000;
    display: flex;
    justify-content: center;
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s ease;
}
body.pd-is-bar-loading .pd-topload { opacity: 1; }
.pd-topload .progress-text {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    z-index: 2;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1px;
    font-variant-numeric: tabular-nums;
    color: #fff;
    text-shadow: 0 1px 4px rgba(0, 0, 0, .85);
    pointer-events: none;
}
.pd-topload .progress-container {
    position: relative;
    width: 60%;
    max-width: 500px;
    height: 16px;
    background: radial-gradient(circle, #1b2735, #090a0f);
    border-radius: 30px;
    overflow: hidden;
    box-shadow: 0 6px 16px rgba(0, 0, 0, 0.5);
    box-sizing: border-box;
    border: 1px solid #313131;
}
.pd-topload .progress-bar {
    position: absolute;
    top: 0;
    left: 0;
    height: 100%;
    width: 0;
    background: linear-gradient(90deg, #00f260, #0575e6);
    border-radius: 30px;
    transition: width .12s linear;
    box-shadow: 0 0 15px #00f260, 0 0 30px #0575e6;
}
.pd-topload .progress-bar::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    width: 200%;
    height: 200%;
    background: radial-gradient(circle, rgba(255, 255, 255, 0.15), transparent);
    opacity: 0.5;
    animation: pd-ripple 3s infinite;
}
.pd-topload .particles {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    overflow: hidden;
}
.pd-topload .particle {
    position: absolute;
    width: 3px;
    height: 3px;
    background: #fff;
    border-radius: 50%;
    opacity: 0.6;
    animation: pd-float 5s infinite ease-in-out;
}
.pd-topload .particle:nth-child(1) { top: 10%; left: 20%; animation-delay: 0s; }
.pd-topload .particle:nth-child(2) { top: 30%; left: 70%; animation-delay: 1s; }
.pd-topload .particle:nth-child(3) { top: 50%; left: 50%; animation-delay: 2s; }
.pd-topload .particle:nth-child(4) { top: 80%; left: 40%; animation-delay: 1.5s; }
.pd-topload .particle:nth-child(5) { top: 90%; left: 60%; animation-delay: 2.5s; }
@keyframes pd-grow { 0% { width: 0; } 100% { width: 40%; } }
@keyframes pd-ripple {
    0% { transform: translate(-50%, -50%) scale(0.5); opacity: 0.7; }
    100% { transform: translate(-50%, -50%) scale(1.5); opacity: 0; }
}
@keyframes pd-float {
    0% { transform: translateY(0) translateX(0); }
    50% { transform: translateY(-20px) translateX(10px); }
    100% { transform: translateY(0) translateX(0); }
}

/* 帖子底部表情反应条（仿 Uiverse by Mayurwaghgpr，手写实现） */
.pd-reactions {
    display: flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    gap: 7px;
    margin: 22px auto 0;
    padding: 7px;
    background: #e8e4df;
    border-radius: 999px;
    box-shadow: 0 12px 30px rgba(20, 20, 20, .14);
    font-size: 20px;
    transition: transform .3s ease;
}
.pd-reactions:hover {
    transform: scaleX(1.05);
}
.pd-reaction {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 7px 11px;
    border: 0;
    background: #fff;
    border-radius: 999px;
    cursor: pointer;
    line-height: 1;
    transition: transform .3s ease, background-color .3s ease, box-shadow .3s ease;
}
.pd-reaction:hover {
    transform: translateY(-20px) scale(1.25);
    z-index: 2;
}
.pd-reaction::before {
    content: attr(data-label);
    position: absolute;
    top: -28px;
    left: 50%;
    transform: translateX(-50%);
    display: none;
    align-items: center;
    justify-content: center;
    height: 16px;
    padding: 0 6px;
    font-size: .6rem;
    line-height: 16px;
    color: #fff;
    background: rgba(0, 0, 0, .5);
    border-radius: 8px;
    white-space: nowrap;
    pointer-events: none;
}
.pd-reaction:hover::before {
    display: flex;
}
.pd-reaction.is-active {
    background: #fff3cd;
    box-shadow: inset 0 0 0 2px #ffc107;
}
.pd-reaction-emoji {
    font-size: 20px;
}
.pd-reaction-count {
    font-size: 11px;
    font-weight: 700;
    color: #6b6660;
    font-variant-numeric: tabular-nums;
}
.pd-reaction-count:empty {
    display: none;
}

body.theme-pd-dark .pd-reactions {
    background: #191818;
    box-shadow: 0 12px 30px rgba(0, 0, 0, .5);
}
body.theme-pd-dark .pd-reaction {
    background: #191818;
}
body.theme-pd-dark .pd-reaction::before {
    background: #fff;
    color: #000;
}
body.theme-pd-dark .pd-reaction.is-active {
    background: #2a2622;
    box-shadow: inset 0 0 0 2px #ffc107;
}
body.theme-pd-dark .pd-reaction-count {
    color: #cfcac4;
}

@media (max-width: 640px) {
    .pd-reactions { gap: 5px; padding: 6px; }
    .pd-reaction { padding: 7px 9px; }
    .pd-reaction-emoji { font-size: 19px; }
}

/* 点赞 / 表情反应撒花 */
.pd-confetti-layer {
    position: fixed;
    inset: 0;
    z-index: 10050;
    pointer-events: none;
    overflow: hidden;
}
.pd-confetti-piece {
    position: fixed;
    margin: 0;
    border-radius: 2px;
    opacity: 0;
    transform: translate(0, 0) rotate(0deg) scale(0.4);
    animation: pd-confetti-burst 1s cubic-bezier(.18, .8, .32, 1) forwards;
    will-change: transform, opacity;
}
.pd-confetti-emoji {
    width: auto !important;
    height: auto !important;
    background: transparent !important;
    font-size: 15px;
    line-height: 1;
    animation-duration: 1.15s;
}
@keyframes pd-confetti-burst {
    0% {
        opacity: 1;
        transform: translate(0, 0) rotate(0deg) scale(0.5);
    }
    18% {
        opacity: 1;
        transform: translate(calc(var(--dx) * 0.35), calc(var(--dy) * 0.2)) rotate(calc(var(--rot) * 0.25)) scale(1.1);
    }
    100% {
        opacity: 0;
        transform: translate(var(--dx), var(--dy)) rotate(var(--rot)) scale(0.7);
    }
}
.pd-reaction.is-popping {
    animation: pd-reaction-pop 420ms ease;
}
.pd-vote-button.is-popping {
    animation: pd-reaction-pop 420ms ease;
}
@keyframes pd-reaction-pop {
    0% { transform: scale(1); }
    35% { transform: scale(1.28); }
    100% { transform: scale(1); }
}
@media (prefers-reduced-motion: reduce) {
    .pd-confetti-layer { display: none !important; }
    .pd-reaction.is-popping,
    .pd-vote-button.is-popping { animation: none; }
}

/* 积分 / 用户组 */
.pd-group-badge {
    display: inline-flex;
    align-items: center;
    height: 20px;
    padding: 0 8px;
    margin-left: 6px;
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    line-height: 20px;
    vertical-align: middle;
    background: var(--group-color, #505b93);
    border-radius: 4px;
}
.pd-level-name {
    margin-left: 4px;
    color: #8a9099;
    font-size: 13px;
    font-weight: 600;
}
.pd-level-progress {
    max-width: 420px;
    margin: 10px 0 4px;
}
.pd-level-progress-meta {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 6px;
    color: #6a7078;
    font-size: 12px;
}
.pd-level-progress-track {
    height: 8px;
    overflow: hidden;
    background: #eef1f7;
    border-radius: 999px;
}
.pd-level-progress-track span {
    display: block;
    height: 100%;
    background: linear-gradient(90deg, #7a86c4, #505b93);
    border-radius: 999px;
}
.admin-points-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 10px;
}
@media (max-width: 900px) {
    .admin-points-grid { grid-template-columns: 1fr 1fr; }
}
body.theme-pd-dark .pd-level-progress-track {
    background: rgba(255,255,255,.08);
}

/* ==========================================================================
   私信页面
   ========================================================================== */
.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

body.theme-pd .pd-messages-card {
    padding: 0;
    overflow: hidden;
}

body.theme-pd .pd-messages {
    display: grid;
    grid-template-columns: minmax(280px, 320px) minmax(0, 1fr);
    min-height: min(72vh, 680px);
    background: #fff;
}

body.theme-pd .pd-messages-sidebar {
    display: flex;
    flex-direction: column;
    min-height: 0;
    border-right: 1px solid #e8edf3;
    background: #fafbfc;
}

body.theme-pd .pd-messages-sidebar-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px 18px 14px;
    border-bottom: 1px solid #e8edf3;
}

body.theme-pd .pd-messages-sidebar-head h1 {
    margin: 0;
    font-size: 20px;
    font-weight: 800;
}

body.theme-pd .pd-messages-unread-total {
    display: inline-flex;
    align-items: center;
    min-height: 24px;
    padding: 0 10px;
    color: #ff7a3d;
    font-size: 12px;
    font-weight: 700;
    background: rgba(255, 122, 61, .12);
    border-radius: 999px;
}

body.theme-pd .pd-messages-thread-list {
    flex: 1;
    min-height: 0;
    overflow: auto;
    padding: 8px;
}

body.theme-pd .pd-messages-thread {
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) auto;
    gap: 12px;
    align-items: center;
    padding: 12px;
    color: inherit;
    text-decoration: none;
    border-radius: 12px;
    transition: background-color .16s ease;
}

body.theme-pd .pd-messages-thread:hover {
    background: #f0f4f8;
}

body.theme-pd .pd-messages-thread.is-active {
    background: #e8f1ff;
}

body.theme-pd .pd-messages-thread.is-unread .pd-messages-thread-preview,
body.theme-pd .pd-messages-thread.is-unread .pd-messages-thread-top strong {
    font-weight: 700;
    color: #111827;
}

body.theme-pd .pd-messages-thread-avatar {
    width: 44px;
    height: 44px;
    border-radius: 999px;
    object-fit: cover;
}

body.theme-pd .pd-messages-thread-main {
    display: grid;
    gap: 4px;
    min-width: 0;
}

body.theme-pd .pd-messages-thread-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    min-width: 0;
}

body.theme-pd .pd-messages-thread-top strong {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 14px;
}

body.theme-pd .pd-messages-thread-top time {
    flex-shrink: 0;
    color: #94a3b8;
    font-size: 11px;
}

body.theme-pd .pd-messages-thread-preview {
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    color: #64748b;
    font-size: 13px;
}

body.theme-pd .pd-messages-thread-badge {
    min-width: 20px;
    height: 20px;
    padding: 0 6px;
    display: inline-grid;
    place-items: center;
    color: #fff;
    font-size: 11px;
    font-weight: 700;
    background: #ff7a3d;
    border-radius: 999px;
}

body.theme-pd .pd-messages-empty-list,
body.theme-pd .pd-messages-placeholder,
body.theme-pd .pd-messages-empty-chat {
    display: grid;
    place-items: center;
    gap: 8px;
    padding: 36px 20px;
    color: #94a3b8;
    text-align: center;
}

body.theme-pd .pd-messages-main {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto auto;
    min-height: 0;
    min-width: 0;
}

body.theme-pd .pd-messages-main-head {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 14px 18px;
    border-bottom: 1px solid #e8edf3;
    background: #fff;
}

body.theme-pd .pd-messages-back {
    display: none;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    color: #475569;
    text-decoration: none;
    border-radius: 999px;
    background: #f1f5f9;
}

body.theme-pd .pd-messages-peer-avatar {
    width: 40px;
    height: 40px;
    border-radius: 999px;
    object-fit: cover;
}

body.theme-pd .pd-messages-peer-meta {
    display: grid;
    gap: 2px;
    min-width: 0;
    flex: 1;
}

body.theme-pd .pd-messages-peer-meta strong {
    font-size: 16px;
}

body.theme-pd .pd-messages-peer-meta a {
    color: #64748b;
    font-size: 12px;
    text-decoration: none;
}

body.theme-pd .pd-messages-peer-meta a:hover {
    color: var(--pd-accent);
}

body.theme-pd .pd-messages-hide-form {
    margin: 0;
}

body.theme-pd .pd-messages-hide-btn {
    display: inline-grid;
    place-items: center;
    width: 36px;
    height: 36px;
    padding: 0;
    color: #94a3b8;
    background: transparent;
    border: 0;
    border-radius: 999px;
    cursor: pointer;
}

body.theme-pd .pd-messages-hide-btn:hover {
    color: #ef4444;
    background: #fef2f2;
}

body.theme-pd .pd-messages-stream {
    min-height: 0;
    overflow: auto;
    padding: 18px;
    background:
        radial-gradient(circle at top, rgba(80, 91, 147, .05), transparent 42%),
        #f8fafc;
}

body.theme-pd .pd-msg-row {
    display: flex;
    align-items: flex-end;
    gap: 8px;
    max-width: 78%;
    margin-bottom: 14px;
}

body.theme-pd .pd-msg-row.is-mine {
    margin-left: auto;
    justify-content: flex-end;
}

body.theme-pd .pd-msg-row.is-peer {
    margin-right: auto;
}

body.theme-pd .pd-msg-avatar {
    width: 32px;
    height: 32px;
    border-radius: 999px;
    object-fit: cover;
    flex-shrink: 0;
}

body.theme-pd .pd-msg-bubble {
    max-width: 100%;
    padding: 10px 14px;
    border-radius: 16px;
    box-shadow: 0 1px 2px rgba(15, 23, 42, .06);
}

body.theme-pd .pd-msg-row.is-peer .pd-msg-bubble {
    background: #fff;
    border: 1px solid #e8edf3;
    border-bottom-left-radius: 6px;
}

body.theme-pd .pd-msg-row.is-mine .pd-msg-bubble {
    color: #fff;
    background: var(--pd-accent);
    border-bottom-right-radius: 6px;
}

body.theme-pd .pd-msg-bubble p {
    margin: 0;
    white-space: pre-wrap;
    word-break: break-word;
    line-height: 1.55;
}

body.theme-pd .pd-msg-bubble time {
    display: block;
    margin-top: 6px;
    font-size: 11px;
    opacity: .78;
}

body.theme-pd .pd-messages-alert {
    margin: 0 18px;
}

body.theme-pd .pd-messages-compose {
    display: grid;
    gap: 10px;
    padding: 14px 18px 18px;
    border-top: 1px solid #e8edf3;
    background: #fff;
}

body.theme-pd .pd-messages-compose textarea {
    width: 100%;
    min-height: 88px;
    margin: 0;
    padding: 12px 14px;
    resize: vertical;
    border: 1px solid #dbe3ec;
    border-radius: 12px;
    background: #fff;
    font: inherit;
    line-height: 1.5;
}

body.theme-pd .pd-messages-compose textarea:focus {
    outline: none;
    border-color: var(--pd-accent);
    box-shadow: 0 0 0 3px rgba(80, 91, 147, .14);
}

body.theme-pd .pd-messages-compose-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

body.theme-pd .pd-messages-compose-hint {
    color: #94a3b8;
    font-size: 12px;
}

body.theme-pd .pd-messages-placeholder {
    grid-row: 1 / -1;
    min-height: 420px;
}

body.theme-pd .pd-messages-placeholder-icon {
    width: 64px;
    height: 64px;
    display: grid;
    place-items: center;
    color: #94a3b8;
    background: #f1f5f9;
    border-radius: 999px;
}

body.theme-pd .pd-messages-placeholder-icon svg {
    width: 30px;
    height: 30px;
}

body.theme-pd .pd-messages-placeholder h2 {
    margin: 0;
    color: #334155;
    font-size: 18px;
}

body.theme-pd .pd-messages-placeholder p {
    margin: 0;
}

body.theme-pd .pd-user-actions {
    margin-top: 14px;
}

body.theme-pd .pd-user-pm-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
}

@media (max-width: 900px) {
    body.theme-pd .pd-messages {
        grid-template-columns: 1fr;
        min-height: calc(100vh - 180px);
    }

    body.theme-pd .pd-messages[data-pm-open="1"] .pd-messages-sidebar {
        display: none;
    }

    body.theme-pd .pd-messages:not([data-pm-open="1"]) .pd-messages-main {
        display: none;
    }

    body.theme-pd .pd-messages-back {
        display: inline-flex;
    }
}

body.theme-pd-dark .pd-messages {
    background: #171a21;
}

body.theme-pd-dark .pd-messages-sidebar {
    background: #12151c;
    border-color: #2a3140;
}

body.theme-pd-dark .pd-messages-sidebar-head,
body.theme-pd-dark .pd-messages-main-head,
body.theme-pd-dark .pd-messages-compose {
    background: #171a21;
    border-color: #2a3140;
}

body.theme-pd-dark .pd-messages-thread:hover {
    background: rgba(255, 255, 255, .04);
}

body.theme-pd-dark .pd-messages-thread.is-active {
    background: rgba(80, 91, 147, .22);
}

body.theme-pd-dark .pd-messages-thread-top strong,
body.theme-pd-dark .pd-messages-thread.is-unread .pd-messages-thread-top strong {
    color: #f3f4f6;
}

body.theme-pd-dark .pd-messages-stream {
    background: #11141b;
}

body.theme-pd-dark .pd-msg-row.is-peer .pd-msg-bubble {
    background: #1f2430;
    border-color: #343b49;
    color: #e5e7eb;
}

body.theme-pd-dark .pd-messages-compose textarea {
    background: #12151c;
    border-color: #343b49;
    color: #e5e7eb;
}

body.theme-pd-dark .pd-messages-back {
    background: #1f2430;
    color: #d1d5db;
}

body.theme-pd-dark .pd-messages-placeholder-icon {
    background: #1f2430;
}
