/**
 * 三猫主题 · 主样式
 * 从零编写，配合 sanmao-v5 全部模块
 */

:root {
    --sm-primary: #5b6cff;
    --sm-primary-d: #4a57e0;
    --sm-danger: #f5544b;
    --sm-warn: #f5a623;
    --sm-ok: #22b07d;
    /* v5.6.0：徽章组件 info 变体专用色（Bootstrap info 基调，偏青便于紫蓝主色区分） */
    --sm-info: #17a2b8;
    /* 会员色：跟随后台「站点设置 → 配色 → 会员色」 */
    --sm-vip: #8a5bff;
    /* VIP 徽章金色：与会员色解耦，保证等级标识可辨识 */
    --sm-gold: #e0a44b;
    --sm-gold-2: #f5d08a;
    --sm-text: #242a3a;
    --sm-text-2: #6b7488;
    --sm-text-3: #9aa3b5;
    /* v5.16.7：显式定义用户卡片文字色（此前裸用 var(--sm-ink-1) 却从未声明，靠继承兜底）*/
    --sm-ink-1: var(--sm-text);
    --sm-bg: #f5f7fb;
    --sm-card: #ffffff;
    --sm-border: #e8ecf4;
    --sm-radius: 12px;
    --sm-shadow: 0 4px 18px rgba(29, 42, 74, .07);
    --sm-container: 1180px;
    /* v5.16.9：设计令牌体系 —— 统一「卡片 + 圆角 + 按钮」理念
       圆角刻度：控件(sm) < 卡片(md,默认) < 大卡(lg) < 容器(xl) < 胶囊(pill)
       阴影刻度：sm(贴边浅浮) < 默认(md) < lg(抬升)
       bg-soft：卡片内的次级浅面（此前被多处引用却从未声明，渲染为透明） */
    --sm-radius-sm: 8px;
    --sm-radius-lg: 16px;
    --sm-radius-xl: 22px;
    --sm-radius-pill: 999px;
    --sm-shadow-sm: 0 1px 4px rgba(29, 42, 74, .06);
    --sm-shadow-lg: 0 12px 40px rgba(29, 42, 74, .12);
    --sm-bg-soft: #eef1f8;
    /* v5.4.0：渐变角度与金色由后台「视觉风格」下发，这里给兜底值 */
    --sm-grad-angle: 120deg;
    --sm-grad: linear-gradient(var(--sm-grad-angle), var(--sm-primary), var(--sm-vip));
}

body.sm-dark,
html.sm-dark {
    --sm-text: #e6e9f0;
    --sm-text-2: #a3abbd;
    --sm-text-3: #7b8496;
    --sm-bg: #151922;
    --sm-card: #1c212c;
    --sm-border: #2a3140;
    --sm-shadow: 0 4px 18px rgba(0, 0, 0, .35);
    --sm-shadow-sm: 0 1px 4px rgba(0, 0, 0, .25);
    --sm-shadow-lg: 0 12px 40px rgba(0, 0, 0, .45);
    --sm-bg-soft: #222834;
}

* {
    box-sizing: border-box;
}

html,
body {
    margin: 0;
    padding: 0;
}

body {
    background: var(--sm-bg);
    color: var(--sm-text);
    font: 15px/1.7 -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    -webkit-font-smoothing: antialiased;
    word-break: break-word;
}

a {
    color: inherit;
    text-decoration: none;
    transition: color .2s;
}

a:hover {
    color: var(--sm-primary);
}

img {
    max-width: 100%;
    height: auto;
    display: block;
}

ul,
ol {
    margin: 0 0 16px;
    padding-left: 22px;
}

p {
    margin: 0 0 14px;
}

input,
textarea,
select,
button {
    font-family: inherit;
    font-size: 14px;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    margin: 0 0 14px;
    font-weight: 600;
    line-height: 1.4;
}

table {
    border-collapse: collapse;
    width: 100%;
}

.screen-reader-text {
    position: absolute !important;
    left: -9999px;
}

.skip-link:focus {
    left: 10px;
    top: 10px;
    z-index: 999;
    background: var(--sm-primary);
    color: #fff;
    padding: 8px 14px;
    border-radius: 6px;
}/* ---------- 布局 ---------- */
.sm-container {
    width: 100%;
    max-width: var(--sm-container);
    margin: 0 auto;
    padding: 0 16px;
}

.sm-main {
    padding: 24px 0 48px;
    min-height: 50vh;
}

.sm-layout {
    display: flex;
    gap: 24px;
    align-items: flex-start;
}

.sm-content {
    flex: 1;
    min-width: 0;
}

.sm-sidebar {
    width: 300px;
    flex: 0 0 300px;
}/* ---------- 头部 ---------- */
.sm-header {
    background: var(--sm-card);
    border-bottom: 1px solid var(--sm-border);
    position: sticky;
    top: 0;
    z-index: 100;
}

.sm-header-inner {
    display: flex;
    align-items: center;
    gap: 20px;
    height: 64px;
}

.sm-logo {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 9px;
}/* v5.16.8：LOGO 背景显式透明（透明背景 PNG/SVG 不被任何底色衬垫）；
   高度统一 34px、宽按比例自适应 —— 根治「只有 viewBox 的 SVG logo 无固有尺寸、
   在 max-height + width:auto 下塌缩为 0 高度（整个 logo 不可见）」的 bug */
.sm-logo img {
    height: 34px;
    width: auto;
    max-width: 240px;
    background: transparent;
}

.sm-logo-text {
    font-size: 19px;
    font-weight: 700;
    letter-spacing: .4px;
    color: var(--sm-text);
}

.sm-logo-dark {
    display: none;
}

body.sm-dark .sm-logo-light,
html.sm-dark .sm-logo-light {
    display: none;
}

body.sm-dark .sm-logo-dark,
html.sm-dark .sm-logo-dark {
    display: block;
}/* v5.16.8：只上传一张透明 LOGO（未设深色版）时，深色模式下不再整体隐藏 */
body.sm-dark .sm-logo-solo .sm-logo-light,
html.sm-dark .sm-logo-solo .sm-logo-light {
    display: block;
}

.sm-nav {
    flex: 1;
    min-width: 0;
}

.sm-menu {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    gap: 4px;
    flex-wrap: wrap;
}

.sm-menu li {
    margin: 0;
    position: relative;
}

.sm-menu a {
    display: block;
    padding: 8px 13px;
    border-radius: var(--sm-radius-sm);
    font-size: 15px;
    color: var(--sm-text-2);
}

.sm-menu a:hover,
.sm-menu .current-menu-item>a,
.sm-menu .current-cat>a {
    background: rgba(61, 110, 247, .1);
    color: var(--sm-primary);
}

.sm-menu .children,
.sm-menu .sub-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    box-shadow: var(--sm-shadow);
    list-style: none;
    margin: 0;
    padding: 6px;
    min-width: 150px;
    z-index: 20;
}/* v5.21.0：二级菜单不再只认鼠标悬停 ——
   ① 加 :focus-within，键盘 Tab 到子菜单项时它也会展开（此前键盘用户
      根本够不到二级链接）；
   ② 加 .is-open，配合 JS 在触屏上「点一下展开」，手机上子菜单才点得到。 */
.sm-menu li:hover>.children,
.sm-menu li:hover>.sub-menu,
.sm-menu li:focus-within>.children,
.sm-menu li:focus-within>.sub-menu,
.sm-menu li.is-open>.children,
.sm-menu li.is-open>.sub-menu {
    display: block;
}/* 有子菜单的一级项给个小箭头，提示「这里还能展开」 */
.sm-menu li.menu-item-has-children > a::after,
.sm-menu li.cat-item > a::after {
    content: '';
    display: inline-block;
    width: 5px;
    height: 5px;
    margin-left: 5px;
    vertical-align: middle;
    border-right: 1.5px solid currentColor;
    border-bottom: 1.5px solid currentColor;
    transform: rotate(45deg) translateY(-2px);
    opacity: .6;
}/* 触屏上给展开箭头留够点击区域（44px 见方，与触摸目标规范一致） */@media (hover: none) {
    .sm-menu li.menu-item-has-children > a,
    .sm-menu li.cat-item > a {
        min-height: 44px;
        display: inline-flex;
        align-items: center;
    }}/* ==================================================================
 * v5.4.0 · 导航栏重新规划
 * 布局：左 LOGO 右菜单（默认）/ 左 LOGO 中菜单 右用户区 / LOGO 居中菜单在下
 * 菜单风格：朴素 / 胶囊 / 下划线 / 卡片
 * 顶部信息条 + 移动端滑出抽屉
 * 颜色全部走 --sm-*，暗色自动适配。
 * ================================================================== *//* 顶部信息条 */
.sm-topbar {
    background: var(--sm-primary);
    color: #fff;
    font-size: 12.5px;
    line-height: 1.2;
}

.sm-topbar-in {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    height: 34px;
}

.sm-topbar-l,
.sm-topbar-r {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sm-topbar a {
    color: #fff;
}

.sm-topbar-r {
    text-align: right;
}/* 菜单项间距（后台可调） */
.sm-menu {
    gap: var(--sm-menu-gap, 4px);
}/* —— 布局：左 LOGO · 中菜单 · 右用户区 —— */
.nav-split .sm-logo,
.nav-split .sm-header-right {
    flex: 0 0 auto;
}

.nav-split .sm-nav {
    flex: 1;
    display: flex;
    justify-content: center;
}/* —— 布局：LOGO 居中 · 菜单在下方（上下分层） —— */@media (min-width: 901px) {
    .nav-center .sm-header-inner {
        flex-direction: column;
        height: auto;
        gap: 12px;
        padding: 16px 0 10px;
    }

    .nav-center .sm-logo {
        order: 1;
        justify-content: center;
        width: 100%;
    }

    .nav-center .sm-nav {
        order: 2;
        width: 100%;
        flex: 0 0 auto;
    }

    .nav-center .sm-menu {
        justify-content: center;
    }

    .nav-center .sm-header-right {
        order: 3;
        width: 100%;
        justify-content: center;
    }

    .nav-center .sm-menu-toggle {
        display: none;
    }}/* —— 菜单风格：胶囊 —— */
.menu-pill .sm-menu a {
    border-radius: 999px;
}/* —— 菜单风格：下划线 —— */
.menu-underline .sm-menu a {
    border-radius: 0;
    position: relative;
}

.menu-underline .sm-menu a::after {
    content: '';
    position: absolute;
    left: 13px;
    right: 13px;
    bottom: 4px;
    height: 2px;
    border-radius: 2px;
    background: var(--sm-primary);
    transform: scaleX(0);
    transform-origin: center;
    transition: transform .2s;
}

.menu-underline .sm-menu a:hover::after,
.menu-underline .sm-menu .current-menu-item>a::after,
.menu-underline .sm-menu .current-cat>a::after {
    transform: scaleX(1);
}

.menu-underline .sm-menu a:hover,
.menu-underline .sm-menu .current-menu-item>a,
.menu-underline .sm-menu .current-cat>a {
    background: transparent;
}/* —— 菜单风格：卡片 —— */
.menu-card .sm-nav {
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-radius: 12px;
    padding: 4px 8px;
}/* 移动端遮罩层 */
.sm-nav-mask {
    position: fixed;
    inset: 0;
    background: rgba(10, 14, 22, .45);
    opacity: 0;
    visibility: hidden;
    transition: opacity .25s, visibility .25s;
    z-index: 99;
}

body.nav-open .sm-nav-mask {
    opacity: 1;
    visibility: visible;
}

.sm-header-right {
    display: flex;
    align-items: center;
    gap: 10px;
    flex: 0 0 auto;
}/* ---------- v5.20.0 · 导航折叠式搜索 ----------
   平时只显示一枚放大镜；悬停 / 点击 / 聚焦时输入框向左展开成胶囊。
   输入框用绝对定位挂在按钮左侧，展开时盖在导航上方 —— 不挤压菜单、
   不引起任何布局抖动；手机端（≤782px）hover 失效，直接常驻展开。 */
.sm-search {
    position: relative;
    display: flex;
    align-items: center;
    height: 34px;
}

.sm-search-field {
    position: absolute;
    right: 0;
    top: 0;
    height: 34px;
    width: 0;
    opacity: 0;
    overflow: hidden;
    pointer-events: none;
    display: flex;
    align-items: center;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    box-shadow: var(--sm-shadow-sm, 0 2px 8px rgba(0, 0, 0, .06));
    transition: width .28s ease, opacity .18s ease, padding .28s ease;
}

.sm-search input {
    border: 0;
    background: transparent;
    outline: none;
    width: 100%;
    padding: 0 14px;
    color: var(--sm-text);
    font-size: 13.5px;
}

.sm-search-btn {
    position: relative;
    z-index: 2;
    border: 0;
    background: transparent;
    cursor: pointer;
    padding: 4px 6px;
    color: var(--sm-text-2);
    border-radius: 50%;
    transition: color .2s ease, background .2s ease;
}

.sm-search-btn:hover,
.sm-search:focus-within .sm-search-btn {
    color: var(--sm-primary);
}

.sm-search-btn .dashicons {
    width: 20px;
    height: 20px;
    font-size: 20px;
}/* 展开：悬停 / 聚焦 / JS 点击（is-open）。宽度 = 输入区 186px + 按钮占位 36px，
   按钮始终叠在胶囊右端，视觉上就是「从放大镜向左长出一根搜索框」 */
.sm-search:hover .sm-search-field,
.sm-search:focus-within .sm-search-field,
.sm-search.is-open .sm-search-field {
    width: 222px;
    padding-right: 36px;
    opacity: 1;
    pointer-events: auto;
}/* 手机端没有 hover，直接常驻展开（键盘弹出也不至于点不到） */@media (max-width: 782px) {
    .sm-search .sm-search-field {
        width: 168px;
        padding-right: 34px;
        opacity: 1;
        pointer-events: auto;
    }}

.sm-user-mini {
    display: flex;
    align-items: center;
    gap: 8px;
}/* ---------- v5.16.0 · 顶部导航右侧用户卡片（参考 ripro-V5 头像 + 昵称 + 等级 + 下拉） ---------- */
.sm-user-card-wrap {
    position: relative;
}
.sm-user-trigger {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 2px 12px;
    border-radius: 99px;
    transition: background .18s ease;
}
.sm-user-trigger:hover {
    background: rgba(0, 0, 0, .05);
}
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-user-trigger:hover {
    background: rgba(255, 255, 255, .15);
}
.sm-avatar {
    width: 44px;
    height: 44px;
    max-width: 44px;
    max-height: 44px;
    border-radius: 50%;
    object-fit: cover;
    border: 1px solid rgba(0, 0, 0, .08);
    background: #fff;
    flex: none;
}
.sm-user-meta {
    display: flex;
    flex-direction: column;
    line-height: 1.15;
    min-width: 0;
}
.sm-user-name {
    font-size: 13px;
    font-weight: 600;
    color: var(--sm-ink-1);
    max-width: 92px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-user-name {
    color: #fff;
}
.sm-user-meta .sm-lvl {
    margin-top: 2px;
    align-self: flex-start;
    font-size: 10px;
    padding: 1px 7px;
    border-radius: 99px;
}
.sm-user-card {
    position: absolute;
    right: 0;
    top: calc(100% + 12px);
    width: 240px;
    background: #fff;
    border-radius: 14px;
    box-shadow: 0 16px 40px rgba(20, 20, 50, .18);
    opacity: 0;
    visibility: hidden;
    transform: translateY(-8px);
    transition: opacity .18s ease, transform .18s ease, visibility .18s;
    z-index: 80;
    overflow: hidden;
    border: 1px solid var(--sm-border, #eceef4);
}
.sm-user-card-wrap:hover .sm-user-card {
    opacity: 1;
    visibility: visible;
    transform: none;
}
.sm-user-card-hd {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 18px 16px;
    background: linear-gradient(120deg, var(--sm-primary), var(--sm-vip, #8a5bff));
    color: #fff;
}
.sm-avatar-lg {
    width: 54px;
    height: 54px;
    border-radius: 50%;
    object-fit: cover;
    border: 2px solid rgba(255, 255, 255, .55);
    background: #fff;
    flex: none;
}
.sm-user-card-id {
    display: flex;
    flex-direction: column;
    gap: 5px;
    min-width: 0;
}
.sm-user-card-id b {
    font-size: 15px;
    font-weight: 700;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sm-user-card-id .sm-lvl {
    align-self: flex-start;
    font-size: 10px;
    padding: 1px 8px;
    border-radius: 99px;
    background: rgba(255, 255, 255, .22);
    color: #fff;
}
.sm-user-card-menu {
    list-style: none;
    margin: 0;
    padding: 6px;
}
.sm-user-card-menu li a {
    display: block;
    padding: 11px 14px;
    border-radius: 9px;
    color: var(--sm-ink-1);
    font-size: 13px;
    transition: background .15s ease, color .15s ease;
}
.sm-user-card-menu li a:hover {
    background: var(--sm-bg);
    color: var(--sm-primary);
}/* 管理员「后台管理」项：分隔线隔开，图标用主色点缀，待办角标靠右 */
.sm-user-card-admin {
    margin-top: 5px;
    padding-top: 5px;
    border-top: 1px solid var(--sm-border, #eceef4);
}
.sm-user-card-admin a {
    display: flex;
    align-items: center;
    gap: 8px;
}
.sm-user-card-admin .sm-uca-ico {
    font-size: 14px;
    line-height: 1;
    color: var(--sm-primary);
}
.sm-user-card-admin .sm-uca-badge {
    margin-left: auto;
}/* 退出登录：红色区分，避免误触 */
.sm-user-card-logout a {
    color: var(--sm-danger, #e25563);
}
.sm-user-card-logout a:hover {
    background: rgba(226, 85, 99, .08);
    color: var(--sm-danger, #e25563);
}

.sm-dark-toggle {
    border: 0;
    background: var(--sm-bg);
    border-radius: var(--sm-radius-sm);
    width: 34px;
    height: 34px;
    cursor: pointer;
    font-size: 15px;
}/* ---------- 按钮 / 徽标 ---------- */
.sm-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    background: var(--sm-primary);
    color: #fff !important;
    border: 1px solid var(--sm-primary);
    border-radius: var(--sm-radius-sm);
    padding: 9px 18px;
    cursor: pointer;
    font-size: 14px;
    line-height: 1.4;
    transition: .2s;
}

.sm-btn:hover {
    background: var(--sm-primary-d);
    border-color: var(--sm-primary-d);
    color: #fff !important;
}

.sm-btn-o {
    background: transparent;
    color: var(--sm-primary) !important;
}

.sm-btn-o:hover {
    background: var(--sm-primary);
    color: #fff !important;
}/* v5.16.7：合并原 .sm-btn-s 与 .sm-btn-sm 两个近乎重复的小按钮变体，统一为单一规范尺寸 */
.sm-btn-s,
.sm-btn-sm {
    padding: 6px 14px;
    font-size: 13px;
}

.sm-btn[disabled],
.sm-btn.disabled {
    opacity: .55;
    cursor: not-allowed;
    pointer-events: none;
}

.sm-badge {
    /* v5.6.0：升级为完整的「猫图标」组件（Sanmao CatIcon，对齐 Bootstrap 4 Badge 规格）
       —— 使用 em 相对单位，自动跟随直接父元素字号缩放 */
    display: inline-block;
    padding: .22em .55em;
    border-radius: 5px;
    font-size: 80%;
    font-weight: 600;
    line-height: 1.45;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    background: var(--sm-bg);
    color: var(--sm-text-2);
    /* 当前徽章主色，供 soft / outline / corner 等派生态复用 */
    --bdg-c: var(--sm-text-2);
    transition: opacity .18s, filter .18s, background-color .18s, box-shadow .18s;
}

.sm-badge:empty {
    display: none;
}

.sm-badge.free {
    background: rgba(34, 176, 125, .13);
    color: var(--sm-ok);
}

.sm-badge.pay {
    background: rgba(245, 84, 75, .12);
    color: var(--sm-danger);
}

.sm-lvl {
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
    font-size: 12px;
    padding: 1px 6px;
    border-radius: 4px;
    background: var(--sm-bg);
    color: var(--sm-text-2);
}

.sm-lvl.vip {
    background: rgba(224, 164, 75, .15);
    color: var(--sm-vip);
}

.sm-lvl.boosvip {
    background: linear-gradient(90deg, var(--sm-gold), var(--sm-gold-2));
    color: #5a3d05;
}/* ---------- 公告弹层 ---------- *//* v5.46.6：视觉重做 —— 渐变头（图标 + 标题）+ 白底圆形关闭钮 + 入场位移淡入。
   显隐由 .is-open 控制（opacity/visibility），节点本身带 hidden 属性做兜底：
   下面 .sm-notice{display:flex} 与 UA 的 [hidden]{display:none} 同特异度、位置更后，
   会压掉 hidden —— 故显式补一条 .sm-notice[hidden]{display:none} 双保险（同海报/举报弹层）。 */
.sm-notice {
    position: fixed;
    inset: 0;
    background: rgba(15, 20, 32, .55);
    backdrop-filter: blur(3px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 999;
    padding: 20px;
    opacity: 0;
    visibility: hidden;
    transition: opacity .22s ease, visibility .22s ease;
}

.sm-notice.is-open {
    opacity: 1;
    visibility: visible;
}

.sm-notice[hidden] {
    display: none;
}

.sm-notice-box {
    background: var(--sm-card);
    border-radius: 18px;
    max-width: 480px;
    width: 100%;
    position: relative;
    overflow: hidden;
    box-shadow: 0 18px 50px rgba(15, 20, 32, .28), var(--sm-shadow);
    transform: translateY(16px) scale(.97);
    transition: transform .26s cubic-bezier(.2, .8, .3, 1);
}

.sm-notice.is-open .sm-notice-box {
    transform: none;
}/* 渐变头：图标 + 标题，同时给关闭按钮提供高对比底色 */
.sm-notice-head {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 16px 56px 16px 20px;
    background: var(--sm-grad);
    color: #fff;
}

.sm-notice-icon {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: rgba(255, 255, 255, .18);
}

.sm-notice-head h4 {
    margin: 0;
    font-size: 16.5px;
    font-weight: 600;
    color: #fff;
    line-height: 1.35;
}/* 关闭按钮：白底圆形 + CSS 画的叉（跨平台字形一致），不再是裸 &times; 字符 */
.sm-notice-close {
    position: absolute;
    right: 14px;
    top: 14px;
    z-index: 2;
    width: 32px;
    height: 32px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, .2);
    color: #fff;
    cursor: pointer;
    transition: background .18s ease, transform .18s ease;
}

.sm-notice-close:hover {
    background: rgba(255, 255, 255, .34);
    transform: rotate(90deg);
}/* 叉线：父仅作定位容器，两条线各自中心对称旋转（标准写法，任何缩放下都是正 ×） */
.sm-notice-x {
    position: absolute;
    inset: 0;
}

.sm-notice-x::before,
.sm-notice-x::after {
    content: '';
    position: absolute;
    left: 50%;
    top: 50%;
    width: 14px;
    height: 2px;
    border-radius: 2px;
    background: currentColor;
    transform: translate(-50%, -50%) rotate(45deg);
}

.sm-notice-x::after {
    transform: translate(-50%, -50%) rotate(-45deg);
}










.sm-hero-text {
    opacity: .92;
    font-size: 15px;
}

.sm-hero .sm-search-big {
    display: flex;
    gap: 10px;
    margin-top: 18px;
}

.sm-search-big input {
    flex: 1;
    border: 0;
    border-radius: 10px;
    padding: 12px 16px;
    outline: none;
}

.sm-search-big button {
    border: 0;
    background: #fff;
    color: var(--sm-primary);
    border-radius: 10px;
    padding: 0 22px;
    font-weight: 600;
    cursor: pointer;
}










.sm-slide {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 14px;
}/* v5.23.0 修复：旧版此处有 .sm-sec-title span { font-size:13px } 的遗留规则，
   而 mod_hd / 归档页输出的标题本体恰好就是 <span>，标题文字被整体压成 13px，
   视觉上「区块标题毫无存在感」。span 现在就是标题文字，字号字重跟随标题，
   副标题统一走 <small>（样式见下方 3520 行区块抬头定义）。 */
.sm-sec-title {
    margin: 26px 0 14px;
    font-size: 19px;
    font-weight: 700;
}/* ---------- 资源网格 / 卡片 ---------- */
.sm-grid {
    display: grid;
    /* v5.29.0：间距可由「列表布局 → 卡片间距」注入 --sm-list-gap，未设置时与旧版一致 */
    gap: var(--sm-list-gap, 18px);
    grid-template-columns: repeat(4, 1fr);
}

.sm-grid-2 {
    grid-template-columns: repeat(2, 1fr);
}

.sm-grid-3 {
    grid-template-columns: repeat(3, 1fr);
}

.sm-grid-5 {
    grid-template-columns: repeat(5, 1fr);
}/* v5.3.0：搭建器「每行篇数」上限是 6，此前缺这一档会退回 4 列 */
.sm-grid-6 {
    grid-template-columns: repeat(6, 1fr);
}/* v5.17.0：搭建器「每排显示数量」驱动真实列数
   搭建器模块会输出内联变量 --sm-cols（1~8 任意值），这里统一给出对应的列数。
   :where() 包住属性选择器把权重压到「1 个类名」，于是本规则既不会压过上面的
   .sm-grid-N 数字类，也不会压过后面的响应式规则 —— 老站点视觉零变化，
   只是原本没有样式的新档位（如 1 列、7 列、8 列）从此有了真实布局。 */
.sm-grid:where([style*="--sm-cols"]),
.sm-soft:where([style*="--sm-cols"]),
.sm-picwall:where([style*="--sm-cols"]),
.sm-catbox:where([style*="--sm-cols"]),
.sm-stat-box:where([style*="--sm-cols"]),
.sm-vip-block:where([style*="--sm-cols"]),
.sm-links:where([style*="--sm-cols"]),
.sm-quicknav:where([style*="--sm-cols"]),
.sm-linkbox:where([style*="--sm-cols"]),
.sm-feature:where([style*="--sm-cols"]),
.sm-tag-cloud.is-grid:where([style*="--sm-cols"]) {
    grid-template-columns: repeat(var(--sm-cols, 4), minmax(0, 1fr));
}

.sm-card {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    /* v5.29.0：卡圆角可由「列表布局 → 卡片圆角」注入 --sm-card-radius，未设置时跟随主题 */
    border-radius: var(--sm-card-radius, var(--sm-radius));
    box-shadow: var(--sm-shadow-sm);
    overflow: hidden;
    transition: .25s;
    display: flex;
    flex-direction: column;
}

.sm-card:hover {
    transform: translateY(-3px);
    box-shadow: var(--sm-shadow);
    border-color: rgba(61, 110, 247, .35);
}

.sm-card-thumb {
    position: relative;
    padding-top: 62%;
    overflow: hidden;
    background: var(--sm-bg);
}

.sm-card-thumb img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.sm-card-thumb .sm-badge {
    position: absolute;
    left: 8px;
    top: 8px;
    z-index: 2;
}

.sm-card-body {
    padding: 12px 14px;
    flex: 1;
}

.sm-card-title {
    font-size: 15px;
    font-weight: 600;
    margin: 0 0 8px;
    line-height: 1.45;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.sm-card-meta {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 12px;
    color: var(--sm-text-3);
    gap: 8px;
}

.sm-card-foot {
    border-top: 1px solid var(--sm-border);
    padding: 9px 14px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 13px;
}

.sm-card-foot b {
    color: var(--sm-danger);
}/* v5.36.0：纯文章卡的页脚（作者 + 评论数），观感区别于资源卡的「下载态」 */
.sm-card-foot .sm-card-author a {
    color: var(--sm-text-2);
    font-weight: 600;
    text-decoration: none;
}
.sm-card-foot .sm-card-author a:hover {
    color: var(--sm-primary);
}
.sm-card-foot .sm-card-comments {
    color: var(--sm-text-3);
    white-space: nowrap;
}

.sm-empty {
    text-align: center;
    padding: 60px 20px;
    color: var(--sm-text-3);
    background: var(--sm-card);
    border: 1px dashed var(--sm-border);
    border-radius: var(--sm-radius);
}/* ---------- 归档 ---------- */
.sm-archive-head {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 22px;
    margin-bottom: 20px;
}

.sm-archive-head h1 {
    margin: 0 0 6px;
    font-size: 22px;
}

.sm-archive-desc {
    color: var(--sm-text-2);
    font-size: 14px;
    margin: 0;
}

.sm-crumb {
    font-size: 13px;
    color: var(--sm-text-3);
    margin-bottom: 14px;
}

.sm-crumb a {
    color: var(--sm-text-2);
}/* ---------- 单页 ---------- *//* v5.46.8：整篇文章收进一张卡片 —— 旧版标题 / 信息条裸在页面背景上，
   正文单独一块白板，两者中间还夹着工具条和目录，视觉上是三段拼起来的。
   现在标题区、阅读工具条、目录、正文、标签同属一个容器。 */
.sm-single {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 26px 28px 10px;
    margin-bottom: 22px;
}

.sm-single-head { margin-bottom: 2px; }

.sm-single-title {
    font-size: clamp(22px, 2.1vw, 28px);
    line-height: 1.38;
    font-weight: 700;
    letter-spacing: -.2px;
    margin: 0 0 14px;
}

.sm-single-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 16px;
    font-size: 13px;
    color: var(--sm-text-3);
    border-bottom: 1px solid var(--sm-border);
    padding-bottom: 12px;
    margin-bottom: 18px;
}

.sm-meta-i {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.sm-meta-i a {
    color: inherit;
    text-decoration: none;
}

.sm-meta-i a:hover {
    color: var(--sm-primary);
}

.sm-meta-ic {
    flex: 0 0 auto;
    opacity: .75;
}

.sm-meta-author {
    margin-left: auto;
}

.sm-single-content {
    margin-bottom: 20px;
    font-size: 15.5px;
    line-height: 1.85;
    text-align: justify;
    text-justify: inter-ideograph;
    overflow-wrap: break-word;
}

.sm-single-content img {
    border-radius: var(--sm-radius-sm);
    margin: 6px 0;
    /* v5.46.8：正文图片可点开大图（main.js 的 lightbox 已支持），给个光标提示 */
    cursor: zoom-in;
}

.sm-single-content img.sm-nozoom {
    cursor: default;
}

.sm-single-content pre,
.sm-single-content code {
    background: var(--sm-bg);
    border-radius: 6px;
}

.sm-single-content pre {
    padding: 14px;
    overflow: auto;
}

.sm-single-tags,
.sm-single-author {
    margin-bottom: 20px;
}

.sm-tag {
    display: inline-block;
    vertical-align: middle;
    padding: 3px 10px;
    margin: 0 6px 6px 0;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: 20px;
    font-size: 13px;
    color: var(--sm-text-2);
}/* v5.46.8：作者卡 —— 头像 / 名称+勋章 / 简介 / 资源数+粉丝数 / 关注+主页。
   旧版是「头像 + 一个 div 里塞名字和简介」，长简介会撑破布局，且没有任何可操作入口。 */
.sm-single-author {
    display: flex;
    align-items: center;
    gap: 16px;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 16px 18px;
}

.sm-sau-av {
    flex: 0 0 auto;
    display: block;
    width: 56px;
    height: 56px;
}

.sm-single-author img {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    display: block;
    object-fit: cover;
}

.sm-sau-main {
    flex: 1 1 auto;
    min-width: 0;
}

.sm-sau-top {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 4px;
}

.sm-sau-name {
    font-size: 15px;
    font-weight: 600;
    color: var(--sm-text);
    text-decoration: none;
}

.sm-sau-name:hover {
    color: var(--sm-primary);
}

.sm-sau-desc {
    margin: 0 0 8px;
    font-size: 13px;
    line-height: 1.65;
    color: var(--sm-text-2);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.sm-sau-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 14px;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-sau-stats b {
    font-size: 14px;
    color: var(--sm-text);
    margin-right: 3px;
}

.sm-sau-act {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 10px;
}

.sm-sau-home {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-size: 13px;
    color: var(--sm-text-2);
    text-decoration: none;
    white-space: nowrap;
}

.sm-sau-home:hover {
    color: var(--sm-primary);
}

.sm-sau-home-ic {
    opacity: .7;
}

.sm-related {
    margin-top: 24px;
}/* v5.46.8：相关文章标题栏 —— 旧版一个裸 h3，与卡片里的其它 xblock 小标题风格不一致 */
.sm-related-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
}

.sm-related-head h3 {
    margin: 0;
    font-size: 17px;
    font-weight: 600;
}

.sm-rel-refresh {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid var(--sm-border);
    background: var(--sm-card);
    color: var(--sm-text-2);
    font-size: 12.5px;
    line-height: 1;
    padding: 7px 12px;
    border-radius: 20px;
    cursor: pointer;
    transition: color .18s, border-color .18s, background .18s;
}

.sm-rel-refresh:hover {
    color: var(--sm-primary);
    border-color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 8%, transparent);
}

.sm-rel-ic {
    transition: transform .5s ease;
}

.sm-rel-refresh.is-busy .sm-rel-ic {
    animation: sm-rel-spin .7s linear infinite;
}@keyframes sm-rel-spin {
    to { transform: rotate(360deg); }
}/* 标签：旧版一排灰胶囊，没有任何 hover 反馈 */
.sm-tags-lb {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 13px;
    color: var(--sm-text-3);
    margin-right: 8px;
}

.sm-tag {
    transition: color .18s, border-color .18s, background .18s;
}

.sm-tag:hover {
    color: var(--sm-primary);
    border-color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 8%, transparent);
}/* 窄屏：文章卡片收紧，作者卡换行（头像 + 信息 + 操作三段竖排） */@media (max-width: 700px) {
    .sm-single { padding: 18px 16px 8px; border-radius: var(--sm-radius-sm); }
    .sm-single-title { font-size: 21px; margin-bottom: 10px; }
    .sm-meta-author { margin-left: 0; }
    .sm-single-author { flex-wrap: wrap; gap: 12px; }
    .sm-sau-main { flex: 1 1 100%; order: 2; }
    .sm-sau-av { order: 1; width: 46px; height: 46px; }
    .sm-single-author img { width: 46px; height: 46px; }
    .sm-sau-act { order: 3; flex: 1 1 100%; }
    .sm-related-head h3 { font-size: 16px; }
    .sm-pn-thumb { width: 46px; height: 46px; }}

.sm-page-title {
    font-size: 24px;
    margin: 0 0 18px;
}

.sm-page-content {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 24px;
}/* ---------- 下载区 ---------- */
.sm-down-box {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 22px;
    margin: 20px 0;
}

.sm-down-list {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
}

.sm-down-list li {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: 1px solid var(--sm-border);
    border-radius: 9px;
    margin-bottom: 8px;
    background: var(--sm-bg);
    flex-wrap: wrap;
}



.sm-dl-name {
    flex: 1;
    min-width: 120px;
    font-weight: 500;
}



.sm-dl-pwd {
    font-size: 13px;
    color: var(--sm-text-3);
}

.sm-down-lock {
    text-align: center;
    padding: 18px 0;
}

.sm-state {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 6px;
    background: var(--sm-bg);
    color: var(--sm-text-2);
    font-size: 13px;
    margin-bottom: 12px;
}

.sm-down-extra {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-top: 14px;
}

.sm-down-tip {
    font-size: 12.5px;
    color: var(--sm-text-3);
    margin: 10px 0 0;
}
/* ---------- 评论 ---------- */
.sm-comments {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 22px;
}

.sm-comments-title {
    font-size: 17px;
    margin-bottom: 16px;
}

.sm-comment-list {
    list-style: none;
    margin: 0;
    padding: 0;
}








.sm-comment-list .comment {
    border-bottom: 1px solid var(--sm-border);
    padding: 14px 0;
}

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

.comment-form-comment textarea {
    width: 100%;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-sm);
    padding: 10px;
    background: var(--sm-bg);
    color: var(--sm-text);
}/* ---------- 分页 ---------- */
.sm-pages,
.sm-pager {
    display: flex;
    gap: 6px;
    justify-content: center;
    flex-wrap: wrap;
    margin: 26px 0 0;
}

.sm-pages a,
.sm-pages span,
.sm-pager a,
.sm-pager span {
    display: inline-block;
    min-width: 34px;
    text-align: center;
    padding: 6px 10px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-sm);
    background: var(--sm-card);
    font-size: 14px;
}

.sm-pages .current,
.sm-pager .current {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}/* ---------- 侧边栏 / 小工具 ---------- */
.sm-sidebar .widget {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 16px;
    margin-bottom: 18px;
}

.widget-title {
    font-size: 15px;
    margin: 0 0 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--sm-border);
}

.sm-w-list {
    list-style: none;
    margin: 0;
    padding: 0;
}

.sm-w-list li {
    display: flex;
    gap: 10px;
    padding: 8px 0;
    border-bottom: 1px dashed var(--sm-border);
    font-size: 14px;
}

.sm-w-list li:last-child {
    border-bottom: 0;
}

.sm-w-thumb {
    width: 64px;
    height: 46px;
    border-radius: 6px;
    object-fit: cover;
    flex: 0 0 64px;
}

.sm-w-list .sm-w-title {
    flex: 1;
    min-width: 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}

.sm-w-tags,
.sm-tagcloud {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}

.sm-w-ad img {
    border-radius: var(--sm-radius-sm);
}

.sm-w-author {
    text-align: center;
}

.sm-w-author img {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    margin: 0 auto 8px;
}

.sm-w-slide img {
    border-radius: var(--sm-radius-sm);
    margin-bottom: 8px;
}/* ---------- 广告位 ---------- */
.sm-ad {
    margin: 0 0 18px;
    text-align: center;
    overflow: hidden;
}

.sm-ad img {
    border-radius: var(--sm-radius-sm);
    margin: 0 auto;
}

.sm-ad-single_top {
    margin-bottom: 18px;
}

.sm-ad-single_bottom {
    margin: 18px 0;
}/* ---------- 底部 ---------- */
.sm-footer {
    background: var(--sm-card);
    border-top: 1px solid var(--sm-border);
    padding: 36px 0 24px;
    margin-top: 20px;
}

.sm-footer-widgets {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 24px;
    margin-bottom: 24px;
}

.sm-fw .widget {
    background: none;
    border: 0;
    padding: 0;
    margin-bottom: 16px;
}

.sm-footer-nav .sm-fmenu {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 16px;
    margin: 0 0 14px;
    padding: 0;
    font-size: 14px;
    color: var(--sm-text-2);
}

.sm-copyright {
    font-size: 13px;
    color: var(--sm-text-3);
    border-top: 1px solid var(--sm-border);
    padding-top: 16px;
}/* ---------- 移动端底栏 / 返回顶部 ---------- */
.sm-mobile-bar {
    display: none;
    position: fixed;
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--sm-card);
    border-top: 1px solid var(--sm-border);
    z-index: 90;
    padding: 6px 0;
}

.sm-mobile-bar a {
    flex: 1;
    text-align: center;
    font-size: 11px;
    color: var(--sm-text-2);
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
}

.sm-mobile-bar a span {
    font-size: 18px;
}

.sm-backtop {
    position: fixed;
    right: 18px;
    bottom: 70px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    display: flex;
    align-items: center;
    justify-content: center;
    box-shadow: var(--sm-shadow);
    z-index: 80;
    color: var(--sm-text-2);
}/* v5.36.6：返回顶部与右下角悬浮工具条同侧同列，纵向会重叠。
   返回顶部出现后（body.sm-dock-on，由 JS 打标）把悬浮工具条整体上移到它上方：
   70px（返回顶部底距）+ 40px（按钮高）+ 10px（间隙）。 */
body.sm-dock-on .sm-float-bar {
    bottom: calc(120px + env(safe-area-inset-bottom, 0px));
}/* ---------- 用户中心 ---------- */
.sm-user {
    display: flex;
    gap: 20px;
    align-items: flex-start;
}

.sm-user-side {
    width: 230px;
    flex: 0 0 230px;
}

.sm-user-main {
    flex: 1;
    min-width: 0;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 20px;
}

.sm-uname {
    font-size: 16px;
    font-weight: 600;
}

.sm-ulvl {
    margin: 6px 0 10px;
}

.sm-umeta {
    display: flex;
    justify-content: space-around;
    font-size: 12px;
    color: var(--sm-text-3);
    border-top: 1px solid var(--sm-border);
    padding-top: 12px;
}

.sm-umeta b {
    display: block;
    font-size: 16px;
    color: var(--sm-text);
}

.sm-user-nav {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    overflow: hidden;
}

.sm-user-nav a {
    display: block;
    padding: 11px 18px;
    font-size: 14px;
    border-bottom: 1px solid var(--sm-border);
    color: var(--sm-text-2);
}

.sm-user-nav a:last-child {
    border-bottom: 0;
}

.sm-user-nav a.active,
.sm-user-nav a:hover {
    background: rgba(61, 110, 247, .1);
    color: var(--sm-primary);
}

.sm-vip-now {
    background: linear-gradient(135deg, var(--sm-gold-2), var(--sm-gold));
    border-radius: 10px;
    padding: 12px;
    margin-bottom: 14px;
    font-size: 13px;
    color: #5a3d05;
}

.sm-vip-desc {
    font-size: 13px;
    color: var(--sm-text-3);
    margin-bottom: 14px;
}

.sm-pkgs {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}

.sm-pkg {
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    padding: 16px;
    text-align: center;
    cursor: pointer;
    transition: .2s;
}

.sm-pkg:hover,
.sm-pkg.on {
    border-color: var(--sm-primary);
    background: rgba(61, 110, 247, .06);
}

.sm-pkg b {
    display: block;
    font-size: 20px;
    margin-bottom: 4px;
}

.sm-pkg small {
    color: var(--sm-text-3);
}

.sm-stat {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
    gap: 12px;
    margin-bottom: 18px;
}

.sm-item {
    background: var(--sm-bg);
    border-radius: 10px;
    padding: 14px;
    text-align: center;
}

.sm-item b {
    display: block;
    font-size: 20px;
}

.sm-item span {
    font-size: 12px;
    color: var(--sm-text-3);
}/* ---------- 表单 ---------- */
.sm-form {
    max-width: 420px;
}

.sm-form label {
    display: block;
    font-size: 13px;
    color: var(--sm-text-2);
    margin-bottom: 6px;
}



.sm-form input[type=text],
.sm-form input[type=password],
.sm-form input[type=email],
.sm-form input[type=number],
.sm-form select,
.sm-form textarea,
.sm-user-main input[type=text],
.sm-user-main input[type=password],
.sm-user-main input[type=email],
.sm-user-main input[type=number],
.sm-user-main select,
.sm-user-main textarea {
    width: 100%;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-sm);
    padding: 9px 12px;
    background: var(--sm-bg);
    color: var(--sm-text);
    outline: none;
    margin-bottom: 12px;
}

.sm-form input:focus,
.sm-user-main input:focus,
.sm-user-main textarea:focus {
    border-color: var(--sm-primary);
}

.sm-cap {
    display: flex;
    align-items: center;
    gap: 8px;
}



.sm-cap-img {
    height: 36px;
    border-radius: 6px;
    cursor: pointer;
    border: 1px solid var(--sm-border);
}



.sm-agree {
    font-size: 13px;
    color: var(--sm-text-3);
    margin-bottom: 12px;
}

.sm-switch {
    font-size: 13px;
    color: var(--sm-primary);
    cursor: pointer;
}



.sm-login,
.sm-reg {
    max-width: 400px;
    margin: 0 auto;
}



.sm-sns-box {
    display: flex;
    gap: 10px;
    justify-content: center;
    margin-top: 16px;
    flex-wrap: wrap;
}

.sm-sns {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-sm);
    padding: 7px 14px;
    font-size: 13px;
    color: var(--sm-text-2);
    background: var(--sm-bg);
}

.sm-sns:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}/* ---------- 表格 ---------- */
.sm-table,
.sanmao-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 14px;
}

.sm-table th,
.sm-table td,
.sanmao-table th,
.sanmao-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--sm-border);
    text-align: left;
}

.sm-table th,
.sanmao-table th {
    color: var(--sm-text-3);
    font-weight: 500;
    font-size: 13px;
}

.sm-orders td,
.sm-orders th {
    white-space: nowrap;
}/* ---------- 支付页 ---------- */
.sm-pay {
    max-width: 520px;
    margin: 0 auto;
    text-align: center;
}

.sm-pay-amount {
    font-size: 15px;
}

.sm-pay-amount b {
    font-size: 26px;
    color: var(--sm-danger);
}

.sm-qr {
    margin: 16px auto;
    padding: 14px;
    background: #fff;
    border-radius: 10px;
    display: inline-block;
}

.sm-qr img {
    width: 200px;
    height: 200px;
}/* ---------- 消息提示 ---------- */
.sm-msg {
    padding: 10px 14px;
    border-radius: var(--sm-radius-sm);
    margin-bottom: 14px;
    font-size: 14px;
    background: var(--sm-bg);
    color: var(--sm-text-2);
}

.sm-msg.ok {
    background: rgba(34, 176, 125, .12);
    color: var(--sm-ok);
}

.sm-msg.error {
    background: rgba(245, 84, 75, .12);
    color: var(--sm-danger);
}

.sm-tip {
    font-size: 13px;
    color: var(--sm-text-3);
    margin-top: 10px;
}

.sm-copy {
    cursor: pointer;
    font-size: 12px;
    color: var(--sm-primary);
}/* ---------- 导航站点页 / 标签云 ---------- */
.sm-nav-page {
    margin-bottom: 26px;
}

.sm-nav-title {
    font-size: 17px;
    margin-bottom: 12px;
}

.sm-nav-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 12px;
}

.sm-nav-card {
    display: flex;
    gap: 10px;
    align-items: center;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    padding: 12px;
    transition: .2s;
}

.sm-nav-card:hover {
    border-color: var(--sm-primary);
    transform: translateY(-2px);
}

.sm-nav-card img {
    width: 34px;
    height: 34px;
    border-radius: var(--sm-radius-sm);
    flex: 0 0 34px;
    object-fit: cover;
}

.sm-nav-card b {
    display: block;
    font-size: 14px;
}

.sm-nav-card small {
    color: var(--sm-text-3);
    font-size: 12px;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* ---------- 授权页 ---------- */
.sm-auth {
    max-width: 560px;
    margin: 60px auto;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: 14px;
    padding: 36px;
    text-align: center;
    box-shadow: var(--sm-shadow);
}

.sm-auth h2 {
    margin-bottom: 10px;
}

.sm-auth .sm-ver {
    font-size: 12px;
    color: var(--sm-text-3);
    margin-top: 18px;
}
/* ---------- 404 ---------- */
.sm-404 {
    text-align: center;
    padding: 70px 20px;
}

.sm-404 h1 {
    font-size: 72px;
    margin-bottom: 10px;
    color: var(--sm-primary);
}/* v5.37.0：404 大字改渐变文字，配轻量光晕，死页也有设计感 */
.sm-404 h1 {
    background: linear-gradient(135deg, var(--sm-primary, #5b6cff) 0%, color-mix(in srgb, var(--sm-primary, #5b6cff) 45%, #ffffff) 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: var(--sm-primary);
    letter-spacing: 4px;
    line-height: 1.1;
}

.sm-404 > p {
    color: var(--sm-text-2, #5a607a);
    margin-bottom: 18px;
}








.sm-404 .sm-search-big {
    margin: 0 auto 22px;
}








.sm-404-act {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 10px;
}

.sm-404-more {
    margin-top: 34px;
    padding-top: 22px;
    border-top: 1px dashed var(--sm-border, #e8eaf2);
}

.sm-404-more-lb {
    display: block;
    font-size: 13px;
    color: var(--sm-text-3, #8a90a8);
    margin-bottom: 10px;
}

.sm-404-more ul {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px 18px;
}

.sm-404-more li a {
    font-size: 14px;
    color: var(--sm-text-2, #5a607a);
    text-decoration: none;
    transition: color .15s;
}

.sm-404-more li a:hover {
    color: var(--sm-primary, #5b6cff);
}@media (max-width: 782px) {
    .sm-404 {
        padding: 44px 14px;
    }

    .sm-404 h1 {
        font-size: 56px;
    }}
/* 暗色下渐变终点提亮，避免糊进背景 */
html.sm-dark .sm-404 h1,
body.sm-dark .sm-404 h1 {
    background: linear-gradient(135deg, var(--sm-primary, #5b6cff) 0%, color-mix(in srgb, var(--sm-primary, #5b6cff) 35%, #ffffff) 100%);
    -webkit-background-clip: text;
    background-clip: text;
}/* ---------- 后台 ---------- */
.sanmao-wrap {
    margin: 20px 20px 0 0;
}

.sanmao-meta-table th {
    text-align: left;
    width: 160px;
    padding: 12px 10px 12px 0;
    vertical-align: top;
}

.sanmao-meta-table td {
    padding: 8px 0;
}

.sm-down-row {
    display: flex;
    gap: 6px;
    margin-bottom: 6px;
    align-items: center;
}

.sm-down-row input {
    flex: 1;
}

.sm-down-del {
    color: var(--sm-danger);
    cursor: pointer;
    border: 1px solid var(--sm-border);
    background: #fff;
    border-radius: 5px;
    padding: 3px 8px;
}

.sm-img-field {
    display: flex;
    gap: 8px;
    align-items: center;
}

.sm-img-field img {
    max-height: 60px;
    border-radius: 6px;
}/* ---------- 响应式 ---------- */@media (max-width: 1100px) {
    .sm-grid {
        grid-template-columns: repeat(3, 1fr);
    }

    .sm-footer-widgets {
        grid-template-columns: repeat(2, 1fr);
    }}@media (max-width: 860px) {
    .sm-header-inner {
        flex-wrap: wrap;
        height: auto;
        padding: 10px 0;
    }

    .sm-nav {
        order: 3;
        width: 100%;
    }

    .sm-search input {
        width: 100%;
    }

    .sm-layout,
    .sm-user {
        flex-direction: column;
    }

    .sm-sidebar,
    .sm-user-side {
        width: 100%;
        flex: 1 1 auto;
    }

    .sm-grid {
        grid-template-columns: repeat(2, 1fr);
    }

    body {
        padding-bottom: 56px;
    }

    .sm-mobile-bar {
        display: flex;
    }}@media (max-width: 560px) {
    .sm-grid {
        grid-template-columns: 1fr;
    }

    .sm-footer-widgets {
        grid-template-columns: 1fr;
    }}

@media (max-width: 560px) {

    .sm-single-content,
    .sm-page-content,
    .sm-user-main {
        padding: 16px;
    }}/* ============================================================
 * 小工具 · 扩展样式（v5.0.1）
 * ============================================================ *//* 排行榜序号 */
.sm-w-rank .sm-w-num {
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    border-radius: 6px;
    background: var(--sm-bg);
    color: var(--sm-text-3);
    font-size: 11px;
    font-weight: 700;
    line-height: 20px;
    text-align: center;
    margin-top: 3px;
}

.sm-w-rank .sm-w-num.is-top {
    background: linear-gradient(135deg, #ff8a5c, #ff4d6d);
    color: #fff;
}

.sm-w-list .sm-w-meta {
    flex: none;
    font-size: 12px;
    color: var(--sm-text-3);
    white-space: nowrap;
}

.sm-w-empty {
    margin: 0;
    padding: 10px 0;
    font-size: 13px;
    color: var(--sm-text-3);
    text-align: center;
}/* 带缩略图列表 */
.sm-w-has-thumb li {
    align-items: flex-start;
    gap: 10px;
}

.sm-w-pic {
    flex: none;
    display: block;
}

.sm-w-info {
    flex: 1;
    min-width: 0;
}

.sm-w-info .sm-w-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    font-size: 14px;
}

.sm-w-sub {
    display: flex;
    gap: 10px;
    margin-top: 4px;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-w-sub .sm-w-price {
    color: var(--sm-primary);
    font-weight: 600;
}

.sm-w-sub .sm-w-free {
    color: var(--sm-ok);
}/* 分类宫格 */
.sm-w-cats-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.sm-w-cats-grid a {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 5px 12px;
    border-radius: 999px;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    font-size: 13px;
    transition: all .18s;
}

.sm-w-cats-grid a:hover {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}

.sm-w-cats-grid a i {
    font-style: normal;
    font-size: 11px;
    opacity: .65;
}

.sm-w-cats-grid a:hover i {
    opacity: 1;
}/* 会员卡片 */
.sm-w-author .sm-w-avatar {
    display: block;
}

.sm-w-expire {
    margin: 4px 0 0;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-w-coin {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 8px;
    padding: 3px 12px;
    border-radius: 999px;
    background: rgba(61, 110, 247, .1);
    color: var(--sm-primary);
    font-size: 13px;
    font-weight: 600;
}

.sm-w-btn {
    display: block;
    margin-top: 10px;
    padding: 8px 0;
    border-radius: 999px;
    background: var(--sm-primary);
    color: #fff;
    font-size: 13px;
    font-weight: 600;
    text-align: center;
    transition: filter .18s;
}

.sm-w-btn:hover {
    color: #fff;
    filter: brightness(1.08);
}/* 广告标识 */
.sm-w-ad {
    position: relative;
}

.sm-w-ad-label {
    display: inline-block;
    margin-bottom: 6px;
    padding: 1px 7px;
    border-radius: 4px;
    background: var(--sm-bg);
    color: var(--sm-text-3);
    font-size: 11px;
}/* 幻灯 */
.sm-w-slide {
    position: relative;
    overflow: hidden;
    border-radius: var(--sm-radius);
    background: var(--sm-bg);
}

.sm-w-slide-item {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    opacity: 0;
    transition: opacity .45s ease;
}

.sm-w-slide-item.is-on {
    position: relative;
    opacity: 1;
}/* v5.16.8：图片等比完整显示，只缩小不放大、居中、绝不裁切 */
.sm-w-slide-item img {
    display: block;
    max-width: 100%;
    max-height: 100%;
    width: auto;
    height: auto;
    border-radius: var(--sm-radius);
    margin: 0;
}

.sm-w-slide-prev,
.sm-w-slide-next {
    position: absolute;
    top: 50%;
    transform: translateY(-50%);
    width: 26px;
    height: 26px;
    border: none;
    border-radius: 50%;
    background: rgba(0, 0, 0, .35);
    color: #fff;
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}

.sm-w-slide-prev { left: 8px; }
.sm-w-slide-next { right: 8px; }/* 联系我们 */
.sm-w-contact {
    list-style: none;
    margin: 0;
    padding: 0;
    font-size: 13.5px;
}

.sm-w-contact li {
    display: flex;
    align-items: center;
    gap: 6px;
    padding: 5px 0;
    color: var(--sm-text-2);
}

.sm-w-contact .dashicons {
    font-size: 15px;
    width: 15px;
    height: 15px;
    color: var(--sm-primary);
}

.sm-w-note {
    margin: 8px 0 0;
    font-size: 12.5px;
    color: var(--sm-text-3);
}/* 搜索 */
.sm-w-search {
    display: flex;
    gap: 6px;
}

.sm-w-search input {
    flex: 1;
    min-width: 0;
    padding: 8px 12px;
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    background: var(--sm-bg);
    font-size: 13px;
    color: var(--sm-text);
}

.sm-w-search input:focus {
    outline: none;
    border-color: var(--sm-primary);
    background: var(--sm-card);
}

.sm-w-search button {
    flex: none;
    width: 38px;
    border: none;
    border-radius: 999px;
    background: var(--sm-primary);
    color: #fff;
    cursor: pointer;
}

.sm-w-hotwords {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-top: 10px;
}

.sm-w-hotwords a {
    padding: 2px 10px;
    border-radius: 999px;
    background: var(--sm-bg);
    font-size: 12px;
    color: var(--sm-text-2);
}/* 站点统计 */
.sm-w-stats.is-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}

.sm-w-stats.is-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.sm-w-stat {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 2px;
    padding: 10px 6px;
    border-radius: 10px;
    background: var(--sm-bg);
}

.sm-w-stats.is-list .sm-w-stat {
    flex-direction: row;
    justify-content: space-between;
    padding: 8px 12px;
}

.sm-w-stat .dashicons {
    color: var(--sm-primary);
    font-size: 16px;
    width: 16px;
    height: 16px;
}

.sm-w-stat b {
    font-size: 17px;
    line-height: 1.2;
}

.sm-w-stat i {
    font-style: normal;
    font-size: 11.5px;
    color: var(--sm-text-3);
}/* VIP 卡 */
.sm-w-vip {
    padding: 18px 16px;
    border-radius: var(--sm-radius);
    background: linear-gradient(135deg, var(--sm-gold-2), var(--sm-gold));
    background-size: cover;
    background-position: center;
    color: #4a3116;
    text-align: center;
    position: relative;
    overflow: hidden;
}

.sm-w-vip::after {
    content: "";
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, .18);
    pointer-events: none;
}

.sm-w-vip-desc {
    position: relative;
    z-index: 1;
    margin: 0 0 12px;
    font-size: 14px;
    font-weight: 600;
}

.sm-w-vip-btn {
    position: relative;
    z-index: 1;
    display: inline-block;
    padding: 8px 26px;
    border-radius: 999px;
    background: #4a3116;
    color: #fff;
    font-size: 13px;
    font-weight: 600;
}

.sm-w-vip-btn:hover {
    color: #fff;
    filter: brightness(1.15);
}

.sm-w-vip-ok {
    position: relative;
    z-index: 1;
    font-size: 12.5px;
    font-weight: 600;
}/* 最新评论 */
.sm-w-comments {
    list-style: none;
    margin: 0;
    padding: 0;
}

.sm-w-comments li {
    display: flex;
    gap: 8px;
    padding: 8px 0;
    border-bottom: 1px dashed var(--sm-border);
}

.sm-w-comments li:last-child {
    border-bottom: 0;
}

.sm-w-cavatar {
    flex: none;
    width: 30px;
    height: 30px;
    border-radius: 50%;
}

.sm-w-cbody {
    flex: 1;
    min-width: 0;
    font-size: 13px;
    line-height: 1.5;
}

.sm-w-cbody b {
    display: block;
    font-size: 12px;
    color: var(--sm-text-3);
    font-weight: 500;
}

.sm-w-cbody a {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}/* 推广邀请 */
.sm-w-aff p {
    margin: 0 0 8px;
    font-size: 13px;
    color: var(--sm-text-2);
}

.sm-w-aff-rate {
    margin-bottom: 8px;
    font-size: 18px;
    font-weight: 700;
    color: var(--sm-primary);
}

.sm-w-aff-link input {
    width: 100%;
    padding: 6px 10px;
    border: 1px dashed var(--sm-border);
    border-radius: var(--sm-radius-sm);
    background: var(--sm-bg);
    font-size: 12px;
    color: var(--sm-text-2);
}/* 二维码 */
.sm-w-qr {
    text-align: center;
}

.sm-w-qr img {
    width: 150px;
    height: 150px;
    object-fit: contain;
    border-radius: 10px;
    background: #fff;
    padding: 6px;
}

.sm-w-qr p {
    margin: 8px 0 0;
    font-size: 12.5px;
    color: var(--sm-text-3);
}/* 自定义 HTML */
.sm-w-html {
    font-size: 13.5px;
    line-height: 1.75;
    color: var(--sm-text-2);
}

.sm-w-html img {
    max-width: 100%;
    height: auto;
    border-radius: var(--sm-radius-sm);
}/* ===== VIP 介绍页短代码 [sanmao_vip] ===== */
.sm-vip-page {
    padding: 4px 0;
}

.sm-vip-page .sm-pkg {
    display: flex;
    flex-direction: column;
    gap: 6px;
}

.sm-pkg-price {
    display: block;
    font-size: 22px;
    font-weight: 700;
    color: var(--sm-vip);
    line-height: 1.2;
}

.sm-vip-page .sm-pkg .sm-btn {
    margin-top: 6px;
}/* ===== 未授权提示条 ===== */
.sm-license-bar a {
    font-weight: 600;
}/* ===== 首页 / 侧边栏模块（拖拽布局） ===== */
.sm-mod {
    margin-bottom: 22px;
}

.sm-empty {
    color: var(--sm-text-3);
    padding: 28px 0;
    text-align: center;
}/* 搜索横幅 */
.sm-search-banner {
    /* v5.2.2：--sm-banner-a / --sm-banner-b 支持后台「横幅配色」切换，缺省跟随主题色 */
    background: linear-gradient(120deg, var(--sm-banner-a, var(--sm-primary)), var(--sm-banner-b, var(--sm-vip, #8a5bff)));
    color: #fff;
    border-radius: var(--sm-radius);
    padding: 34px 28px;
    text-align: center;
    margin-bottom: 22px;
}
.sm-search-banner h2 {
    margin: 0 0 6px;
    font-size: 24px;
}
.sm-search-banner p {
    margin: 0 0 18px;
    opacity: .85;
}/* v5.20.0：form 必须显式占满一行 —— 超大气 / 自定义高度档的横幅是 flex 纵向容器，
   子元素带 margin:0 auto 时会收缩成「内容宽度」，输入框被压回浏览器默认的
   二十来个字符宽（约 250px），max-width:940px 形同虚设；补 width:100% 后
   max-width 才真正参与定宽，输入框才能拉到横幅该有的气势 */
.sm-search-form {
    display: flex;
    gap: 8px;
    width: 100%;
    max-width: 560px;
    margin: 0 auto;
}
.sm-search-form input {
    flex: 1;
    border: 0;
    border-radius: 999px;
    padding: 0 18px;
    height: 46px;
    font-size: 15px;
}
.sm-search-form button {
    border: 0;
    border-radius: 999px;
    padding: 0 26px;
    height: 46px;
    background: #fff;
    color: var(--sm-primary);
    font-weight: 700;
    cursor: pointer;
}
.sm-search-hot {
    margin-top: 14px;
    font-size: 13px;
    opacity: .9;
}
.sm-search-hot a {
    display: inline-block;
    margin: 0 4px;
    color: #fff;
    text-decoration: none;
    padding: 2px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .16);
}

/* 排行榜 */
.sm-rank {
    list-style: none;
    margin: 0;
    padding: 0;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 10px 14px;
    counter-reset: rk;
}
.sm-rank li {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 0;
    border-bottom: 1px dashed var(--sm-border);
    font-size: 14px;
}
.sm-rank li:last-child {
    border-bottom: 0;
}
.sm-rank-no {
    flex: 0 0 24px;
    height: 24px;
    line-height: 24px;
    text-align: center;
    border-radius: 6px;
    font-weight: 700;
    font-size: 13px;
    background: var(--sm-bg);
    color: var(--sm-text-3);
}
.sm-rank-top {
    background: linear-gradient(var(--sm-grad-angle, 120deg), var(--sm-primary), var(--sm-vip, #8a5bff));
    color: #fff;
}
.sm-rank li a {
    flex: 1;
    min-width: 0;
    color: var(--sm-text);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.sm-rank li em {
    font-style: normal;
    color: var(--sm-text-3);
    font-size: 12px;
}










.sm-link {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    padding: 6px 16px;
    text-decoration: none;
    color: var(--sm-text);
    font-size: 13px;
    transition: .2s;
}
.sm-link:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}/* 模块内广告 / 自定义 HTML */
.sm-mod-ad,
.sm-mod-html {
    margin-bottom: 4px;
}/* ===== 侧边栏模块 ===== */
.sm-side-mod {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 16px;
    margin-bottom: 18px;
    /* v5.26.0：卡片加一层极浅投影，与内容区主卡片拉开层次 */
    box-shadow: var(--sm-shadow-sm);
}
.sm-side-hd {
    font-size: 15px;
    font-weight: 700;
    margin: 0 0 12px;
    padding-bottom: 10px;
    border-bottom: 1px solid var(--sm-border);
    position: relative;
}
.sm-side-hd::before {
    content: "";
    position: absolute;
    left: 0;
    bottom: -1px;
    width: 36px;
    height: 2px;
    background: var(--sm-primary);
    border-radius: 2px;
}
.sm-side-list {
    list-style: none;
    margin: 0;
    padding: 0;
    /* v5.26.0：CSS 计数器驱动的榜单序号 —— 金银铜牌前三 + 灰底普通序号 */
    counter-reset: smrk;
}
.sm-side-list li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 0;
    border-bottom: 1px dashed var(--sm-border);
    font-size: 14px;
    counter-increment: smrk;
}
.sm-side-list li:last-child {
    border-bottom: 0;
}
.sm-side-list li::before {
    content: counter(smrk);
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
    border-radius: 6px;
    background: var(--sm-bg-soft, #eef1f8);
    color: var(--sm-text-3);
    font-size: 12px;
    font-weight: 700;
    font-style: normal;
    line-height: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.sm-side-list li:nth-child(1)::before {
    background: linear-gradient(135deg, #ffb24d, #ff7a3c);
    color: #fff;
}
.sm-side-list li:nth-child(2)::before {
    background: linear-gradient(135deg, #c3cddf, #93a0b8);
    color: #fff;
}
.sm-side-list li:nth-child(3)::before {
    background: linear-gradient(135deg, #e5a374, #c07a4b);
    color: #fff;
}
.sm-side-list li a {
    flex: 1 1 auto;
    min-width: 0;
    color: var(--sm-text);
    text-decoration: none;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: color .15s;
}
.sm-side-list li a:hover {
    color: var(--sm-primary);
}
.sm-side-list li em {
    font-style: normal;
    color: var(--sm-text-3);
    font-size: 12px;
    flex: 0 0 auto;
}
.sm-side-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
}
.sm-side-tags a {
    font-size: 12px !important;
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--sm-bg);
    color: var(--sm-text-2);
    text-decoration: none;
    transition: background .15s, color .15s, transform .15s, box-shadow .15s;
}
.sm-side-tags a:hover {
    background: var(--sm-primary);
    color: #fff;
    transform: translateY(-1px);
    box-shadow: 0 3px 8px color-mix(in srgb, var(--sm-primary) 30%, transparent);
}
.sm-side-author {
    text-align: center;
    /* v5.26.0：顶部渐变薄雾衬托头像区，卡片不再是「一张白纸」 */
    position: relative;
    overflow: hidden;
    border-radius: var(--sm-radius-sm, 8px);
    background: linear-gradient(180deg,
        color-mix(in srgb, var(--sm-primary) 9%, transparent),
        transparent 62%);
    padding: 18px 6px 2px;
}
.sm-side-author img {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    margin: 0 auto 8px;
    box-shadow: 0 4px 14px rgba(0, 0, 0, .12), 0 0 0 3px #fff;
    position: relative;
}
.sm-side-author b {
    display: block;
    font-size: 16px;
    color: var(--sm-text);
}
.sm-side-author .sm-side-author-role {
    display: inline-block;
    margin: 5px auto 0;
    font-size: 11px;
    color: #fff;
    background: linear-gradient(120deg, var(--sm-primary), var(--sm-vip, #8a5bff));
    padding: 1px 10px;
    border-radius: 999px;
}
.sm-side-author .sm-side-author-desc {
    color: var(--sm-text-3);
    font-size: 12px;
    line-height: 1.6;
    margin: 10px 0 0;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.sm-side-author .sm-side-author-stat {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-top: 12px;
}
.sm-side-author .sm-side-author-stat > span {
    font-size: 12px;
    color: var(--sm-text-3);
}
.sm-side-author .sm-side-author-stat > span b {
    color: var(--sm-text);
    font-size: 15px;
    margin-right: 3px;
}
.sm-side-author .sm-side-author-link {
    font-size: 12px;
    color: var(--sm-primary);
    text-decoration: none;
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    padding: 3px 12px;
    transition: background .15s, color .15s, border-color .15s;
}
.sm-side-author .sm-side-author-link:hover {
    background: var(--sm-primary);
    color: #fff;
    border-color: var(--sm-primary);
}
.sm-side-contact .sm-side-wx {
    width: 120px;
    border-radius: var(--sm-radius-sm);
    border: 1px solid var(--sm-border);
    display: block;
    margin: 0 auto 10px;
}
.sm-side-contact p {
    margin: 4px 0;
    font-size: 14px;
}
.sm-side-comment {
    list-style: none;
    margin: 0;
    padding: 0;
}
.sm-side-comment li {
    padding: 8px 0;
    border-bottom: 1px dashed var(--sm-border);
    font-size: 13px;
    color: var(--sm-text-2);
}
.sm-side-comment li b {
    color: var(--sm-text);
}
.sm-side-comment li:last-child {
    border-bottom: 0;
}
.sm-side-comment li b {
    transition: color .15s;
}
.sm-side-comment li:hover b {
    color: var(--sm-primary);
}/* v5.22.0：新增侧栏模块 —— 分类导航 / 搜索框 */
.sm-side-cat {
    list-style: none;
    margin: 0;
    padding: 0;
}
.sm-side-cat li {
    padding: 7px 0;
    border-bottom: 1px dashed var(--sm-border);
}
.sm-side-cat li:last-child {
    border-bottom: 0;
}
.sm-side-cat a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    color: var(--sm-text);
    text-decoration: none;
    font-size: 14px;
    transition: color .15s, padding-left .15s;
}
.sm-side-cat a:hover {
    color: var(--sm-primary);
    padding-left: 4px;
}
.sm-side-cat em {
    font-style: normal;
    font-size: 12px;
    color: var(--sm-text-3);
    background: var(--sm-bg);
    border-radius: 999px;
    padding: 1px 8px;
    flex: 0 0 auto;
}
.sm-side-search {
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    padding: 4px 4px 4px 14px;
    transition: border-color .15s, box-shadow .15s;
}
.sm-side-search:focus-within {
    border-color: var(--sm-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--sm-primary) 15%, transparent);
}
.sm-side-search input {
    flex: 1;
    min-width: 0;
    border: 0;
    background: transparent;
    outline: none;
    font-size: 14px;
    color: var(--sm-text);
}
.sm-side-search button {
    flex: 0 0 auto;
    width: 32px;
    height: 32px;
    border: 0;
    border-radius: 50%;
    background: var(--sm-primary);
    color: #fff;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    transition: filter .15s, transform .15s;
}
.sm-side-search button:hover {
    filter: brightness(1.08);
}
.sm-side-search button:active {
    transform: scale(.94);
}
.sm-side-search .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
}/* v5.25.0：新增侧栏模块 —— 最新资源（缩略图卡片列表） */
.sm-side-dl {
    list-style: none;
    margin: 0;
    padding: 0;
}
.sm-side-dl li {
    display: flex;
    gap: 10px;
    padding: 9px 0;
    border-bottom: 1px dashed var(--sm-border);
}
.sm-side-dl li:last-child {
    border-bottom: 0;
    padding-bottom: 0;
}
.sm-side-dl .thumb {
    flex: 0 0 auto;
    width: 60px;
    height: 60px;
    border-radius: var(--sm-radius-sm, 8px);
    overflow: hidden;
    background: var(--sm-bg);
    display: block;
    position: relative;
}
.sm-side-dl .thumb img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: transform .25s;
}
.sm-side-dl .thumb .sm-side-dl-ph {
    display: block;
    width: 100%;
    height: 100%;
    background: linear-gradient(135deg, var(--sm-bg), var(--sm-bg-soft, #f0f0f5));
}/* 缩略图底部压暗渐层，强化“资源”观感（v5.23 风格延续；v5.26 减淡避免发闷） */
.sm-side-dl .thumb::after {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 32%;
    background: linear-gradient(transparent, rgba(0, 0, 0, .16));
    pointer-events: none;
}
.sm-side-dl li:hover .thumb img {
    transform: scale(1.06);
}
.sm-side-dl .info {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}
.sm-side-dl .info .t {
    color: var(--sm-text);
    text-decoration: none;
    font-size: 14px;
    line-height: 1.4;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    transition: color .15s;
}
.sm-side-dl li:hover .info .t {
    color: var(--sm-primary);
}
.sm-side-dl .meta {
    margin-top: auto;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    font-size: 12px;
}
.sm-side-dl .price {
    color: var(--sm-price, #ff5722);
    font-weight: 700;
}
.sm-side-dl .price.free {
    color: var(--sm-vip, #8a5bff);
}
.sm-side-dl .dl {
    font-style: normal;
    color: var(--sm-text-3);
    display: inline-flex;
    align-items: center;
    gap: 3px;
    flex: 0 0 auto;
}
.sm-side-dl .dl .dashicons {
    font-size: 14px;
    width: 14px;
    height: 14px;
}

body.sm-ui-modern .sm-side-dl li:hover .info .t {
    color: var(--sm-primary);
}








.sm-login-tip {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 18px;
    text-align: center;
    color: var(--sm-text-2);
}
.sm-login-tip a {
    color: var(--sm-primary);
    font-weight: 600;
}








.sm-tk-item.admin .sm-tk-body {
    background: var(--sm-bg);
    border-radius: var(--sm-radius-sm);
    padding: 10px 12px;
}
.sm-table {
    width: 100%;
    border-collapse: collapse;
    background: var(--sm-card);
    border-radius: var(--sm-radius);
    overflow: hidden;
}
.sm-table th,
.sm-table td {
    padding: 10px 12px;
    border-bottom: 1px solid var(--sm-border);
    font-size: 14px;
    text-align: left;
}
.sm-table th {
    background: var(--sm-bg);
    font-weight: 600;
}
.sm-table a {
    color: var(--sm-primary);
    text-decoration: none;
}/* ===== 作者归档头部 ===== */
.sm-author-head {
    display: flex;
    align-items: center;
    gap: 18px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 20px;
    margin-bottom: 20px;
}
.sm-author-avatar {
    width: 72px;
    height: 72px;
    border-radius: 50%;
    flex: 0 0 72px;
}
.sm-author-meta h1 {
    margin: 0 0 4px;
    font-size: 20px;
}
.sm-author-meta p {
    margin: 4px 0 0;
    color: var(--sm-text-2);
    font-size: 14px;
}
.sm-author-sub {
    color: var(--sm-text-3) !important;
    font-size: 13px !important;
}/* ==============================================================
 * 内容互动：点赞 / 收藏 / 分享
 * ============================================================== */
.sm-post-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin: 22px 0 6px;
}

.sm-act {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 16px;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: 999px;
    background: var(--sm-card, #fff);
    color: var(--sm-text-2, #5a607a);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all .18s ease;
}

.sm-act .sm-act-ic {
    display: inline-flex;
    line-height: 0;
}

.sm-act .sm-act-num {
    font-style: normal;
    font-size: 12px;
    opacity: .7;
}

.sm-act:hover {
    border-color: var(--sm-primary, #5b6cff);
    color: var(--sm-primary, #5b6cff);
}

.sm-act.is-on {
    background: var(--sm-primary, #5b6cff);
    border-color: var(--sm-primary, #5b6cff);
    color: #fff;
    box-shadow: 0 4px 12px color-mix(in srgb, var(--sm-primary, #5b6cff) 28%, transparent);
}

.sm-act.is-on .sm-act-num {
    opacity: .9;
}

.sm-share-pop {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 10px;
    padding: 12px 14px;
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-bg, #f5f7fb);
    font-size: 12px;
}

.sm-share-pop a {
    padding: 4px 10px;
    border-radius: 999px;
    background: #fff;
    color: var(--sm-text-2, #5a607a);
    text-decoration: none;
}/* ==============================================================
 * v5.36.6：星级评分
 * ============================================================== */
.sm-rate {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin: 0 0 22px;
    padding: 12px 16px;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-card, #fff);
}

.sm-rate-lb {
    font-size: 13px;
    font-weight: 600;
    color: var(--sm-text-2, #5a607a);
}

.sm-rate-stars {
    display: inline-flex;
    gap: 2px;
}

.sm-rate-star {
    padding: 0 2px;
    border: 0;
    background: none;
    color: var(--sm-border, #d5d9e8);
    font-size: 22px;
    line-height: 1;
    cursor: pointer;
    transition: color .15s, transform .15s;
}

.sm-rate-star:hover {
    transform: scale(1.15);
}

.sm-rate-star.is-on {
    color: #f5a623;
}

.sm-rate-star.is-mine {
    text-shadow: 0 0 8px color-mix(in srgb, #f5a623 45%, transparent);
}

.sm-rate-star:disabled {
    cursor: default;
    opacity: .6;
    transform: none;
}

.sm-rate-info {
    display: inline-flex;
    align-items: baseline;
    gap: 6px;
    font-size: 12px;
    color: var(--sm-text-3, #8a90a8);
}

.sm-rate-avg {
    font-size: 16px;
    font-weight: 700;
    color: #f5a623;
}/* 列表卡迷你评分 */
.sm-rate-mini {
    color: #f5a623;
    font-weight: 600;
    white-space: nowrap;
}

html.sm-dark .sm-rate,
body.sm-dark .sm-rate {
    background: var(--sm-card, #1e2230);
}

html.sm-dark .sm-rate-star,
body.sm-dark .sm-rate-star {
    color: var(--sm-border, #3a4159);
}/* v5.37.0：hover 预览——预览期间先清空原有点亮，再按悬停星数点亮 */
.sm-rate.is-previewing .sm-rate-star {
    color: var(--sm-border, #d5d9e8);
}

.sm-rate.is-previewing .sm-rate-star.is-preview {
    color: #f5a623;
    transform: scale(1.15);
}

html.sm-dark .sm-rate.is-previewing .sm-rate-star,
body.sm-dark .sm-rate.is-previewing .sm-rate-star {
    color: var(--sm-border, #3a4159);
}/* v5.37.0：移动端触控友好——星星加大、点选区域增高 */@media (max-width: 782px) {
    .sm-rate {
        gap: 8px;
        padding: 10px 12px;
        margin-bottom: 16px;
    }

    .sm-rate-stars {
        gap: 4px;
    }

    .sm-rate-star {
        font-size: 28px;
        padding: 4px;
    }}/* ==============================================================
 * 隐藏内容短代码
 * ============================================================== */
.sm-hide {
    margin: 18px 0;
}

.sm-hide.is-open {
    padding: 14px 18px;
    border: 1px dashed var(--sm-border, #e8eaf2);
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-card, #fff);
}

.sm-hide-lock {
    padding: 26px 20px;
    border: 1px dashed var(--sm-primary, #5b6cff);
    border-radius: var(--sm-radius, 12px);
    background: linear-gradient(180deg, color-mix(in srgb, var(--sm-primary, #5b6cff) 5%, transparent), color-mix(in srgb, var(--sm-primary, #5b6cff) 2%, transparent));
    text-align: center;
}

.sm-hide-ic {
    font-size: 26px;
    line-height: 1;
}

.sm-hide-lock p {
    margin: 10px 0 0;
    font-size: 14px;
    color: var(--sm-text, #1a1d29);
}

.sm-hide-sub {
    font-size: 13px;
    color: var(--sm-text-2, #5a607a);
}

.sm-hide-btns {
    display: flex;
    gap: 10px;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 14px;
}

.sm-hide-form {
    display: flex;
    gap: 8px;
    justify-content: center;
    flex-wrap: wrap;
    margin-top: 14px;
}

.sm-hide-input {
    padding: 8px 14px;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: 999px;
    background: #fff;
    min-width: 180px;
}

.sm-hide-msg {
    margin-top: 10px;
    font-size: 13px;
    color: var(--sm-danger, #ff5a5f);
}/* ==============================================================
 * 排版组件短代码
 * ============================================================== */
.sm-btn-lg {
    padding: 12px 28px;
    font-size: 15px;
}

.sm-btn-danger {
    background: var(--sm-danger, #ff5a5f);
    border-color: var(--sm-danger, #ff5a5f);
    color: #fff;
}

.sm-btn-ghost {
    background: transparent;
    border-color: var(--sm-border, #e8eaf2);
    color: var(--sm-text-2, #5a607a);
}

.sm-btn-ic {
    margin-right: 4px;
}



.sm-video {
    position: relative;
    margin: 18px 0;
    border-radius: var(--sm-radius, 12px);
    overflow: hidden;
    background: #000;
}

.sm-video video {
    display: block;
    width: 100%;
    max-height: 520px;
}



.sm-video-iframe {
    padding-top: 56.25%;
    height: 0;
}

.sm-video-iframe iframe {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    border: 0;
}

.sm-alert {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin: 18px 0;
    padding: 14px 18px;
    border-left: 4px solid var(--sm-primary, #5b6cff);
    border-radius: 0 var(--sm-radius, 12px) var(--sm-radius, 12px) 0;
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 7%, transparent);
    font-size: 14px;
}

.sm-alert-title {
    font-size: 14px;
    font-weight: 700;
}

.sm-alert-ok { border-left-color: #16c79a; background: rgba(22, 199, 154, .09); }
.sm-alert-warn { border-left-color: #ffb020; background: rgba(255, 176, 32, .1); }
.sm-alert-err { border-left-color: #ff5a5f; background: rgba(255, 90, 95, .09); }

.sm-fold,
.sm-acc-item {
    margin: 14px 0;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-card, #fff);
    overflow: hidden;
}

.sm-fold summary,
.sm-acc-item summary {
    padding: 12px 18px;
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    list-style: none;
}

.sm-fold summary::-webkit-details-marker,
.sm-acc-item summary::-webkit-details-marker {
    display: none;
}

.sm-fold summary::before,
.sm-acc-item summary::before {
    content: "▸";
    display: inline-block;
    margin-right: 8px;
    color: var(--sm-primary, #5b6cff);
    transition: transform .18s ease;
}

.sm-fold[open] summary::before,
.sm-acc-item[open] summary::before {
    transform: rotate(90deg);
}

.sm-fold-bd,
.sm-acc-bd {
    padding: 4px 18px 16px;
    font-size: 14px;
}



.sm-tabs {
    margin: 18px 0;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-card, #fff);
    overflow: hidden;
}










.sm-tabs-nav button.is-on {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 10%, transparent);
    color: var(--sm-primary, #5b6cff);
}

.sm-tab-pane {
    display: none;
    padding: 14px 18px;
    font-size: 14px;
}

.sm-tab-pane.is-on {
    display: block;
}

.sm-panel {
    margin: 18px 0;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-card, #fff);
    overflow: hidden;
}

.sm-panel-hd {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 12px 18px;
    border-bottom: 1px solid var(--sm-border, #e8eaf2);
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 4%, transparent);
    font-size: 14px;
    font-weight: 700;
}

.sm-panel-bd {
    padding: 14px 18px;
    font-size: 14px;
}



.sm-progress {
    position: relative;
    height: 26px;
    margin: 16px 0;
    border-radius: 999px;
    background: var(--sm-bg, #f0f2f8);
    overflow: hidden;
}



.sm-progress-fill {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(135deg, var(--sm-primary, #5b6cff), var(--sm-vip, #8a5bff));
    transition: width .4s ease;
}

.sm-progress-txt {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--sm-text, #1a1d29);
}

.sm-note {
    margin: 18px 0;
    padding: 12px 18px;
    border-left: 4px solid var(--sm-primary, #5b6cff);
    border-radius: 0 var(--sm-radius, 12px) var(--sm-radius, 12px) 0;
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 6%, transparent);
    font-size: 14px;
}

.sm-note-warn {
    border-left-color: #ffb020;
    background: rgba(255, 176, 32, .1);
}/* 打赏 */
.sm-reward {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 10px;
    padding: 12px 14px;
    border-radius: var(--sm-radius, 12px);
    background: var(--sm-bg, #f5f7fb);
}

.sm-reward p {
    margin: 0 4px 0 0;
    font-size: 13px;
    color: var(--sm-text-2, #5a607a);
}

.sm-reward-item {
    padding: 6px 16px;
    border: 1px solid var(--sm-border, #e8eaf2);
    border-radius: 999px;
    background: #fff;
    color: var(--sm-primary, #5b6cff);
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: all .18s ease;
}

.sm-reward-item:hover {
    background: var(--sm-primary, #5b6cff);
    border-color: var(--sm-primary, #5b6cff);
    color: #fff;
}/* ==============================================================
 * 页面布局模块（分类型配置后的前台样式）
 * ============================================================== *//* 区块标题 + 查看更多 */
.sm-sec-hd {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 12px;
}
.sm-sec-title {
    margin: 0;
    font-size: 20px;
    display: flex;
    align-items: baseline;
    gap: 8px;
}
.sm-sec-title small {
    font-size: 12px;
    font-weight: 400;
    color: var(--sm-text-3);
}
.sm-sec-more {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-size: 13px;
    color: var(--sm-text-3);
    text-decoration: none;
    white-space: nowrap;
}
.sm-sec-more:hover {
    color: var(--sm-primary);
}
.sm-sec-more .dashicons {
    font-size: 15px;
    width: 15px;
    height: 15px;
}/* 图文列表 / 紧凑列表 */
.sm-post-list,
.sm-post-mini {
    list-style: none;
    margin: 0;
    padding: 0;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    overflow: hidden;
}
.sm-post-list li,
.sm-post-mini li {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    border-bottom: 1px solid var(--sm-border);
}
.sm-post-list li:last-child,
.sm-post-mini li:last-child {
    border-bottom: 0;
}









.sm-post-list li.is-top .sm-pl-no,
.sm-post-mini li.is-top .sm-pl-no {
    background: linear-gradient(var(--sm-grad-angle, 120deg), var(--sm-primary), var(--sm-vip, #8a5bff));
    color: #fff;
}









.sm-post-mini .sm-pl-thumb {
    flex: 0 0 60px;
    height: 42px;
}









.sm-post-mini .sm-pl-meta {
    display: none;
}









.sm-slider-item.is-on {
    opacity: 1;
    z-index: 2;
}









.sm-slider-dots i.is-on {
    background: #fff;
    width: 18px;
    border-radius: 999px;
}/* 分类卡片：支持 2~6 列 */
.sm-catbox-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sm-catbox-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sm-catbox-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sm-catbox-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.sm-catbox-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }/* 网站统计列数 *//* v5.17.0：补 2 列（此前后台能选却没有对应样式） */
.sm-stat-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sm-stat-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sm-stat-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sm-stat-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.sm-stat-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }/* VIP 套餐块 */
.sm-vip-block {
    display: grid;
    gap: 14px;
}
.sm-vip-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sm-vip-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sm-vip-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }/* v5.17.0：后台「每行个数」可选到 8，此前 5 列以上没有任何样式（选了等于没选） */
.sm-vip-cols-5 { grid-template-columns: repeat(5, minmax(0, 1fr)); }
.sm-vip-cols-6 { grid-template-columns: repeat(6, minmax(0, 1fr)); }
.sm-vip-cols-7 { grid-template-columns: repeat(7, minmax(0, 1fr)); }
.sm-vip-cols-8 { grid-template-columns: repeat(8, minmax(0, 1fr)); }
.sm-vip-pkg {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 18px;
    text-align: center;
    transition: .2s;
}
.sm-vip-pkg:hover {
    border-color: var(--sm-primary);
    box-shadow: var(--sm-shadow);
    transform: translateY(-3px);
}
.sm-vip-pkg b {
    display: block;
    font-size: 16px;
    margin-bottom: 8px;
}
.sm-vip-price {
    font-size: 26px;
    font-weight: 700;
    color: var(--sm-gold, #e0a44b);
}
.sm-vip-price s {
    display: block;
    font-size: 12px;
    font-weight: 400;
    color: var(--sm-text-3);
}
.sm-vip-pkg p {
    margin: 8px 0 14px;
    font-size: 12.5px;
    color: var(--sm-text-3);
    min-height: 34px;
}/* 标签云 */
.sm-tag-cloud {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}/* v5.17.0：指定「每行标签数」后，从自然流式排版切换为等宽网格 */
.sm-tag-cloud.is-grid {
    display: grid;
    gap: 8px;
}
.sm-tag-cloud.is-grid a {
    justify-content: center;
    text-align: center;
}
.sm-tag-cloud a {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 5px 12px;
    border-radius: 999px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    color: var(--sm-text-2, var(--sm-text));
    text-decoration: none;
    transition: .18s;
}
.sm-tag-cloud a:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}
.sm-tag-cloud a em {
    font-style: normal;
    font-size: 11px;
    color: var(--sm-text-3);
}

/* 搜索横幅尺寸 */
.sm-search-banner.is-sm {
    padding: 22px 20px;
}
.sm-search-banner.is-sm h2 {
    font-size: 19px;
}
.sm-search-banner.is-lg {
    padding: 54px 28px;
}
.sm-search-banner.is-lg h2 {
    font-size: 30px;
}/* v5.20.0：大气档搜索框同步拉宽（保持 超大气 1060 > 自定义 860 > 大气 760 的层级感） */
.sm-search-banner.is-lg .sm-search-form {
    max-width: 760px;
}
.sm-search-banner.is-lg .sm-search-form input,
.sm-search-banner.is-lg .sm-search-form button {
    height: 52px;
    font-size: 16px;
}/* v5.6.0：超大气重排 —— 整体抬高、搜索框拉宽、标题 / 说明 / 搜索框三段之间拉开呼吸感，
   避免「字很大但挤成一团」的观感。
   v5.20.0：二次重排 —— ① 输入框 940 → 1060px、加高到 64px、字号加大，气势拉满；
   ② 所有子元素显式水平居中（flex 纵向容器 + align-items:center，双保险）。 */
.sm-search-banner.is-xxl {
    min-height: 620px;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 96px 40px;
    border-radius: calc(var(--sm-radius) + 6px);
}
.sm-search-banner.is-xxl h2 {
    margin: 0 0 22px;
    font-size: 46px;
    font-weight: 800;
    line-height: 1.24;
    letter-spacing: .5px;
    text-align: center;
}
.sm-search-banner.is-xxl p {
    max-width: 760px;
    margin: 0 auto 50px;
    font-size: 18px;
    line-height: 1.75;
    text-align: center;
}
.sm-search-banner.is-xxl .sm-search-form {
    max-width: 1060px;
    gap: 14px;
}
.sm-search-banner.is-xxl .sm-search-form input,
.sm-search-banner.is-xxl .sm-search-form button {
    height: 64px;
    font-size: 17px;
}
.sm-search-banner.is-xxl .sm-search-form input {
    padding: 0 32px;
}
.sm-search-banner.is-xxl .sm-search-form button {
    padding: 0 52px;
    font-size: 18px;
    letter-spacing: 2px;
}
.sm-search-banner.is-xxl .sm-search-hot,
.sm-search-banner.is-xxl .sm-search-count {
    margin-top: 30px;
    font-size: 14px;
    text-align: center;
}/* v5.4.0：自定义高度 —— 用 --sm-banner-h 撑起整块，内容垂直居中 */
.sm-search-banner.is-custom {
    min-height: var(--sm-banner-h, 420px);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: 40px 28px;
}
.sm-search-banner.is-custom h2 {
    font-size: 32px;
    margin: 0 0 16px;
}/* v5.6.0：自定义高度同样把搜索框拉宽，和超大气保持一致的呼吸感 */
.sm-search-banner.is-custom .sm-search-form {
    max-width: 860px;
}
.sm-search-banner.is-custom .sm-search-form input,
.sm-search-banner.is-custom .sm-search-form button {
    height: 54px;
}/* 手机上自定义高度不再死板，改回内容自适应，保证搜索框永远看得见 */@media (max-width: 782px) {
    .sm-search-banner.is-custom {
        min-height: 0;
    }
    .sm-search-banner.is-xxl {
        min-height: 470px;
        padding: 64px 20px;
    }
    .sm-search-banner.is-xxl h2 {
        margin-bottom: 14px;
        font-size: 30px;
    }
    .sm-search-banner.is-xxl p {
        margin: 0 auto 30px;
        font-size: 15px;
    }
    .sm-search-banner.is-xxl .sm-search-form input,
    .sm-search-banner.is-xxl .sm-search-form button {
        height: 50px;
        font-size: 15px;
    }
    .sm-search-banner.is-xxl .sm-search-form input {
        padding: 0 18px;
    }
    .sm-search-banner.is-xxl .sm-search-form button {
        padding: 0 26px;
        font-size: 15px;
    }
    .sm-search-banner.is-xxl .sm-search-hot,
    .sm-search-banner.is-xxl .sm-search-count {
        margin-top: 18px;
    }}
.sm-search-count {
    margin: 14px 0 0 !important;
    font-size: 13px;
    opacity: .9;
}/* 广告位 */
.sm-mod-ad.is-pad {
    padding: 14px 0;
}
.sm-mod-html {
    line-height: 1.8;
}/* 友链列数 */
.sm-links-2 { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sm-links-3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sm-links-4 { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); }
.sm-links-5 { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); }
.sm-links-6 { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
.sm-links a.sm-link {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    max-width: 100%;
}

@media (max-width: 782px) {/* v5.17.0：新增 7 / 8 档的降级 */
    .sm-catbox-6,
    .sm-catbox-7,
    .sm-catbox-8 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sm-stat-cols-4,
    .sm-stat-cols-5,
    .sm-stat-cols-6,
    .sm-stat-cols-7,
    .sm-stat-cols-8 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sm-vip-cols-3,
    .sm-vip-cols-4,
    .sm-vip-cols-5,
    .sm-vip-cols-6,
    .sm-vip-cols-7,
    .sm-vip-cols-8 { grid-template-columns: 1fr; }
    .sm-links-4,
    .sm-links-5,
    .sm-links-6,
    .sm-links-7,
    .sm-links-8 { grid-template-columns: repeat(2, minmax(0, 1fr)); }}

/* ==================================================================
 * 列表工具条：筛选条 / 排序条
 * ================================================================== */
.sm-filterbar,
.sm-sortbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 10px 14px;
    margin-bottom: 16px;
}

.sm-sortbar-lb,
.sm-fgroup-lb {
    font-size: 12px;
    color: var(--sm-text-3);
    margin-right: 2px;
    flex: 0 0 auto;
}

.sm-sortbar-item,
.sm-fitem {
    font-size: 13px;
    padding: 4px 12px;
    border-radius: 14px;
    color: var(--sm-text-2);
    background: var(--sm-bg);
    text-decoration: none;
    transition: .18s;
}

.sm-sortbar-item:hover,
.sm-fitem:hover {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 10%, transparent);
    color: var(--sm-primary);
}

.sm-sortbar-item.is-on,
.sm-fitem.is-on {
    background: var(--sm-primary);
    color: #fff;
}

.sm-fgroup {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
}

.sm-fgroup + .sm-fgroup {
    border-left: 1px solid var(--sm-border);
    padding-left: 10px;
    margin-left: 4px;
}/* ==================================================================
 * 子分类导航
 * ================================================================== */
.sm-cat-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.sm-cat-nav-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 13px;
    padding: 6px 14px;
    border-radius: 16px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    color: var(--sm-text-2);
    text-decoration: none;
    transition: .18s;
}

.sm-cat-nav-item em {
    font-style: normal;
    font-size: 11px;
    color: var(--sm-text-3);
}

.sm-cat-nav-item:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}

.sm-cat-nav-item.is-on {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}

.sm-cat-nav-item.is-on em { color: rgba(255, 255, 255, .8); }

.sm-archive-meta {
    display: flex;
    align-items: center;
    gap: 12px;
    font-size: 13px;
    color: var(--sm-text-3);
    margin-top: 6px;
}

.sm-archive-rss {
    font-size: 12px;
    color: var(--sm-primary);
}/* ==================================================================
 * 卡片风格：叠加 / 横向列表 / 纯标题
 * ================================================================== */
.sm-card--r-1x1 .sm-card-thumb { padding-top: 100%; }
.sm-card--r-4x3 .sm-card-thumb { padding-top: 75%; }
.sm-card--r-3x2 .sm-card-thumb { padding-top: 66.6%; }
.sm-card--r-16x9 .sm-card-thumb { padding-top: 56.25%; }
.sm-card--r-3x4 .sm-card-thumb { padding-top: 133%; }/* 大图叠加：标题浮在图上 */
.sm-card--overlay .sm-card-body {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    background: linear-gradient(transparent, rgba(0, 0, 0, .72));
    color: #fff;
    padding: 26px 14px 12px;
}

.sm-card--overlay { position: relative; }
.sm-card--overlay .sm-card-title a { color: #fff; }
.sm-card--overlay .sm-card-meta { color: rgba(255, 255, 255, .8); }
.sm-card--overlay .sm-card-foot { display: none; }/* 横向列表 */
.sm-card--list {
    flex-direction: row;
    align-items: stretch;
}

.sm-card--list .sm-card-thumb {
    width: 34%;
    flex: 0 0 34%;
    padding-top: 0;
}

.sm-card--list .sm-card-thumb img {
    position: static;
    height: 100%;
    min-height: 110px;
}

.sm-card--list .sm-card-body { flex: 1; }
.sm-card--list .sm-card-foot { display: none; }/* 纯标题 */
.sm-card--title .sm-card-body { padding: 10px 14px; }
.sm-card--title .sm-card-meta { justify-content: flex-start; }
.sm-card--title .sm-card-foot { display: none; }

.sm-card-cat {
    display: inline-block;
    font-size: 11px;
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 10%, transparent);
    border-radius: 4px;
    padding: 1px 7px;
    margin-bottom: 6px;
    text-decoration: none;
}

.sm-card-desc {
    font-size: 12px;
    color: var(--sm-text-3);
    line-height: 1.6;
    margin: 0 0 8px;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}/* v5.6.0：资源卡 VIP 标签改由 sanmao_badge() 输出 .is-vip，这里同步定位，
   否则会掉回 .sm-card-thumb .sm-badge 的左上角，与价格标签重叠 */
.sm-card-thumb .sm-badge.is-vip {
    left: auto;
    right: 8px;
    background: linear-gradient(135deg, #f5c451, #e0a11a);
    color: #4a3200;
}/* ==================================================================
 * 加载更多
 * ================================================================== */
.sm-loadmore-wrap {
    text-align: center;
    margin: 26px 0 0;
}

.sm-loadmore {
    border: 1px solid var(--sm-border);
    background: var(--sm-card);
    color: var(--sm-text-2);
    border-radius: 22px;
    padding: 9px 30px;
    font-size: 14px;
    cursor: pointer;
    transition: .2s;
}

.sm-loadmore:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}

.sm-loadmore.is-loading { opacity: .6; cursor: wait; }
.sm-loadmore.is-done { opacity: .5; cursor: default; }
.sm-loadmore-end { color: var(--sm-text-3); }

.sm-pager-info {
    font-size: 12px;
    color: var(--sm-text-3);
    align-self: center;
    margin-left: 6px;
}/* ==================================================================
 * 空状态（v5.37.0：合并原先散布三处的重复定义为单一出处，
 * 取值取级联最终生效值，视觉零变化）
 * ================================================================== */
.sm-empty-box {
    text-align: center;
    padding: 46px 20px;
    background: var(--sm-card);
    border: 1px dashed var(--sm-border);
    border-radius: var(--sm-radius);
}

.sm-empty-ic { font-size: 44px; line-height: 1; display: block; margin-bottom: 12px; opacity: .85; }
.sm-empty-box h3 { margin: 0 0 8px; font-size: 18px; }
.sm-empty-box p { color: var(--sm-text-3); margin: 0 0 18px; }
.sm-empty-tip { margin: 6px 0 14px; font-size: 13px; color: var(--sm-text-3); }
.sm-empty-ops { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 18px; }/* ==================================================================
 * 作者主页
 * ================================================================== */
.sm-author-info { flex: 1; min-width: 0; }
.sm-author-name {
    font-size: 20px;
    margin: 0 0 6px;
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.sm-author-bio { color: var(--sm-text-2); margin: 0 0 6px; line-height: 1.6; }
.sm-author-sub { color: var(--sm-text-3); font-size: 12px; margin: 0 0 10px; }
.sm-author-stats {
    list-style: none;
    display: flex;
    gap: 22px;
    margin: 0;
    padding: 0;
}
.sm-author-stats li { display: flex; flex-direction: column; }
.sm-author-stats b { font-size: 18px; }
.sm-author-stats i { font-style: normal; font-size: 12px; color: var(--sm-text-3); }/* ==================================================================
 * 文章上下篇
 * ================================================================== */
.sm-post-nav {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin: 18px 0;
}/* v5.46.8：改为「缩略图 + 文字」横向卡片；底色用 --sm-bg 以区分外层文章卡片 */
.sm-post-nav-item {
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 12px;
    padding: 12px 14px;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    text-decoration: none;
    transition: border-color .2s, transform .2s;
}

.sm-post-nav-item:hover {
    border-color: var(--sm-primary);
    transform: translateY(-1px);
}

.sm-pn-txt {
    flex: 1 1 auto;
    min-width: 0;
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.sm-pn-thumb {
    flex: 0 0 auto;
    width: 56px;
    height: 56px;
    border-radius: 8px;
    overflow: hidden;
    background: color-mix(in srgb, var(--sm-primary) 10%, transparent);
}

.sm-pn-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.sm-post-nav-item.is-next { text-align: right; }
.sm-post-nav-item.is-next .sm-pn-txt { align-items: flex-end; }
.sm-post-nav-item.is-empty {
    flex-direction: column;
    color: var(--sm-text-3);
    font-size: 13px;
    align-items: flex-start;
    justify-content: center;
    border-style: dashed;
}
.sm-post-nav-item.is-empty.is-end { align-items: flex-end; }
.sm-post-nav-lb { font-size: 12px; color: var(--sm-text-3); }
.sm-post-nav-t {
    font-size: 14px;
    color: var(--sm-text);
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}/* ==================================================================
 * 附件页
 * ================================================================== */
.sm-attachment {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 22px;
    text-align: center;
}

.sm-attachment-title { font-size: 20px; margin: 0 0 16px; }
.sm-attachment-view img { max-width: 100%; height: auto; border-radius: var(--sm-radius); }
.sm-attachment-file {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    padding: 20px 26px;
    background: var(--sm-bg);
    border-radius: var(--sm-radius);
    font-size: 15px;
}
.sm-file-ic { font-size: 30px; }
.sm-attachment-desc { color: var(--sm-text-2); margin: 14px 0; }
.sm-attachment-meta {
    list-style: none;
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 16px;
    padding: 0;
    margin: 0 0 18px;
    font-size: 13px;
    color: var(--sm-text-3);
}
.sm-attachment-ops { display: flex; gap: 10px; justify-content: center; }
/* ==================================================================
 * 评论 AJAX 提示
 * ================================================================== */
.sm-comment-msg {
    display: none;
    padding: 9px 14px;
    border-radius: var(--sm-radius-sm);
    font-size: 13px;
    margin-bottom: 12px;
}







.sm-comment-msg.ok { background: rgba(34, 176, 125, .12); color: #1a8f66; }
.sm-comment-msg.error { background: rgba(245, 84, 75, .12); color: #d33; }
#commentform.is-busy { opacity: .6; }








.sm-comment-cap {
    display: flex;
    align-items: center;
    gap: 8px;
}
.sm-comment-cap img { height: 38px; border-radius: 6px; cursor: pointer; }
.sm-comment-cap input { width: 100px; }
/* ==================================================================
 * 空白页面模板
 * ================================================================== */
.sm-blank-wrap { min-height: 100vh; }
.sm-body-blank { margin: 0; }
.sm-blank { padding: 0; }/* 搜索表单在大号样式下去掉胶囊外壳 */
.sm-search.sm-search-big {
    background: transparent;
    border: 0;
    border-radius: 0;
    padding: 0;
    margin: 0 auto 20px;
    max-width: 520px;
}
.sm-search.sm-search-big input { width: auto; }@media (max-width: 782px) {
    .sm-filterbar .sm-fgroup + .sm-fgroup {
        border-left: 0;
        padding-left: 0;
        margin-left: 0;
    }
    .sm-card--list .sm-card-thumb { width: 40%; flex: 0 0 40%; }
    .sm-post-nav { grid-template-columns: 1fr; }
    .sm-post-nav-item.is-next { text-align: left; }
    .sm-author-stats { gap: 16px; }}/* ==================================================================
 * v5.1.0 · 移动端菜单按钮 / 友情链接 / 备案信息 / 悬浮工具条
 * ================================================================== */
.sm-menu-toggle {
    display: none;
    border: 0;
    background: var(--sm-bg);
    color: var(--sm-text-2);
    width: 34px;
    height: 34px;
    border-radius: var(--sm-radius-sm);
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}

.sm-copy-text { margin-bottom: 6px; }

.sm-copy-legal {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 14px;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-copy-legal a {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    color: var(--sm-text-3);
}

.sm-copy-legal a:hover { color: var(--sm-primary); }

.sm-flinks {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 8px 12px;
    margin: 0 0 14px;
    font-size: 13px;
}

.sm-flinks-lb {
    flex: 0 0 auto;
    color: var(--sm-text-3);
}

.sm-flinks-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
}

.sm-flinks-list a { color: var(--sm-text-2); }
.sm-flinks-list a:hover { color: var(--sm-primary); }/* ---------- 右下角悬浮工具条 ---------- */
.sm-float-bar {
    position: fixed;
    right: 16px;
    /* v5.21.0：给 iPhone 全面屏的底部横条留位置，否则悬浮球会被系统手势区压住 */
    bottom: calc(96px + env(safe-area-inset-bottom, 0px));
    z-index: 95;
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.sm-float-item {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 44px;
    height: 44px;
    border-radius: 50%;
    border: 1px solid var(--sm-border);
    background: var(--sm-card);
    color: var(--sm-text-2);
    box-shadow: var(--sm-shadow);
    cursor: pointer;
    transition: transform .18s, color .18s, background .18s;
}

.sm-float-item:hover {
    color: var(--sm-primary);
    transform: translateY(-2px);
}

.sm-float-ic { font-size: 17px; line-height: 1; }

.sm-float-tx {
    position: absolute;
    right: 52px;
    top: 50%;
    transform: translateY(-50%);
    white-space: nowrap;
    font-size: 12px;
    padding: 4px 9px;
    border-radius: 6px;
    background: var(--sm-text);
    color: var(--sm-card);
    opacity: 0;
    pointer-events: none;
    transition: opacity .18s;
}

.sm-float-item:hover .sm-float-tx { opacity: 1; }/* ---------- 文章内页：常见问题 ---------- */
.sm-faq { margin: 22px 0; }

.sm-faq-item {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    margin-bottom: 10px;
    background: var(--sm-card);
    overflow: hidden;
}

.sm-faq-q {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    padding: 12px 16px;
    font-weight: 600;
    cursor: pointer;
    user-select: none;
}

.sm-faq-q::after {
    content: '+';
    flex: 0 0 auto;
    color: var(--sm-text-3);
    font-weight: 400;
}

.sm-faq-item.is-open .sm-faq-q::after { content: '−'; }
.sm-faq-item.is-open .sm-faq-q { color: var(--sm-primary); }

.sm-faq-a {
    display: none;
    padding: 0 16px 14px;
    color: var(--sm-text-2);
    font-size: 14px;
}

.sm-faq-item.is-open .sm-faq-a { display: block; }/* ---------- 文章内页：版权声明 ---------- */
.sm-single-copy {
    margin: 20px 0;
    padding: 14px 16px;
    border: 1px dashed var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-bg);
    color: var(--sm-text-2);
    font-size: 13px;
    line-height: 1.8;
}/* ---------- 文章内页：大图头图风格 ---------- */
.sm-single-hero {
    position: relative;
    margin: 0 0 22px;
    border-radius: var(--sm-radius);
    overflow: hidden;
    min-height: 240px;
    display: flex;
    align-items: flex-end;
}

.sm-single-hero img {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.sm-single-hero::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, rgba(0, 0, 0, .05) 0%, rgba(0, 0, 0, .68) 100%);
}

.sm-single-hero-in {
    position: relative;
    z-index: 2;
    padding: 26px 24px;
    color: #fff;
    width: 100%;
}

.sm-single-hero-in .sm-single-title { color: #fff; margin: 0 0 8px; }

.sm-single-hero-in .sm-single-meta,
.sm-single-hero-in .sm-single-meta span,
.sm-single-hero-in .sm-single-meta a { color: rgba(255, 255, 255, .88); }/* v5.46.8：深色头图上的信息条沿用亮色分隔线 */
.sm-single-hero-in .sm-single-meta { border-bottom-color: rgba(255, 255, 255, .26); }
.sm-single-hero-in .sm-meta-ic { opacity: .9; }/* ---------- 文章内页：商城侧栏风格 ---------- */
.sm-single-shopbar {
    margin: 22px 0;
    padding: 16px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px 18px;
}

.sm-single-shopbar .sm-sb-price {
    font-size: 22px;
    font-weight: 700;
    color: var(--sm-primary);
}

.sm-single-shopbar .sm-sb-meta {
    font-size: 13px;
    color: var(--sm-text-3);
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
}/* ---------- 打赏收款码 ---------- */
.sm-reward-qr {
    margin-top: 12px;
    text-align: center;
}

.sm-reward-qr img {
    max-width: 180px;
    border-radius: var(--sm-radius-sm);
    border: 1px solid var(--sm-border);
}

.sm-reward-qr p {
    margin: 6px 0 0;
    font-size: 12px;
    color: var(--sm-text-3);
}/* ---------- 登录弹层 ---------- */
.sm-auth-mask {
    position: fixed;
    inset: 0;
    z-index: 200;
    display: none;
    align-items: center;
    justify-content: center;
    padding: 20px;
    background: rgba(16, 20, 30, .55);
    backdrop-filter: blur(3px);
}


.sm-auth-mask.is-open { display: flex; }


.sm-auth-pop {
    position: relative;
    width: 100%;
    max-width: 860px;
    max-height: 90vh;
    overflow: auto;
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .28);
}


.sm-auth-pop .sm-auth { margin: 0; }

.sm-auth-pop .sm-auth-close {
    position: absolute;
    right: 10px;
    top: 8px;
    z-index: 3;
    border: 0;
    background: transparent;
    font-size: 22px;
    line-height: 1;
    color: var(--sm-text-3);
    cursor: pointer;
}/* 登录区背景（login_bg_*） */
.sm-auth.sm-auth-bg {
    padding: 28px 24px;
    border-radius: var(--sm-radius);
    background-size: cover;
    background-position: center;
}



.sm-auth.sm-auth-bg .sm-form,
.sm-auth.sm-auth-bg .sm-sns-box {
    background: var(--sm-card);
    border-radius: var(--sm-radius);
    padding: 16px;
    box-shadow: var(--sm-shadow);
}/* ---------- 会员权益对比 ---------- */
.sm-vip-cmp {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 16px;
    margin: 20px 0;
}

.sm-vip-cmp-card {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    padding: 18px 16px;
}

.sm-vip-cmp-card.is-vip { border-color: var(--sm-vip); }
.sm-vip-cmp-card.is-boosvip { border-color: var(--sm-gold); }

.sm-vip-cmp-card.is-cur {
    box-shadow: 0 0 0 2px var(--sm-primary) inset;
    background: var(--sm-bg);
}

.sm-vip-cmp-badge {
    display: inline-block;
    font-size: 11px;
    font-weight: 400;
    padding: 1px 7px;
    border-radius: 999px;
    background: var(--sm-primary);
    color: #fff;
    vertical-align: middle;
}

.sm-vip-cmp-card h4 {
    margin: 0 0 4px;
    font-size: 16px;
}

.sm-vip-cmp-card .sm-vip-cmp-num {
    font-size: 13px;
    color: var(--sm-text-3);
    margin-bottom: 10px;
}

.sm-vip-cmp-card ul {
    margin: 0;
    padding-left: 18px;
    font-size: 13px;
    color: var(--sm-text-2);
    line-height: 1.9;
}/* v5.4.0：导航抽屉断点统一到 900px，与 .nav-center 的 min-width:901px 对齐 */@media (max-width: 900px) {
    .sm-menu-toggle { display: block; }
    .sm-nav {
        position: fixed;
        top: 0;
        left: 0;
        bottom: 0;
        width: 280px;
        max-width: 82vw;
        background: var(--sm-card);
        border-right: 1px solid var(--sm-border);
        box-shadow: var(--sm-shadow);
        padding: 64px 16px 20px;
        overflow-y: auto;
        transform: translateX(-100%);
        transition: transform .28s ease;
        z-index: 101;
        flex: 0 0 auto;
        order: 0;
        flex-basis: auto;
        display: block;
    }
    .sm-nav.is-open { transform: translateX(0); }
    .sm-nav .sm-menu {
        flex-direction: column;
        gap: 2px;
        flex-wrap: nowrap;
        align-items: stretch;
    }
    .sm-nav .sm-menu a { padding: 12px 14px; font-size: 15px; }
    .sm-nav .sm-menu .children,
    .sm-nav .sm-menu .sub-menu {
        position: static;
        box-shadow: none;
        border: 0;
        border-radius: 0;
        background: transparent;
        padding: 0 0 0 16px;
        min-width: 0;
    }
    .sm-nav .sm-menu li:hover>.children,
    .sm-nav .sm-menu li:hover>.sub-menu { display: none; }
    .sm-nav .sm-menu li.menu-item-has-children>a::after {
        content: '▾';
        float: right;
        font-size: 12px;
    }
    .sm-header-right .sm-search { display: none; }}@media (max-width: 782px) {
    .sm-vip-cmp { grid-template-columns: 1fr; }
    .sm-float-bar { right: 10px; bottom: 78px; }
    .sm-float-item { width: 38px; height: 38px; }/* v5.36.6：移动端同样堆叠（返回顶部 40px 高 + 10px 间隙） */
    body.sm-dock-on .sm-float-bar { bottom: calc(120px + env(safe-area-inset-bottom, 0px)); }}/* ==================================================================
 * v5.1.0 · 暗色模式组件适配
 * main.css 里大量组件直接写了 #fff，切换到暗色后会出现刺眼的白块，
 * 这里按组件逐个覆盖（根节点为 html.sm-dark，与 JS / class-optimize 保持一致）
 * ================================================================== */
html.sm-dark .sm-header,
html.sm-dark .sm-footer {
    background: var(--sm-card);
    border-color: var(--sm-border);
}

html.sm-dark .sm-search .sm-search-field,
html.sm-dark .sm-dark-toggle,
html.sm-dark .sm-menu-toggle,
html.sm-dark select,
html.sm-dark input,
html.sm-dark textarea {
    background: #202634;
    color: var(--sm-text);
    border-color: var(--sm-border);
}

html.sm-dark .sm-search-big input,
html.sm-dark .sm-search-big button {
    background: #202634;
    color: var(--sm-text);
}

html.sm-dark .sm-pay-amount,
html.sm-dark .sm-qr,
html.sm-dark .sm-w-qr,
html.sm-dark .sm-share-pop a,
html.sm-dark .sm-hide-form,
html.sm-dark .sm-hide-input,
html.sm-dark .sm-reward-item,
html.sm-dark .sm-slider-dots i {
    background: #202634;
    color: var(--sm-text);
}

html.sm-dark .sm-reward p { color: var(--sm-text-2); }

html.sm-dark .sm-card,
html.sm-dark .sm-side-mod,
html.sm-dark .sm-sidebar .widget,
html.sm-dark .sm-widget,
html.sm-dark .sm-vip-cmp-card,
html.sm-dark .sm-faq-item,
html.sm-dark .sm-single-shopbar,
html.sm-dark .sm-user-card,
html.sm-dark .sm-user-main,
html.sm-dark .sm-panel {
    background: var(--sm-card);
    border-color: var(--sm-border);
}

html.sm-dark .sm-table th,
html.sm-dark .sm-table td {
    border-color: var(--sm-border);
}/* v5.26.0：暗色下作者头像改用暗环，白环在深色卡片上太扎眼 */
html.sm-dark .sm-side-author img {
    box-shadow: 0 4px 14px rgba(0, 0, 0, .4), 0 0 0 3px rgba(255, 255, 255, .08);
}

html.sm-dark .sm-msg.ok { background: rgba(34, 176, 125, .16); color: #4fd1a5; }
html.sm-dark .sm-msg.error { background: rgba(245, 84, 75, .16); color: #ff8a82; }
html.sm-dark .sm-msg.warn { background: rgba(245, 166, 35, .16); color: #f7c46c; }

html.sm-dark .sm-menu a:hover,
html.sm-dark .sm-menu .current-menu-item > a {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 22%, transparent);
}

html.sm-dark .sm-menu .children,
html.sm-dark .sm-menu .sub-menu {
    background: #202634;
}

html.sm-dark .sm-mobile-bar,
html.sm-dark .sm-backtop,
html.sm-dark .sm-float-item,
html.sm-dark .sm-notice-box {
    background: var(--sm-card);
    border-color: var(--sm-border);
    color: var(--sm-text-2);
}

html.sm-dark .sm-float-tx { background: var(--sm-text); color: var(--sm-card); }

html.sm-dark .sm-comment-msg.ok { background: rgba(34, 176, 125, .16); color: #4fd1a5; }
html.sm-dark .sm-comment-msg.error { background: rgba(245, 84, 75, .16); color: #ff8a82; }

html.sm-dark .sm-single-copy { background: #1a1f2a; }

html.sm-dark .sm-auth-mask { background: rgba(0, 0, 0, .62); }/* 暗色下降低纯白插画/占位图的刺眼感 */
html.sm-dark img,
html.sm-dark .sm-card-thumb img {
    filter: brightness(.92);
}/* ==================================================================
 * v5.2.0 组件（统一使用 :root 设计变量，自动适配暗色模式）
 *   投稿表单 / 分类封面横幅 / 页面横幅与元信息条
 * ================================================================== *//* ---------- 投稿：分段卡片 ---------- */
.sm-submit {
    max-width: 820px;
    margin: 0 auto;
    display: grid;
    gap: 16px;
}



.sm-submit-card {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    box-shadow: var(--sm-shadow);
    overflow: hidden;
}

.sm-submit-card-hd {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 14px 18px;
    border-bottom: 1px solid var(--sm-border);
    background: linear-gradient(180deg, color-mix(in srgb, var(--sm-primary, #5b6cff) 5%, transparent), transparent);
}

.sm-submit-card-hd b {
    font-size: 15px;
}

.sm-submit-card-hd em {
    font-style: normal;
    color: var(--sm-text-3);
    font-size: 12px;
    margin-left: auto;
    text-align: right;
}

.sm-submit-step {
    flex: none;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--sm-primary);
    color: #fff;
    font-size: 12px;
    font-weight: 700;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.sm-submit-card-bd {
    padding: 18px;
}

.sm-submit .sm-field + .sm-field {
    margin-top: 16px;
}

.sm-field-label {
    display: flex;
    align-items: baseline;
    gap: 8px;
    font-size: 13px;
    font-weight: 600;
    color: var(--sm-text-2);
    margin-bottom: 8px;
}

.sm-field-sub {
    font-style: normal;
    font-weight: 400;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-input-lg {
    font-size: 17px;
    font-weight: 600;
    padding: 12px 14px;
}

.sm-textarea {
    width: 100%;
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    padding: 10px 12px;
    background: var(--sm-bg);
    color: var(--sm-text);
    font-size: 14px;
    resize: vertical;
}

.sm-textarea:focus {
    outline: none;
    border-color: var(--sm-primary);
    background: var(--sm-card);
}/* ---------- 投稿：话题 chips ---------- */
.sm-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}

.sm-chip {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: 7px 14px;
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    font-size: 13px;
    color: var(--sm-text-2);
    background: var(--sm-bg);
    cursor: pointer;
    transition: all .18s ease;
    user-select: none;
}

.sm-chip:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}

.sm-chip.is-on {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
    font-weight: 600;
}

.sm-chip input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}/* ---------- 投稿：免费 / 付费切换 ---------- */
.sm-seg {
    display: inline-flex;
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    padding: 3px;
    gap: 3px;
    background: var(--sm-bg);
}

.sm-seg-item {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 8px 18px;
    border-radius: var(--sm-radius-sm);
    font-size: 14px;
    color: var(--sm-text-2);
    cursor: pointer;
    transition: all .18s ease;
}

.sm-seg-item input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.sm-seg-item.is-on {
    background: var(--sm-primary);
    color: #fff;
    font-weight: 600;
    box-shadow: 0 2px 8px color-mix(in srgb, var(--sm-primary, #5b6cff) 35%, transparent);
}

.sm-submit-pay {
    margin-top: 16px;
    padding: 16px;
    border: 1px dashed var(--sm-border);
    border-radius: 10px;
    background: var(--sm-bg);
}

.sm-grid2 {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
}@media (max-width: 600px) {
    .sm-grid2 {
        grid-template-columns: 1fr;
    }}/* ---------- 投稿：封面 ---------- */
.sm-cover {
    display: flex;
    align-items: flex-start;
    gap: 12px;
}

.sm-cover-pick {
    display: inline-flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 6px;
    width: 160px;
    height: 96px;
    border: 1px dashed var(--sm-border);
    border-radius: 10px;
    background: var(--sm-bg);
    color: var(--sm-text-3);
    font-size: 13px;
    cursor: pointer;
    transition: all .18s ease;
}

.sm-cover-pick:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}

.sm-cover-pick .dashicons {
    font-size: 22px;
    width: 22px;
    height: 22px;
}

.sm-cover-preview {
    position: relative;
    width: 240px;
}

.sm-cover-preview img {
    display: block;
    width: 100%;
    border-radius: 10px;
    border: 1px solid var(--sm-border);
}

.sm-cover-del {
    position: absolute;
    top: 6px;
    right: 6px;
    width: 24px;
    height: 24px;
    border: 0;
    border-radius: 50%;
    background: rgba(0, 0, 0, .55);
    color: #fff;
    font-size: 15px;
    line-height: 1;
    cursor: pointer;
}/* ---------- 投稿：底部 ---------- */
.sm-submit-foot {
    display: flex;
    align-items: center;
    gap: 14px;
}

.sm-submit-foot .sm-tip {
    margin: 0;
    font-size: 12px;
    color: var(--sm-text-3);
}/* ---------- 分类封面横幅 ---------- */
.sm-archive-head.has-banner .sm-archive-banner {
    margin: -4px 0 14px;
}

.sm-archive-banner {
    border-radius: var(--sm-radius);
    overflow: hidden;
    box-shadow: var(--sm-shadow);
}

.sm-archive-banner img {
    display: block;
    width: 100%;
    max-height: 260px;
    object-fit: cover;
}/* ---------- 页面横幅与元信息 ---------- */
.sm-page-banner {
    margin-bottom: 18px;
    border-radius: var(--sm-radius);
    overflow: hidden;
    box-shadow: var(--sm-shadow);
}

.sm-page-banner img {
    display: block;
    width: 100%;
    max-height: 360px;
    object-fit: cover;
}

.sm-page-headinfo {
    margin-bottom: 18px;
}

.sm-page-headinfo .sm-page-title {
    margin: 0 0 10px;
}

.sm-page-metabar {
    display: flex;
    align-items: center;
    gap: 18px;
    font-size: 13px;
    color: var(--sm-text-3);
}

.sm-page-metabar .dashicons {
    font-size: 15px;
    width: 15px;
    height: 15px;
    vertical-align: -2px;
    margin-right: 4px;
}

.sm-page-metabar a {
    color: inherit;
    text-decoration: none;
}

.sm-page-metabar a:hover {
    color: var(--sm-primary);
}/* ==================================================================
 * v5.2.1 公告弹层（延迟淡入 + 频率抑制 + 无障碍关闭方式）
 * ================================================================== *//* v5.46.6：内容区与底部按钮区（标题已移入上方 .sm-notice-head） */
.sm-notice-content {
    padding: 18px 22px 4px;
    font-size: 14px;
    line-height: 1.8;
    color: var(--sm-text-2);
    max-height: 52vh;
    overflow: auto;
}

.sm-notice-content p {
    margin: 0 0 10px;
}

.sm-notice-content p:last-child {
    margin-bottom: 0;
}

.sm-notice-foot {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 10px;
    padding: 14px 22px 18px;
}

.sm-notice-foot .sm-btn {
    text-decoration: none;
    cursor: pointer;
    border-radius: 999px;
    padding: 9px 20px;
}/* noscript 兜底：静态展示、不可关闭（极少触发）—— 必须默认可见 */
.sm-notice.is-static {
    opacity: 1;
    visibility: visible;
    z-index: 998;
}

.sm-notice.is-static .sm-notice-close { display: none; }

body.sm-dark .sm-notice-box {
    background: var(--sm-card);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .5);
}@media (max-width: 600px) {
    .sm-notice {
        padding: 16px;
    }

    .sm-notice-box {
        max-height: 82vh;
    }

    .sm-notice-content {
        max-height: none;
        padding: 16px 18px 4px;
    }

    .sm-notice-foot {
        flex-direction: column-reverse;
        align-items: stretch;
        padding: 12px 18px 18px;
    }

    .sm-notice-foot .sm-btn {
        justify-content: center;
        text-align: center;
        width: 100%;
    }}/* ==================================================================
 * v5.2.2 · 搜索横幅「大气」× 顶部导航栏融合
 *   首页搭建器里放「搜索横幅」并把尺寸选为「大气」时生效。
 *   渐变只由 .sm-main::before 这一层绘制（覆盖导航栏 + 横幅），
 *   横幅自身背景透明 —— 因此两者不存在拼接色差，是一整片连续渐变。
 *   向下滚动、横幅离开导航栏后，main.js 给导航栏加 .is-solid 恢复常规白条。
 * ================================================================== *//* ---------- 1. 渐变延伸层 ---------- */
body.has-hero-blend .sm-main {
    padding-top: 0;
    position: relative;
}

body.has-hero-blend .sm-main::before {
    content: '';
    position: absolute;
    left: 0;
    right: 0;
    /* --sm-hero-in：.sm-main 到文档顶的距离（≈ 导航栏高度），由 main.js 精确回填 */
    top: calc(-1 * var(--sm-hero-in, 64px));
    /* --sm-hero-h：从文档顶一直铺到横幅底部，由 main.js 按实际高度回填 */
    height: var(--sm-hero-h, 420px);
    background: linear-gradient(120deg, var(--sm-hero-a, var(--sm-primary)), var(--sm-hero-b, var(--sm-vip, #8a5bff)));
    z-index: -1;
    pointer-events: none;
}/* 横幅自身透明化，融入上面那一层；底部保留统一圆角收口 */
body.has-hero-blend .sm-search-banner.is-blend {
    background: transparent;
    border-radius: 0;
    padding: 42px 28px 54px;
    margin-bottom: 22px;
}/* ---------- 2. 导航栏：首屏透明 + 元素反白 ---------- */
body.has-hero-blend .sm-header.is-hero {
    background: transparent;
    border-bottom-color: transparent;
    transition: background .25s ease, box-shadow .25s ease, border-color .25s ease;
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-logo-text,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu>li>a,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-search input,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-search button,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-dark-toggle,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu-toggle {
    color: #fff;
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-search input::placeholder {
    color: rgba(255, 255, 255, .78);
}/* v5.20.0：搜索改折叠结构后，反白胶囊挪到 .sm-search-field 上（form 本身不再有底色） */
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-search .sm-search-field,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-dark-toggle,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu-toggle {
    background: rgba(255, 255, 255, .18);
    border-color: rgba(255, 255, 255, .3);
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu>li>a:hover,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu .current-menu-item>a,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu .current-cat>a {
    background: rgba(255, 255, 255, .2);
    color: #fff;
}/* ==================================================================
 * v5.16.0 · 幻灯片「与顶部导航融合」+ 首页模块「全站宽度」
 * 融合：复用 .has-hero-blend 的透明导航 / 反白样式，这里只做图片专用的顶渐变与贴顶微调。
 * 全宽：让模块突破内容容器，铺满视口（父级不得 overflow:hidden，主页已满足）。
 * ================================================================== *//* ---------- 幻灯片融合 ---------- */
body.has-slider-blend .sm-main {
    padding-top: 0;
    /* 关键：内容整体上移 64px（导航栏高度），让幻灯片图片垫到透明导航栏背后，
     * 导航与图片才是同一片画面 —— 之前只做透明导航，露出的其实是 body 背景，所以融合不完全 */
    margin-top: -64px;
}/* hero-blend 的主题色渐变延伸层在图片融合下不再需要 —— 图片自己就是背景 */
body.has-slider-blend .sm-main::before {
    display: none;
}
body.has-slider-blend .sm-mod-slider.is-blend {
    margin-top: 0;
    border-radius: 0;
}
body.has-slider-blend .sm-mod-slider.is-blend .sm-slider {
    border-radius: 0;
}/* 幻灯片自身顶部的暗渐变：保证透明导航上的白字可读。
 * 叠在图片之上（z-index:2）、箭头/圆点之下（z-index:3），随图走、永不脱节 */
body.has-slider-blend .sm-mod-slider.is-blend .sm-slider::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    height: 140px;
    background: linear-gradient(to bottom, rgba(0, 0, 0, .55), rgba(0, 0, 0, 0));
    z-index: 2;
    pointer-events: none;
}/* 移动端导航是多行自适应，高度不定 —— 取消垫高，回落普通布局 */@media (max-width: 860px) {
    body.has-slider-blend .sm-main {
        margin-top: 0;
    }
    body.has-slider-blend .sm-mod-slider.is-blend .sm-slider::before {
        display: none;
    }}/* ---------- 首页模块宽度：内容宽度（默认） / 全站宽度 ---------- *//*
 * v5.17.1 重写。旧实现有两个真 bug：
 *  1) width:100vw —— 100vw 含垂直滚动条宽度，页面一有滚动条就会横向溢出、出现横向滚动条；
 *  2) margin-left: calc(50% - 50vw) —— 这里的 50% 是「父元素」宽度的一半，只有当父元素
 *     在视口里居中时才等于视口中心。首页一旦开了侧边栏，.sm-content 就不再居中，
 *     于是模块左边空出一大块、右边溢出屏幕 —— 正是「靠左挤压」的观感来源。
 *
 * 现在改为：由 main.js 实测元素左边缘到视口左边缘的距离，写成 --sm-full-l（负值）与
 * --sm-full-w（= documentElement.clientWidth，不含滚动条），精确铺满可视区；
 * 未执行 JS 时回退到旧的近似写法，不至于错位到离谱。
 *
 * 同时补左右留白（与 .sm-container 的 padding 对齐），让内容真正左右铺开而不是贴边发紧。
 */
.sm-mod.is-full {
    box-sizing: border-box;
    width: var(--sm-full-w, 100vw);
    max-width: none;
    margin-left: var(--sm-full-l, calc(50% - 50vw));
    margin-right: 0;
    padding-left: var(--sm-full-pad, 16px);
    padding-right: var(--sm-full-pad, 16px);
}/* 大屏留白与页面容器保持一致，内容铺开但不顶到屏幕边缘 */@media (min-width: 1101px) {
    .sm-mod.is-full {
        padding-left: var(--sm-full-pad, 24px);
        padding-right: var(--sm-full-pad, 24px);
    }}

.sm-mod.is-full .sm-slider {
    border-radius: 0;
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu .children,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu .sub-menu {
    background: var(--sm-card);
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu .children a,
body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-menu .sub-menu a {
    color: var(--sm-text-2);
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-lvl {
    background: rgba(255, 255, 255, .24);
    color: #fff;
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-btn-s {
    background: rgba(255, 255, 255, .22);
    border-color: rgba(255, 255, 255, .38);
    color: #fff !important;
}

body.has-hero-blend .sm-header.is-hero:not(.is-solid) .sm-btn-s:hover {
    background: rgba(255, 255, 255, .34);
}/* ---------- 3. 滚动离场后恢复常规导航栏 ---------- */
body.has-hero-blend .sm-header.is-hero.is-solid {
    background: var(--sm-card);
    border-bottom: 1px solid var(--sm-border);
    box-shadow: 0 2px 12px rgba(0, 0, 0, .06);
}/* ---------- 4. 横幅「大气」打磨 ---------- */
body.has-hero-blend .sm-search-banner.is-blend h2 {
    font-size: 34px;
    letter-spacing: .5px;
    text-shadow: 0 2px 18px rgba(0, 0, 0, .16);
}/* 超大气 + 融合：保持更大的标题与输入框，气派不被削弱 *//* v5.6.0：与 .is-xxl 主规则保持同步（融合时导航栏占据顶部，正文再往下让一点） */
body.has-hero-blend .sm-search-banner.is-blend.is-xxl {
    min-height: 620px;
    padding: 108px 40px 96px;
}
body.has-hero-blend .sm-search-banner.is-blend.is-xxl h2 {
    margin: 0 0 22px;
    font-size: 46px;
    letter-spacing: .5px;
    text-shadow: 0 2px 18px rgba(0, 0, 0, .16);
}
body.has-hero-blend .sm-search-banner.is-blend.is-xxl p {
    max-width: 760px;
    margin: 0 auto 50px;
    font-size: 18px;
}
body.has-hero-blend .sm-search-banner.is-blend.is-xxl .sm-search-form {
    max-width: 940px;
}
body.has-hero-blend .sm-search-banner.is-blend.is-xxl .sm-search-form input,
body.has-hero-blend .sm-search-banner.is-blend.is-xxl .sm-search-form button {
    height: 58px;
}
body.has-hero-blend .sm-search-banner.is-blend.is-xxl .sm-search-form input {
    padding: 0 28px;
}
body.has-hero-blend .sm-search-banner.is-blend.is-xxl .sm-search-form button {
    padding: 0 44px;
    font-size: 17px;
}

body.has-hero-blend .sm-search-banner.is-blend .sm-search-form {
    max-width: 680px;
}

body.has-hero-blend .sm-search-banner.is-blend .sm-search-form input {
    height: 54px;
    font-size: 16px;
}

body.has-hero-blend .sm-search-banner.is-blend .sm-search-form button {
    height: 54px;
    padding: 0 30px;
    font-size: 15px;
}@media (max-width: 782px) {
    body.has-hero-blend .sm-search-banner.is-blend {
        padding: 28px 18px 34px;
    }

    body.has-hero-blend .sm-search-banner.is-blend h2 {
        font-size: 24px;
    }

    body.has-hero-blend .sm-search-banner.is-blend .sm-search-form input,
    body.has-hero-blend .sm-search-banner.is-blend .sm-search-form button {
        height: 48px;
    }}










.sm-quicknav-2 { grid-template-columns: repeat(2, 1fr); }
.sm-quicknav-3 { grid-template-columns: repeat(3, 1fr); }
.sm-quicknav-4 { grid-template-columns: repeat(4, 1fr); }
.sm-quicknav-5 { grid-template-columns: repeat(5, 1fr); }
.sm-quicknav-6 { grid-template-columns: repeat(6, 1fr); }

/* 圆形浅底 */
.sm-quicknav.is-circle .sm-qn-icon {
    width: 48px;
    height: 48px;
    border-radius: 50%;
    background: linear-gradient(135deg, color-mix(in srgb, var(--sm-primary, #5b6cff) 12%, transparent), color-mix(in srgb, var(--sm-primary, #5b6cff) 4%, transparent));
    color: var(--sm-primary);
    font-size: 22px;
}

.sm-quicknav.is-circle .sm-qn-icon img {
    width: 30px;
    height: 30px;
    object-fit: contain;
}/* 圆角方块 */
.sm-quicknav.is-square .sm-qn-icon {
    width: 52px;
    height: 52px;
    border-radius: 14px;
    background: var(--sm-bg);
}/* 无底色 */
.sm-quicknav.is-plain .sm-qn-icon {
    width: auto;
    height: 40px;
    font-size: 28px;
    color: var(--sm-primary);
}

.sm-quicknav.is-plain .sm-qn-icon img {
    width: 40px;
    height: 40px;
    object-fit: contain;
}@media (max-width: 782px) {
    .sm-quicknav-5,
    .sm-quicknav-6,
    .sm-quicknav-7,
    .sm-quicknav-8 { grid-template-columns: repeat(4, 1fr); }
    .sm-quicknav-4 { grid-template-columns: repeat(4, 1fr); }}

@media (max-width: 480px) {
    .sm-quicknav-3,
    .sm-quicknav-4,
    .sm-quicknav-5,
    .sm-quicknav-6,
    .sm-quicknav-7,
    .sm-quicknav-8 { grid-template-columns: repeat(3, 1fr); }}










.sm-linkbox-1 { grid-template-columns: minmax(0, 1fr); }
.sm-linkbox-2 { grid-template-columns: repeat(2, 1fr); }
.sm-linkbox-3 { grid-template-columns: repeat(3, 1fr); }
.sm-linkbox-4 { grid-template-columns: repeat(4, 1fr); }
.sm-linkbox-5 { grid-template-columns: repeat(5, 1fr); }
.sm-linkbox-6 { grid-template-columns: repeat(6, 1fr); }
.sm-linkbox-7 { grid-template-columns: repeat(7, 1fr); }
.sm-linkbox-8 { grid-template-columns: repeat(8, 1fr); }

/* v5.20.0：地址留空的条目 —— 纯展示不可点，灰显并去掉任何可点击的视觉暗示 */
.sm-lb-tag.is-plain {
    cursor: default;
    color: var(--sm-text-3);
}
.sm-lb-tag.is-plain:hover {
    background: var(--sm-bg);
    color: var(--sm-text-3);
}

@media (max-width: 782px) {
    .sm-linkbox-4,
    .sm-linkbox-5,
    .sm-linkbox-6,
    .sm-linkbox-7,
    .sm-linkbox-8 { grid-template-columns: repeat(2, 1fr); }}/* ---------- 分类切换卡 ---------- */
.sm-ct-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}

.sm-ct-tab {
    border: 1px solid var(--sm-border);
    background: var(--sm-bg);
    color: var(--sm-text-2);
    border-radius: 999px;
    padding: 7px 16px;
    font-size: 13.5px;
    cursor: pointer;
    transition: all .2s ease;
}

.sm-ct-tab:hover {
    border-color: var(--sm-primary);
    color: var(--sm-primary);
}

.sm-ct-tab.is-on {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
    font-weight: 600;
    box-shadow: 0 4px 12px color-mix(in srgb, var(--sm-primary, #5b6cff) 25%, transparent);
}

.sm-ct-panel[hidden] {
    display: none;
}

.sm-ct-more {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    margin-top: 14px;
    font-size: 13px;
    color: var(--sm-primary);
    text-decoration: none;
}

.sm-ct-more .dashicons {
    width: 15px;
    height: 15px;
    font-size: 15px;
}










.sm-feature-2 { grid-template-columns: repeat(2, 1fr); }
.sm-feature-3 { grid-template-columns: repeat(3, 1fr); }
.sm-feature-4 { grid-template-columns: repeat(4, 1fr); }
.sm-feature-5 { grid-template-columns: repeat(5, 1fr); }
.sm-feature-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 1024px) {
    .sm-feature-5,
    .sm-feature-6,
    .sm-feature-7,
    .sm-feature-8 { grid-template-columns: repeat(3, 1fr); }}@media (max-width: 782px) {
    .sm-feature-3,
    .sm-feature-4 { grid-template-columns: repeat(2, 1fr); }
    .sm-feature-5,
    .sm-feature-6,
    .sm-feature-7,
    .sm-feature-8 { grid-template-columns: repeat(2, 1fr); }}

/* ---------- 软件卡（文章列表新样式 soft） ---------- */
.sm-soft {
    display: grid;
    gap: 12px;
}

.sm-soft-2 { grid-template-columns: repeat(2, 1fr); }
.sm-soft-3 { grid-template-columns: repeat(3, 1fr); }
.sm-soft-4 { grid-template-columns: repeat(4, 1fr); }
.sm-soft-5 { grid-template-columns: repeat(5, 1fr); }
.sm-soft-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 1024px) {
    .sm-soft-5,
    .sm-soft-6,
    .sm-soft-7,
    .sm-soft-8 { grid-template-columns: repeat(3, 1fr); }}@media (max-width: 782px) {
    .sm-soft-3,
    .sm-soft-4 { grid-template-columns: repeat(2, 1fr); }
    .sm-soft-5,
    .sm-soft-6,
    .sm-soft-7,
    .sm-soft-8 { grid-template-columns: repeat(2, 1fr); }}










.sm-picwall-2 { grid-template-columns: repeat(2, 1fr); }
.sm-picwall-3 { grid-template-columns: repeat(3, 1fr); }
.sm-picwall-4 { grid-template-columns: repeat(4, 1fr); }
.sm-picwall-5 { grid-template-columns: repeat(5, 1fr); }
.sm-picwall-6 { grid-template-columns: repeat(6, 1fr); }

@media (max-width: 1024px) {
    .sm-picwall-5,
    .sm-picwall-6,
    .sm-picwall-7,
    .sm-picwall-8 { grid-template-columns: repeat(3, 1fr); }}@media (max-width: 782px) {
    .sm-picwall-3,
    .sm-picwall-4 { grid-template-columns: repeat(2, 1fr); }
    .sm-picwall-5,
    .sm-picwall-6,
    .sm-picwall-7,
    .sm-picwall-8 { grid-template-columns: repeat(2, 1fr); }}

@keyframes sm-bubble-a {
    0%, 100% { transform: translate(0, 0) scale(1); }
    50%      { transform: translate(26px, 22px) scale(1.06); }
}@keyframes sm-bubble-b {
    0%, 100% { transform: translate(0, 0) scale(1.04); }
    50%      { transform: translate(-24px, 18px) scale(1); }
}@keyframes sm-bubble-c {
    0%, 100% { transform: translate(0, 0); }
    50%      { transform: translate(18px, -20px); }
}

/* ==================================================================
 * v5.4.0 · 会员中心（v2 布局）
 * 结构：英雄卡（头像 / 昵称 / 等级 / 资产） + 分组侧栏（带角标） + 卡片主面板
 * 全部颜色走 --sm-* 变量，暗色模式自动适配，无需额外处理。
 * ================================================================== */
.sm-uc {
    display: block;
    margin: 0 0 24px;
}









.sm-uc-hero.lv-vip {
    background: linear-gradient(120deg, #8a5bff, #d05bff);
}

.sm-uc-hero.lv-boosvip {
    background: linear-gradient(120deg, #b8860b, #f0c05a);
}









.sm-uc-lvl.vip,
.sm-uc-lvl.boosvip {
    background: #fff;
    color: #7a4b00;
}

.sm-uc-lvl.user {
    display: none;
}









.sm-uc-hero-act .sm-btn {
    background: rgba(255, 255, 255, .18) !important;
    border: 1px solid rgba(255, 255, 255, .4) !important;
    color: #fff !important;
}

.sm-uc-hero-act .sm-btn:hover {
    background: #fff !important;
    color: var(--sm-primary) !important;
}









.sm-uc-link.active {
    background: color-mix(in srgb, var(--sm-primary) 12%, transparent);
    border-left-color: var(--sm-primary);
    color: var(--sm-primary);
    font-weight: 600;
}









.sm-uc-content > .sm-uc-sub:first-child,
.sm-uc-content > .sm-empty:first-child {
    margin-top: 0;
}









.sm-uc-table .sm-table {
    margin: 0;
    min-width: 620px;
}









.sm-tag {
    display: inline-block;
    padding: 1px 8px;
    border-radius: var(--sm-radius-sm);
    font-size: 12px;
    line-height: 1.7;
    background: rgba(107, 116, 136, .12);
    color: var(--sm-text-2);
}

.sm-tag.ok {
    background: rgba(34, 176, 125, .12);
    color: var(--sm-ok);
}

.sm-tag.wait {
    background: rgba(245, 166, 35, .14);
    color: #d98700;
}

.sm-tag.off {
    background: rgba(107, 116, 136, .1);
    color: var(--sm-text-3);
}









.sm-uc-filters a:hover,
.sm-uc-filters a.active {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}









.sm-uc-pager a:hover,
.sm-uc-pager a.active {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}

/* 面板加载态 */
.sm-uc-main.is-loading {
    position: relative;
    min-height: 240px;
}

.sm-uc-main.is-loading::after {
    content: '';
    position: absolute;
    inset: 0;
    background: rgba(255, 255, 255, .55);
    z-index: 2;
}/* v5.21.0：切页签时原来只有一层灰纱，看不出是在加载还是卡死了 —— 补一个转圈 */
.sm-uc-main.is-loading::before {
    content: '';
    position: absolute;
    top: 88px;
    left: 50%;
    width: 26px;
    height: 26px;
    margin-left: -13px;
    border: 3px solid var(--sm-primary);
    border-right-color: transparent;
    border-radius: 50%;
    animation: sm-spin .6s linear infinite;
    z-index: 3;
}

html.sm-dark .sm-uc-main.is-loading::after,
body.sm-dark .sm-uc-main.is-loading::after {
    background: rgba(20, 24, 33, .5);
}

.sm-spin {
    display: inline-block;
    width: 14px;
    height: 14px;
    margin-right: 6px;
    vertical-align: -2px;
    border: 2px solid rgba(255, 255, 255, .4);
    border-top-color: #fff;
    border-radius: 50%;
    animation: sm-spin .8s linear infinite;
}

.sm-btn .sm-spin,
.sm-pay-loading .sm-spin {
    border-color: var(--sm-primary);
    border-top-color: transparent;
}@keyframes sm-spin {
    to { transform: rotate(360deg); }
}/* ==================================================================
 * v5.4.0 · 支付方式卡片 / 支付页
 * ================================================================== */
.sm-gws {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 10px;
    margin-bottom: 14px;
}

.sm-gw {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border: 1.5px solid var(--sm-border);
    border-radius: 10px;
    cursor: pointer;
    background: var(--sm-card);
    transition: border-color .18s, box-shadow .18s, transform .18s;
}

.sm-gw:hover {
    border-color: var(--sm-primary);
    transform: translateY(-1px);
}

.sm-gw input[type=radio] {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

.sm-gw.active {
    border-color: var(--sm-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--sm-primary) 12%, transparent);
}

.sm-gw-ico {
    width: 38px;
    height: 38px;
    flex: 0 0 38px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 9px;
    background: var(--gw, var(--sm-primary));
    overflow: hidden;
}

.sm-gw-ico img {
    width: 24px;
    height: 24px;
    border-radius: 6px;
}

.sm-gw span {
    font-size: 13px;
    line-height: 1.4;
}

.sm-gw span em {
    display: block;
    font-style: normal;
    font-size: 12px;
    color: var(--sm-text-3);
}

/* v5.4.2：充值说明（后台「充值说明」此前从不输出，现已接通并单独排版） */
.sm-pay-desc {
    padding: 12px 16px;
    margin: 0 0 16px;
    border-radius: 10px;
    border: 1px solid var(--sm-border);
    background: var(--sm-bg-soft);
    color: var(--sm-text-2);
    font-size: 13px;
    line-height: 1.75;
}
.sm-pay-desc p {
    margin: 0 0 8px;
}
.sm-pay-desc p:last-child {
    margin-bottom: 0;
}









.sm-pkgs-vip .sm-pkg input:checked + .sm-pkg-tag {
    background: var(--sm-primary);
    color: #fff;
}

.sm-pkg {
    position: relative;
}

.sm-pkg-tag {
    position: absolute;
    top: -8px;
    right: -6px;
    z-index: 2;
    padding: 0 8px;
    border-radius: var(--sm-radius-sm);
    background: var(--sm-gold);
    color: #4a3208;
    font-size: 11px;
    font-style: normal;
    line-height: 18px;
}

.sm-pkg.is-rec input:checked ~ span {
    color: var(--sm-primary);
}/* 支付页 */
.sm-pay-sum {
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    padding: 14px;
    margin-bottom: 16px;
}

.sm-pay-row {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    font-size: 13px;
    padding: 5px 0;
    color: var(--sm-text-2);
}

.sm-pay-row b {
    color: var(--sm-text);
}

.sm-pay-amount {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-top: 10px;
    padding-top: 12px;
    border-top: 1px dashed var(--sm-border);
}

.sm-pay-amount span {
    font-size: 13px;
    color: var(--sm-text-2);
}

.sm-pay-amount b {
    font-size: 26px;
    color: var(--sm-danger);
}

.sm-pay-box {
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    padding: 18px;
    text-align: center;
    background: var(--sm-bg);
}

.sm-pay-qr img {
    width: 190px;
    height: 190px;
    margin: 0 auto 12px;
    background: #fff;
    padding: 8px;
    border-radius: 10px;
}

.sm-pay-qr p,
.sm-pay-loading {
    font-size: 13px;
    color: var(--sm-text-2);
}

.sm-pay-loading {
    text-align: center;
    padding: 10px;
}

.sm-pay-redirect .sm-btn {
    min-width: 180px;
}

.sm-pay-done {
    text-align: center;
    padding: 24px 10px 10px;
}

.sm-pay-ico {
    width: 62px;
    height: 62px;
    margin: 0 auto 14px;
    border-radius: 50%;
    background: var(--sm-ok);
    color: #fff;
    font-size: 32px;
    line-height: 62px;
}

.sm-pay-foot {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-top: 16px;
    font-size: 12px;
}

@media (max-width: 782px) {

    .sm-uc-link.active {
        border-left: 0;
    }}

/* ==================================================================
 * v5.4.0 · 资源规格表 / 下载提示
 * 数据来自文章编辑页「展示与拓展」分组（版本 / 大小 / 环境 + 自定义条目）
 * ================================================================== */
.sm-res-spec {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 14px 16px;
    margin: 18px 0;
    background: var(--sm-card);
}

.sm-res-spec h4 {
    margin: 0 0 10px;
    font-size: 15px;
}

.sm-res-spec table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}

.sm-res-spec th,
.sm-res-spec td {
    padding: 7px 10px;
    border-bottom: 1px solid var(--sm-border);
    text-align: left;
    vertical-align: top;
}

.sm-res-spec tr:last-child th,
.sm-res-spec tr:last-child td {
    border-bottom: 0;
}

.sm-res-spec th {
    width: 120px;
    font-weight: 500;
    color: var(--sm-text-3);
}

.sm-res-spec td {
    color: var(--sm-text);
}

.sm-down-note {
    display: inline-block;
    margin-top: 6px;
    padding: 4px 10px;
    border-radius: 6px;
    background: rgba(245, 166, 35, .1);
    color: #a8690a;
    font-size: 12px;
}/* ==================================================================
 * v5.4.0 · 顶部通知角标（会员消息 / 管理员待办）
 * ================================================================== */
.sm-user-note {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    color: var(--sm-text-2);
    background: var(--sm-bg);
    transition: color .18s, background .18s;
}

.sm-user-note:hover {
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 12%, transparent);
}

.sm-user-note .dashicons {
    font-size: 17px;
    width: 17px;
    height: 17px;
}

.sm-user-note em {
    position: absolute;
    top: -3px;
    right: -3px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: var(--sm-radius-sm);
    background: var(--sm-danger);
    color: #fff;
    font-size: 10px;
    font-style: normal;
    line-height: 16px;
    text-align: center;
    box-shadow: 0 0 0 2px var(--sm-card);
}/* ==================================================================
 * v5.4.0 · 内置图片资源接入
 * LOGO／默认头像／占位图／支付图标全部使用 assets/img 下的 SVG，
 * 与主题主色同源，体积都在 1KB 上下。
 * ================================================================== */
.sm-logo .sm-logo-default {
    width: 30px;
    height: 30px;
    flex: 0 0 30px;
    margin-right: 8px;
    border-radius: var(--sm-radius-sm);
}

.sm-logo-text.sm-logo-with-mark,
a.sm-logo-text:has(.sm-logo-default) {
    display: inline-flex;
    align-items: center;
}

.sm-empty {
    position: relative;
}

.sm-empty::before {
    content: '';
    display: block;
    width: 96px;
    height: 64px;
    margin: 4px auto 8px;
    background: url("../img/empty.svg") center/contain no-repeat;
    opacity: .9;
}/* 表格 / 行内的小提示不需要插画 */
.sm-uc-table .sm-empty::before,
.sm-pay-box .sm-empty::before,
.sm-form .sm-empty::before {
    display: none;
}/* ============================================================
   v5.5.0 会员介绍页（[sanmao_vip] 落地页）
   结构：Hero → 套餐 → 尊享特权 → 等级对比表 → 选择理由 → FAQ → 协议 → CTA
   ============================================================ */
.sm-vip-lp .sm-vip-hero {
    position: relative;
    overflow: hidden;
    padding: 54px 32px 46px;
    margin-bottom: 34px;
    border-radius: var(--sm-radius);
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    color: #fff;
    text-align: center;
}
.sm-vip-lp .sm-vip-hero::before,
.sm-vip-lp .sm-vip-hero::after {
    content: '';
    position: absolute;
    border-radius: 50%;
    background: rgba(255, 255, 255, .16);
    pointer-events: none;
}
.sm-vip-lp .sm-vip-hero::before {
    width: 220px;
    height: 220px;
    top: -90px;
    left: -60px;
}
.sm-vip-lp .sm-vip-hero::after {
    width: 160px;
    height: 160px;
    right: -50px;
    bottom: -70px;
}
.sm-vip-hero-title {
    position: relative;
    margin: 0 0 10px;
    font-size: 34px;
    font-weight: 800;
    letter-spacing: .5px;
    color: #fff;
    text-shadow: 0 2px 18px rgba(0, 0, 0, .12);
}
.sm-vip-hero-sub {
    position: relative;
    max-width: 720px;
    margin: 0 auto 16px;
    font-size: 15px;
    line-height: 1.7;
    opacity: .92;
}
.sm-vip-hero .sm-vip-now {
    position: relative;
    display: inline-flex;
    gap: 8px;
    align-items: center;
    padding: 7px 16px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .2);
    font-size: 13px;
}
.sm-vip-hero .sm-vip-now b {
    color: #fff;
}
.sm-vip-hero-tip {
    position: relative;
    display: flex;
    gap: 6px;
    align-items: flex-start;
    justify-content: center;
    max-width: 760px;
    margin: 16px auto 0;
    font-size: 13px;
    line-height: 1.7;
    opacity: .9;
}
.sm-vip-hero-tip .dashicons {
    flex: none;
    margin-top: 2px;
    font-size: 15px;
    width: 15px;
    height: 15px;
}
.sm-vip-hero-btn {
    position: relative;
    margin-top: 22px;
    background: #fff;
    color: var(--sm-primary);
    border: none;
}
.sm-vip-hero-btn:hover {
    background: #fff;
    opacity: .9;
}

.sm-vip-lp .sm-vip-sec {
    margin: 0 0 38px;
}
.sm-vip-sec-hd {
    position: relative;
    margin: 0 0 20px;
    padding-bottom: 12px;
    font-size: 22px;
    font-weight: 700;
    text-align: center;
}
.sm-vip-sec-hd::after {
    content: '';
    display: block;
    width: 46px;
    height: 3px;
    margin: 10px auto 0;
    border-radius: 3px;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
}/* 套餐卡：补齐权益清单 */
.sm-vip-lp .sm-pkgs {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(236px, 1fr));
    gap: 18px;
    align-items: stretch;
}
.sm-pkg-rights {
    list-style: none;
    margin: 12px 0 14px;
    padding: 0;
    text-align: left;
}
.sm-pkg-rights li {
    display: flex;
    gap: 6px;
    align-items: flex-start;
    padding: 4px 0;
    font-size: 13px;
    line-height: 1.6;
    color: var(--sm-text-2);
}
.sm-pkg-rights .dashicons {
    flex: none;
    margin-top: 3px;
    font-size: 15px;
    width: 15px;
    height: 15px;
    color: var(--sm-primary);
}/* 尊享特权四宫格 */
.sm-vip-grid4 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 16px;
}
.sm-vip-pcard {
    padding: 22px 18px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-bg-soft);
    text-align: center;
    transition: transform .25s, box-shadow .25s;
}
.sm-vip-pcard:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 28px rgba(0, 0, 0, .08);
}
.sm-vip-pcard .dashicons {
    display: block;
    margin: 0 auto 10px;
    font-size: 30px;
    width: 30px;
    height: 30px;
    color: var(--sm-primary);
}
.sm-vip-pcard b {
    display: block;
    margin-bottom: 6px;
    font-size: 16px;
}
.sm-vip-pcard p {
    margin: 0;
    font-size: 13px;
    line-height: 1.7;
    color: var(--sm-text-2);
}/* 等级权益对比表 */
.sm-vip-matrix-wrap {
    overflow-x: auto;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
}
table.sm-vip-matrix {
    width: 100%;
    min-width: 560px;
    border-collapse: collapse;
    font-size: 14px;
}
.sm-vip-matrix th,
.sm-vip-matrix td {
    padding: 12px 14px;
    text-align: center;
    border-bottom: 1px solid var(--sm-border);
}
.sm-vip-matrix th {
    background: var(--sm-bg-soft);
    font-weight: 600;
}
.sm-vip-matrix th:first-child,
.sm-vip-matrix td:first-child {
    text-align: left;
}
.sm-vip-matrix .is-hot {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 6%, transparent);
    color: var(--sm-primary);
    font-weight: 600;
}
.sm-vip-matrix tbody tr:last-child td {
    border-bottom: none;
}/* 为什么选择我们 */
.sm-vip-reasons {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 16px;
    margin: 0;
    padding: 0;
}
.sm-vip-reasons li {
    display: flex;
    gap: 12px;
    padding: 18px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-bg-soft);
}
.sm-vip-reasons .dashicons {
    flex: none;
    margin-top: 2px;
    font-size: 22px;
    width: 22px;
    height: 22px;
    color: var(--sm-primary);
}
.sm-vip-reasons b {
    display: block;
    margin-bottom: 4px;
    font-size: 15px;
}
.sm-vip-reasons p {
    margin: 0;
    font-size: 13px;
    line-height: 1.75;
    color: var(--sm-text-2);
}/* 常见问题 */
.sm-vip-faq {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    overflow: hidden;
}
.sm-vip-faq-item {
    border-bottom: 1px solid var(--sm-border);
}
.sm-vip-faq-item:last-child {
    border-bottom: none;
}
.sm-vip-faq-item summary {
    padding: 14px 18px;
    cursor: pointer;
    font-size: 14px;
    font-weight: 600;
    list-style: none;
}
.sm-vip-faq-item summary::-webkit-details-marker {
    display: none;
}
.sm-vip-faq-item summary::after {
    content: '+';
    float: right;
    color: var(--sm-text-2);
    font-weight: 400;
}
.sm-vip-faq-item[open] summary::after {
    content: '\2212';
}
.sm-vip-faq-a {
    padding: 0 18px 16px;
    font-size: 13px;
    line-height: 1.8;
    color: var(--sm-text-2);
}/* 底部引导 */
.sm-vip-cta {
    margin-top: 34px;
    padding: 38px 24px;
    border-radius: var(--sm-radius);
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    text-align: center;
}
.sm-vip-cta h3 {
    margin: 0 0 18px;
    font-size: 24px;
    font-weight: 700;
    color: #fff;
}
.sm-vip-cta .sm-btn {
    background: #fff;
    color: var(--sm-primary);
    border: none;
}@media (max-width: 900px) {
    .sm-vip-grid4 {
        grid-template-columns: repeat(2, 1fr);
    }}@media (max-width: 640px) {
    .sm-vip-lp .sm-vip-hero {
        padding: 36px 18px 32px;
    }
    .sm-vip-hero-title {
        font-size: 25px;
    }
    .sm-vip-grid4,
    .sm-vip-reasons {
        grid-template-columns: 1fr;
    }
    .sm-vip-sec-hd {
        font-size: 19px;
    }
    .sm-vip-cta h3 {
        font-size: 20px;
    }}/* compact 模式（首页搭建器 VIP 模块复用）：只留套餐区，去掉多余间距 */
.sm-vip-lp.is-compact .sm-vip-sec {
    margin-bottom: 0;
}/* ==================================================================
 * v5.6.0 Badge 徽章组件
 * 规格对齐 Bootstrap 4 Badge，配色与圆角沿用三猫设计变量，跟随主题换色 + 暗色模式
 *
 * 基础：<span class="sm-badge">默认</span>
 * 变体：.is-primary .is-secondary .is-success .is-danger .is-warning .is-info .is-light .is-dark
 *       （也支持简写 .primary .success ... ，与既有 .free/.pay/.vip 风格一致）
 * 药丸：.is-pill
 * 扩展：.is-soft（浅底彩字） .is-outline（描边）
 * 圆点：.is-dot（仅渲染一个点，文字仍保留给读屏软件）
 * 尺寸：.is-sm .is-lg
 * 链接：直接用在 <a> 上自动获得 hover / focus 状态
 * 角标：外部容器 position:relative，.is-corner 浮在右上角；.is-corner-left 浮在左上角
 * ================================================================== *//* ---------- 上下文变体 ---------- */
.sm-badge.is-primary,
.sm-badge.primary {
    --bdg-c: var(--sm-primary);
    background: var(--bdg-c);
    color: #fff;
}

.sm-badge.is-secondary,
.sm-badge.secondary {
    --bdg-c: var(--sm-text-3);
    background: var(--bdg-c);
    color: #fff;
}

.sm-badge.is-success,
.sm-badge.success {
    --bdg-c: var(--sm-ok);
    background: var(--bdg-c);
    color: #fff;
}

.sm-badge.is-danger,
.sm-badge.danger {
    --bdg-c: var(--sm-danger);
    background: var(--bdg-c);
    color: #fff;
}

.sm-badge.is-warning,
.sm-badge.warning {
    --bdg-c: var(--sm-warn);
    background: var(--bdg-c);
    /* 橙黄底配深棕字，保证对比度达标 */
    color: #4a2c00;
}

.sm-badge.is-info,
.sm-badge.info {
    --bdg-c: var(--sm-info);
    background: var(--bdg-c);
    color: #fff;
}

.sm-badge.is-light,
.sm-badge.light {
    --bdg-c: var(--sm-border);
    background: var(--bdg-c);
    color: var(--sm-text);
}

.sm-badge.is-dark,
.sm-badge.dark {
    --bdg-c: var(--sm-text);
    background: var(--bdg-c);
    color: var(--sm-card);
}/* 会员 / 金币 / VIP：沿用主题金色体系 */
.sm-badge.is-vip,
.sm-badge.level-vip {
    --bdg-c: var(--sm-gold);
    background: linear-gradient(135deg, var(--sm-gold-2), var(--sm-gold));
    color: #4a3200;
}

.sm-badge.is-level,
.sm-badge.level {
    --bdg-c: var(--sm-vip);
    background: var(--bdg-c);
    color: #fff;
}/* ---------- 药丸：更大圆角 + 横向加宽 ---------- */
.sm-badge.is-pill {
    border-radius: 10rem;
    padding-left: .72em;
    padding-right: .72em;
}/* ---------- 扩展态：浅底彩字 / 描边 ---------- */
.sm-badge.is-soft {
    background: var(--sm-bg);
    background: color-mix(in srgb, var(--bdg-c) 14%, transparent);
    color: var(--bdg-c);
}

.sm-badge.is-outline {
    background: transparent;
    border: 1px solid var(--bdg-c);
    color: var(--bdg-c);
}/* soft / outline 时字号与纯色一致，补回描边占位避免高度跳动 */
.sm-badge.is-outline {
    padding-top: calc(.22em - 1px);
    padding-bottom: calc(.22em - 1px);
}/* warning 的深棕字在 soft / outline 下同样适用 */
.sm-badge.is-warning.is-soft,
.sm-badge.is-warning.is-outline,
.sm-badge.warning.is-soft,
.sm-badge.warning.is-outline {
    color: #8a5200;
}

html.sm-dark .sm-badge.is-warning.is-soft,
html.sm-dark .sm-badge.warning.is-soft,
body.sm-dark .sm-badge.is-warning.is-soft,
body.sm-dark .sm-badge.warning.is-soft {
    color: var(--sm-warn);
}/* ---------- 圆点：通知小红点 ---------- */
.sm-badge.is-dot {
    width: .62em;
    height: .62em;
    min-width: .62em;
    padding: 0;
    border-radius: 50%;
    overflow: hidden;
    /* 文字保留但移出视野，屏幕阅读器仍可读到 */
    text-indent: -999em;
    background: var(--bdg-c, var(--sm-danger));
}/* ---------- 尺寸 ---------- */
.sm-badge.is-sm {
    font-size: 70%;
    padding: .16em .46em;
    border-radius: 4px;
}

.sm-badge.is-sm.is-pill {
    border-radius: 10rem;
    padding-left: .6em;
    padding-right: .6em;
}

.sm-badge.is-lg {
    font-size: 92%;
    padding: .3em .66em;
}

.sm-badge.is-lg.is-pill {
    padding-left: .82em;
    padding-right: .82em;
}/* ---------- 链接态：<a class="sm-badge is-primary" href=""> ---------- */
a.sm-badge {
    text-decoration: none;
    cursor: pointer;
}

a.sm-badge:hover,
a.sm-badge:focus {
    text-decoration: none;
    opacity: .88;
}

a.sm-badge.is-outline:hover,
a.sm-badge.is-outline:focus {
    opacity: 1;
    background: var(--bdg-c);
    color: #fff;
}

a.sm-badge.is-soft:hover,
a.sm-badge.is-soft:focus {
    opacity: 1;
    filter: brightness(.95);
}/* ---------- 角标：浮在容器边角的计数 ---------- */
.sm-badge.is-corner,
.sm-badge.is-corner-left {
    position: absolute;
    top: -6px;
    z-index: 3;
    padding: 0 .36em;
    min-width: 1.35em;
    height: 1.35em;
    line-height: 1.35em;
    border-radius: 10rem;
    font-size: 68%;
    box-shadow: 0 0 0 2px var(--sm-card);
}

.sm-badge.is-corner {
    right: -6px;
}

.sm-badge.is-corner-left {
    left: -6px;
}

.sm-badge.is-corner.is-soft,
.sm-badge.is-corner-left.is-soft {
    filter: none;
    box-shadow: 0 0 0 2px var(--sm-card);
}/* ---------- 徽章组：多个并排时统一间距 ---------- */
.sm-badge-group {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    align-items: center;
}

.sm-badge-group.is-inline {
    display: inline-flex;
}/* ---------- 无障碍：视觉隐藏但可读屏（对标 Bootstrap .sr-only） ---------- */
.sm-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;
}/* ---------- 暗色模式微调 ---------- */
html.sm-dark .sm-badge.is-soft,
body.sm-dark .sm-badge.is-soft {
    /* 暗色下 14% 混色偏暗，提高混色比例保证底色可见 */
    background: color-mix(in srgb, var(--bdg-c) 24%, transparent);
}

html.sm-dark .sm-badge.is-light,
body.sm-dark .sm-badge.is-light,
html.sm-dark .sm-badge.light,
body.sm-dark .sm-badge.light {
    background: var(--sm-border);
    color: var(--sm-text-2);
}/* ---------- 既有专用计数标签 × 新组件共存时的尺寸收敛 ----------
   sm-uc-badge / sm-trade-badge / sm-nav-badge 原本是固定 18px 胶囊，
   改由 sanmao_badge() 渲染后字号按 em 缩放，这里统一拉回原尺寸，保证布局不跳变 */
.sm-uc-badge.sm-badge,
.sm-trade-badge.sm-badge {
    display: inline-block;
    min-width: 18px;
    height: 18px;
    padding: 0 6px;
    border-radius: 9px;
    font-size: 11px;
    font-style: normal;
    font-weight: 600;
    line-height: 18px;
    text-align: center;
}/* ---------- 顶部导航栏角标（会员铃铛 / 管理员待办）----------
   原先依赖 <em> 标签的选择器在函数改渲染 <span> 后失效，这里补回同样的定位表现 */
.sm-hd-badge.sm-badge {
    position: absolute;
    top: -4px;
    right: -4px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: var(--sm-radius-sm);
    font-size: 10px;
    font-weight: 600;
    line-height: 16px;
    text-align: center;
    box-shadow: 0 0 0 2px var(--sm-card);
}

.sm-user-note .sm-hd-badge.sm-badge {
    top: -3px;
    right: -3px;
    background: var(--sm-danger);
    color: #fff;
}/* ==================================================================
 * v5.7.0 会员套餐卡重构 —— 多档套餐必须同一排 + 年轻化视效
 *
 * 背景：旧用法 `repeat(auto-fit, minmax(236px, 1fr))` 依赖容器宽度，
 *       一旦页面带侧边栏（内容区仅 ~820px）或某一档文案偏长撑大 min-content，
 *       三档套餐就会被挤成 2 + 1，第 3 个单独掉到第二行。
 *
 * 方案：由 PHP 统计套餐数量输出 is-c1 ~ is-c4（>4 档用 is-auto）,
 *       这里直接给定列数，配合 min-width:0 杜绝内容撑破网格。
 * 适用：会员介绍页 [sanmao_vip] 与 会员中心「开通会员」
 * ================================================================== */
.sm-pkgs {
    display: grid;
    gap: 18px;
    margin: 0 0 18px;
    align-items: stretch;
}
.sm-pkgs > .sm-pkg {
    min-width: 0;
}
.sm-pkgs.is-c1 {
    grid-template-columns: minmax(0, 440px);
    justify-content: center;
}
.sm-pkgs.is-c2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
}
.sm-pkgs.is-c3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.sm-pkgs.is-c4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
}
.sm-pkgs.is-auto {
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
}/* ---------- 卡片本体 ---------- */
.sm-pk-card {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 6px;
    min-width: 0;
    padding: 30px 20px 22px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    background: var(--sm-card);
    text-align: center;
    cursor: pointer;
    transition: transform .28s cubic-bezier(.22, .8, .28, 1), box-shadow .28s, border-color .2s;
}/* 顶部渐变高光条：推荐常亮，其余 hover 才亮 */
.sm-pk-card::before {
    content: '';
    position: absolute;
    left: 18px;
    right: 18px;
    top: -1px;
    height: 3px;
    border-radius: 3px;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    opacity: 0;
    transition: opacity .25s;
}
.sm-pk-card:hover {
    transform: translateY(-6px);
    border-color: color-mix(in srgb, var(--sm-primary, #5b6cff) 50%, transparent);
    box-shadow: 0 18px 40px rgba(29, 42, 74, .13);
}
.sm-pk-card:hover::before {
    opacity: .95;
}/* 推荐档：整体抬高一档，形成视觉焦点 */
.sm-pk-card.is-rec {
    border-color: var(--sm-primary);
    transform: translateY(-4px);
    box-shadow: 0 14px 32px color-mix(in srgb, var(--sm-primary, #5b6cff) 26%, transparent);
}
.sm-pk-card.is-rec::before {
    opacity: 1;
}
.sm-pk-card.is-rec:hover {
    transform: translateY(-9px);
}/* ---------- 推荐角标（兼容旧 markup 的 .sm-pkg-tag） ---------- */
.sm-pk-tag,
.sm-pkg-tag {
    position: absolute;
    top: -13px;
    left: 50%;
    right: auto;
    transform: translateX(-50%);
    z-index: 2;
    display: inline-block;
    padding: 3px 14px;
    border-radius: 999px;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    color: #fff;
    font-size: 11px;
    font-style: normal;
    font-weight: 600;
    letter-spacing: .6px;
    line-height: 1.6;
    white-space: nowrap;
    box-shadow: 0 6px 16px color-mix(in srgb, var(--sm-primary, #5b6cff) 32%, transparent);
}/* ---------- 文案层级 ---------- */
.sm-pk-name {
    font-size: 17px;
    font-weight: 700;
    color: var(--sm-text);
    line-height: 1.4;
}
.sm-pk-sub {
    font-size: 12.5px;
    color: var(--sm-text-3);
    letter-spacing: .3px;
}
.sm-pk-price {
    display: flex;
    align-items: baseline;
    justify-content: center;
    gap: 2px;
    margin: 6px 0 2px;
    color: var(--sm-primary);
}
.sm-pk-price i {
    font-size: 18px;
    font-style: normal;
    font-weight: 600;
}
.sm-pk-price b {
    font-size: 38px;
    font-weight: 800;
    line-height: 1.1;
    letter-spacing: -.5px;
}
.sm-pk-meta {
    display: flex;
    flex-direction: column;
    gap: 2px;
    font-size: 12.5px;
    color: var(--sm-text-3);
}
.sm-pk-meta span {
    opacity: .88;
}/* ---------- 权益清单 ---------- */
.sm-pk-card .sm-pkg-rights {
    width: 100%;
    margin: 14px 0 16px;
    padding: 12px 0 0;
    border-top: 1px dashed var(--sm-border);
    list-style: none;
    text-align: left;
}
.sm-pk-card .sm-pkg-rights li + li {
    margin-top: 2px;
}/* ---------- 开通按钮 ---------- */
.sm-pk-btn {
    display: block;
    width: 100%;
    margin-top: auto;
    padding: 11px 16px;
    border: 1px solid var(--sm-primary);
    border-radius: 999px;
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 6%, transparent);
    color: var(--sm-primary);
    font-size: 15px;
    font-weight: 600;
    text-align: center;
    transition: .22s;
}
.sm-pk-btn:hover {
    border-color: transparent;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    color: #fff;
    box-shadow: 0 10px 24px color-mix(in srgb, var(--sm-primary, #5b6cff) 28%, transparent);
}
.sm-pk-card.is-rec .sm-pk-btn {
    border-color: transparent;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    color: #fff;
    box-shadow: 0 10px 24px color-mix(in srgb, var(--sm-primary, #5b6cff) 30%, transparent);
}
.sm-pk-card.is-rec .sm-pk-btn:hover {
    filter: brightness(1.07);
}/* ---------- 会员中心：radio 形态的套餐卡（VIP 开通 / 站内币充值共用） ---------- */
.sm-pkgs .sm-pk-card input[type=radio] {
    position: absolute;
    width: 0;
    height: 0;
    margin: 0;
    opacity: 0;
}
.sm-pkgs .sm-pk-card input[type=radio]:focus-visible ~ .sm-pk-price {
    outline: 2px solid var(--sm-primary);
    outline-offset: 4px;
    border-radius: 6px;
}
.sm-pkgs .sm-pk-card.is-on {
    border-color: var(--sm-primary);
    transform: translateY(-4px);
    box-shadow: 0 0 0 2px color-mix(in srgb, var(--sm-primary, #5b6cff) 30%, transparent), 0 14px 32px color-mix(in srgb, var(--sm-primary, #5b6cff) 20%, transparent);
}
.sm-pkgs .sm-pk-card.is-on::before {
    opacity: 1;
}
.sm-pkgs-vip .sm-pk-card.is-on .sm-pk-price {
    color: var(--sm-vip);
}/* 充值档位偏多，卡片收紧一点 */
.sm-pkgs.is-auto .sm-pk-card {
    padding: 20px 14px 18px;
}
.sm-pkgs.is-auto .sm-pk-price b {
    font-size: 26px;
}/* 渐进增强：支持 :has() 的浏览器即使 JS 未介入也能高亮选中项 */@supports selector(:has(*)) {
    .sm-pkgs .sm-pk-card:has(input:checked) {
        border-color: var(--sm-primary);
        transform: translateY(-4px);
        box-shadow: 0 0 0 2px color-mix(in srgb, var(--sm-primary, #5b6cff) 30%, transparent), 0 14px 32px color-mix(in srgb, var(--sm-primary, #5b6cff) 20%, transparent);
    }
    .sm-pkgs .sm-pk-card:has(input:checked)::before {
        opacity: 1;
    }}/* 会员中心 VIP 档位稍紧凑 */
.sm-pkgs-vip .sm-pk-card {
    padding: 24px 16px 18px;
}/* ---------- 首页搭建器「VIP 套餐」模块：未自定义套餐时不再套外层网格 ----------
   .sm-vip-cols-N 会把内部的 .sm-pkgs 当成一个网格格子（只占 1/N 宽），
   三档套餐会被压成一列，这里让外层回归块级 */
.sm-vip-block.is-plain {
    display: block;
}
.sm-vip-block.is-plain .sm-pkgs {
    margin-top: 6px;
}/* ---------- 会员介绍页：锚点不要被吸顶导航挡住 ---------- */
.sm-vip-lp #sm-vip-plans {
    scroll-margin-top: 92px;
}@media (prefers-reduced-motion: no-preference) {
    html {
        scroll-behavior: smooth;
    }}/* ---------- 响应式：桌面永远一排，窄屏才降列 ---------- */@media (max-width: 1180px) {
    .sm-pk-price b {
        font-size: 34px;
    }}@media (max-width: 1024px) {
    .sm-pkgs {
        gap: 14px;
    }
    .sm-pkgs.is-c4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .sm-pk-card {
        padding: 26px 14px 20px;
    }
    .sm-pk-price b {
        font-size: 30px;
    }}@media (max-width: 720px) {
    .sm-pkgs.is-c1,
    .sm-pkgs.is-c2,
    .sm-pkgs.is-c3,
    .sm-pkgs.is-c4 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }}@media (max-width: 520px) {
    .sm-pkgs.is-c1,
    .sm-pkgs.is-c2,
    .sm-pkgs.is-c3,
    .sm-pkgs.is-c4,
    .sm-pkgs.is-auto {
        grid-template-columns: 1fr;
    }
    .sm-pk-card {
        padding: 24px 18px 20px;
    }
    .sm-pk-price b {
        font-size: 34px;
    }}/* ==================================================================
 * v5.7.0 现代视觉增强（后台「视觉风格 → 现代视觉增强」控制，默认开启）
 * 仅做外观升级：圆角层级、按钮微交互、卡片景深、导航毛玻璃
 * 关闭后所有规则整体失效，回到 v5.6 观感
 * ================================================================== */
body.sm-ui-modern {
    -webkit-tap-highlight-color: transparent;
}/* ---------- 按钮：圆角 + 悬浮抬升 + 按下回弹 ---------- */
body.sm-ui-modern .sm-btn {
    border-radius: calc(var(--sm-radius) - 2px);
    transition: background .2s, border-color .2s, color .2s, transform .18s cubic-bezier(.22, .8, .28, 1), box-shadow .18s;
}
body.sm-ui-modern .sm-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 22px color-mix(in srgb, var(--sm-primary, #5b6cff) 26%, transparent);
}
body.sm-ui-modern .sm-btn:active {
    transform: translateY(0);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--sm-primary, #5b6cff) 20%, transparent);
}
body.sm-ui-modern .sm-btn-o:hover,
body.sm-ui-modern .sm-btn-ghost:hover {
    box-shadow: 0 8px 20px color-mix(in srgb, var(--sm-primary, #5b6cff) 16%, transparent);
}
body.sm-ui-modern .sm-btn-lg {
    border-radius: calc(var(--sm-radius) - 1px);
    font-weight: 600;
}/* ---------- 资源 / 文章卡片：大圆角 + 悬停景深 + 缩略图缓推 ---------- */
body.sm-ui-modern .sm-card {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    transition: transform .3s cubic-bezier(.22, .8, .28, 1), box-shadow .3s, border-color .2s;
}
body.sm-ui-modern .sm-card:hover {
    transform: translateY(-6px);
    border-color: color-mix(in srgb, var(--sm-primary, #5b6cff) 42%, transparent);
    box-shadow: 0 20px 42px rgba(29, 42, 74, .14);
}
body.sm-ui-modern .sm-card-thumb img {
    transition: transform .5s cubic-bezier(.22, .8, .28, 1);
}
body.sm-ui-modern .sm-card:hover .sm-card-thumb img {
    transform: scale(1.05);
}
body.sm-ui-modern .sm-side-mod {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    padding: 18px;
    transition: box-shadow .28s, transform .28s;
}
body.sm-ui-modern .sm-side-mod:hover {
    box-shadow: var(--sm-shadow);
    transform: translateY(-2px);
}
body.sm-ui-modern .sm-side-hd::before {
    width: 40px;
    height: 3px;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
}/* ---------- 会员中心：导航 / 英雄卡更轻更有层次 ---------- */
body.sm-ui-modern .sm-uc-nav {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    box-shadow: 0 2px 14px rgba(29, 42, 74, .06);
}
body.sm-ui-modern .sm-uc-link {
    transition: background .18s, color .18s, padding-left .18s;
}
body.sm-ui-modern .sm-uc-link:hover {
    padding-left: 19px;
}
body.sm-ui-modern .sm-uc-hero {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
}
body.sm-ui-modern .sm-uc-stat {
    border-radius: var(--sm-radius);
    transition: transform .25s, box-shadow .25s;
}
body.sm-ui-modern .sm-uc-stat:hover {
    transform: translateY(-4px);
    box-shadow: 0 12px 26px rgba(29, 42, 74, .12);
}/* ---------- 会员介绍页：Hero / 特权卡 / 对比表<｜hy_place▁holder▁no▁813｜>升级 ---------- */
body.sm-ui-modern .sm-vip-lp .sm-vip-hero {
    padding: 62px 34px 52px;
    border-radius: var(--sm-radius-xl, var(--sm-radius-lg, var(--sm-radius)));
    box-shadow: 0 22px 46px color-mix(in srgb, var(--sm-primary, #5b6cff) 22%, transparent);
}
body.sm-ui-modern .sm-vip-hero-title {
    font-size: 38px;
    letter-spacing: 1px;
}
body.sm-ui-modern .sm-vip-pcard {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    transition: transform .28s cubic-bezier(.22, .8, .28, 1), box-shadow .28s, border-color .2s;
}
body.sm-ui-modern .sm-vip-pcard:hover {
    transform: translateY(-6px);
    border-color: color-mix(in srgb, var(--sm-primary, #5b6cff) 42%, transparent);
    box-shadow: 0 16px 32px rgba(29, 42, 74, .12);
}
body.sm-ui-modern .sm-vip-matrix-wrap {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    box-shadow: 0 2px 14px rgba(29, 42, 74, .05);
}
body.sm-ui-modern .sm-vip-faq {
    border-radius: var(--sm-radius-lg, var(--sm-radius));
}
body.sm-ui-modern .sm-vip-faq-item summary:hover {
    color: var(--sm-primary);
}
body.sm-ui-modern .sm-vip-cta {
    border-radius: var(--sm-radius-xl, var(--sm-radius-lg, var(--sm-radius)));
    box-shadow: 0 22px 46px color-mix(in srgb, var(--sm-primary, #5b6cff) 22%, transparent);
}/* ---------- 导航栏毛玻璃（滚动后保持实色由 JS 的 .is-solid 控制） ---------- */
body.sm-ui-modern .sm-header:not(.is-solid) {
    background: rgba(255, 255, 255, .78);
    -webkit-backdrop-filter: saturate(180%) blur(14px);
    backdrop-filter: saturate(180%) blur(14px);
    border-bottom-color: rgba(29, 42, 74, .06);
}
body.sm-ui-modern.sm-dark .sm-header:not(.is-solid),
html.sm-dark body.sm-ui-modern .sm-header:not(.is-solid) {
    background: rgba(21, 25, 34, .72);
    border-bottom-color: rgba(255, 255, 255, .06);
}/* ---------- 呼吸感：版心上下留白 ---------- */
body.sm-ui-modern .sm-main {
    padding: 28px 0 56px;
}
body.sm-ui-modern .sm-mod {
    margin-bottom: 26px;
}/* ---------- 暗色：把投影压暗，避免发灰 ---------- */
html.sm-dark body.sm-ui-modern .sm-card:hover,
body.sm-dark.sm-ui-modern .sm-card:hover {
    box-shadow: 0 20px 42px rgba(0, 0, 0, .45);
}
html.sm-dark body.sm-ui-modern .sm-btn:hover,
body.sm-dark.sm-ui-modern .sm-btn:hover {
    box-shadow: 0 10px 22px rgba(0, 0, 0, .35);
}/* ---------- 版块标题：渐变竖条 + 胶囊式「查看更多」 ---------- */
body.sm-ui-modern .sm-sec-hd {
    margin-bottom: 18px;
}
body.sm-ui-modern .sm-sec-title {
    font-size: 21px;
    letter-spacing: .3px;
}
body.sm-ui-modern .sm-sec-title::before {
    content: '';
    display: inline-block;
    width: 4px;
    height: 18px;
    margin-right: 2px;
    border-radius: 2px;
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
}
body.sm-ui-modern .sm-sec-more {
    padding: 5px 12px;
    border-radius: 999px;
    transition: background .2s, color .2s;
}
body.sm-ui-modern .sm-sec-more:hover {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 8%, transparent);
}/* ---------- 表单焦点：柔和光环 ---------- */
body.sm-ui-modern input[type=text]:focus-visible,
body.sm-ui-modern input[type=password]:focus-visible,
body.sm-ui-modern input[type=email]:focus-visible,
body.sm-ui-modern input[type=number]:focus-visible,
body.sm-ui-modern input[type=search]:focus-visible,
body.sm-ui-modern textarea:focus-visible,
body.sm-ui-modern select:focus-visible {
    outline: 2px solid color-mix(in srgb, var(--sm-primary, #5b6cff) 32%, transparent);
    outline-offset: 1px;
}@media (max-width: 640px) {
    body.sm-ui-modern .sm-vip-lp .sm-vip-hero {
        padding: 40px 20px 34px;
    }
    body.sm-ui-modern .sm-vip-hero-title {
        font-size: 27px;
    }}/* ==================================================================
 * v5.23.0 视觉观感升级（随「视觉风格 → 现代视觉增强」总控，默认开启）
 * 页面氛围背景 / 主按钮渐变 / 区块标题强化 / 卡片与侧栏细节 / 滚动条与选区
 * ================================================================== *//* ---------- 页面氛围：顶部两团极淡品牌色光晕，替代死板的纯灰底 ---------- */
body.sm-ui-modern {
    background:
        radial-gradient(1100px 480px at 88% -120px, rgba(138, 91, 255, .075), transparent 62%),
        radial-gradient(900px 420px at -8% -100px, color-mix(in srgb, var(--sm-primary, #5b6cff) 9%, transparent), transparent 60%),
        var(--sm-bg);
    background-attachment: fixed;
}
body.sm-ui-modern.sm-dark,
html.sm-dark body.sm-ui-modern {
    background:
        radial-gradient(1100px 480px at 88% -120px, rgba(138, 91, 255, .10), transparent 62%),
        radial-gradient(900px 420px at -8% -100px, color-mix(in srgb, var(--sm-primary, #5b6cff) 10%, transparent), transparent 60%),
        var(--sm-bg);
    background-attachment: fixed;
}@media (max-width: 768px) {
    body.sm-ui-modern,
    body.sm-ui-modern.sm-dark,
    html.sm-dark body.sm-ui-modern {
        background-attachment: scroll; /* 移动端 fixed 背景滚动重绘开销大，回落 scroll */
    }}/* ---------- 主按钮：品牌渐变 + 常态品牌投影（hover 抬升沿用 v5.7 规则） ---------- */
body.sm-ui-modern .sm-btn-primary {
    background: var(--sm-grad, linear-gradient(120deg, #5b6cff, #8a5bff));
    box-shadow: 0 6px 16px color-mix(in srgb, var(--sm-primary, #5b6cff) 24%, transparent);
}
body.sm-ui-modern .sm-btn-primary:hover {
    filter: saturate(1.1);
    box-shadow: 0 10px 22px color-mix(in srgb, var(--sm-primary, #5b6cff) 34%, transparent);
}/* ---------- 区块标题：更大更重；「查看更多」升级为描边胶囊 ---------- */
body.sm-ui-modern .sm-sec-title {
    font-size: 22px;
    font-weight: 800;
    letter-spacing: .3px;
}
body.sm-ui-modern .sm-sec-more {
    border: 1px solid var(--sm-border);
    background: var(--sm-card);
    color: var(--sm-text-2);
    transition: color .2s, border-color .2s, background .2s, box-shadow .2s;
}
body.sm-ui-modern .sm-sec-more:hover {
    color: var(--sm-primary);
    border-color: color-mix(in srgb, var(--sm-primary, #5b6cff) 45%, transparent);
    box-shadow: 0 4px 12px color-mix(in srgb, var(--sm-primary, #5b6cff) 14%, transparent);
}/* 归档 / 搜索页的独立标题（不在 .sm-sec-hd 内）恢复上下留白 */
.sm-content > .sm-sec-title {
    margin: 2px 0 16px;
}/* ---------- 卡片：hover 标题上色 + 缩略图压暗渐层 + 底栏色带 ---------- */
body.sm-ui-modern .sm-card:hover .sm-card-title,
body.sm-ui-modern .sm-card:hover .sm-card-title a {
    color: var(--sm-primary);
}
body.sm-ui-modern .sm-card-thumb::after {
    content: '';
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 60%, rgba(20, 26, 44, .18));
    opacity: 0;
    transition: opacity .3s;
    pointer-events: none;
}
body.sm-ui-modern .sm-card:hover .sm-card-thumb::after {
    opacity: 1;
}
body.sm-ui-modern .sm-card-foot {
    background: var(--sm-bg-soft);
    border-top-color: transparent;
}
body.sm-ui-modern .sm-card-foot b {
    font-size: 14px;
    font-weight: 700;
}/* ---------- 侧栏文章列表：hover 轻位移 + 主题色 ---------- */
body.sm-ui-modern .sm-side-list li a {
    transition: color .18s, padding-left .18s;
}
body.sm-ui-modern .sm-side-list li a:hover {
    color: var(--sm-primary);
    padding-left: 4px;
}/* ---------- 选区 / 滚动条：品牌化细节 ---------- */
body.sm-ui-modern ::selection {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 18%, transparent);
}
body.sm-ui-modern ::-webkit-scrollbar {
    width: 9px;
    height: 9px;
}
body.sm-ui-modern ::-webkit-scrollbar-track {
    background: transparent;
}
body.sm-ui-modern ::-webkit-scrollbar-thumb {
    background: rgba(107, 116, 136, .32);
    border: 2px solid transparent;
    border-radius: 99px;
    background-clip: padding-box;
}
body.sm-ui-modern ::-webkit-scrollbar-thumb:hover {
    background: rgba(107, 116, 136, .52);
    background-clip: padding-box;
    border: 2px solid transparent;
}/* ==================================================================
 * v5.8.0 Badge 组件补齐：三种 Bootstrap 4 内置用法
 *   1) 标题里的徽章   2) 按钮里的计数徽章   3) 通知容器（小红点 / 角标）
 * ================================================================== *//* ---------- ① 标题里的徽章 ----------
   字号走 em 单位已自动跟随 h1~h6 缩放，这里只校正大号标题的垂直位置，
   避免徽章贴在标题顶边。Bootstrap 4 同名用法：<h1>Example <span class="badge badge-secondary">New</span></h1> */
h1 .sm-badge,
h2 .sm-badge,
h3 .sm-badge,
h4 .sm-badge {
    vertical-align: middle;
}

.sm-mod-title .sm-badge,
.sm-sec-hd .sm-badge,
.sm-sec-title .sm-badge {
    margin-left: 6px;
}/* ---------- ② 按钮里的计数徽章 ----------
   Bootstrap 4 用法：<button class="btn btn-primary">通知 <span class="badge badge-light">4</span></button> */
.sm-btn > .sm-badge {
    position: relative;
    top: -1px;
    margin-left: 2px;
    --bdg-c: rgba(255, 255, 255, .3);
    background: rgba(255, 255, 255, .3);
    color: #fff;
    box-shadow: none;
}

.sm-btn-sm > .sm-badge {
    font-size: 68%;
}

.sm-btn-lg > .sm-badge {
    font-size: 82%;
}/* 描边 / 幽灵按钮：底色透明，计数徽章改用实心主色，hover 后反白 */
.sm-btn-o > .sm-badge,
.sm-btn-ghost > .sm-badge {
    --bdg-c: var(--sm-primary);
    background: var(--sm-primary);
    color: #fff;
}

.sm-btn-o:hover > .sm-badge,
.sm-btn-ghost:hover > .sm-badge,
.sm-btn-danger > .sm-badge {
    --bdg-c: rgba(255, 255, 255, .3);
    background: rgba(255, 255, 255, .3);
    color: #fff;
}/* 浅色背景按钮里的计数：改用实心主色，避免白字压白底看不清 */
.sm-btn.is-light > .sm-badge,
.sm-btn-light > .sm-badge {
    --bdg-c: var(--sm-primary);
    background: var(--sm-primary);
    color: #fff;
}/* ---------- ③ 通知容器：给图标挂小红点 / 数字角标 ----------
   <span class="sm-badge-wrap">🔔<span class="sm-badge is-danger is-pill is-corner">3</span></span> */
.sm-badge-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    vertical-align: middle;
}

.sm-badge-wrap.is-block {
    display: inline-flex;
    width: 100%;
}/* 角标容器已自带相对定位，这里统一负偏移量，挂在不同尺寸图标上都居中在角上 */
.sm-badge-wrap > .sm-badge.is-corner {
    top: -6px;
    right: -6px;
}

.sm-badge-wrap > .sm-badge.is-corner-left {
    top: -6px;
    left: -6px;
}/* 圆点模式不参与计数角标的胶囊尺寸计算，保持正圆 */
.sm-badge-wrap > .sm-badge.is-dot.is-corner,
.sm-badge-wrap > .sm-badge.is-dot {
    width: 8px;
    height: 8px;
    min-width: 8px;
    padding: 0;
    top: -2px;
    right: -2px;
}/* ---------- ④ 打印友好：徽章在打印时不打底 ---------- */@media print {
    .sm-badge {
        border: 1px solid currentColor;
        background: transparent !important;
        color: #000 !important;
    }}/* ==================================================================
 * v5.9.0 悬浮工具条完善
 * 形态由容器类名决定（全部来自后台「悬浮工具条」配置）：
 *   is-right / is-left        显示位置
 *   is-round / is-square      按钮形状
 *   is-label-hover/always/none 文字显示方式
 *   is-pc-only                手机端隐藏
 *   is-scroll + js-ready      滚动 220px 后淡入（无 JS 时保持常显，避免整条消失）
 *   is-show                   由 JS 打上，控制淡入状态
 * 内置动作：
 *   [data-act=wx]    微信二维码弹层（悬停或点击）
 *   [data-act=share] 复制本页链接
 *   .sm-dark-toggle  复用全局暗色切换
 *   （v5.36.4 移除 .is-top 返回顶部内置动作，页脚保留独立返回顶部）
 * ================================================================== */

.sm-float-bar.is-left {
    right: auto;
    left: 16px;
}/* 无 JS 兜底：只有在 JS 接管（js-ready）之后才允许隐藏，避免脚本失效时整条工具条消失 */
.sm-float-bar.is-scroll.js-ready {
    opacity: 0;
    visibility: hidden;
    transform: translateY(10px);
    transition: opacity .25s, transform .25s, visibility .25s;
}

.sm-float-bar.is-scroll.js-ready.is-show {
    opacity: 1;
    visibility: visible;
    transform: translateY(0);
}

.sm-float-item {
    -webkit-tap-highlight-color: transparent;
    animation: sm-float-in .42s cubic-bezier(.2, .8, .3, 1) backwards;
}

.sm-float-bar > .sm-float-item:nth-child(1) { animation-delay: .02s; }
.sm-float-bar > .sm-float-item:nth-child(2) { animation-delay: .06s; }
.sm-float-bar > .sm-float-item:nth-child(3) { animation-delay: .10s; }
.sm-float-bar > .sm-float-item:nth-child(4) { animation-delay: .14s; }
.sm-float-bar > .sm-float-item:nth-child(5) { animation-delay: .18s; }
.sm-float-bar > .sm-float-item:nth-child(n+6) { animation-delay: .22s; }@keyframes sm-float-in {
    from { opacity: 0; transform: translateY(12px) scale(.85); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}/* ---------- 形状：圆角方形 ---------- */
.sm-float-bar.is-square .sm-float-item {
    border-radius: 12px;
}/* ---------- 文字：始终显示（胶囊宽按钮） ---------- */
.sm-float-bar.is-label-always .sm-float-item {
    width: auto;
    min-width: 44px;
    height: 40px;
    padding: 0 14px;
    gap: 6px;
    border-radius: 22px;
}

.sm-float-bar.is-label-always .sm-float-tx {
    position: static;
    transform: none;
    opacity: 1;
    padding: 0;
    font-size: 13px;
    background: transparent;
    color: inherit;
    pointer-events: auto;
}/* ---------- 文字：完全不显示 ---------- */
.sm-float-bar.is-label-none .sm-float-tx {
    display: none;
}/* ---------- 微信二维码弹层 ---------- */
.sm-float-pop {
    position: absolute;
    right: 52px;
    top: 50%;
    transform: translateY(-50%) scale(.9);
    z-index: 4;
    padding: 8px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    box-shadow: var(--sm-shadow);
    opacity: 0;
    visibility: hidden;
    transition: opacity .18s, transform .18s, visibility .18s;
}

.sm-float-pop img {
    display: block;
    width: 108px;
    height: 108px;
    border-radius: 6px;
}

.sm-float-pop::after {
    content: '';
    position: absolute;
    right: -5px;
    top: 50%;
    width: 8px;
    height: 8px;
    margin-top: -4px;
    border-right: 1px solid var(--sm-border);
    border-top: 1px solid var(--sm-border);
    background: var(--sm-card);
    transform: rotate(45deg);
}

.sm-float-bar.is-left .sm-float-pop {
    right: auto;
    left: 52px;
}

.sm-float-bar.is-left .sm-float-pop::after {
    right: auto;
    left: -5px;
    transform: rotate(-135deg);
}/* 左侧布局时提示文字也要翻到右边 */
.sm-float-bar.is-left .sm-float-tx {
    right: auto;
    left: 52px;
}

.sm-float-item[data-act=wx]:hover .sm-float-pop,
.sm-float-item[data-act=wx].is-open .sm-float-pop {
    opacity: 1;
    visibility: visible;
    transform: translateY(-50%) scale(1);
}/* ---------- 响应式 ---------- */@media (max-width: 900px) {
    .sm-float-bar.is-pc-only {
        display: none !important;
    }}@media (max-width: 640px) {
    .sm-float-bar.is-left {
        left: 10px;
    }
    .sm-float-bar.is-label-always {
        display: none;
    }
    .sm-float-bar.is-label-always.is-label-always-force {
        display: flex;
    }/* 手机上始终显示文字会把屏幕挤满，统一降级为图标 + 悬停提示 */
    .sm-float-bar.is-label-always .sm-float-item {
        width: 40px;
        min-width: 40px;
        height: 40px;
        padding: 0;
        border-radius: 50%;
        gap: 0;
    }
    .sm-float-bar.is-label-always .sm-float-tx {
        position: absolute;
        right: 48px;
        padding: 4px 9px;
        font-size: 12px;
        background: var(--sm-text);
        color: var(--sm-card);
        opacity: 0;
    }
    .sm-float-bar.is-left.is-label-always .sm-float-tx {
        right: auto;
        left: 48px;
    }}/* ---------- 暗色模式 ---------- */
html.sm-dark .sm-float-pop,
body.sm-dark .sm-float-pop {
    background: var(--sm-card);
}/* ---------- 尊重系统减弱动效偏好 ---------- */@media (prefers-reduced-motion: reduce) {
    .sm-float-item {
        animation: none;
    }
    .sm-float-bar.is-scroll.js-ready {
        transition: none;
    }}/* ==================================================================
 * v5.9.0 登录页 / 注册页（独立页面版式）
 * 结构：.sm-auth-page > .sm-auth-page-in > [.sm-auth-side 品牌区] + [.sm-auth-main > .sm-auth-card]
 * 全部颜色 / 圆角 / 阴影取自主题变量，跟随后台「视觉风格」与暗色模式联动。
 * 弹窗登录复用同一套表单，只是少了左栏（外层 .sm-auth.is-pop）。
 * ================================================================== */

.sm-auth-page {
    position: relative;
    /* 抵消 .sm-main 的上下留白与 .sm-container 的左右留白，做出整屏通铺的效果 */
    margin: -24px -16px -48px;
    padding: 56px 20px 72px;
    min-height: 62vh;
    background-repeat: no-repeat;
    background-position: center center;
    background-size: cover;
}

.sm-auth-page-in {
    display: flex;
    align-items: center;
    gap: 56px;
    max-width: 1040px;
    margin: 0 auto;
}


.sm-auth-page.is-single .sm-auth-page-in {
    justify-content: center;
}

.sm-auth-page.is-single .sm-auth-main {
    flex: 0 0 440px;
    max-width: 440px;
}/* ---------- 左侧品牌区 ---------- */
.sm-auth-side {
    flex: 1 1 0;
    min-width: 0;
    color: var(--sm-text);
}

.sm-auth-brand {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 17px;
    font-weight: 700;
    letter-spacing: .5px;
    color: inherit;
    text-decoration: none;
}

.sm-auth-brand:hover { color: var(--sm-primary); }

.sm-auth-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 10px;
    background: linear-gradient(var(--sm-grad-angle), var(--sm-primary), var(--sm-vip));
    color: #fff;
    font-size: 16px;
    box-shadow: 0 6px 18px color-mix(in srgb, var(--sm-primary, #5b6cff) 28%, transparent);
}

.sm-auth-title {
    margin: 26px 0 10px;
    font-size: 32px;
    line-height: 1.3;
    letter-spacing: -.5px;
}

.sm-auth-sub {
    margin: 0 0 22px;
    color: var(--sm-text-3);
    font-size: 14px;
    line-height: 1.7;
}

.sm-auth-points {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 12px;
}

.sm-auth-points li {
    display: flex;
    align-items: center;
    gap: 10px;
    font-size: 14px;
    color: var(--sm-text-2);
}

.sm-auth-tick {
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: color-mix(in srgb, var(--sm-primary) 14%, transparent);
    color: var(--sm-primary);
    font-size: 12px;
    font-weight: 700;
}/* ---------- 右侧表单卡 ---------- */
.sm-auth-main {
    flex: 0 0 400px;
    max-width: 400px;
}

.sm-auth-card {
    padding: 30px 30px 26px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-lg, var(--sm-radius));
    background: var(--sm-card);
    box-shadow: 0 18px 50px rgba(23, 27, 43, .10);
}

.sm-auth-h {
    margin: 0 0 6px;
    font-size: 24px;
    letter-spacing: -.4px;
}

.sm-auth-h-pop {
    margin: 0 0 14px;
    font-size: 18px;
}

.sm-auth-card .sm-auth-sub {
    margin: 0 0 20px;
}



.sm-auth-card .sm-form .sm-auth-h + .sm-auth-sub + p { margin-top: 0; }



.sm-auth-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    font-size: 13px;
    color: var(--sm-text-3);
}

.sm-auth-row label {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    margin: 0;
    cursor: pointer;
}

.sm-auth-row a { color: var(--sm-primary); }
.sm-auth-row a:hover { color: var(--sm-primary-d); }/* 全宽提交按钮 */
.sm-btn.is-block {
    width: 100%;
    padding: 11px 18px;
    margin-top: 6px;
    font-size: 15px;
    border-radius: 10px;
}/* 页面间互相跳转的一行 */
.sm-auth-sw {
    margin: 16px 0 0;
    font-size: 13px;
    text-align: center;
    color: var(--sm-text-3);
}

.sm-auth-sw a {
    color: var(--sm-primary);
    font-weight: 600;
}


.sm-auth-sw.is-pop {
    margin: 14px 0 0;
}/* 表单里的社交登录组 */
.sm-sns-lab {
    display: block;
    width: 100%;
    margin-bottom: 8px;
    font-size: 12px;
    color: var(--sm-text-3);
    text-align: center;
}



.sm-form .sm-sns-box {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px dashed var(--sm-border);
}/* ---------- 弹窗里的表单：去掉旧的白色块套白块 ---------- */
.sm-auth-pop .sm-auth.is-pop {
    margin: 0;
    padding: 30px 28px 26px;
    border: 0;
    background: transparent;
    text-align: left;
}

.sm-auth-pop .sm-login.is-ctx-pop,
.sm-auth-pop .sm-reg.is-ctx-pop {
    max-width: none;
    margin: 0;
}/* ---------- 响应式 ---------- */@media (max-width: 980px) {
    .sm-auth-page {
        margin: -20px -16px -40px;
        padding: 36px 16px 48px;
    }
    .sm-auth-page-in {
        flex-direction: column;
        gap: 26px;
    }
    .sm-auth-main {
        flex: 1 1 auto;
        max-width: 420px;
        width: 100%;
    }
    .sm-auth-side {
        text-align: center;
    }
    .sm-auth-brand { justify-content: center; }
    .sm-auth-title { font-size: 25px; margin-top: 16px; }
    .sm-auth-points { justify-content: center; }}@media (max-width: 520px) {
    .sm-auth-card {
        padding: 22px 18px 20px;
    }
    .sm-auth-title { font-size: 22px; }
    .sm-auth-points li { font-size: 13px; }}/* ---------- 暗色 ---------- */
html.sm-dark .sm-auth-card,
body.sm-dark .sm-auth-card {
    border-color: rgba(255, 255, 255, .08);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .35);
}



html.sm-dark .sm-form .sm-sns-box,
body.sm-dark .sm-form .sm-sns-box {
    border-top-color: rgba(255, 255, 255, .12);
}/* ==================================================================
 * v5.10.0 悬浮工具条 · 自定义按钮徽章（Badge）
 * 徽章本体完全复用 Bootstrap 4 Badge 组件（.sm-badge + .sm-badge-wrap），
 * 这里只做「把徽章挂在圆形悬浮按钮的图标角上」的适配：
 *   ① 尺寸换成绝对 px：圆形按钮只有 44px，继续用 em 相对父级 17px 的字号会小到看不清
 *   ② 白圈描边跟随按钮背景 --sm-card，视觉上像从按钮上挖了一刀；暗色模式自动跟随变化
 *   ③ 工具条切到左侧布局时角标自动翻边，不会被屏幕边缘裁掉
 *   ④ 纯数字收成正圆，带字母（NEW / HOT）自动留出横向内距
 *   ⑤ 红色数字徽章带呼吸微动效，尊重「减弱动效」系统偏好
 * ================================================================== */

.sm-float-item.has-badge {
    /* 角标要溢出按钮边界，不能被任何 overflow 裁掉 */
    overflow: visible;
}

.sm-float-item .sm-float-ic.sm-badge-wrap {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}

.sm-float-item .sm-badge.is-corner,
.sm-float-item .sm-badge.is-corner-left {
    top: -7px;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    line-height: 16px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0;
    border-radius: 10rem;
    box-shadow: 0 0 0 2px var(--sm-card);
}

.sm-float-item .sm-badge.is-corner {
    right: -9px;
}/* 左侧布局：角标挂到左边，避免贴边看不见 */
.sm-float-bar.is-left .sm-float-item .sm-badge.is-corner {
    right: auto;
    left: -9px;
}/* 圆点模式：统一 8px，去掉一切多余内距与圆角计算。
   注意这里必须把 top / right 也写全：组件默认值（.sm-badge-wrap > .sm-badge.is-dot 的 -2px）
   选择器权重比本段高，只写尺寸的话位置会被它抢回去 */
.sm-float-item .sm-badge.is-corner.is-dot,
.sm-float-item .sm-badge.is-corner-left.is-dot {
    top: -4px;
    min-width: 8px;
    width: 8px;
    height: 8px;
    padding: 0;
    font-size: 0;
}

.sm-float-item .sm-badge.is-corner.is-dot {
    right: -4px;
}

.sm-float-bar.is-left .sm-float-item .sm-badge.is-corner.is-dot {
    right: auto;
    left: -4px;
}/* 悬停抬升时角标跟随父级 transform，这里只是让它同步亮一点 */
.sm-float-item:hover .sm-badge.is-corner,
.sm-float-item:hover .sm-badge.is-corner-left {
    filter: brightness(1.08);
}/* 已读完 / 不想打扰：红色数字徽章给一点呼吸感 */
.sm-float-item .sm-badge.is-danger.is-corner:not(.is-dot) {
    animation: sm-float-badge-pulse 2.6s ease-in-out infinite;
}@keyframes sm-float-badge-pulse {
    0%, 100% { box-shadow: 0 0 0 2px var(--sm-card); }
    50%      { box-shadow: 0 0 0 2px var(--sm-card), 0 0 0 6px rgba(245, 84, 75, .16); }
}@media (prefers-reduced-motion: reduce) {
    .sm-float-item .sm-badge.is-danger.is-corner:not(.is-dot) {
        animation: none;
    }}/* 手机端按钮缩到 38px，角标同步收一排 */@media (max-width: 640px) {
    .sm-float-item .sm-badge.is-corner,
    .sm-float-item .sm-badge.is-corner-left {
        top: -6px;
        min-width: 15px;
        height: 15px;
        line-height: 15px;
        font-size: 9px;
    }
    .sm-float-item .sm-badge.is-corner { right: -7px; }
    .sm-float-bar.is-left .sm-float-item .sm-badge.is-corner { right: auto; left: -7px; }}/* ==================================================================
 * v5.11.0 勋章（Sanmao_Medal）
 * 勋章本体 = 一枚「猫图标」（Badge），这里只负责：容器布局、会员中心勋章墙、
 * 文章作者卡 / 作者归档 / 评论里的内联排布。颜色与皮肤由 Badge 组件自己派生。
 * ================================================================== */

.sm-medals {
    display: inline-flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    margin: 6px 0 0;
    vertical-align: middle;
}

.sm-medals:empty {
    display: none;
}/* 已经排成独立一行时，撑满但不强制换行限制 */
.sm-medal-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(184px, 1fr));
    gap: 12px;
}



.sm-medal-box {
    padding: 16px 14px 14px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    text-align: center;
    transition: transform .18s, box-shadow .18s, border-color .18s;
}

.sm-medal-box:hover {
    transform: translateY(-3px);
    box-shadow: var(--sm-shadow-lg);
}

.sm-medal-box.is-own {
    border-color: color-mix(in srgb, var(--sm-primary) 40%, transparent);
    box-shadow: 0 0 0 1px color-mix(in srgb, var(--sm-primary) 18%, transparent);
}

.sm-medal-box:not(.is-own) {
    opacity: .72;
}

.sm-medal-box-ic {
    display: flex;
    justify-content: center;
    min-height: 30px;
    margin-bottom: 10px;
}

.sm-medal-box b {
    display: block;
    font-size: 14px;
}

.sm-medal-box p {
    margin: 4px 0 8px;
    font-size: 12px;
    line-height: 1.6;
    color: var(--sm-text-3);
}

.sm-medal-box small {
    display: block;
    font-size: 11px;
    color: var(--sm-text-3);
}

.sm-medal-none {
    font-size: 12px;
    color: var(--sm-text-3);
}/* v5.22.0：勋章（猫图标）图标 + 文字统一尺寸上限
   不同勋章的图标来源不同（内置 SVG / iconfont / emoji），不约束会大小不一；
   名称过长也会撑破布局。这里把图标锁死 14px，文字限宽省略，整体一致。
   v5.24.0：改为 inline-flex 垂直居中 + 固定内边距，emoji 走 .sm-emoji
   有了元素锚点后一并锁死 —— 所有勋章高度完全一致。 */
.sm-badge.sm-medal {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    max-width: 150px;
    padding: .28em .7em;
    font-size: 12px;
    line-height: 1.4;
    vertical-align: middle;
}
.sm-badge.sm-medal .sm-ic,
.sm-badge.sm-medal .sm-if,
.sm-badge.sm-medal .sm-icon-img,
.sm-badge.sm-medal .dashicons {
    width: 14px;
    height: 14px;
    font-size: 14px;
    line-height: 1;
    flex: 0 0 auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.sm-badge.sm-medal .sm-badge-t {
    display: inline-block;
    max-width: 124px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    font-size: 12px;
    line-height: 1.4;
    vertical-align: middle;
}/* ---------- 内联场景：不抢行、不撑破父容器 ---------- */
.sm-single-author .sm-medals,
.sm-author-meta .sm-medals,
.sm-comment-head .sm-medals {
    margin-top: 4px;
}/* 评论作者名后：徽章要紧贴文字，且不能被行高撑开行距 */
.comment-author .sm-medals,
.sm-comment .sm-medals,
cite + .sm-medals {
    margin: 0 0 0 6px;
    gap: 4px;
}/* 会员中心英雄卡：勋章单独成一行，和下面的按钮区分开 */
.sm-uc-hero-info .sm-medals {
    display: flex;
    margin: 10px 0 2px;
}

html.sm-dark .sm-medal-box.is-own {
    border-color: rgba(138, 91, 255, .5);
}@media (max-width: 640px) {
    .sm-medal-grid {
        grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    }}/* ==================================================================
 * v5.12.0：猫图标 Sanmao CatIcon ——「挂到别的位置」专用排布
 *
 * 组件本体（变体色 / 皮肤 / 圆角 / 暗色模式）在前面「猫图标组件」段统一管理，
 * 这一小段只处理「猫图标被挂到菜单、小工具标题、文章标题上」时的
 * 对齐方式、左右间距与右上角标记的定位，不动组件本身的任何视觉。
 * ================================================================== *//* 1. 挂了猫图标的菜单链接要给右上角标记提供定位上下文 */
.sm-menu a.has-sm-caticon,
.sm-nav a.has-sm-caticon,
.sm-foot-nav a.has-sm-caticon {
    position: relative;
}/* 2. 菜单文字前 / 后
      注意：字号、行高、垂直对齐、外边距必须写在同一个选择器里，
      否则会被后面的 .sm-badge 基础样式用同权重抢回去，出现时大时小。 */
.sm-menu a .sm-badge.is-before,
.sm-menu a .sm-badge.is-after {
    margin: 0;
    font-size: 68%;
    line-height: 1.35;
    vertical-align: middle;
}

.sm-menu a .sm-badge.is-before {
    margin-right: 5px;
}

.sm-menu a .sm-badge.is-after {
    margin-left: 5px;
}/* 3. 菜单右上角标记：比通用角标再收敛一点，不要顶出菜单项边界 */
.sm-menu a.has-sm-caticon > .sm-badge.is-corner,
.sm-nav a.has-sm-caticon > .sm-badge.is-corner {
    top: 1px;
    right: 1px;
    padding: 0 .34em;
    min-width: 1.3em;
    height: 1.3em;
    line-height: 1.3em;
    font-size: 62%;
    box-shadow: none;
}/* 圆点形态：宽度必须用绝对像素，em 叠算下来会小到看不见 */
.sm-menu a.has-sm-caticon > .sm-badge.is-corner.is-dot,
.sm-nav a.has-sm-caticon > .sm-badge.is-corner.is-dot {
    top: 3px;
    right: 3px;
    width: 7px;
    height: 7px;
    min-width: 0;
    padding: 0;
}/* 4. 小工具标题 */
.widget-title .sm-badge,
.sm-widget-title .sm-badge {
    margin-left: 6px;
    font-size: 68%;
    vertical-align: middle;
}/* 5. 文章 / 页面标题（要先在「全局设置 → 猫图标」勾选才生效） */
.sm-single-title .sm-badge,
.sm-card-title .sm-badge,
.sm-pl-title .sm-badge,
.sm-pic-title .sm-badge,
.sm-post-nav-t .sm-badge,
.sm-crumb-cur .sm-badge {
    margin-left: 6px;
    font-size: 62%;
    vertical-align: middle;
}/* ============================================================
 * v5.13.0：阿里 iconfont 图标库（Sanmao_Iconfont）
 *   统一出口是 sanmao_icon()，所有图标最终都会带上 .sm-if
 *   尺寸跟随父级字号（1em），颜色跟随父级文字色（currentColor）
 * ============================================================ */
.sm-if {
    display: inline-block;
    width: 1em;
    height: 1em;
    font-size: 1em;
    font-style: normal;
    font-weight: normal;
    line-height: 1;
    letter-spacing: 0;
    word-spacing: normal;
    vertical-align: -.125em;
    fill: currentColor;
    flex: none;
}/* symbol 方式：<svg><use></svg> */
svg.sm-if {
    overflow: hidden;
}/* font class / unicode 方式：<i class="sm-if iconfont icon-xxx"></i>
   —— font-family 由 CDN 的 CSS 提供，这里只做通用兜底，避免字形被主题的字体设置覆盖 */
i.sm-if {
    font-family: "iconfont", "sm-iconfont" !important;
    text-transform: none;
    speak: never;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

.sm-if::before {
    letter-spacing: 0;
    word-spacing: normal;
    line-height: 1;
}/* 主题给 svg 加了全局 transition 时，图标切换会有拖影，这里单独关掉 */
svg.sm-if,
svg.sm-if path {
    transition: none;
}/* 图标图片：https://.../a.png */
.sm-icon-img {
    width: 1em;
    height: 1em;
    object-fit: contain;
    vertical-align: -.125em;
}/* v5.22.0：内置 SVG 图标（Sanmao_Icons，bi: 前缀）—— 同样 1em 跟随字号、currentColor 跟随文字色 */
svg.sm-ic {
    display: inline-block;
    width: 1em;
    height: 1em;
    font-size: 1em;
    vertical-align: -.125em;
    flex: none;
    transition: none;
    overflow: hidden;
}/* 猫图标里带图标时补一点间距 */
.sm-badge.has-icon > .sm-if,
.sm-badge.has-icon > .sm-ic,
.sm-badge.has-icon > .sm-icon-img {
    margin-right: .3em;
}/* 菜单项图标：文字前留白，并略微放大一点保证视觉平衡 */
.sm-nav-ic {
    margin-right: .42em;
    font-size: 1.08em;
    vertical-align: -.14em;
}/* 手机底部菜单 / 右下角悬浮条里的图标 */
.sm-float-item .sm-if,
.sm-float-item .sm-ic,
.sm-mnav-item .sm-if,
.sm-mnav-item .sm-ic {
    font-size: 1.15em;
    vertical-align: -.18em;
}/* ==================================================================
 * v5.17.0 —— 「每排显示数量」的平板 / 手机显式档
 *
 * 后台给模块单独填写了「平板每行个数 / 手机每行个数」时，容器才会带上
 * .has-cols-t / .has-cols-m（值为 0 的自适应档不加任何类，外观与过去完全一致）。
 * 规则放在全文末尾，并用 !important 保证用户显式填写的值优先级最高 ——
 * 否则会被前面那些自动响应式规则（如 ≤1100px 一律 3 列）覆盖掉，等于选项失效。
 * ================================================================== */@media (max-width: 1100px) {
    .has-cols-t {
        grid-template-columns: repeat(var(--sm-cols-t, 4), minmax(0, 1fr)) !important;
    }}@media (max-width: 700px) {
    .has-cols-m {
        grid-template-columns: repeat(var(--sm-cols-m, 2), minmax(0, 1fr)) !important;
    }}

/* 步骤间连接箭头（≥2 列才有意义；:where 压权重不影响老规则） */
.sm-steps-2, .sm-steps-3, .sm-steps-4, .sm-steps-5, .sm-steps-6, .sm-steps-7, .sm-steps-8 {
    position: relative;
}

/* ---------- 常见问题（折叠问答） ---------- */
.sm-qa {
    display: grid;
    gap: 12px;
}
.sm-qa-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    align-items: start;
}










.sm-say {
    display: flex;
    flex-direction: column;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 18px;
    transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease;
}
.sm-say:hover {
    transform: translateY(-3px);
    border-color: rgba(61, 110, 247, .35);
    box-shadow: var(--sm-shadow);
}









.sm-say-av.is-txt {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--sm-bg-soft, #eef1f8);
    color: var(--sm-primary);
    font-weight: 700;
    font-size: 15px;
}

/* ---------- 行动号召（转化横幅） ---------- */
.sm-cta {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 16px;
    background: linear-gradient(120deg, var(--sm-banner-a, var(--sm-primary)), var(--sm-banner-b, var(--sm-vip, #8a5bff)));
    color: #fff;
    border-radius: var(--sm-radius-lg, 16px);
    padding: 38px 30px;
}
.sm-cta.is-left {
    flex-direction: row;
    justify-content: space-between;
    text-align: left;
}









.sm-cta.is-left .sm-cta-btns {
    justify-content: flex-end;
}
.sm-cta-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 11px 26px;
    border-radius: var(--sm-radius-pill, 999px);
    background: #fff;
    color: var(--sm-primary);
    font-size: 14.5px;
    font-weight: 700;
    text-decoration: none;
    transition: transform .2s ease, box-shadow .2s ease;
}
.sm-cta-btn:hover {
    transform: translateY(-2px);
    box-shadow: 0 10px 24px rgba(0, 0, 0, .18);
    text-decoration: none;
}
.sm-cta-btn.is-ghost {
    background: rgba(255, 255, 255, .14);
    color: #fff;
    border: 1px solid rgba(255, 255, 255, .55);
}









.sm-team-av.is-txt {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, var(--sm-primary), var(--sm-vip, #8a5bff));
    color: #fff;
    font-size: 26px;
    font-weight: 700;
}










.sm-bulletin-item.is-top {
    background: linear-gradient(90deg, rgba(61, 110, 247, .08), transparent);
    color: var(--sm-text);
    font-weight: 600;
}










.sm-split.is-flip .sm-split-txt {
    order: 2;
}
.sm-split.is-flip .sm-split-img {
    order: 1;
}

/* ---------- 新模块：每排数量档位驱动（与 v5.17.0 机制一致，:where 零权重） ----------
   v5.19.0：这里原来写的是 .sm-faq，而 v5.18.0 为了避开既有公告弹层 .sm-notice
   已经把常见问题改名成 .sm-qa —— 名字对不上，等于列数的白名单里压根没它，
   后台改列数在前台毫无反应。改回 .sm-qa 后这条规则才真正生效。 */
.sm-steps:where([style*="--sm-cols"]),
.sm-qa:where([style*="--sm-cols"]),
.sm-says:where([style*="--sm-cols"]),
.sm-team:where([style*="--sm-cols"]) {
    grid-template-columns: repeat(var(--sm-cols, 3), minmax(0, 1fr));
}

@media (max-width: 860px) {
    .sm-split.is-flip .sm-split-txt {
        order: 1;
    }
    .sm-split.is-flip .sm-split-img {
        order: 2;
    }
    .sm-cta.is-left {
        flex-direction: column;
        text-align: center;
    }
    .sm-cta.is-left .sm-cta-btns {
        justify-content: center;
    }}@media (max-width: 700px) {
    .sm-qa-2 {
        grid-template-columns: 1fr;
    }
    .sm-steps:where([style*="--sm-cols"]),
    .sm-says:where([style*="--sm-cols"]),
    .sm-team:where([style*="--sm-cols"]) {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }}@media (max-width: 480px) {
    .sm-steps:where([style*="--sm-cols"]),
    .sm-says:where([style*="--sm-cols"]),
    .sm-team:where([style*="--sm-cols"]) {
        grid-template-columns: 1fr;
    }}/* ==================================================================
 * v5.19.0 —— 模块「整合与逻辑强化」补充样式
 *
 * 这一版对搭积木模块做了三件事：
 *   1) 整合重复模块：「最新 / 随机 / 排行 / 热门」四个同内容不同排序的模块
 *      合成一个「文章列表」（排序方式下拉可选）；「标签云」合成进「分类卡片」
 *      （数据来源下拉可选分类 / 标签）。旧模块照常渲染，只是不再出现在可选面板里。
 *   2) 修掉「后台能选、前台没样式」的假功能：
 *      · 常见问题原本只有 2 列有 CSS —— 选 1 列 / 3 列出来的都是单列；
 *      · 用户评价的星级写死五颗实心星，配 3 星也显示满格。
 *   3) 全站模块间距收口，解决「模块间距各不相同」的老毛病。
 * ================================================================== *//* ---- 1. 间距只由 .sm-mod 负责一次 ------------------------------------
   之前 .sm-mod 给 22px 下外边距，里面的搜索横幅、网格容器自己又带一份
   margin-bottom，实际间距在 22px ~ 44px 之间乱跳。现在清掉模块最后一个
   直接子元素的下边距，模块与模块之间统一由 .sm-mod 给一份。 */
.sm-mod > :last-child {
    margin-bottom: 0;
}/* ---- 2. 常见问题：1 / 3 列补齐 --------------------------------------- */
.sm-qa-1 {
    grid-template-columns: minmax(0, 1fr);
}
.sm-qa-2,
.sm-qa-3 {
    align-items: start;
}
.sm-qa-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}@media (max-width: 860px) {
    .sm-qa-3 {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }}@media (max-width: 700px) {
    .sm-qa-3 {
        grid-template-columns: minmax(0, 1fr);
    }}









.sm-say-stars i:not(.is-on) {
    color: var(--sm-border);
}












.sm-catbox.is-tag .sm-cat-card {
    padding: 14px 16px;
}

/* ---- 5. 深色模式同步 ------------------------------------------------ */
body.sm-dark .sm-say-stars i:not(.is-on) {
    color: rgba(255, 255, 255, .18);
}

/* ---- 6. 详情页 FAQ 与首页「常见问题」模块视觉统一 --------------------
   详情页那份（class-front.php 输出的 .sm-faq）用的是字符 '+ / −'，
   不同字体下宽高和基线都不一样，看着东倒西歪；首页模块那份用的是两条
   线拼出来的几何加号。这里把详情页也换成几何加号，展开时竖线收成减号。 */
.sm-faq-q::after {
    content: '';
    flex: 0 0 auto;
    width: 12px;
    height: 12px;
    color: var(--sm-text-3);
    background-image: linear-gradient(currentColor, currentColor), linear-gradient(currentColor, currentColor);
    background-size: 12px 1.5px, 1.5px 12px;
    background-position: center, center;
    background-repeat: no-repeat;
    transition: background-size .2s ease;
}
.sm-faq-item.is-open .sm-faq-q::after {
    background-size: 12px 1.5px, 0 12px;
}/* ==================================================================
 * v5.20.0 —— 模块标题对齐与字号（后台 hd_align / hd_size 驱动）
 *
 * 每个带「模块标题」的模块，后台都能选对齐（靠左 / 居中 / 靠右）
 * 和字号档位（16 / 20默认 / 24 / 30 / 38）。类名由 mod_hd() 输出，
 * 颜色、间距、分隔全部沿用主题既有令牌，不引入新变量。
 * ================================================================== *//* ---- 标题对齐 ---- *//* 居中：标题竖排（主标题在上、副标题在下、查看更多垫底），整体水平居中 */
.sm-sec-hd.is-align-center {
    flex-direction: column;
    align-items: center;
    text-align: center;
}
.sm-sec-hd.is-align-center .sm-sec-title {
    flex-direction: column;
    align-items: center;
    gap: 4px;
}
.sm-sec-hd.is-align-center .sm-sec-more {
    margin-top: 2px;
}/* 靠右：标题与「查看更多」位置互换 —— 标题贴右、链接贴左，右对齐不别扭 */
.sm-sec-hd.is-align-right {
    flex-direction: row-reverse;
    justify-content: flex-start;
}/* ---- 字号档位（手机端用 clamp 收缩，避免特大号在窄屏溢出） ---- */
.sm-sec-hd.is-fs-sm .sm-sec-title {
    font-size: 16px;
}
.sm-sec-hd.is-fs-md .sm-sec-title {
    font-size: 24px;
}
.sm-sec-hd.is-fs-lg .sm-sec-title {
    font-size: 30px;
}
.sm-sec-hd.is-fs-xl .sm-sec-title {
    font-size: 38px;
}@media (max-width: 700px) {
    .sm-sec-hd.is-fs-md .sm-sec-title {
        font-size: 20px;
    }
    .sm-sec-hd.is-fs-lg .sm-sec-title {
        font-size: 24px;
    }
    .sm-sec-hd.is-fs-xl .sm-sec-title {
        font-size: 28px;
    }}/* ==================================================================
 * v5.21.0 —— 全局轻提示 Toast（window.sanmaoTip）
 *
 * 站内提示此前有三种并存的写法：内联 .sm-msg、评论区的 .sm-comment-msg、
 * 以及 8 处原生 alert()。前三者的位置/样式各不相同，alert 更是直接阻塞
 * 页面。现在统一为右下角浮层：不顶动页面内容、支持堆叠与同文案计数、
 * 带进出场动画与手动关闭，并给读屏软件播报（role=status）。
 * ================================================================== */
#sm-toast-box {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 9999;
    display: flex;
    flex-direction: column;
    gap: 10px;
    align-items: flex-end;
    pointer-events: none;
    /* 全面屏机型给底部安全区留位置 */
    padding-bottom: env(safe-area-inset-bottom, 0);
}

.sm-toast {
    pointer-events: auto;
    display: flex;
    align-items: center;
    gap: 8px;
    max-width: min(360px, calc(100vw - 36px));
    padding: 10px 12px;
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    box-shadow: 0 10px 30px rgba(0, 0, 0, .12);
    color: var(--sm-text);
    font-size: 13.5px;
    line-height: 1.5;
    opacity: 0;
    transform: translateY(10px) scale(.98);
    transition: opacity .22s ease, transform .22s ease;
}

.sm-toast.is-in {
    opacity: 1;
    transform: translateY(0) scale(1);
}

.sm-toast.is-out {
    opacity: 0;
    transform: translateY(6px) scale(.98);
}/* 左侧状态条：成功绿 / 失败红，与主题令牌一致 */
.sm-toast::before {
    content: '';
    flex: 0 0 auto;
    width: 3px;
    align-self: stretch;
    margin: -4px 2px -4px -4px;
    border-radius: 3px;
    background: var(--sm-ok);
}

.sm-toast.is-err::before {
    background: var(--sm-danger);
}

.sm-toast-ico {
    flex: 0 0 auto;
    width: 16px;
    height: 16px;
    border-radius: 50%;
    background: var(--sm-ok);
    color: #fff;
    font-size: 11px;
    line-height: 16px;
    text-align: center;
}

.sm-toast.is-ok .sm-toast-ico::after {
    content: '✓';
}

.sm-toast.is-err .sm-toast-ico {
    background: var(--sm-danger);
}

.sm-toast.is-err .sm-toast-ico::after {
    content: '!';
    font-weight: 700;
}

.sm-toast-txt {
    flex: 1;
    min-width: 0;
    word-break: break-word;
}/* 同文案连点时的计数徽标 */
.sm-toast-n {
    flex: 0 0 auto;
    min-width: 18px;
    padding: 0 5px;
    border-radius: 9px;
    background: var(--sm-bg-soft, var(--sm-bg));
    color: var(--sm-text-3);
    font-size: 11px;
    line-height: 18px;
    text-align: center;
}

.sm-toast-x {
    flex: 0 0 auto;
    border: 0;
    background: transparent;
    color: var(--sm-text-3);
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    padding: 0 2px;
}

.sm-toast-x:hover {
    color: var(--sm-text);
}/* 手机端贴底居中，避开悬浮工具条 */@media (max-width: 700px) {
    #sm-toast-box {
        right: 12px;
        left: 12px;
        bottom: calc(72px + env(safe-area-inset-bottom, 0px));
        align-items: stretch;
    }

    .sm-toast {
        max-width: none;
    }}/* ==================================================================
 * v5.21.0 —— 交互质感补齐：焦点圈 · 加载态 · 悬停反馈 · 触摸目标
 *
 * 这一轮不新增功能，只把「点了没反应 / 键盘走丢 / 手机上点不准」这三类
 * 体感问题解决掉：
 *   1) 全站补 :focus-visible 焦点圈 —— 此前只有输入框有，Tab 走一遍页面
 *      除了输入框完全看不出焦点在哪；
 *   2) 前台补按钮 loading 态 —— 后台有、前台没有，签到/购买/打赏只能靠
 *      改文案表示「处理中」；
 *   3) 给几个「完全静态」的可点元素补悬停过渡（标签、分页、短代码 tab）；
 *   4) 手机上把一批 24~34px 的小热区放大到 44px 的可点击尺寸。
 * ================================================================== *//* ---- 1. 键盘焦点圈（全站兜底） ------------------------------------
   用 :focus-visible 而非 :focus —— 鼠标点击不出现难看的框，
   只有键盘 Tab / 键盘唤起时才显示，不影响鼠标用户的观感。 */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible,
[tabindex]:not([tabindex="-1"]):focus-visible,
.sm-card:focus-visible,
.sm-btn:focus-visible,
.sm-tag:focus-visible {
    outline: 2px solid var(--sm-primary);
    outline-offset: 2px;
    border-radius: var(--sm-radius-sm);
}/* 输入框已有自定义 focus 环，这里只补偏移，避免双环打架 */
body.sm-ui-modern input:focus-visible,
body.sm-ui-modern textarea:focus-visible,
body.sm-ui-modern select:focus-visible {
    outline-offset: 1px;
}/* ---- 2. 前台按钮加载态（与后台 .sm-btn.is-loading 对齐） ---------- */
.sm-btn.is-loading {
    position: relative;
    opacity: .78;
    pointer-events: none;
}

.sm-btn.is-loading::after {
    content: '';
    position: absolute;
    top: 50%;
    left: 50%;
    width: 14px;
    height: 14px;
    margin: -7px 0 0 -7px;
    border: 2px solid currentColor;
    border-right-color: transparent;
    border-radius: 50%;
    animation: sm-spin .6s linear infinite;
}@keyframes sm-spin {
    to { transform: rotate(360deg); }
}@media (prefers-reduced-motion: reduce) {
    .sm-btn.is-loading::after {
        animation-duration: 1.4s;
    }}/* 加载中把文字让位给转圈，避免两者叠在一起看不清 */
.sm-btn.is-loading.is-icon-loading {
    color: transparent;
}/* ---- 3. 补齐悬停反馈 ---------------------------------------------- *//* 标签：此前是完全静态的纯展示块，鼠标移上去没有任何变化 */
a.sm-tag {
    text-decoration: none;
    transition: background .2s ease, color .2s ease, border-color .2s ease;
}

a.sm-tag:hover {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}/* 分页：只有「当前页」有颜色，可点的页码没有任何反馈 */
.sm-pages a,
.sm-pager a {
    text-decoration: none;
    color: var(--sm-text-2);
    transition: background .2s ease, color .2s ease, border-color .2s ease, transform .15s ease;
}

.sm-pages a:hover,
.sm-pager a:hover {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
    transform: translateY(-1px);
}










.sm-tabs-nav button:hover:not(.is-on) {
    color: var(--sm-primary);
    border-color: var(--sm-primary);
}/* 导航菜单：此前变色是瞬切的，缺过渡 */
.sm-menu a {
    transition: background .18s ease, color .18s ease;
}/* ---- 4. 手机端触摸目标放大到 44px --------------------------------- */@media (max-width: 782px) {
    .sm-tag {
        padding: 6px 12px;
    }

    .sm-pages a,
    .sm-pages span,
    .sm-pager a,
    .sm-pager span {
        min-width: 42px;
        padding: 10px 12px;
    }}

@media (max-width: 782px) {

    .sm-header-right .sm-search-btn,
    .sm-menu-toggle {
        width: 44px;
        height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
    }

    .sm-float-item {
        width: 44px;
        height: 44px;
    }}/* ==================================================================
 * v5.28.0 · 通知中心（前端铃铛下拉 + 会员中心「我的通知」）
 * 铃铛下拉在 header.php 输出，会员中心列表在 class-user.php 输出，
 * 这里统一兜底样式（暗色 / 圆角 / 未读高亮全部跟随主题令牌）。
 * ================================================================== */
.sm-user-note-wrap {
    position: relative;
}

.sm-note-pop {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 60;
    width: 320px;
    max-width: 86vw;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    box-shadow: 0 12px 34px rgba(20, 24, 40, .18);
    overflow: hidden;
}
.sm-note-pop[hidden] {
    display: none;
}

.sm-note-pop-hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    font-weight: 600;
    border-bottom: 1px solid var(--sm-border);
}
.sm-note-pop-hd .sm-note-readall {
    font-size: 12px;
    color: var(--sm-primary);
}

.sm-note-pop-bd {
    max-height: 360px;
    overflow-y: auto;
}

.sm-note-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    color: var(--sm-text);
    border-bottom: 1px solid var(--sm-border);
    line-height: 1.4;
}
.sm-note-item:last-child {
    border-bottom: none;
}
.sm-note-item:hover {
    background: var(--sm-bg);
}
.sm-note-item.is-unread {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 6%, transparent);
}
.sm-note-dot {
    flex: 0 0 auto;
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--sm-danger);
}
.sm-note-txt {
    flex: 1 1 auto;
    font-size: 13px;
}
.sm-note-time {
    flex: 0 0 auto;
    font-size: 11px;
    color: var(--sm-text-3);
    white-space: nowrap;
}
.sm-note-empty {
    padding: 26px 14px;
    text-align: center;
    color: var(--sm-text-3);
    font-size: 13px;
}
.sm-note-pop-ft {
    padding: 9px 14px;
    text-align: center;
    border-top: 1px solid var(--sm-border);
}
.sm-note-pop-ft a {
    font-size: 13px;
    color: var(--sm-primary);
}








.sm-uc-notify-list li.is-unread {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 6%, transparent);
    margin: 0 -12px;
    padding-left: 16px;
    padding-right: 16px;
}








.sm-uc-notify-link .sm-note-dot {
    flex: 0 0 auto;
}

/* 后台通知中心表格：未读行高亮 + 小红点 */
.sm-trade-body .sm-table tr.is-unread {
    background: color-mix(in srgb, var(--sm-primary, #5b6cff) 6%, transparent);
}
.sm-trade-body .sm-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--sm-danger);
}
.sm-trade-body .sm-tag {
    display: inline-block;
    padding: 1px 7px;
    border-radius: 999px;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    font-size: 12px;
    color: var(--sm-text-2);
}/* ==================================================================
 * v5.29.0 —— 列表布局新增项落地
 * 「页面布局 → 列表布局」新增：平板 / 手机每排数量、卡片间距、鼠标悬浮效果、
 * 卡片圆角、摘要字数、图片懒加载、每页显示数量、加载更多按钮文案、空状态补充文案。
 * 间距与圆角用 CSS 变量回退（--sm-list-gap / --sm-card-radius），未设置时与旧版一致；
 * 悬浮效果用 .sm-list.is-hv-* 修饰类，放在全文末尾以便覆盖默认 hover。
 * ================================================================== */

.sm-card-thumb img {
    transition: transform .35s;
}

.sm-list.is-hv-lift .sm-card:hover {
    transform: translateY(-4px);
    box-shadow: var(--sm-shadow);
}

.sm-list.is-hv-zoom .sm-card:hover {
    transform: none;
    box-shadow: var(--sm-shadow);
}
.sm-list.is-hv-zoom .sm-card:hover .sm-card-thumb img {
    transform: scale(1.07);
}

.sm-list.is-hv-shadow .sm-card:hover {
    transform: none;
    box-shadow: var(--sm-shadow-lg);
}

.sm-list.is-hv-none .sm-card:hover {
    transform: none;
    box-shadow: var(--sm-shadow-sm);
    border-color: var(--sm-border);
}/* 手机端：即使指定了手机每排数量，也不允许超过 3（再多就看不清了） */@media (max-width: 700px) {
    .sm-list.has-cols-m .sm-card {
        min-width: 0;
    }}

@keyframes sm-uc-float {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(-12px); }
}

@keyframes sm-uc-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(43, 213, 118, .55); }
    70%  { box-shadow: 0 0 0 9px rgba(43, 213, 118, 0); }
    100% { box-shadow: 0 0 0 0 rgba(43, 213, 118, 0); }
}








.sm-uc-hero-act .sm-btn { border-radius: 22px; }








.sm-uc-link.active { border-left-width: 3px; }








.sm-uc-table .sm-table > tbody > tr { transition: background .15s; }
.sm-uc-table .sm-table > tbody > tr:hover { background: color-mix(in srgb, var(--sm-primary) 8%, transparent); }
.sm-uc-table .sm-table > tbody > tr:nth-child(even) { background: rgba(120, 130, 160, .04); }

/* 表单 */
.sm-uc .sm-form { max-width: 540px; }
.sm-uc .sm-form p { margin: 0 0 16px; }
.sm-uc .sm-form label {
    display: block; margin-bottom: 6px; font-size: 13px; font-weight: 600; color: var(--sm-text-2);
}
.sm-uc .sm-form input[type=text],
.sm-uc .sm-form input[type=url],
.sm-uc .sm-form input[type=email],
.sm-uc .sm-form input[type=password],
.sm-uc .sm-form textarea {
    width: 100%; padding: 10px 12px; font-size: 14px;
    border: 1px solid var(--sm-border); border-radius: var(--sm-radius-sm);
    background: var(--sm-bg); color: var(--sm-text);
    transition: border-color .18s, box-shadow .18s;
}
.sm-uc .sm-form input:focus,
.sm-uc .sm-form textarea:focus {
    outline: none; border-color: var(--sm-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--sm-primary) 15%, transparent);
}

/* 空状态 */
.sm-uc .sm-empty { text-align: center; padding: 28px 10px; color: var(--sm-text-3); }








.sm-uc-cal-grid .is-day, .sm-uc-cal-grid .is-empty {
    position: relative; aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
    border-radius: 8px; font-size: 13px; color: var(--sm-text-2);
    background: var(--sm-bg); border: 1px solid var(--sm-border);
}
.sm-uc-cal-grid .is-empty { background: transparent; border: none; }
.sm-uc-cal-grid .is-on {
    background: linear-gradient(135deg, var(--sm-primary), color-mix(in srgb, var(--sm-primary) 55%, #000 45%));
    color: #fff; border-color: transparent; font-weight: 600;
}
.sm-uc-cal-grid .is-on i { position: absolute; bottom: 2px; font-style: normal; font-size: 9px; opacity: .9; }
.sm-uc-cal-grid .is-today { box-shadow: 0 0 0 2px var(--sm-primary) inset; font-weight: 700; }








.sm-uc-aff-copy .sm-copy {
    flex: 0 0 auto;
    cursor: pointer;
    border: 1px solid var(--sm-primary);
    background: var(--sm-primary);
    color: #fff;
    border-radius: var(--sm-radius-sm, 10px);
    padding: 0 16px;
    font-size: 13px;
    white-space: nowrap;
    transition: filter .18s, transform .12s;
}
.sm-uc-aff-copy .sm-copy:hover { filter: brightness(1.06); }
.sm-uc-aff-copy .sm-copy:active { transform: scale(.97); }

@media (max-width: 560px) {
    .sm-uc-aff-copy .sm-copy { padding: 8px 0; text-align: center; }}/* ============================================================
 * v5.31.1：登录 / 注册弹窗双标签美化
 * 收窄为单栏卡片，加品牌头 + 分段标签切换，整体跟随主题配色。
 * ============================================================ */
.sm-auth-pop {
    max-width: 420px;
    max-height: 90vh;
    overflow: hidden;
}
.sm-auth-pop-in {
    padding: 26px 26px 22px;
    max-height: 90vh;
    overflow-y: auto;
    -webkit-overflow-scrolling: touch;
    animation: sm-pop-in .26s cubic-bezier(.2, .8, .2, 1);
}
.sm-auth-pop .sm-auth-close {
    right: 12px;
    top: 10px;
    font-size: 24px;
    color: var(--sm-text-3);
    transition: color .2s, transform .2s;
}
.sm-auth-pop .sm-auth-close:hover { color: var(--sm-primary); transform: rotate(90deg); }/* 品牌头 */
.sm-auth-pop-head {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
}
.sm-auth-pop-logo {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    background: linear-gradient(135deg, var(--sm-primary), color-mix(in srgb, var(--sm-primary) 55%, #000 45%));
    color: #fff;
    font-size: 18px;
    font-weight: 700;
    box-shadow: 0 4px 12px color-mix(in srgb, var(--sm-primary) 30%, transparent);
}
.sm-auth-pop-brand {
    font-size: 16px;
    font-weight: 600;
    color: var(--sm-text);
}/* 分段标签切换 */
.sm-auth-tabs {
    display: flex;
    gap: 6px;
    padding: 4px;
    margin-bottom: 18px;
    border-radius: 12px;
    background: color-mix(in srgb, var(--sm-primary) 8%, var(--sm-bg));
    border: 1px solid var(--sm-border);
}
.sm-auth-tab-btn {
    flex: 1;
    border: 0;
    background: transparent;
    padding: 9px 0;
    border-radius: 9px;
    font-size: 14px;
    font-weight: 600;
    color: var(--sm-text-2);
    cursor: pointer;
    transition: background .2s, color .2s, box-shadow .2s;
}
.sm-auth-tab-btn:hover { color: var(--sm-primary); }

.sm-auth-tab-btn.is-on {
    background: var(--sm-primary);
    color: #fff;
    box-shadow: 0 4px 12px color-mix(in srgb, var(--sm-primary) 35%, transparent);
}/* 标签面板 */
.sm-auth-tab { display: none; }

.sm-auth-tab.is-on { display: block; animation: sm-auth-fade .25s ease; }@keyframes sm-auth-fade {
    from { opacity: 0; transform: translateY(6px); }
    to   { opacity: 1; transform: none; }
}@keyframes sm-pop-in {
    from { opacity: 0; transform: translateY(14px) scale(.98); }
    to   { opacity: 1; transform: none; }
}/* 弹窗内表单微调 */
.sm-auth-pop .sm-form.sm-login,
.sm-auth-pop .sm-form.sm-reg { max-width: 100%; margin: 0; }

.sm-auth-pop .sm-auth-h-pop { margin: 0 0 16px; font-size: 19px; }


.sm-auth-pop .sm-form input[type=text],
.sm-auth-pop .sm-form input[type=password],
.sm-auth-pop .sm-form input[type=email],
.sm-auth-pop .sm-form input[type=number] {
    padding: 11px 13px;
    border-radius: 10px;
    margin-bottom: 13px;
}
.sm-auth-pop .sm-form input:focus {
    border-color: var(--sm-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--sm-primary) 18%, transparent);
}


.sm-auth-pop .sm-btn.is-block {
    padding: 12px 18px;
    border-radius: 11px;
    font-size: 15px;
    font-weight: 600;
    box-shadow: 0 6px 16px color-mix(in srgb, var(--sm-primary) 28%, transparent);
}

.sm-auth-pop .sm-auth-sw {
    text-align: center;
    margin: 14px 0 0;
    font-size: 13px;
    color: var(--sm-text-3);
}
.sm-auth-pop .sm-auth-sw a { color: var(--sm-primary); font-weight: 600; }
.sm-auth-pop .sm-auth-sw a:hover { color: var(--sm-primary-d); }
.sm-auth-pop .sm-auth-tip {
    text-align: center;
    color: var(--sm-text-3);
    font-size: 14px;
    padding: 8px 0;
}

.sm-auth-pop .sm-sns-box { margin-top: 14px; }@media (max-width: 480px) {
    .sm-auth-pop { max-width: 100%; }
    .sm-auth-pop-in { padding: 22px 18px 20px; }}
/* ============================================================
 * 评论系统美化 + 阅读增强（v5.31.3）
 * ============================================================ *//* ---------- 评论 ---------- */
.sm-comments {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 22px;
    margin-top: 24px;
}
.sm-comments-title {
    font-size: 17px;
    margin: 0 0 16px;
    display: flex;
    align-items: center;
    gap: 8px;
}







.sm-comment-list,
.comment-list {
    list-style: none;
    margin: 0 0 8px;
    padding: 0;
}







.sm-comment {
    display: flex;
    gap: 12px;
    padding: 16px 0;
    border-bottom: 1px solid var(--sm-border);
}
.sm-comment:last-child { border-bottom: 0; }







.sm-comment .children {
    margin: 12px 0 0 60px;
    border-top: 1px dashed var(--sm-border);
    list-style: none;
}







.sm-comment-avatar img {
    width: 48px; height: 48px; border-radius: 50%;
    border: 2px solid color-mix(in srgb, var(--sm-primary) 30%, transparent);
    display: block;
}
.sm-comment-body { flex: 1; min-width: 0; }
.sm-comment-meta {
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
    font-size: 13px; color: var(--sm-text-3);
}
.sm-comment-author { font-size: 14px; color: var(--sm-text); }
.sm-comment-badge {
    font-size: 11px; padding: 1px 7px; border-radius: 999px; line-height: 1.6;
    background: color-mix(in srgb, var(--sm-primary) 14%, transparent);
    color: var(--sm-primary);
}
.sm-comment-badge-admin { background: color-mix(in srgb, #e5484d 16%, transparent); color: #e5484d; }
.sm-comment-badge-author { background: color-mix(in srgb, var(--sm-primary) 16%, transparent); color: var(--sm-primary); }
.sm-comment-badge-vip { background: color-mix(in srgb, #e0a44b 18%, transparent); color: #b9802a; }
.sm-comment-floor { margin-left: auto; color: var(--sm-text-3); }
.sm-comment-time::before { content: '·'; margin-right: 8px; }
.sm-comment-text { margin: 8px 0; line-height: 1.7; word-break: break-word; }
.sm-comment-text p { margin: 0 0 8px; }
.sm-comment-text code {
    background: color-mix(in srgb, var(--sm-primary) 10%, transparent);
    padding: 1px 6px; border-radius: 4px; font-size: 13px;
}
.sm-comment-actions { font-size: 13px; }







.sm-comment-actions .comment-reply-link { color: var(--sm-primary); font-weight: 600; }
.sm-comment-actions .comment-reply-link::before { content: '↩ '; }








.sm-comment-form-wrap { margin-top: 18px; }
.sm-comment-emoji { display: flex; flex-wrap: wrap; gap: 4px; margin-bottom: 10px; }







.sm-emoji {
    border: 1px solid var(--sm-border); background: var(--sm-bg);
    border-radius: 8px; width: 34px; height: 34px; cursor: pointer;
    font-size: 18px; line-height: 1; transition: transform .12s, background .12s;
}
.sm-emoji:hover { transform: scale(1.12); background: color-mix(in srgb, var(--sm-primary) 12%, transparent); }
.comment-form-comment textarea {
    width: 100%; border: 1px solid var(--sm-border); border-radius: var(--sm-radius-sm);
    padding: 12px; background: var(--sm-bg); color: var(--sm-text); resize: vertical;
    transition: border-color .15s, box-shadow .15s;
}
.comment-form-comment textarea:focus {
    border-color: var(--sm-primary); outline: none;
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--sm-primary) 18%, transparent);
}







.sm-comment-logged { font-size: 13px; color: var(--sm-text-3); margin: 0 0 10px; }
.sm-comment-logged a { color: var(--sm-primary); }
.sm-comment-msg {
    display: none; margin: 0 0 12px; padding: 8px 14px; border-radius: var(--sm-radius-sm);
    font-size: 14px; background: color-mix(in srgb, var(--sm-primary) 12%, transparent); color: var(--sm-primary);
}







.sm-comment-msg.error { background: color-mix(in srgb, #e5484d 12%, transparent); color: #e5484d; }
.sm-comment-form-wrap.is-busy .sm-btn { opacity: .6; pointer-events: none; }/* ---------- 下载信息小工具 ---------- */
.sm-w-dlinfo .sm-w-di-list {
    list-style: none; margin: 0 0 12px; padding: 0;
    display: grid; grid-template-columns: 1fr 1fr; gap: 8px;
}
.sm-w-dlinfo .sm-w-di-list li {
    display: flex; flex-direction: column; gap: 2px;
    padding: 10px; border: 1px solid var(--sm-border); border-radius: var(--sm-radius-sm); background: var(--sm-bg);
}
.sm-w-dlinfo .sm-w-di-list span { font-size: 12px; color: var(--sm-text-3); }
.sm-w-dlinfo .sm-w-di-list b { font-size: 15px; color: var(--sm-text); }
.sm-w-dlinfo .sm-di-free { color: #2bb673; }
.sm-w-dlinfo .sm-w-di-spec { width: 100%; border-collapse: collapse; margin-top: 4px; font-size: 13px; }
.sm-w-dlinfo .sm-w-di-spec th,
.sm-w-dlinfo .sm-w-di-spec td { border: 1px solid var(--sm-border); padding: 7px 10px; text-align: left; }
.sm-w-dlinfo .sm-w-di-spec th { width: 38%; color: var(--sm-text-3); font-weight: 500; }
.sm-w-di-hot-title {
    margin: 10px 0 6px; font-size: 13px; font-weight: 600; color: var(--sm-text-2);
    padding-top: 10px; border-top: 1px dashed var(--sm-border);
}
.sm-w-di-hot { list-style: none; margin: 0; padding: 0; }
.sm-w-di-hot li {
    display: flex; justify-content: space-between; gap: 8px;
    padding: 6px 0; border-bottom: 1px dashed var(--sm-border); font-size: 13px;
}
.sm-w-di-hot li:last-child { border-bottom: 0; }
.sm-w-di-hot a { color: var(--sm-text); flex: 1; min-width: 0; }
.sm-w-di-hot a:hover { color: var(--sm-primary); }
.sm-w-di-hot span { color: var(--sm-text-3); white-space: nowrap; }/* ---------- 归档头强化 ---------- */
.sm-archive-head { position: relative; overflow: hidden; }
.sm-archive-head::before {
    content: ""; position: absolute; inset: 0 0 auto 0; height: 3px;
    background: linear-gradient(90deg, var(--sm-primary), color-mix(in srgb, var(--sm-primary) 40%, #fff));
}
.sm-archive-meta {
    display: flex; align-items: center; gap: 12px; margin-top: 8px;
    font-size: 13px; color: var(--sm-text-3);
}
.sm-archive-rss {
    color: var(--sm-primary); border: 1px solid var(--sm-border); padding: 2px 10px;
    border-radius: 999px; font-size: 12px;
}
.sm-archive-rss:hover { background: color-mix(in srgb, var(--sm-primary) 12%, transparent); }
/* ---------- 阅读增强：目录 / 灯箱 / 代码复制 / 搜索高亮 / 移动端下载条 ---------- */
.sm-toc-btn {
    position: fixed; right: 18px; bottom: 92px; z-index: 60;
    width: 44px; height: 44px; border-radius: 50%; border: none;
    display: flex; align-items: center; justify-content: center;
    background: var(--sm-primary); color: #fff; cursor: pointer; font-size: 20px;
    box-shadow: 0 6px 18px color-mix(in srgb, var(--sm-primary) 45%, transparent);
}
.sm-toc {
    position: fixed; top: 0; right: 0; height: 100%; width: 300px; max-width: 86vw;
    background: var(--sm-card); border-left: 1px solid var(--sm-border);
    box-shadow: -8px 0 30px rgba(0,0,0,.12); z-index: 200; overflow-y: auto; padding: 20px;
    transform: translateX(100%); transition: transform .28s ease;
}







.sm-toc.is-open { transform: translateX(0); }







.sm-toc h4 { margin: 0 0 12px; font-size: 15px; }
.sm-toc a {
    display: block; padding: 6px 0 6px 10px; color: var(--sm-text-2); font-size: 13px; line-height: 1.5;
    border-left: 2px solid transparent;
}







.sm-toc a.lv-3 { padding-left: 24px; font-size: 12px; }
.sm-toc a.active { color: var(--sm-primary); border-left-color: var(--sm-primary); font-weight: 600; }







.sm-toc-mask { position: fixed; inset: 0; background: rgba(0,0,0,.35); z-index: 199; opacity: 0; visibility: hidden; transition: opacity .25s; }







.sm-toc-mask.is-open { opacity: 1; visibility: visible; }

.sm-lightbox {
    position: fixed; inset: 0; z-index: 999; display: none;
    align-items: center; justify-content: center; background: rgba(0,0,0,.88);
    padding: 24px; backdrop-filter: blur(2px);
}
.sm-lightbox.is-open { display: flex; }/* 舞台铺满可视区；图片 contain → 任何比例都「完整可见」且尽可能大（小图也会放大到最大可用尺寸） */
.sm-lightbox-stage {
    position: relative; display: flex; align-items: center; justify-content: center;
    width: 100%; height: 100%; min-width: 0; min-height: 0;
}
.sm-lightbox img {
    display: block; width: 100%; height: 100%;
    object-fit: contain;              /* 关键：不裁切、不变形，整张图始终在灯箱内 */
    image-rendering: auto;
    transition: opacity .18s;
}
.sm-lightbox.is-loading img { opacity: 0; }/* 加载指示：图片透明时转圈，避免「点了没反应」 */
.sm-lightbox.is-loading::after {
    content: ""; position: absolute; width: 28px; height: 28px; border-radius: 50%;
    border: 3px solid rgba(255,255,255,.25); border-top-color: #fff;
    animation: sm-lb-spin .8s linear infinite;
}
.sm-lightbox.is-error::after {
    content: "图片加载失败"; position: absolute; color: rgba(255,255,255,.8); font-size: 13px;
    border: 0; width: auto; height: auto; animation: none;
}@keyframes sm-lb-spin { to { transform: rotate(360deg); } }
.sm-lightbox-close {
    position: absolute; top: 14px; right: 16px; z-index: 2;
    width: 34px; height: 34px; padding: 0; border: 0; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    background: rgba(255,255,255,.92); color: #333; font-size: 20px; line-height: 1;
    cursor: pointer; box-shadow: 0 4px 14px rgba(0,0,0,.28); transition: transform .2s, background .2s;
}
.sm-lightbox-close:hover { transform: rotate(90deg); background: #fff; }/* 图片说明（alt）：底部渐隐条，有 alt 才显示 */
.sm-lightbox-cap {
    position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; display: none;
    padding: 14px 20px 10px; text-align: center; font-size: 13px; color: rgba(255,255,255,.9);
    background: linear-gradient(transparent, rgba(0,0,0,.6));
}
.sm-lightbox-cap.is-show { display: block; }
body.sm-lb-open { overflow: hidden; }/* 可点开大图的横幅给放大镜光标（分类 banner / 页面 banner） */
.sm-archive-banner [data-lightbox],
.sm-page-banner [data-lightbox] { display: block; cursor: zoom-in; }

.sm-code-wrap { position: relative; }
.sm-code-copy {
    position: absolute; top: 8px; right: 8px; z-index: 2;
    border: 1px solid var(--sm-border); background: var(--sm-card); color: var(--sm-text-2);
    border-radius: 6px; padding: 2px 10px; font-size: 12px; cursor: pointer;
}
.sm-code-copy:hover { color: var(--sm-primary); border-color: var(--sm-primary); }

.sm-dl-bar { display: none; }@media (max-width: 768px) {
    .sm-dl-bar {
        display: flex; align-items: center; gap: 12px;
        position: fixed; left: 0; right: 0; bottom: 0; z-index: 80;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom));
        background: var(--sm-card); border-top: 1px solid var(--sm-border);
        box-shadow: 0 -6px 20px rgba(0,0,0,.1);
    }
    .sm-dl-bar .sm-dl-bar-info { flex: 1; min-width: 0; font-size: 13px; color: var(--sm-text-2); }
    .sm-dl-bar .sm-dl-bar-info b { color: var(--sm-text); display: block; font-size: 15px; }
    .sm-dl-bar .sm-btn { flex: 0 0 auto; }
    body.sm-has-dlbar { padding-bottom: 60px; }}

mark.sm-hl { background: color-mix(in srgb, var(--sm-primary) 28%, transparent); color: inherit; padding: 0 1px; border-radius: 2px; }

html.sm-dark .sm-toc-btn { color: #fff; }
html.sm-dark .sm-lightbox { background: rgba(0,0,0,.9); }/* ==================================================================
 * v5.32.0　列表卡片增强 + 正文富文本排版 + 归档 / 搜索细节
 * 全部由 --sm-primary 派生，暗色由 html.sm-dark 适配
 * ================================================================== *//* ---------- 1. 徽章：NEW 角标 ---------- */
.sm-badge.is-new { --bdg-c: #ff2d55; background: var(--bdg-c); }
.sm-badge.is-new.is-soft { background: color-mix(in srgb, var(--bdg-c) 15%, transparent); color: var(--bdg-c); }
.sm-badge.is-new.is-outline { background: transparent; border: 1px solid var(--bdg-c); color: var(--bdg-c); }/* ---------- 2. 资源卡片增强 ---------- *//* 封面角标横排容器（v5.32.0 由 resource-card.php 注入；
   老结构没有该容器时，.sm-badge 依然走原有的绝对定位，向后兼容） */
.sm-card-thumb .sm-card-badges {
    position: absolute;
    left: 8px;
    top: 8px;
    right: 8px;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px;
    pointer-events: none;
}
.sm-card-thumb .sm-card-badges .sm-badge { position: static; }

.sm-card-thumb img { transition: transform .45s cubic-bezier(.4, 0, .2, 1); }
.sm-card:hover .sm-card-thumb img { transform: scale(1.06); }

.sm-card-title a { color: var(--sm-text); transition: color .2s; }
.sm-card:hover .sm-card-title a { color: var(--sm-primary); }/* 修掉旧版本写死的蓝色 hover 边框，改为跟随主题主色 */
.sm-card:hover { border-color: color-mix(in srgb, var(--sm-primary) 45%, transparent); }

.sm-card-cat {
    display: inline-block;
    font-size: 12px;
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 10%, transparent);
    border: 0;
    border-radius: 20px;
    padding: 1px 9px;
    margin-bottom: 6px;
    text-decoration: none;
    transition: .2s;
}
.sm-card-cat:hover { background: color-mix(in srgb, var(--sm-primary) 20%, transparent); }

.sm-card-meta { justify-content: flex-start; gap: 12px; flex-wrap: wrap; }
.sm-card-meta span { display: inline-flex; align-items: center; gap: 3px; white-space: nowrap; }

.sm-card-foot { border-top: 1px dashed var(--sm-border); }/* 大图叠加：加深渐变、正文垂直铺满，保证文字可读 */
.sm-card--overlay .sm-card-body {
    display: flex;
    flex-direction: column;
    justify-content: flex-end;
    padding: 30px 16px 14px;
    background: linear-gradient(to top, rgba(0, 0, 0, .88), rgba(0, 0, 0, .45) 55%, transparent);
    text-shadow: 0 1px 3px rgba(0, 0, 0, .55);
}
.sm-card--overlay:hover .sm-card-title a { color: #fff; }
.sm-card--overlay .sm-card-cat {
    color: #fff;
    background: rgba(255, 255, 255, .22);
}
.sm-card--overlay .sm-card-cat:hover { background: rgba(255, 255, 255, .32); }/* 横向列表：正文垂直居中 */
.sm-card--list .sm-card-body {
    display: flex;
    flex-direction: column;
    justify-content: center;
    padding: 14px 16px;
}
.sm-card--list .sm-card-title { -webkit-line-clamp: 1; }/* 纯标题：轻微右移 */
.sm-card--title .sm-card-title { margin: 0; }
.sm-card--title:hover { transform: translateX(3px); }/* ---------- 3. 正文富文本排版（v5.32.0 核心） ---------- */
.sm-single-content,
.sm-page-content {
    color: var(--sm-text);
    word-wrap: break-word;
    overflow-wrap: break-word;
}
.sm-single-content > *:first-child { margin-top: 0; }
.sm-single-content > *:last-child { margin-bottom: 0; }

.sm-single-content p, .sm-page-content p { margin: 0 0 16px; }/* 标题层级：h2 主色竖条 / h3 主色圆点 */
.sm-single-content h2, .sm-single-content h3,
.sm-single-content h4, .sm-single-content h5, .sm-single-content h6,
.sm-page-content h2, .sm-page-content h3,
.sm-page-content h4, .sm-page-content h5, .sm-page-content h6 {
    margin: 28px 0 14px;
    line-height: 1.42;
    font-weight: 700;
    color: var(--sm-text);
}
.sm-single-content h2, .sm-page-content h2 { font-size: 20px; padding-left: 13px; position: relative; }
.sm-single-content h2::before, .sm-page-content h2::before {
    content: '';
    position: absolute;
    left: 0; top: 5px; bottom: 5px; width: 4px;
    border-radius: 3px;
    background: var(--sm-primary);
}
.sm-single-content h3, .sm-page-content h3 { font-size: 17.5px; padding-left: 12px; position: relative; }
.sm-single-content h3::before, .sm-page-content h3::before {
    content: '';
    position: absolute;
    left: 0; top: 10px; width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--sm-primary);
}
.sm-single-content h4, .sm-page-content h4 { font-size: 16px; }
.sm-single-content h5, .sm-single-content h6, .sm-page-content h5, .sm-page-content h6 { font-size: 15px; }/* 列表 */
.sm-single-content ul, .sm-single-content ol,
.sm-page-content ul, .sm-page-content ol { margin: 0 0 16px; padding-left: 24px; }
.sm-single-content li, .sm-page-content li { margin-bottom: 7px; }
.sm-single-content ul > li::marker, .sm-page-content ul > li::marker { color: var(--sm-primary); }
.sm-single-content ol > li::marker, .sm-page-content ol > li::marker { color: var(--sm-primary); font-weight: 700; }
.sm-single-content li ul, .sm-single-content li ol,
.sm-page-content li ul, .sm-page-content li ol { margin: 7px 0 0; }/* 引用 */
.sm-single-content blockquote, .sm-page-content blockquote {
    margin: 18px 0;
    padding: 14px 18px;
    background: color-mix(in srgb, var(--sm-primary) 7%, transparent);
    border-left: 4px solid var(--sm-primary);
    border-radius: 0 var(--sm-radius-sm) var(--sm-radius-sm) 0;
    color: var(--sm-text-2);
    font-size: 15px;
}
.sm-single-content blockquote p:last-child, .sm-page-content blockquote p:last-child { margin-bottom: 0; }/* 表格（资源站的规格参数表之前完全是裸排版） */
.sm-single-content table, .sm-page-content table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    margin: 18px 0;
    font-size: 14.5px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius-sm);
    overflow: hidden;
}
.sm-single-content table th, .sm-single-content table td,
.sm-page-content table th, .sm-page-content table td {
    padding: 10px 14px;
    border-bottom: 1px solid var(--sm-border);
    text-align: left;
    vertical-align: top;
}
.sm-single-content table th, .sm-page-content table th {
    background: color-mix(in srgb, var(--sm-primary) 10%, transparent);
    font-weight: 600;
    color: var(--sm-text);
}
.sm-single-content table tr:last-child td, .sm-page-content table tr:last-child td { border-bottom: 0; }
.sm-single-content table tbody tr:nth-child(even), .sm-page-content table tbody tr:nth-child(even) {
    background: rgba(120, 130, 160, .04);
}/* 古腾堡表格块自带滚动容器 */
.sm-single-content .wp-block-table, .sm-page-content .wp-block-table { margin: 18px 0; overflow-x: auto; }
.sm-single-content .wp-block-table table, .sm-page-content .wp-block-table table { margin: 0; }/* 图片与图注 */
.sm-single-content figure, .sm-page-content figure { margin: 18px 0; max-width: 100%; }
.sm-single-content figcaption, .sm-page-content figcaption {
    text-align: center;
    font-size: 13px;
    color: var(--sm-text-3);
    margin-top: 8px;
}
.sm-single-content img, .sm-page-content img {
    display: block;
    max-width: 100%;
    height: auto;
    margin: 8px auto;
}
.sm-single-content img.alignleft, .sm-page-content img.alignleft { float: left; margin: 4px 16px 8px 0; }
.sm-single-content img.alignright, .sm-page-content img.alignright { float: right; margin: 4px 0 8px 16px; }
.sm-single-content img.aligncenter, .sm-page-content img.aligncenter { margin: 8px auto; }/* 视频 / iframe 自适应 */
.sm-single-content iframe, .sm-page-content iframe,
.sm-single-content video, .sm-page-content video {
    display: block;
    max-width: 100%;
    margin: 14px auto;
    border-radius: var(--sm-radius-sm);
}
.sm-single-content iframe, .sm-page-content iframe { width: 100%; height: auto; aspect-ratio: 16 / 9; }/* 强调 / 按键 / 行内代码 / 定义列表 */
.sm-single-content strong, .sm-page-content strong { font-weight: 700; color: var(--sm-text); }
.sm-single-content em, .sm-page-content em { font-style: italic; }
.sm-single-content kbd, .sm-page-content kbd {
    display: inline-block;
    padding: 1px 6px;
    margin: 0 2px;
    font-family: Consolas, Monaco, "Courier New", monospace;
    font-size: .88em;
    line-height: 1.6;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-bottom-width: 2px;
    border-radius: 5px;
    color: var(--sm-text);
}
.sm-single-content code, .sm-page-content code {
    padding: 2px 5px;
    font-size: .9em;
    border: 1px solid var(--sm-border);
}
.sm-single-content dl dt, .sm-page-content dl dt { font-weight: 700; margin-top: 12px; }
.sm-single-content dl dd, .sm-page-content dl dd { margin: 0 0 8px; color: var(--sm-text-2); }/* 分割线 */
.sm-single-content hr, .sm-page-content hr {
    border: 0;
    height: 1px;
    margin: 26px 0;
    background: linear-gradient(to right, transparent, var(--sm-border) 15%, var(--sm-border) 85%, transparent);
}/* 正文链接 */
.sm-single-content a, .sm-page-content a {
    color: var(--sm-primary);
    text-decoration: underline;
    text-decoration-color: color-mix(in srgb, var(--sm-primary) 35%, transparent);
    text-underline-offset: 2px;
    transition: text-decoration-color .2s;
}
.sm-single-content a:hover, .sm-page-content a:hover { text-decoration-color: var(--sm-primary); }/* 会员中心（.sm-uc）内链接不带下划线：覆盖上方 .sm-page-content a 的正文链接样式（v5.36.4） */
.sm-uc a {
    text-decoration: none;
}/* ---------- 4. 相关资源 ---------- */
.sm-related {
    margin-top: 26px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    padding: 18px 18px 4px;
}
.sm-related > h3 {
    margin: 0 0 14px;
    font-size: 17px;
    font-weight: 700;
    padding-left: 12px;
    position: relative;
}
.sm-related > h3::before {
    content: '';
    position: absolute;
    left: 0; top: 5px; bottom: 5px; width: 4px;
    border-radius: 3px;
    background: var(--sm-primary);
}/* ---------- 5. 归档 / 搜索 ---------- */
.sm-archive-head { padding: 22px 24px; }
.sm-archive-meta {
    margin-top: 8px;
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    font-size: 13px;
    color: var(--sm-text-3);
}
.sm-archive-meta span { display: inline-flex; align-items: center; gap: 4px; }/* 分页 / 加载更多 */
.sm-pager { margin-top: 24px; }
.sm-pager-info { font-size: 13px; color: var(--sm-text-3); }
.sm-loadmore-wrap { margin-top: 22px; }/* ---------- 6. 暗色适配 ---------- */
html.sm-dark .sm-card:hover { border-color: color-mix(in srgb, var(--sm-primary) 55%, transparent); }
html.sm-dark .sm-single-content table th,
html.sm-dark .sm-page-content table th { color: var(--sm-text); }
html.sm-dark .sm-single-content table tbody tr:nth-child(even),
html.sm-dark .sm-page-content table tbody tr:nth-child(even) { background: rgba(255, 255, 255, .04); }
html.sm-dark mark.sm-hl { color: #fff; }
html.sm-dark .sm-archive-head::before { opacity: .9; }/* ---------- 7. 窄屏收窄 ---------- */@media (max-width: 700px) {
    .sm-single-content, .sm-page-content { padding: 18px 14px; font-size: 15px; }
    .sm-single-content h2, .sm-page-content h2 { font-size: 18px; }
    .sm-single-content h3, .sm-page-content h3 { font-size: 16.5px; }
    .sm-related { padding: 14px 12px 4px; }
    .sm-archive-head { padding: 18px 16px; }
    .sm-card--overlay .sm-card-body { padding: 24px 14px 12px; }}
/* ==================================================================
 * v5.33.0　评论互动（楼层称号 / 热评 / 支持 / 举报）+ 阅读工具条
 * ================================================================== *//* ---------- 1. 楼层称号（沙发 / 板凳 / 地板 / 地下室）与热评 ---------- */
.sm-comment-floor {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--sm-text-3);
    text-decoration: none;
}
.sm-comment-floor em {
    font-style: normal;
    font-size: 11px;
    font-weight: 700;
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 12%, transparent);
    border-radius: 4px;
    padding: 0 5px;
    line-height: 1.7;
}
/* 沙发给一点仪式感 */
.sm-comment.is-sofa .sm-comment-floor em {
    color: #fff;
    background: linear-gradient(120deg, #ff7a18, #ff2d55);
}








.sm-comment-hot {
    display: inline-flex;
    align-items: center;
    gap: 2px;
    font-size: 11px;
    font-weight: 700;
    line-height: 1.7;
    color: #ff5a3c;
    background: color-mix(in srgb, #ff5a3c 14%, transparent);
    border-radius: 4px;
    padding: 0 6px;
}/* ---------- 2. 支持 / 举报按钮 ---------- */
.sm-comment-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}







.sm-cact {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    border: 1px solid var(--sm-border);
    background: var(--sm-card);
    color: var(--sm-text-2);
    cursor: pointer;
    border-radius: 20px;
    padding: 3px 10px;
    font-size: 12px;
    line-height: 1.7;
    transition: .18s;
}
.sm-cact:hover { border-color: var(--sm-primary); color: var(--sm-primary); }
.sm-cact.is-busy { opacity: .55; cursor: wait; }
.sm-cact-num { font-style: normal; font-size: 12px; color: var(--sm-text-3); }
.sm-cact-like.is-on {
    color: #fff;
    border-color: transparent;
    background: var(--sm-primary);
}
.sm-cact-like.is-on .sm-cact-num { color: rgba(255, 255, 255, .9); }
.sm-cact-report:hover { border-color: var(--sm-danger); color: var(--sm-danger); }
/* 评论表单里的「有人回复时通知我」 */
.sm-csubscribe {
    margin: 0 0 12px;
    font-size: 13px;
    color: var(--sm-text-2);
}
.sm-csubscribe label { display: inline-flex; align-items: center; gap: 6px; cursor: pointer; }
.sm-csubscribe input { margin: 0; }
/* ---------- 3. 阅读工具条 / 字数时长 / 时效性提醒 ---------- */
.sm-readtools {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin: 0 0 14px;
}/* v5.46.8：容器由 .sm-readbar 改名 .sm-readtools-bar —— 旧名与 header.php 的全站
   阅读进度条撞名，两处同名定义互相污染（进度条元素吃到工具条的圆角边框，
   工具条吃到进度条的 fixed 定位），工具条样式只在这里生效。 */
.sm-readtools-bar {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
    border-radius: 22px;
    padding: 3px 6px;
}
.sm-rb-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    border: 0;
    background: transparent;
    cursor: pointer;
    color: var(--sm-text-2);
    font-size: 13px;
    line-height: 1.6;
    padding: 4px 10px;
    border-radius: 16px;
    transition: color .18s, background .18s;
}
.sm-rb-btn:hover {
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 10%, transparent);
}/* v5.46.8：档位到顶/到底时禁用按钮（JS 同步），宽屏开启时常亮 */
.sm-rb-btn[disabled] {
    opacity: .38;
    cursor: not-allowed;
    background: transparent;
    color: var(--sm-text-3);
}
.sm-rb-btn.is-on {
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 12%, transparent);
}
.sm-rb-ic { opacity: .8; }
.sm-readmeta {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12.5px;
    color: var(--sm-text-3);
}
.sm-readmeta-ic { opacity: .75; }

.sm-stale {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin: 0 0 14px;
    padding: 10px 14px;
    font-size: 13px;
    color: #8a5a00;
    background: color-mix(in srgb, #ffb020 14%, transparent);
    border-left: 3px solid #ffb020;
    border-radius: 0 var(--sm-radius-sm) var(--sm-radius-sm) 0;
}/* 字号档位：由 body 上的 sm-fs-N 驱动（JS 记住在 localStorage） */
.sm-single-content { font-size: var(--sm-read-fs, 15.5px); }
body.sm-fs-1 .sm-single-content { --sm-read-fs: 14px; }
body.sm-fs-2 .sm-single-content { --sm-read-fs: 15.5px; }
body.sm-fs-3 .sm-single-content { --sm-read-fs: 17px; }
body.sm-fs-4 .sm-single-content { --sm-read-fs: 18.5px; }/* 宽屏阅读：全站容器默认 1180px，这里整体放开会同时放宽正文区 */
body.sm-wide-read { --sm-container: 96vw; }/* 打印：只留正文主体 */@media print {
    .sm-readtools, .sm-post-actions, .sm-comments, .sm-related,
    .sm-post-nav, .sm-down-box, .sm-single-author, .sm-single-tags,
    .sm-header, .sm-footer, .sm-sidebar, .sm-toc-btn, .sm-toc-mask,
    .sm-dl-bar, .sm-to-top, .sm-rel-refresh { display: none !important; }
    .sm-single-content { border: 0; padding: 0; }
    .sm-single { border: 0; padding: 0; background: transparent; }}/* ---------- 4. 暗色适配 ---------- */
html.sm-dark .sm-readtools-bar { background: var(--sm-card); }
html.sm-dark .sm-cact { background: var(--sm-card); }
html.sm-dark .sm-stale { color: #ffcf7a; background: color-mix(in srgb, #ffb020 16%, transparent); }
html.sm-dark .sm-comment-hot { color: #ff8b70; background: color-mix(in srgb, #ff5a3c 20%, transparent); }/* ---------- 5. 窄屏 ---------- */@media (max-width: 700px) {
    .sm-readtools { gap: 8px; margin-bottom: 12px; }
    .sm-readmeta { width: 100%; }}
@media (max-width: 700px) {
    .sm-comment-actions { gap: 8px; }}
/* ==================================================================
 * v5.34.0：封面角标规则 · 自定义配色
 * --bdg-c 由后台规则注入（sanmao_badge_color_css 已做严格白名单校验）
 * ================================================================== */
.sm-badge.is-custom {
    background: var(--bdg-c, var(--sm-primary));
    color: #fff;
}

.sm-badge.is-custom.is-soft {
    background: color-mix(in srgb, var(--bdg-c, var(--sm-primary)) 14%, transparent);
    color: var(--bdg-c, var(--sm-primary));
}

.sm-badge.is-custom.is-outline {
    background: transparent;
    color: var(--bdg-c, var(--sm-primary));
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--bdg-c, var(--sm-primary)) 55%, transparent);
}/* 暗色模式下浅底需要更重，否则几乎看不见 */
html.sm-dark .sm-badge.is-custom.is-soft {
    background: color-mix(in srgb, var(--bdg-c, var(--sm-primary)) 24%, transparent);
}

html.sm-dark .sm-badge.is-custom.is-outline {
    box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--bdg-c, var(--sm-primary)) 70%, transparent);
}/* ==================================================================
 * v5.34.0：作者主页（他人可见的公开主页）
 * 注意：类名统一 sm-ap-*，避免与单页「作者卡片」的 .sm-author-* 打架
 * ================================================================== */
.sm-ap {
    position: relative;
    overflow: hidden;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    margin-bottom: 16px;
}

.sm-ap-banner {
    height: 96px;
    background: linear-gradient(120deg,
        color-mix(in srgb, var(--sm-primary) 88%, #fff),
        color-mix(in srgb, var(--sm-primary) 48%, #8b5cf6));
}

.sm-ap-head {
    position: relative;
    display: flex;
    gap: 18px;
    align-items: flex-start;
    padding: 0 20px 16px;
    margin-top: -42px;
}

.sm-ap-avwrap {
    flex: 0 0 92px;
    width: 92px;
    height: 92px;
    padding: 4px;
    border-radius: 50%;
    background: var(--sm-card);
    box-shadow: 0 3px 14px color-mix(in srgb, var(--sm-primary) 26%, transparent);
}

.sm-ap-avatar {
    display: block;
    width: 100%;
    height: 100%;
    border-radius: 50%;
    object-fit: cover;
}

.sm-ap-id {
    flex: 1;
    min-width: 0;
    padding-top: 46px;
}

.sm-ap-name {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
    margin: 0 0 6px;
    font-size: 22px;
    line-height: 1.3;
}

.sm-ap-gender {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 19px;
    height: 19px;
    border-radius: 50%;
    font-size: 12px;
    color: #fff;
}

.sm-ap-gender.male { background: #2f81f7; }
.sm-ap-gender.female { background: #f7548b; }

.sm-ap-sign {
    margin: 0 0 8px;
    color: var(--sm-text-2);
    font-size: 14px;
}

.sm-ap-sub {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 6px 14px;
    margin: 0 0 10px;
    padding: 0;
    color: var(--sm-text-3);
    font-size: 13px;
}

.sm-ap-sub li { display: inline-flex; align-items: center; gap: 4px; }
.sm-ap-sub li.is-vip { color: var(--sm-gold); font-weight: 600; }

.sm-ap-skills {
    list-style: none;
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin: 0 0 10px;
    padding: 0;
}

.sm-ap-skills li {
    padding: 2px 10px;
    border-radius: 999px;
    font-size: 12px;
    background: color-mix(in srgb, var(--sm-primary) 12%, transparent);
    color: var(--sm-primary);
}

.sm-ap-site { margin: 0 0 8px; font-size: 13px; }
.sm-ap-site a { color: var(--sm-primary); }

.sm-ap-bio {
    margin: 8px 0 0;
    color: var(--sm-text-2);
    font-size: 14px;
    line-height: 1.7;
}

.sm-ap-ops { padding-top: 46px; }

.sm-ap-stats {
    list-style: none;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 10px;
    margin: 0;
    padding: 14px 20px;
    border-top: 1px solid var(--sm-border);
    text-align: center;
}

.sm-ap-stats b { display: block; font-size: 19px; color: var(--sm-text); }
.sm-ap-stats i { font-style: normal; font-size: 12px; color: var(--sm-text-3); }@media (max-width: 700px) {
    .sm-ap-head { flex-wrap: wrap; padding: 0 14px 14px; }
    .sm-ap-id { padding-top: 0; }
    .sm-ap-ops { padding-top: 0; }
    .sm-ap-name { font-size: 19px; }
    .sm-ap-stats { grid-template-columns: repeat(2, 1fr); padding: 12px 14px; }}









.sm-uc-complete.is-full {
    background: color-mix(in srgb, var(--sm-ok) 10%, transparent);
    border-color: color-mix(in srgb, var(--sm-ok) 26%, transparent);
}

.sm-ucc-top {
    display: flex;
    justify-content: space-between;
    margin-bottom: 6px;
    font-size: 13px;
    font-weight: 600;
}

.sm-ucc-bar {
    height: 6px;
    border-radius: 999px;
    background: var(--sm-border);
    overflow: hidden;
}

.sm-ucc-bar i {
    display: block;
    height: 100%;
    border-radius: 999px;
    background: linear-gradient(90deg, var(--sm-primary), color-mix(in srgb, var(--sm-primary) 55%, #8b5cf6));
    transition: width .3s ease;
}

.sm-uc-complete.is-full .sm-ucc-bar i { background: var(--sm-ok); }
.sm-ucc-tip { margin: 8px 0 0; font-size: 12px; color: var(--sm-text-2); }
.sm-ucc-home { margin: 6px 0 0; font-size: 12px; color: var(--sm-text-3); word-break: break-all; }/* ==================================================================
 * v5.34.0：文章内页扩展模块（Sanmao_Single）
 * ================================================================== */
.sm-xblock {
    margin: 0 0 18px;
    padding: 14px 16px 16px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
}

.sm-xblock-t {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin: 0 0 12px;
    padding-left: 10px;
    font-size: 15px;
    line-height: 1.4;
    border-left: 3px solid var(--sm-primary);
}

.sm-xblock-more {
    font-size: 12px;
    font-weight: 400;
    color: var(--sm-text-3);
}

.sm-xblock-more a { color: var(--sm-text-3); }
.sm-xblock-more a:hover { color: var(--sm-primary); }/* ---------- 1. 更新日志 ---------- */
.sm-changelog {
    list-style: none;
    margin: 0;
    padding: 0 0 0 14px;
    border-left: 1px dashed color-mix(in srgb, var(--sm-primary) 45%, transparent);
}

.sm-changelog li {
    position: relative;
    padding: 0 0 12px 8px;
    font-size: 14px;
    line-height: 1.7;
}

.sm-changelog li:last-child { padding-bottom: 0; }

.sm-changelog li::before {
    content: '';
    position: absolute;
    left: -20px;
    top: 8px;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--sm-primary);
    box-shadow: 0 0 0 3px color-mix(in srgb, var(--sm-primary) 18%, transparent);
}

.sm-cl-date {
    display: inline-block;
    margin-right: 8px;
    padding: 0 7px;
    border-radius: 4px;
    font-size: 12px;
    color: var(--sm-primary);
    background: color-mix(in srgb, var(--sm-primary) 12%, transparent);
}

.sm-cl-txt { color: var(--sm-text-2); }/* ---------- 2. 同类热门榜 ---------- */
.sm-hotlist { list-style: none; margin: 0; padding: 0; }

.sm-hotlist-item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 7px 0;
    border-bottom: 1px dashed var(--sm-border);
    font-size: 14px;
}

.sm-hotlist-item:last-child { border-bottom: 0; }

.sm-hl-rank {
    flex: 0 0 20px;
    width: 20px;
    height: 20px;
    border-radius: 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    color: var(--sm-text-3);
    background: var(--sm-bg);
}

.sm-hotlist-item.is-top .sm-hl-rank {
    color: #fff;
    background: linear-gradient(135deg, var(--sm-primary), color-mix(in srgb, var(--sm-primary) 55%, #8b5cf6));
}

.sm-hl-title {
    flex: 1;
    min-width: 0;
    color: var(--sm-text);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sm-hl-title:hover { color: var(--sm-primary); }
.sm-hl-num { flex: 0 0 auto; font-size: 12px; color: var(--sm-text-3); }/* ---------- 3. 该作者更多作品 ---------- */
.sm-aumore {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));
    gap: 12px;
}

.sm-aumore li a {
    display: block;
    padding: 8px;
    border-radius: 8px;
    border: 1px solid var(--sm-border);
    transition: border-color .18s, transform .18s;
}

.sm-aumore li a:hover {
    border-color: color-mix(in srgb, var(--sm-primary) 55%, transparent);
    transform: translateY(-2px);
}

.sm-am-thumb {
    display: block;
    overflow: hidden;
    border-radius: 6px;
    aspect-ratio: 16 / 9;
    background: var(--sm-bg);
}

.sm-am-thumb img { display: block; width: 100%; height: 100%; object-fit: cover; }

.sm-am-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-top: 6px;
    font-size: 13px;
    line-height: 1.5;
    color: var(--sm-text);
}

.sm-aumore time { display: block; margin-top: 4px; font-size: 11px; color: var(--sm-text-3); }/* ---------- 4. 猜你喜欢 ---------- */
.sm-x-guess .sm-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
}

.sm-guess-card a { display: block; }

.sm-g-thumb {
    display: block;
    overflow: hidden;
    border-radius: 8px;
    aspect-ratio: 16 / 9;
    background: var(--sm-bg);
}

.sm-g-thumb img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .3s ease;
}

.sm-guess-card a:hover .sm-g-thumb img { transform: scale(1.06); }

.sm-g-title {
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
    margin-top: 6px;
    font-size: 13px;
    line-height: 1.5;
    color: var(--sm-text);
}

.sm-guess-card a:hover .sm-g-title { color: var(--sm-primary); }/* ---------- 5. 扫码分享卡 ---------- */
.sm-qrbox {
    display: flex;
    gap: 16px;
    align-items: center;
    flex-wrap: wrap;
}

.sm-qr-img {
    flex: 0 0 130px;
    width: 130px;
    padding: 8px;
    border: 1px solid var(--sm-border);
    border-radius: 10px;
    background: #fff;
}

.sm-qr-img img { display: block; width: 100%; height: auto; }

.sm-qr-txt { flex: 1; min-width: 200px; }
.sm-qr-lead { margin: 0 0 8px; font-size: 14px; color: var(--sm-text-2); }

.sm-qr-url {
    margin: 0 0 10px;
    padding: 6px 10px;
    border-radius: 6px;
    font-size: 12px;
    color: var(--sm-text-3);
    background: var(--sm-bg);
    word-break: break-all;
}/* ---------- 快捷键说明浮层 ---------- */
.sm-hotkey-help {
    position: fixed;
    right: 18px;
    bottom: 18px;
    z-index: 9999;
    min-width: 190px;
    padding: 12px 14px;
    border-radius: 10px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    box-shadow: 0 12px 32px rgba(0, 0, 0, .18);
}

.sm-hotkey-help b { display: block; margin-bottom: 8px; font-size: 13px; }
.sm-hotkey-help ul { list-style: none; margin: 0; padding: 0; }

.sm-hotkey-help li {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 3px 0;
    font-size: 12px;
    color: var(--sm-text-2);
}

.sm-hotkey-help kbd {
    min-width: 22px;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 11px;
    text-align: center;
    color: var(--sm-text);
    background: var(--sm-bg);
    border: 1px solid var(--sm-border);
}

.sm-hotkey-help i { display: block; margin-top: 8px; font-size: 11px; color: var(--sm-text-3); }@media (max-width: 700px) {
    .sm-xblock { padding: 12px 12px 14px; }
    .sm-aumore { grid-template-columns: repeat(2, 1fr); }
    .sm-x-guess .sm-grid { grid-template-columns: repeat(2, 1fr); }
    .sm-qrbox { flex-direction: column; align-items: flex-start; }
    .sm-hotkey-help { right: 10px; bottom: 10px; left: 10px; }}/* ==================================================================
 * v5.35.0 · 首页搭建器 · 模块级设备定向与入场动画
 * ================================================================== *//* ---------- 1. 设备定向（由模块设置的「在哪些设备显示」驱动） ----------
   刻意用 CSS 而非 PHP 端 UA 判断：后者会让页面缓存把「手机版 HTML」
   错发给桌面用户，且同一份 HTML 无法两边复用。 */
.sm-mod.is-mb-only { display: none; }@media (max-width: 768px) {
    .sm-mod.is-pc-only { display: none; }
    .sm-mod.is-mb-only { display: block; }}/* ---------- 2. 入场动画 ----------
   隐藏态挂在 html.sm-anim 之下：这个类是 JS 确认支持 IntersectionObserver
   之后才加的。万一 JS 报错 / 被禁用，模块仍是默认可见，绝不会因为动画
   没跑起来而整页空白。 */
html.sm-anim .sm-mod {
    opacity: 0;
    transform: translateY(18px);
    transition: opacity .5s ease, transform .5s ease;
    will-change: opacity, transform;
}
html.sm-anim .sm-mod.is-in {
    opacity: 1;
    transform: none;
}/* 首屏模块（页面刚打开就在视口内）不该有明显延迟 */
html.sm-anim .sm-mod.is-in:nth-of-type(1),
html.sm-anim .sm-mod.is-in:nth-of-type(2) {
    transition-duration: .32s;
}@media (prefers-reduced-motion: reduce) {
    html.sm-anim .sm-mod,
    html.sm-anim .sm-mod.is-in {
        opacity: 1;
        transform: none;
        transition: none;
    }}/* ==============================================================
 * v5.37.0：全局动效兜底——用户系统开启「减弱动态效果」时，全站
 * 动画 / 过渡 / 平滑滚动一律收敛（各组件内零散的同类规则保留，
 * 这里是最终保险）。loading 圈除外：停了会让「处理中」失去反馈。
 * ============================================================== */@media (prefers-reduced-motion: reduce) {
    html {
        scroll-behavior: auto !important;
    }

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: .01ms !important;
        scroll-behavior: auto !important;
    }

    .sm-spin {
        animation-iteration-count: infinite !important;
    }}/* ==============================================================
 * v5.38.0 新组件样式
 *   阅读进度条 / 侧边栏跟随 / 热门搜索 / 搜索下拉 / 评论附图 /
 *   评论属地 / 站内私信 / 关注作者 / 站点地图
 * 统一用 --sm-* 设计令牌，暗色模式自动跟随，不写死颜色。
 * ============================================================== *//* ---------- 阅读进度条 ---------- */
.sm-readbar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    height: 3px;
    z-index: 101;          /* 压在导航栏（100）之上 */
    pointer-events: none;
}

.sm-readbar-in {
    display: block;
    height: 100%;
    width: 0;
    background: linear-gradient(90deg,
        var(--sm-primary),
        color-mix(in srgb, var(--sm-primary) 55%, #ffffff));
    box-shadow: 0 0 8px color-mix(in srgb, var(--sm-primary) 45%, transparent);
    transition: width .12s linear;
}/* ---------- 侧边栏跟随滚动 ----------
   只由 JS 在「侧边栏比视口矮」时挂上 body.sm-sb-sticky，
   否则用户会永远看不到侧边栏的下半截。 */
body.sm-sb-sticky .sm-sidebar {
    position: sticky;
    top: calc(var(--sm-head-h, 64px) + 16px);
    align-self: flex-start;
}/* ---------- 搜索页：大家都在搜 ---------- */
.sm-hotsearch {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin: 14px 0 2px;
}



.sm-hotsearch-lb {
    font-size: 13px;
    color: var(--sm-text-3);
}

.sm-hotsearch-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.sm-hot-kw {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    font-size: 13px;
    text-decoration: none;
    transition: color .15s, border-color .15s;
}

.sm-hot-kw:hover {
    color: var(--sm-primary);
    border-color: color-mix(in srgb, var(--sm-primary) 45%, transparent);
}

.sm-hot-kw.is-top {
    color: var(--sm-primary);
}

.sm-hot-rank {
    font-size: 12px;
    opacity: .65;
}/* ---------- 搜索框下拉建议 ---------- */
.sm-sug {
    position: absolute;
    z-index: 200;
    display: none;
}

.sm-sug.is-show {
    display: block;
}

.sm-sug-box {
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    box-shadow: 0 8px 24px rgba(0, 0, 0, .12);
    padding: 10px 12px;
    max-height: 320px;
    overflow: auto;
}

.sm-sug-hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    font-size: 12px;
    color: var(--sm-text-3);
    margin: 4px 0 8px;
}

.sm-sug-clear {
    background: none;
    border: 0;
    padding: 0;
    font-size: 12px;
    color: var(--sm-text-3);
    cursor: pointer;
}

.sm-sug-clear:hover {
    color: var(--sm-primary);
}

.sm-sug-list {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    list-style: none;
    margin: 0 0 10px;
    padding: 0;
}

.sm-sug-list:last-child {
    margin-bottom: 0;
}

.sm-sug-item {
    display: inline-block;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px solid var(--sm-border);
    font-size: 13px;
    text-decoration: none;
}

.sm-sug-item:hover {
    color: var(--sm-primary);
    border-color: color-mix(in srgb, var(--sm-primary) 45%, transparent);
}

.sm-sug-item.is-top {
    color: var(--sm-primary);
}/* ---------- 评论附图 ---------- */
.sm-cimg {
    margin: 10px 0 0;
}

.sm-cimg-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    font-size: 13px;
    border-radius: var(--sm-radius);
    border: 1px dashed var(--sm-border);
    background: none;
    color: var(--sm-text-3);
    cursor: pointer;
}

.sm-cimg-btn:hover {
    color: var(--sm-primary);
    border-color: color-mix(in srgb, var(--sm-primary) 45%, transparent);
}

.sm-cimg-prev {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}

.sm-cimg-prev img {
    width: 64px;
    height: 64px;
    object-fit: cover;
    border-radius: 6px;
    border: 1px solid var(--sm-border);
}

.sm-cimg-tip {
    margin: 6px 0 0;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-cimgs {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 8px;
}

.sm-cimgs img {
    width: 96px;
    height: 96px;
    object-fit: cover;
    border-radius: 8px;
    border: 1px solid var(--sm-border);
    transition: transform .15s;
}

.sm-cimgs a:hover img {
    transform: scale(1.04);
}/* ---------- 评论属地标签 ---------- */
.sm-cip {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    font-size: 11px;
    line-height: 1.7;
    border-radius: 4px;
    background: color-mix(in srgb, var(--sm-primary) 10%, transparent);
    color: var(--sm-text-3);
    vertical-align: middle;
}/* ---------- 站内私信 ---------- */
.sm-pm {
    display: grid;
    grid-template-columns: 260px minmax(0, 1fr);
    gap: 16px;
    margin-top: 12px;
}

.sm-pm-side,
.sm-pm-main {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    min-width: 0;
}

.sm-pm-side {
    overflow: hidden;
}

.sm-pm-threads {
    list-style: none;
    margin: 0;
    padding: 0;
    max-height: 520px;
    overflow: auto;
}

.sm-pm-thread a {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 12px;
    border-bottom: 1px solid var(--sm-border);
    text-decoration: none;
}

.sm-pm-thread.is-active a {
    background: color-mix(in srgb, var(--sm-primary) 8%, transparent);
}

.sm-pm-av {
    flex: 0 0 auto;
    line-height: 0;
}

.sm-pm-av img {
    border-radius: 50%;
}

.sm-pm-tmain {
    flex: 1;
    min-width: 0;
}

.sm-pm-tname {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
    font-weight: 600;
    font-size: 14px;
}

.sm-pm-ttime {
    font-weight: 400;
    font-size: 12px;
    color: var(--sm-text-3);
}

.sm-pm-tlast {
    display: block;
    margin-top: 2px;
    font-size: 12px;
    color: var(--sm-text-3);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.sm-pm-dot {
    flex: 0 0 auto;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: 999px;
    background: #e5484d;
    color: #fff;
    font-size: 11px;
    line-height: 18px;
    text-align: center;
}

.sm-pm-main {
    display: flex;
    flex-direction: column;
    min-height: 480px;
}

.sm-pm-hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 10px 14px;
    border-bottom: 1px solid var(--sm-border);
}

.sm-pm-who {
    font-weight: 600;
}

.sm-pm-del {
    background: none;
    border: 0;
    padding: 0;
    font-size: 12px;
    color: var(--sm-text-3);
    cursor: pointer;
}

.sm-pm-del:hover {
    color: #e5484d;
}

.sm-pm-msgs {
    flex: 1;
    overflow: auto;
    padding: 14px;
    max-height: 420px;
}

.sm-pm-msg {
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 14px;
}

.sm-pm-msg.is-mine {
    flex-direction: row-reverse;
}

.sm-pm-mav {
    flex: 0 0 auto;
    line-height: 0;
}

.sm-pm-mav img {
    border-radius: 50%;
}

.sm-pm-bubble {
    max-width: 74%;
    padding: 8px 12px;
    border-radius: 10px;
    background: color-mix(in srgb, var(--sm-primary) 9%, transparent);
    border: 1px solid var(--sm-border);
}

.sm-pm-msg.is-mine .sm-pm-bubble {
    background: var(--sm-primary);
    border-color: var(--sm-primary);
    color: #fff;
}

.sm-pm-text {
    font-size: 14px;
    line-height: 1.7;
    white-space: pre-wrap;
    word-break: break-word;
}

.sm-pm-time {
    display: block;
    margin-top: 4px;
    font-size: 11px;
    opacity: .7;
}

.sm-pm-none {
    margin: 0;
    padding: 24px 14px;
    text-align: center;
    font-size: 13px;
    color: var(--sm-text-3);
}

.sm-pm-send {
    border-top: 1px solid var(--sm-border);
    padding: 10px 14px 14px;
}

.sm-pm-input {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: transparent;
    color: inherit;
    font-size: 14px;
    resize: vertical;
}

.sm-pm-ops {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 8px;
}

.sm-pm-tip {
    font-size: 12px;
    color: var(--sm-text-3);
}/* ---------- 关注作者 ---------- */
.sm-follow-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 7px 16px;
    border-radius: var(--sm-radius);
    border: 1px solid var(--sm-primary);
    background: var(--sm-primary);
    color: #fff;
    font-size: 14px;
    cursor: pointer;
    transition: opacity .15s, background .15s, color .15s;
}

.sm-follow-btn:hover {
    opacity: .88;
}

.sm-follow-btn.is-on {
    background: transparent;
    color: var(--sm-text-3);
    border-color: var(--sm-border);
}

.sm-follow-btn.sm-btn-s {
    padding: 4px 12px;
    font-size: 13px;
}

.sm-follow-ic {
    font-size: 14px;
    line-height: 1;
}

.sm-follow-num {
    font-style: normal;
    font-size: 12px;
    opacity: .85;
}

.sm-follow-stats {
    display: flex;
    gap: 16px;
    margin-top: 10px;
    font-size: 13px;
    color: var(--sm-text-3);
}

.sm-follow-stat b {
    margin-right: 4px;
    color: var(--sm-text);
}

.sm-follow-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-top: 12px;
}

.sm-follow-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
}

.sm-follow-av {
    flex: 0 0 auto;
    line-height: 0;
}

.sm-follow-av img {
    border-radius: 50%;
}

.sm-follow-meta {
    flex: 1;
    min-width: 0;
}

.sm-follow-name {
    display: block;
    font-weight: 600;
    text-decoration: none;
}

.sm-follow-sub {
    font-size: 12px;
    color: var(--sm-text-3);
}/* ---------- 站点地图 ---------- */
.sm-sitemap {
    display: grid;
    gap: 20px;
    margin-top: 8px;
}

.sm-sitemap-cols-1 { grid-template-columns: minmax(0, 1fr); }
.sm-sitemap-cols-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sm-sitemap-cols-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.sm-sitemap-cols-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }

.sm-sitemap-sec {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    padding: 16px;
}

.sm-sitemap-hd {
    display: flex;
    align-items: center;
    gap: 6px;
    margin: 0 0 12px;
    font-size: 16px;
}

.sm-sitemap-hd .dashicons {
    font-size: 18px;
    width: 18px;
    height: 18px;
    color: var(--sm-primary);
}

.sm-sitemap-list {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 14px;
    list-style: none;
    margin: 0;
    padding: 0;
}

.sm-sitemap-list li {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 14px;
}

.sm-sitemap-count {
    font-size: 11px;
    color: var(--sm-text-3);
}
/* ==========================================================
 * v5.40.0：文章目录（TOC）—— 文内卡片 + 右侧浮动条
 * ========================================================== */
.sm-toc {
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    /* v5.46.8：目录现在落在文章卡片里，用页面底色与主卡片区分层级 */
    background: var(--sm-bg);
    padding: 14px 16px;
    margin: 0 0 18px;
}

.sm-toc-hd {
    display: flex;
    align-items: center;
    gap: 6px;
    font-size: 14px;
    color: var(--sm-text);
    margin-bottom: 8px;
}








.sm-toc-hd .dashicons { color: var(--sm-primary); font-size: 16px; width: 16px; height: 16px; }







.sm-toc-hd b { font-weight: 600; }

.sm-toc-toggle {
    margin-left: auto;
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--sm-text-3);
    padding: 2px;
    transition: transform .2s ease;
}







.sm-toc.is-collapsed .sm-toc-toggle { transform: rotate(180deg); }
.sm-toc.is-collapsed .sm-toc-list { display: none; }








.sm-toc-list {
    list-style: none;
    margin: 0;
    padding: 0;
    counter-reset: toc;
}

.sm-toc-list li {
    margin: 0;
    padding: 3px 0;
    line-height: 1.6;
}

.sm-toc-list a {
    color: var(--sm-text-2);
    font-size: 13.5px;
    text-decoration: none;
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: color .15s;
}

.sm-toc-list a:hover { color: var(--sm-primary); }
.sm-toc-l3 { padding-left: 16px !important; }
.sm-toc-l3 a { font-size: 13px; opacity: .92; }
.sm-toc-l4 { padding-left: 32px !important; }
.sm-toc-l4 a { font-size: 12.5px; opacity: .85; }/* ---------- 右侧浮动目录 ---------- */
.sm-toc-float {
    position: fixed;
    top: 96px;
    right: 18px;
    width: 200px;
    max-height: calc(100vh - 180px);
    overflow: auto;
    padding: 12px 14px;
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    background: var(--sm-card);
    box-shadow: var(--sm-shadow, 0 4px 20px rgba(23, 27, 43, .08));
    z-index: 60;
    font-size: 13px;
}

.sm-toc-float-hd {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}








.sm-toc-float-hd .dashicons { color: var(--sm-primary); font-size: 16px; width: 16px; height: 16px; }








.sm-toc-float-close {
    background: none;
    border: 0;
    cursor: pointer;
    color: var(--sm-text-3);
    padding: 2px;
}







.sm-toc-float-close .dashicons { font-size: 14px; width: 14px; height: 14px; color: inherit; }

.sm-toc-float .sm-toc-list a.is-cur {
    color: var(--sm-primary);
    font-weight: 600;
}/* 正文标题锚点跳转时留出导航高度，避免被顶栏盖住 */
.sm-single-content h2[id^="sm-toc-"],
.sm-single-content h3[id^="sm-toc-"],
.sm-single-content h4[id^="sm-toc-"] {
    scroll-margin-top: 90px;
}/* ==========================================================
 * v5.40.0：评论表情
 * ========================================================== */
.sm-emo {
    position: relative;
    margin: 8px 0 0;
}

.sm-emo-btn {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 10px;
    font-size: 12.5px;
    color: var(--sm-text-2);
    background: var(--sm-bg-soft, #f4f6fb);
    border: 1px solid var(--sm-border);
    border-radius: 999px;
    cursor: pointer;
    transition: color .15s, border-color .15s;
}

.sm-emo-btn .dashicons { font-size: 15px; width: 15px; height: 15px; }
.sm-emo-btn:hover,
.sm-emo-btn[aria-expanded="true"] {
    color: var(--sm-primary);
    border-color: var(--sm-primary);
}

.sm-emo-box {
    position: absolute;
    z-index: 30;
    top: calc(100% + 6px);
    left: 0;
    width: 288px;
    max-width: 100vw;
    padding: 10px;
    background: var(--sm-card);
    border: 1px solid var(--sm-border);
    border-radius: var(--sm-radius);
    box-shadow: var(--sm-shadow, 0 6px 24px rgba(23, 27, 43, .12));
}

.sm-emo-grid {
    display: grid;
    grid-template-columns: repeat(8, 1fr);
    gap: 2px;
}

.sm-emo-i {
    background: none;
    border: 0;
    border-radius: 6px;
    padding: 4px 0;
    font-size: 18px;
    line-height: 1.2;
    cursor: pointer;
    transition: background .15s, transform .12s;
}

.sm-emo-i:hover {
    background: var(--sm-bg-soft, #f4f6fb);
    transform: scale(1.18);
}/* ---------- 深色模式 ---------- */
html.sm-dark .sm-toc,
html.sm-dark .sm-toc-float,
html.sm-dark .sm-emo-box {
    background: var(--sm-card);
    border-color: var(--sm-border);
}

html.sm-dark .sm-toc-list a { color: var(--sm-text-2); }
html.sm-dark .sm-toc-list a:hover,
html.sm-dark .sm-toc-float .sm-toc-list a.is-cur { color: var(--sm-primary); }
html.sm-dark .sm-emo-i:hover { background: rgba(255, 255, 255, .08); }/* ---------- 移动端 ---------- */@media (max-width: 782px) {
    .sm-pm {
        grid-template-columns: minmax(0, 1fr);
    }

    .sm-pm-threads {
        max-height: 220px;
    }

    .sm-pm-msgs {
        max-height: 360px;
    }

    .sm-pm-bubble {
        max-width: 82%;
    }

    .sm-sitemap-cols-2,
    .sm-sitemap-cols-3,
    .sm-sitemap-cols-4 {
        grid-template-columns: minmax(0, 1fr);
    }

    .sm-cimgs img {
        width: 76px;
        height: 76px;
    }}
@media (max-width: 782px) {/* v5.40.0：窄屏没有空间放浮动目录，只保留文内卡片 */
    .sm-toc-float {
        display: none !important;
    }}
@media (max-width: 782px) {

    .sm-emo-box {
        width: 260px;
    }

    .sm-emo-grid {
        grid-template-columns: repeat(6, 1fr);
    }}
/* v5.40.0：中等宽度（有侧边栏但不够再塞一条浮动目录）时收起浮动目录 */@media (max-width: 1180px) {
    .sm-toc-float {
        display: none;
    }}
/* =====================================================================
 * v5.41.0 · 首页搭建器十个新模块
 * 配色统一走 --sm-* 令牌；带 has-skin 的模块用横幅渐变变量 --sm-banner-a / --sm-banner-b
 * ===================================================================== */
.sm-hero,
.sm-subscribe,
.sm-countdown { position: relative; }









.sm-hero.has-skin { background: linear-gradient(135deg, var(--sm-banner-a), var(--sm-banner-b)); }

/* 品牌墙 */
.sm-logos { display: grid; grid-template-columns: repeat(var(--sm-cols, 5), 1fr); gap: 14px; }
.sm-logos .sm-logo { display: flex; align-items: center; justify-content: center; min-height: 90px; padding: 14px; background: var(--sm-card, #fff); border: 1px solid var(--sm-line, #eee); border-radius: 12px; transition: .2s; }
.sm-logos .sm-logo:hover { transform: translateY(-3px); box-shadow: 0 8px 22px rgba(0,0,0,.08); }
.sm-logos .sm-logo img { max-height: 56px; max-width: 100%; object-fit: contain; }
.sm-logos-txt { font-weight: 700; color: var(--sm-text, #333); font-size: 16px; }









.sm-price.is-hot { border-color: var(--sm-primary, #6a5cff); box-shadow: 0 12px 36px rgba(106,92,255,.18); transform: translateY(-6px); }










.sm-gallery.is-gap-11 .sm-g-item { aspect-ratio: 1 / 1; }
.sm-gallery.is-gap-43 .sm-g-item { aspect-ratio: 4 / 3; }
.sm-gallery.is-gap-34 .sm-g-item { aspect-ratio: 3 / 4; }
.sm-gallery.is-gap-169 .sm-g-item { aspect-ratio: 16 / 9; }











.sm-subscribe.has-skin { background: linear-gradient(135deg, var(--sm-banner-a), var(--sm-banner-b)); }










.sm-countdown.has-skin { background: linear-gradient(135deg, var(--sm-banner-a), var(--sm-banner-b)); }










.sm-tab-btn.is-active { color: var(--sm-primary, #6a5cff); font-weight: 700; }
.sm-tab-btn.is-active::after { content: ''; position: absolute; left: 0; right: 0; bottom: -2px; height: 2px; background: var(--sm-primary, #6a5cff); }









.sm-tab-panel.is-active { display: block; }

/* 数据进度 */
.sm-progress { display: grid; gap: 18px; }








.sm-dl-name { font-size: 18px; display: block; }

/* 窄屏适配 */@media (max-width: 700px) {
    .sm-pricing, .sm-logos, .sm-gallery, .sm-video-grid { grid-template-columns: repeat(2, 1fr); }
    .sm-price.is-hot { transform: none; }}


/* ==================================================================
 * 三猫主题 · v5.42.0 扩展功能样式
 * ================================================================== *//* 评论 @提及 */
.sm-mention { color: var(--sm-primary, #5b6cff); font-weight: 600; text-decoration: none; }
.sm-mention:hover { text-decoration: underline; }
.sm-mention-pop {
    position: absolute; z-index: 9999; background: #fff; border: 1px solid var(--sm-line, #e6e9f2);
    border-radius: 10px; box-shadow: 0 8px 30px rgba(30,40,80,.14); max-height: 220px; overflow: auto; padding: 4px;
}
.sm-mention-item { padding: 7px 12px; border-radius: 7px; cursor: pointer; font-size: 14px; color: #2b3245; }
.sm-mention-item span { color: #9aa3b5; font-size: 12px; margin-left: 4px; }
.sm-mention-item.is-cur, .sm-mention-item:hover { background: var(--sm-soft, #f0f2fb); }/* 文章操作按钮（海报 / 举报共用一行） */
.sm-post-actions { margin: 22px 0; display: flex; gap: 10px; flex-wrap: wrap; }
.sm-poster-btn, .sm-report-btn {
    display: inline-flex; align-items: center; gap: 6px; padding: 9px 16px; border-radius: 10px;
    border: 1px solid var(--sm-line, #e6e9f2); background: #fff; color: #3a4257; cursor: pointer;
    font-size: 14px; font-weight: 600; transition: .15s;
}
.sm-poster-btn:hover, .sm-report-btn:hover { border-color: var(--sm-primary, #5b6cff); color: var(--sm-primary, #5b6cff); }
.sm-poster-btn .dashicons, .sm-report-btn .dashicons { font-size: 17px; }/* 分享海报弹层 */
.sm-poster-mask, .sm-report-mask {
    position: fixed; inset: 0; z-index: 9998; background: rgba(20,26,40,.55);
    display: flex; align-items: center; justify-content: center; padding: 20px;
}/* v5.46.2：弹层默认 hidden，必须真的隐藏（上面 display:flex 会盖掉 UA 的 [hidden]） */
.sm-poster-mask[hidden], .sm-report-mask[hidden] {
    display: none;
}
.sm-poster-dialog, .sm-report-dialog {
    position: relative; background: #fff; border-radius: 16px; padding: 22px; max-width: 640px; width: 100%;
    box-shadow: 0 20px 60px rgba(20,26,40,.3); max-height: 92vh; overflow: auto;
}
.sm-poster-close, .sm-report-close {
    position: absolute; top: 10px; right: 14px; border: none; background: transparent; font-size: 26px;
    line-height: 1; color: #9aa3b5; cursor: pointer;
}
.sm-poster-canvas { width: 100%; height: auto; border-radius: 12px; box-shadow: 0 8px 24px rgba(30,40,80,.12); background: #fff; }
.sm-poster-ops { margin-top: 14px; display: flex; gap: 10px; justify-content: center; }
.sm-poster-save, .sm-poster-again, .sm-report-submit {
    display: inline-block; padding: 10px 22px; border-radius: 10px; text-decoration: none; cursor: pointer;
    border: none; font-size: 14px; font-weight: 600;
}
.sm-poster-save { background: var(--sm-primary, #5b6cff); color: #fff; }
.sm-poster-again { background: var(--sm-soft, #f0f2fb); color: #3a4257; }
.sm-poster-tip, .sm-report-tip { margin: 10px 0 0; text-align: center; font-size: 13px; color: var(--sm-primary, #5b6cff); min-height: 18px; }/* 文章举报弹层 */
.sm-report-dialog h3 { margin: 4px 0 6px; font-size: 18px; }
.sm-report-sub { margin: 0 0 14px; color: #7b839a; font-size: 13px; }
.sm-report-reasons { list-style: none; margin: 0 0 12px; padding: 0; }
.sm-report-reasons li { padding: 8px 0; border-bottom: 1px solid var(--sm-line, #e6e9f2); }
.sm-report-reasons label { cursor: pointer; font-size: 14px; }
.sm-report-note { width: 100%; border: 1px solid var(--sm-line, #e6e9f2); border-radius: 10px; padding: 10px; resize: vertical; font-size: 14px; }
.sm-report-ops { margin-top: 14px; text-align: center; }
.sm-report-submit { background: var(--sm-primary, #5b6cff); color: #fff; }/* 内容付费墙 */
.sm-gate { position: relative; }
.sm-gate-excerpt { color: #5b6478; line-height: 1.9; filter: blur(0); }
.sm-gate-mask {
    position: absolute; left: 0; right: 0; top: 60px; bottom: 0;
    background: linear-gradient(to bottom, rgba(255,255,255,0) 0%, #fff 80%);
}
.sm-gate-card {
    position: relative; z-index: 2; margin: -40px auto 30px; max-width: 460px; text-align: center;
    background: #fff; border: 1px solid var(--sm-line, #e6e9f2); border-radius: 16px; padding: 30px 26px;
    box-shadow: 0 14px 40px rgba(30,40,80,.10);
}
.sm-gate-ic { font-size: 38px; }
.sm-gate-card h3 { margin: 8px 0 6px; font-size: 19px; color: #2b3245; }
.sm-gate-card p { margin: 0 0 16px; color: #7b839a; font-size: 14px; }
.sm-gate-btn {
    display: inline-block; padding: 11px 30px; border-radius: 10px; border: none; cursor: pointer;
    background: var(--sm-gate, #5b6cff); color: #fff; font-size: 15px; font-weight: 600; text-decoration: none;
}
.sm-gate-bal { margin-top: 12px !important; font-size: 13px; color: #9aa3b5; }/* 在线人数 */
.sm-online b { color: var(--sm-primary, #5b6cff); font-size: 1.1em; }
.sm-online-badge {
    position: fixed; left: 16px; bottom: 16px; z-index: 60; background: rgba(255,255,255,.92);
    border: 1px solid var(--sm-line, #e6e9f2); border-radius: 20px; padding: 7px 14px; font-size: 13px;
    color: #3a4257; box-shadow: 0 6px 20px rgba(30,40,80,.12); display: flex; align-items: center; gap: 7px;
}
.sm-online-dot { width: 8px; height: 8px; border-radius: 50%; background: #22b07d; box-shadow: 0 0 0 3px rgba(34,176,125,.2); }/* 文章专题合集 */
.sm-series { margin: 18px 0; }
.sm-series-title { font-size: 18px; margin: 0 0 4px; }
.sm-series-desc { margin: 0 0 14px; color: #7b839a; font-size: 14px; }
.sm-series-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.sm-series-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; background: var(--sm-card, #fff); border: 1px solid var(--sm-line, #e6e9f2); border-radius: 12px; }
.sm-series-idx { font-size: 15px; font-weight: 700; color: var(--sm-primary, #5b6cff); min-width: 26px; }
.sm-series-thumb { flex: 0 0 56px; width: 56px; height: 56px; border-radius: 8px; overflow: hidden; display: flex; align-items: center; justify-content: center; background: var(--sm-soft, #f0f2fb); }
.sm-series-thumb img { width: 100%; height: 100%; object-fit: cover; }
.sm-series-noimg { font-size: 22px; }
.sm-series-link { color: #2b3245; font-size: 15px; font-weight: 600; text-decoration: none; }
.sm-series-link:hover { color: var(--sm-primary, #5b6cff); }/* 关键词自动内链 */
.sm-autolink { color: var(--sm-primary, #5b6cff); text-decoration: none; border-bottom: 1px dashed var(--sm-primary, #5b6cff); }
.sm-autolink:hover { opacity: .8; }/* 复制保护：禁用选中 */
body.sm-noselect, body.sm-noselect * { -webkit-user-select: none; -moz-user-select: none; -ms-user-select: none; user-select: none; }









.sm-marquee.is-speed-slow .sm-marquee-track { animation-duration: 42s; }
.sm-marquee.is-speed-fast .sm-marquee-track { animation-duration: 16s; }

@keyframes sm-marquee-scroll { from { transform: translateX(0); } to { transform: translateX(-50%); } }










.sm-cp { position: relative; padding: 22px 18px 18px; background: var(--sm-card, #fff); border: 1px dashed var(--sm-primary, #5b6cff); border-radius: var(--sm-radius, 12px); text-align: center; overflow: hidden; }
.sm-cp-tag { position: absolute; top: 10px; right: 10px; font-size: 11px; padding: 2px 8px; border-radius: 999px; background: rgba(91,108,255,.12); color: var(--sm-primary, #5b6cff); }
.sm-cp-code { display: block; font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 20px; letter-spacing: 1px; color: var(--sm-primary, #5b6cff); word-break: break-all; }
.sm-cp-desc { margin: 8px 0 14px; font-size: 13px; color: var(--sm-text-2, #6b7488); }
.sm-cp-btn { width: 100%; padding: 9px 0; border: 0; border-radius: var(--sm-radius-sm, 8px); background: var(--sm-primary, #5b6cff); color: #fff; font-size: 14px; cursor: pointer; transition: .2s; }
.sm-cp-btn:hover { background: var(--sm-primary-d, #4a57e0); }
.sm-cp-btn.is-done { background: #22b07d; }/* ---------- 登录注册引导 login ---------- */
.sm-login { border-radius: var(--sm-radius-lg, 16px); padding: 30px 26px; background: linear-gradient(135deg, var(--sm-banner-a, #6a5cff), var(--sm-banner-b, #00c2ff)); color: #fff; }


.sm-login.has-skin { background: linear-gradient(135deg, var(--sm-banner-a), var(--sm-banner-b)); }









.sm-login-btn.is-reg { background: rgba(255,255,255,.18); color: #fff; border: 1px solid rgba(255,255,255,.6); }

/* ---------- 客户端下载 app ---------- */
.sm-app { border-radius: var(--sm-radius-lg, 16px); padding: 30px 26px; background: linear-gradient(135deg, var(--sm-banner-a, #6a5cff), var(--sm-banner-b, #00c2ff)); color: #fff; }
.sm-app.has-skin { background: linear-gradient(135deg, var(--sm-banner-a), var(--sm-banner-b)); }



/* ---------- 热搜词云 hotsearch ---------- */
.sm-hotsearch { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }










.sm-rk { display: flex; align-items: center; gap: 14px; padding: 14px 16px; background: var(--sm-card, #fff); border: 1px solid var(--sm-border, #e8ecf4); border-radius: var(--sm-radius, 12px); text-decoration: none; color: var(--sm-text, #242a3a); transition: .2s; }
.sm-rk:hover { border-color: var(--sm-primary, #5b6cff); transform: translateX(3px); }









.sm-rk.is-top .sm-rk-num { background: linear-gradient(135deg, var(--sm-primary, #5b6cff), var(--sm-vip, #8a5bff)); color: #fff; }

/* ---------- 自由内容卡 cards（容器 .sm-cards，单卡 .sm-ucard） ---------- */
.sm-cards { display: grid; grid-template-columns: repeat(var(--sm-cols, 3), minmax(0, 1fr)); gap: 16px; }










.sm-benefit.has-skin .sm-benefit-in { background: linear-gradient(135deg, var(--sm-banner-a), var(--sm-banner-b)); }









.sm-ben { text-align: center; padding: 16px 10px; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.22); border-radius: 14px; }

/* ---------- 新模块通用响应式兜底（小屏单列） ---------- */@media (max-width: 700px) {
    .sm-coupon, .sm-band, .sm-cards, .sm-benefit-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }}









.sm-vote-opt.is-reveal { cursor: default; }
.sm-vote-opt.is-reveal:hover { transform: none; }
.sm-vote-opt.is-picked { border-color: var(--sm-primary, #5b6cff); background: color-mix(in srgb, var(--sm-primary, #5b6cff) 8%, #fff); }










.sm-cal-wd.is-wk { color: #f5544b; }









.sm-cal-day.is-empty { background: transparent; }
.sm-cal-day.has-ev { border-color: var(--sm-border, #e8eaf2); font-weight: 700; cursor: default; }
.sm-cal-day.has-ev em { width: 5px; height: 5px; border-radius: 50%; background: var(--sm-primary, #5b6cff); }
.sm-cal-day.is-today { background: var(--sm-primary, #5b6cff); color: #fff; }
.sm-cal-day.is-today em { background: #fff; }










.sm-au { padding: 12px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-au:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }










.sm-mw { display: flex; gap: 10px; padding: 14px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-mw:hover { transform: translateY(-2px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }










.sm-course-lv.is-lv-b { background: #e8f7ef; color: #17915c; }
.sm-course-lv.is-lv-m { background: #fff4e0; color: #c77d0a; }
.sm-course-lv.is-lv-a { background: #fdeaea; color: #d43d3d; }

/* ---------- 支付方式墙 pay ---------- */
.sm-pay-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 14px; }
.sm-pay-i { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); }
.sm-pay-ico { font-size: 24px; color: var(--sm-primary, #5b6cff); display: inline-flex; }
.sm-pay-ico img { width: 26px; height: 26px; object-fit: contain; }
.sm-pay-n { font-size: 14px; font-weight: 600; }
.sm-pay-d { font-size: 12px; opacity: .62; }









.sm-cmp-tb .is-best { background: color-mix(in srgb, var(--sm-primary, #5b6cff) 10%, #fff); color: var(--sm-primary, #5b6cff); font-weight: 700; }









.sm-job { display: flex; align-items: center; gap: 16px; padding: 16px 18px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-job:hover { border-color: var(--sm-primary, #5b6cff); transform: translateY(-2px); }










.sm-form-btn.is-loading { opacity: .7; pointer-events: none; }









.sm-form-msg.is-ok { color: #17915c; }
.sm-form-msg.is-err { color: #f5544b; }









.sm-live-c.is-live .sm-live-st { background: #fdeaea; color: #f5544b; }
.sm-live-c.is-back .sm-live-st { background: #f0f1f5; color: #8a8f9e; }

@keyframes sm-live-pulse { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }

/* ---------- v5.44.0 新模块小屏兜底 ---------- */@media (max-width: 700px) {
    .sm-audio-grid, .sm-mw-grid, .sm-course-grid, .sm-live-list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sm-job { flex-direction: column; align-items: flex-start; gap: 10px; }}











.sm-tu { display: flex; align-items: center; gap: 14px; padding: 12px 16px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); text-decoration: none; color: inherit; transition: .2s; }
.sm-tu:hover { transform: translateY(-2px); border-color: var(--sm-primary, #5b6cff); }









.sm-tu.is-top-1 .sm-tu-rk { background: #fff1d6; color: #d99a17; }
.sm-tu.is-top-2 .sm-tu-rk { background: #eceff5; color: #7c879b; }
.sm-tu.is-top-3 .sm-tu-rk { background: #fbe9dd; color: #c97a3d; }

/* ---------- 勋章墙 medal ---------- */
.sm-medal-grid { display: grid; grid-template-columns: repeat(var(--sm-cols, 4), minmax(0, 1fr)); gap: 14px; }


.sm-md { position: relative; text-align: center; padding: 18px 12px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-md:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }









.sm-md-t.is-t-vip { background: #fff1d6; color: #d99a17; }
.sm-md-t.is-t-danger { background: #fdeaea; color: #d43d3d; }
.sm-md-t.is-t-warning { background: #fff4e0; color: #c77d0a; }
.sm-md-t.is-t-success { background: #e8f7ef; color: #17915c; }
.sm-md-t.is-t-primary { background: #eef0fb; color: #5b6cff; }
.sm-md-t.is-t-info { background: #e6f7f7; color: #1a9aa0; }
.sm-md-t.is-t-level { background: #f3edff; color: #8a5bff; }
.sm-md-t.is-t-dark { background: #eceff5; color: #4a5265; }/* ---------- 专题合集 series ---------- */
.sm-srs-grid { display: grid; grid-template-columns: repeat(var(--sm-cols, 3), minmax(0, 1fr)); gap: 16px; }
.sm-srs { display: flex; flex-direction: column; gap: 8px; padding: 20px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); text-decoration: none; color: inherit; transition: .2s; }
.sm-srs:hover { transform: translateY(-3px); border-color: var(--sm-primary, #5b6cff); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }











.sm-sf { display: flex; flex-direction: column; gap: 12px; padding: 18px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-sf:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }










.sm-tp { border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); overflow: hidden; transition: .2s; }
.sm-tp:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }









.sm-tp-b.is-demo { background: #f0f1f5; color: #4a5265; }
.sm-tp-b.is-demo:hover { background: #e4e7ee; }
.sm-tp-b.is-down { background: var(--sm-primary, #5b6cff); color: #fff; }
.sm-tp-b.is-down:hover { filter: brightness(1.1); }









.sm-mv { display: block; text-decoration: none; color: inherit; transition: .2s; }
.sm-mv:hover { transform: translateY(-4px); }










.sm-bk { display: block; text-decoration: none; color: inherit; transition: .2s; }
.sm-bk:hover { transform: translateY(-4px); }










.sm-gd { display: flex; flex-direction: column; gap: 10px; padding: 12px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-gd:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }

/* ---------- v5.44.0 第二批小屏兜底 ---------- */@media (max-width: 700px) {
    .sm-medal-grid, .sm-srs-grid, .sm-soft-grid, .sm-tpl-grid, .sm-gd-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .sm-mv-grid, .sm-bk-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }}









.sm-fs-cd.is-over { background: #f0f1f5; color: #8a8f9e; }
.sm-fs-cd.is-over .sm-fs-cd-n { background: #8a8f9e; }











.sm-cl { display: block; text-decoration: none; color: inherit; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); overflow: hidden; transition: .2s; }
.sm-cl:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }










.sm-ct { display: block; text-align: center; text-decoration: none; color: inherit; padding: 14px 10px 16px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-ct:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }

/* ---------- 菜单价目表 menu ---------- */
.sm-menu-gp { margin-bottom: 20px; }
.sm-menu-cat { margin: 0 0 10px; font-size: 15px; padding-left: 10px; border-left: 3px solid var(--sm-primary, #5b6cff); }
.sm-menu-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.sm-menu-it { display: flex; gap: 12px; align-items: center; padding: 10px 12px; border-radius: 10px; transition: .2s; }
.sm-menu-it:hover { background: var(--sm-card, #fff); }
.sm-menu-img { flex: 0 0 auto; width: 52px; height: 52px; border-radius: 8px; object-fit: cover; }
.sm-menu-bd { flex: 1 1 auto; min-width: 0; }
.sm-menu-row { display: flex; align-items: baseline; gap: 8px; }
.sm-menu-n { font-size: 14px; font-weight: 600; }
.sm-menu-dot { flex: 1 1 auto; height: 1px; border-bottom: 1px dashed var(--sm-border, #d8dbe6); }
.sm-menu-p { font-size: 15px; font-weight: 700; color: #f5544b; white-space: nowrap; }
.sm-menu-d { margin: 2px 0 0; font-size: 12px; opacity: .6; }









.sm-tpc { display: flex; flex-direction: column; gap: 8px; padding: 18px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); text-decoration: none; color: inherit; transition: .2s; }
.sm-tpc:hover { transform: translateY(-3px); border-color: var(--sm-primary, #5b6cff); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }










.sm-event.has-img .sm-event-bg { z-index: 0; }









.sm-event.has-img .sm-event-in { background: linear-gradient(90deg, rgba(20,22,40,.68), rgba(20,22,40,.25)); }
.sm-event .sm-sec-title { color: #fff; }










.sm-checkin-btn.is-loading { opacity: .7; pointer-events: none; }










.sm-dn { display: flex; align-items: center; gap: 12px; padding: 10px 14px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); }


/* ---------- v5.44.0 第三批小屏兜底 ---------- */@media (max-width: 700px) {
    .sm-fs-grid, .sm-gp-grid, .sm-cl-grid, .sm-ct-grid, .sm-tp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }}

@media (max-width: 700px) {
    .sm-menu-row { flex-wrap: wrap; }
    .sm-menu-dot { display: none; }}









.sm-st { padding: 14px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-st:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }










.sm-act-i.is-comment .sm-act-ico { background: #e8f7ef; color: #17915c; }














.sm-pm { position: relative; display: block; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); overflow: hidden; text-decoration: none; color: inherit; transition: .2s; }
.sm-pm:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }


/* ---------- 投稿入口卡 submit ---------- */
.sm-submit-in, .sm-submit { padding: 0; }










.sm-pmc { display: flex; flex-direction: column; gap: 8px; padding: 12px; border: 1px solid var(--sm-border, #e8eaf2); border-radius: var(--sm-radius, 14px); background: var(--sm-card, #fff); transition: .2s; }
.sm-pmc:hover { transform: translateY(-3px); box-shadow: var(--sm-shadow, 0 8px 24px rgba(31,41,68,.08)); }

/* ---------- v5.44.0 第四批小屏兜底 ---------- */@media (max-width: 700px) {
    .sm-st-grid, .sm-tool-grid, .sm-pm-grid, .sm-pmc-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }}

/* ---------- v5.46.2：hidden 属性兜底（放在文件末尾，覆盖前面的同类声明） ----------
   元素带 hidden 就必须隐藏。像 .sm-poster-mask{display:flex} 这种作者样式与 UA 的
   [hidden]{display:none} 特异度相同、位置更靠前，会盖掉它 —— 文章页「举报」「分享海报」
   弹层因此一进页面就常显、挡住全文（v5.46.2 实测）。此前只对 .sm-ct-panel / .sm-note-pop
   等逐个打补丁，漏一个就复发，这里一次性兜住。
   注意：**不能用 !important** —— 那样 jQuery .show() 写入的 inline display 也打不过它，
   所有靠 .show() 打开的弹层会永远打不开。放在末尾即可保证优先级，又让 inline 样式生效。 */
[hidden] {
    display: none;
}/* 分享海报 / 文章举报弹层的「打开态」：显式写 flex，不靠 jQuery 推断 ——
   .show() 对没写过 inline display 的元素会按标签默认值给 block，弹层就居中不了。
   放在上面的 [hidden] 之后，保证 .is-open 优先。 */
.sm-poster-mask.is-open,
.sm-report-mask.is-open {
    display: flex;
}