/* =============================================================
   后台管理样式 —— 继承前台设计变量，独立布局（侧边栏 + 内容区）
   ============================================================= */

.admin-body {
    background: #EEF2F7;
    font-size: 14px;
    line-height: 1.65;
}

.admin-shell {
    display: flex;
    min-height: 100vh;
}

/* ---------------- 侧边导航 ---------------- */
.admin-side {
    width: 232px;
    flex: 0 0 232px;
    background: var(--c-brand-dark);
    color: #D8E3F3;
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    height: 100vh;
    overflow-y: auto;
}

.admin-side__brand {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 20px 18px;
    border-bottom: 1px solid rgba(255, 255, 255, .09);
}

.admin-side__brand .brand__mark {
    width: 34px;
    height: 34px;
    flex: 0 0 34px;
    border-radius: 10px;
    background: linear-gradient(135deg, var(--c-accent), var(--c-accent-dark));
    position: relative;
}

.admin-side__brand .brand__mark::after {
    content: "";
    position: absolute;
    inset: 9px 10px;
    border: 2px solid #1B1B1B;
    border-radius: 3px 3px 4px 4px;
    opacity: .55;
}

.admin-side__brand-text { display: flex; flex-direction: column; line-height: 1.3; }
.admin-side__brand-text strong { color: #fff; font-size: 15px; }
.admin-side__brand-text em { font-style: normal; font-size: 11px; color: #8FA9CC; }

.admin-nav { padding: 12px 10px 24px; display: flex; flex-direction: column; gap: 2px; }

.admin-nav__item {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 12px;
    border-radius: var(--r-sm);
    color: #C3D3EA;
    transition: background .18s, color .18s;
    font-size: 14px;
}
.admin-nav__item svg { flex: 0 0 auto; opacity: .9; }
.admin-nav__item:hover { background: rgba(255, 255, 255, .08); color: #fff; }
.admin-nav__item.is-active { background: var(--c-brand); color: #fff; box-shadow: inset 3px 0 0 var(--c-accent); }
.admin-nav__item--out { color: #F0A9AB; }
.admin-nav__item--out:hover { background: rgba(229, 72, 77, .18); color: #FFD9DA; }

.admin-nav__badge {
    margin-left: auto;
    font-style: normal;
    background: var(--c-danger);
    color: #fff;
    font-size: 11px;
    min-width: 19px;
    height: 19px;
    border-radius: 999px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0 5px;
}

.admin-nav__sep { height: 1px; background: rgba(255, 255, 255, .1); margin: 10px 12px; }

/* ---------------- 主区域 ---------------- */
.admin-main {
    flex: 1;
    min-width: 0;
    display: flex;
    flex-direction: column;
}

.admin-top {
    background: #fff;
    border-bottom: 1px solid var(--c-border);
    padding: 0 24px;
    height: 60px;
    display: flex;
    align-items: center;
    gap: 14px;
    position: sticky;
    top: 0;
    z-index: 20;
}

.admin-top__burger { display: none; background: none; border: 0; padding: 6px; cursor: pointer; }
.admin-top__burger i { display: block; width: 18px; height: 2px; background: var(--c-text-2); margin: 4px 0; border-radius: 2px; }

.admin-top__title { font-size: 17px; font-weight: 600; }
.admin-top__right { margin-left: auto; display: flex; align-items: center; gap: 14px; font-size: 13px; color: var(--c-text-2); }
.admin-top__user { display: inline-flex; align-items: center; gap: 6px; }
.admin-top__logout { color: var(--c-brand); font-weight: 500; }
.admin-top__logout:hover { text-decoration: underline; }

.admin-alert {
    margin: 16px 24px 0;
    padding: 11px 16px;
    border-radius: var(--r-sm);
    font-size: 13.5px;
    border: 1px solid transparent;
}
.admin-alert a { color: inherit; font-weight: 600; text-decoration: underline; }
.admin-alert--ok   { background: #E8F7F0; border-color: #B7E4CE; color: #0E6B47; }
.admin-alert--warn { background: var(--c-accent-light); border-color: #F6D9A6; color: #8A5A00; }
.admin-alert--err  { background: #FDECEC; border-color: #F6C9CA; color: #A3242A; }

.admin-content { padding: 20px 24px 8px; flex: 1; }

.admin-pagebar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 16px;
}
.admin-pagebar .spacer { margin-left: auto; }

.admin-foot {
    padding: 16px 24px 24px;
    display: flex;
    justify-content: space-between;
    color: var(--c-text-3);
    font-size: 12.5px;
}

/* ---------------- 卡片 / 面板 ---------------- */
.panel {
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--r-md);
    box-shadow: var(--sh-1);
    margin-bottom: 18px;
    overflow: hidden;
}
.panel__head {
    padding: 14px 18px;
    border-bottom: 1px solid var(--c-border);
    display: flex;
    align-items: center;
    gap: 12px;
    background: #FBFCFE;
}
.panel__head h2 { font-size: 15px; }
.panel__head .spacer { margin-left: auto; }
.panel__body { padding: 18px; }
.panel__body--flush { padding: 0; }
.panel__hint { color: var(--c-text-3); font-size: 12.5px; }

/* ---------------- 数据概览 ---------------- */
.stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
    gap: 14px;
    margin-bottom: 18px;
}
.stat-card {
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--r-md);
    padding: 18px;
    box-shadow: var(--sh-1);
    display: flex;
    align-items: center;
    gap: 14px;
}
.stat-card__icon {
    width: 44px; height: 44px; flex: 0 0 44px;
    border-radius: 12px;
    background: var(--c-brand-light);
    color: var(--c-brand);
    display: flex; align-items: center; justify-content: center;
}
.stat-card__icon--accent { background: var(--c-accent-light); color: var(--c-accent-dark); }
.stat-card__icon--ok { background: #E8F7F0; color: #0E6B47; }
.stat-card__icon--danger { background: #FDECEC; color: #A3242A; }
.stat-card__num { font-size: 24px; font-weight: 700; line-height: 1.2; color: var(--c-text); }
.stat-card__label { font-size: 12.5px; color: var(--c-text-3); }

.stat-grid--mini { grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); }
.stat-grid--mini .stat-card { padding: 14px; }

/* ---------------- 表格 ---------------- */
.table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
table.tbl { width: 100%; border-collapse: collapse; font-size: 13.5px; }
table.tbl th, table.tbl td {
    padding: 11px 14px;
    text-align: left;
    border-bottom: 1px solid var(--c-border);
    vertical-align: middle;
}
table.tbl th {
    background: #F7F9FC;
    color: var(--c-text-2);
    font-weight: 600;
    font-size: 12.5px;
    white-space: nowrap;
}
table.tbl tbody tr:hover { background: #FAFCFF; }
table.tbl td.ops { white-space: nowrap; text-align: right; }
table.tbl .thumb {
    width: 46px; height: 46px;
    object-fit: contain;
    background: var(--c-bg-soft);
    border: 1px solid var(--c-border);
    border-radius: 8px;
    padding: 3px;
}
.tbl-empty { padding: 46px 18px; text-align: center; color: var(--c-text-3); }

/* ---------------- 表单 ---------------- */
.form-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px 20px;
}
.form-grid--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.field { display: flex; flex-direction: column; gap: 6px; }
.field--full { grid-column: 1 / -1; }
.field > label { font-size: 13px; font-weight: 600; color: var(--c-text-2); }
.field > label .req { color: var(--c-danger); margin-left: 3px; }
.field .tip { font-size: 12px; color: var(--c-text-3); }

.inp, .sel, .txa {
    width: 100%;
    font-family: inherit;
    font-size: 13.5px;
    color: var(--c-text);
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--r-sm);
    padding: 9px 12px;
    transition: border-color .18s, box-shadow .18s;
}
.inp:focus, .sel:focus, .txa:focus {
    outline: none;
    border-color: var(--c-brand);
    box-shadow: 0 0 0 3px rgba(27, 77, 143, .12);
}
.txa { min-height: 90px; resize: vertical; line-height: 1.7; }
.txa--sm { min-height: 62px; }
.inp--sm { padding: 6px 10px; font-size: 13px; }
.sel { appearance: none; background-image: linear-gradient(45deg, transparent 50%, #8896A8 50%), linear-gradient(135deg, #8896A8 50%, transparent 50%); background-position: calc(100% - 16px) 50%, calc(100% - 11px) 50%; background-size: 5px 5px, 5px 5px; background-repeat: no-repeat; padding-right: 32px; }

.check { display: inline-flex; align-items: center; gap: 7px; font-size: 13.5px; color: var(--c-text-2); cursor: pointer; }
.check input { width: 15px; height: 15px; accent-color: var(--c-brand); }

.form-actions {
    display: flex;
    align-items: center;
    gap: 10px;
    padding-top: 16px;
    margin-top: 4px;
    border-top: 1px dashed var(--c-border);
}
.form-actions .spacer { margin-left: auto; }

/* 后台按钮（复用前台 .btn 变量，独立尺寸） */
.abtn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font-family: inherit;
    font-size: 13.5px;
    font-weight: 500;
    padding: 8px 16px;
    border-radius: var(--r-sm);
    border: 1px solid transparent;
    cursor: pointer;
    transition: background .18s, border-color .18s, color .18s, transform .12s;
    white-space: nowrap;
}
.abtn:active { transform: translateY(1px); }
.abtn--primary { background: var(--c-brand); color: #fff; }
.abtn--primary:hover { background: var(--c-brand-dark); }
.abtn--accent { background: var(--c-accent); color: #1B1B1B; }
.abtn--accent:hover { background: var(--c-accent-dark); color: #fff; }
.abtn--line { background: #fff; border-color: var(--c-border); color: var(--c-text-2); }
.abtn--line:hover { border-color: var(--c-brand); color: var(--c-brand); }
.abtn--danger { background: #fff; border-color: #F2C4C6; color: var(--c-danger); }
.abtn--danger:hover { background: var(--c-danger); border-color: var(--c-danger); color: #fff; }
.abtn--sm { padding: 5px 11px; font-size: 12.5px; }
.abtn--xs { padding: 3px 9px; font-size: 12px; border-radius: 6px; }

/* 状态徽标 */
.pill {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    padding: 2px 9px;
    border-radius: 999px;
    background: var(--c-bg-soft);
    color: var(--c-text-2);
    border: 1px solid var(--c-border);
    white-space: nowrap;
}
.pill--ok { background: #E8F7F0; border-color: #B7E4CE; color: #0E6B47; }
.pill--off { background: #F1F3F6; border-color: #E1E5EA; color: #8A93A0; }
.pill--hot { background: var(--c-accent-light); border-color: #F6D9A6; color: #8A5A00; }
.pill--new { background: #EAF2FF; border-color: #C6DBFA; color: #1B4D8F; }
.pill--danger { background: #FDECEC; border-color: #F6C9CA; color: #A3242A; }

/* 搜索 / 过滤条 */
.filterbar {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 14px;
}
.filterbar .inp, .filterbar .sel { width: auto; min-width: 150px; }
.filterbar .spacer { margin-left: auto; }

/* 分页（后台沿用前台 .pager 结构，尺寸微调） */
.admin-content .pager { justify-content: flex-end; margin: 16px 0 4px; }

/* 空状态 */
.empty-box { text-align: center; padding: 56px 20px; color: var(--c-text-3); }
.empty-box strong { display: block; color: var(--c-text-2); font-size: 15px; margin-bottom: 6px; }

/* 登录页 */
.login-body {
    min-height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background:
        radial-gradient(900px 480px at 20% 15%, rgba(27, 77, 143, .10), transparent 60%),
        radial-gradient(700px 420px at 85% 85%, rgba(245, 165, 36, .10), transparent 60%),
        #EEF2F7;
    padding: 28px 20px;
}
.login-card {
    width: 100%;
    max-width: 400px;
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--r-lg);
    box-shadow: var(--sh-2);
    overflow: hidden;
}
.login-card__head {
    background: var(--c-brand-dark);
    color: #fff;
    padding: 26px 28px 22px;
}
.login-card__head h1 { font-size: 20px; margin-bottom: 4px; }
.login-card__head p { color: #9FB6D4; font-size: 13px; }
.login-card__body { padding: 24px 28px 28px; }
.login-card .field { margin-bottom: 15px; }
.login-card .abtn { width: 100%; padding: 11px; font-size: 15px; }
.login-tip {
    margin-top: 16px;
    background: var(--c-accent-light);
    border: 1px dashed #F0CE94;
    color: #8A5A00;
    border-radius: var(--r-sm);
    padding: 10px 13px;
    font-size: 12.5px;
    line-height: 1.7;
}
.login-back { display: block; text-align: center; margin-top: 18px; font-size: 13px; color: var(--c-text-2); }
.login-back:hover { color: var(--c-brand); }

/* 详情抽屉式的小信息块 */
.kv-list { display: grid; grid-template-columns: 110px 1fr; gap: 8px 14px; font-size: 13.5px; }
.kv-list dt { color: var(--c-text-3); }
.kv-list dd { margin: 0; }

.tag-input-hint { font-size: 12px; color: var(--c-text-3); line-height: 1.7; }

/* =============================================================
   v1.1.0 新增 —— LOGO 上传 / 文章编辑 / 大项目管理 / 子类目编辑器
   ============================================================= */

/* 幽灵按钮（列表里的次要操作，如「预览」） */
.abtn--ghost { background: transparent; border-color: transparent; color: var(--c-brand); }
.abtn--ghost:hover { background: var(--c-brand-light); border-color: transparent; color: var(--c-brand-dark); }

/* 徽标补充色 */
.pill--warn { background: #FFF6E5; border-color: #F6D9A6; color: #8A5A00; }

/* ---------------- 站点 LOGO 面板 ---------------- */
.logo-box {
    display: grid;
    grid-template-columns: 300px minmax(0, 1fr);
    gap: 22px;
    align-items: start;
}
.logo-box__preview {
    background:
        linear-gradient(45deg, #F3F5F9 25%, transparent 25%, transparent 75%, #F3F5F9 75%),
        linear-gradient(45deg, #F3F5F9 25%, transparent 25%, transparent 75%, #F3F5F9 75%);
    background-size: 16px 16px;
    background-position: 0 0, 8px 8px;
    border: 1px dashed var(--c-border);
    border-radius: var(--r-md);
    min-height: 120px;
    padding: 18px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
}
.logo-box__preview img { max-width: 100%; max-height: 108px; object-fit: contain; }
.logo-box__empty { display: flex; flex-direction: column; align-items: center; gap: 10px; color: var(--c-text-3); }
.logo-box__empty em { font-style: normal; font-size: 12.5px; }
.logo-box__form { min-width: 0; }

/* 文件选择框 */
.inp--file { padding: 7px 10px; font-size: 13px; background: #FBFCFE; }
.inp--file::file-selector-button {
    font-family: inherit;
    font-size: 12.5px;
    margin-right: 10px;
    padding: 5px 12px;
    border: 1px solid var(--c-border);
    border-radius: 6px;
    background: #fff;
    color: var(--c-text-2);
    cursor: pointer;
}
.inp--file::file-selector-button:hover { border-color: var(--c-brand); color: var(--c-brand); }

/* ---------------- 文章封面预览 ---------------- */
.cover-preview {
    border: 1px solid var(--c-border);
    border-radius: var(--r-sm);
    background: var(--c-bg-soft);
    aspect-ratio: 16 / 10;
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.cover-preview img { width: 100%; height: 100%; object-fit: cover; }
.cover-preview__empty { color: var(--c-text-3); font-size: 12.5px; }

/* 列表缩略图 */
.tbl-thumb {
    width: 68px; height: 44px;
    object-fit: cover;
    border: 1px solid var(--c-border);
    border-radius: 6px;
    background: var(--c-bg-soft);
}

/* ---------------- 双栏编辑器 ---------------- */
.edit-grid {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 340px;
    gap: 24px;
    align-items: start;
}
.edit-grid__main { min-width: 0; }
.edit-grid__side { min-width: 0; }

/* 「左列表 + 右编辑」双栏布局（窄屏自动叠成单列） */
.layout-2col {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: 18px;
    align-items: start;
}

/* 正文等宽编辑器 */
.txa--code {
    min-height: 420px;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, "Courier New", monospace;
    font-size: 13px;
    line-height: 1.85;
    tab-size: 4;
}

/* ---------------- 工具条（分类筛选 + 搜索） ---------------- */
.toolbar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.toolbar__filters { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.toolbar__search { margin-left: auto; display: flex; align-items: center; gap: 8px; }
.toolbar__search .inp { width: 200px; }

/* 胶囊筛选按钮 */
.chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-size: 12.5px;
    padding: 5px 13px;
    border-radius: 999px;
    background: #fff;
    border: 1px solid var(--c-border);
    color: var(--c-text-2);
    white-space: nowrap;
    transition: background .16s, border-color .16s, color .16s;
}
.chip:hover { border-color: var(--c-brand); color: var(--c-brand); }
.chip.is-active { background: var(--c-brand); border-color: var(--c-brand); color: #fff; }

/* ---------------- 子类目编辑器 ---------------- */
.subcat-editor { border: 1px solid var(--c-border); border-radius: var(--r-sm); padding: 10px; background: #FBFCFE; }
.subcat-editor__list { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; min-height: 32px; }
.subcat-editor__list:empty::after { content: "还没有子类目，在下方输入后回车添加"; color: var(--c-text-3); font-size: 12.5px; }
.subcat-tag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: 999px;
    padding: 4px 6px 4px 12px;
    font-size: 12.5px;
    color: var(--c-text-2);
}
.subcat-tag__x {
    width: 18px; height: 18px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 0; border-radius: 50%;
    background: var(--c-bg-soft); color: var(--c-text-3);
    font-size: 13px; line-height: 1; cursor: pointer;
}
.subcat-tag__x:hover { background: var(--c-danger); color: #fff; }
.subcat-editor__add { display: flex; gap: 8px; }
.subcat-editor__add .inp { flex: 1; }
.subcat-preview { margin-top: 10px; padding-top: 10px; border-top: 1px dashed var(--c-border); }
.subcat-preview__title { font-size: 12px; color: var(--c-text-3); margin-bottom: 6px; }
.subcat-preview__chips { display: flex; flex-wrap: wrap; gap: 6px; }
.subcat-preview__chips a {
    font-size: 12.5px; padding: 3px 11px; border-radius: 999px;
    background: var(--c-brand-light); color: var(--c-brand); border: 1px solid #CFE0F5;
}

/* ---------------- 大项目管理：图标选择 ---------------- */
.icon-pick { display: flex; flex-wrap: wrap; gap: 8px; }
.icon-pick label {
    position: relative;
    width: 40px; height: 40px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--c-border); border-radius: var(--r-sm);
    background: #fff; color: var(--c-text-2); cursor: pointer;
    transition: border-color .16s, color .16s, background .16s;
}
.icon-pick label:hover { border-color: var(--c-brand); color: var(--c-brand); }
.icon-pick input { position: absolute; opacity: 0; pointer-events: none; }
.icon-pick label.is-on,
.icon-pick label:has(input:checked) {
    border-color: var(--c-brand);
    background: var(--c-brand-light);
    color: var(--c-brand);
    box-shadow: inset 0 0 0 1px var(--c-brand);
}

/* 行内排序按钮组 */
.rowmove { display: inline-flex; gap: 4px; }
.rowmove button {
    width: 22px; height: 22px;
    display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--c-border); border-radius: 6px;
    background: #fff; color: var(--c-text-2); font-size: 12px; cursor: pointer; line-height: 1;
}
.rowmove button:hover { border-color: var(--c-brand); color: var(--c-brand); }

/* 信息提示条（面板内） */
.hintbar {
    background: var(--c-brand-light);
    border: 1px solid #CFE0F5;
    color: var(--c-brand-dark);
    border-radius: var(--r-sm);
    padding: 10px 14px;
    font-size: 12.5px;
    line-height: 1.75;
    margin-bottom: 14px;
}
.hintbar code { background: #fff; border: 1px solid #CFE0F5; border-radius: 4px; padding: 1px 5px; }

/* 响应式 */
@media (max-width: 1240px) {
    .edit-grid { grid-template-columns: minmax(0, 1fr) 300px; }
}
@media (max-width: 1080px) {
    .form-grid, .form-grid--3 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .edit-grid { grid-template-columns: minmax(0, 1fr); }
    .layout-2col { grid-template-columns: minmax(0, 1fr); }
    .logo-box { grid-template-columns: 260px minmax(0, 1fr); }
}
@media (max-width: 860px) {
    .admin-side {
        position: fixed;
        left: 0; top: 0;
        z-index: 60;
        transform: translateX(-100%);
        transition: transform .24s ease;
        box-shadow: var(--sh-2);
    }
    body.admin-nav-open .admin-side { transform: translateX(0); }
    body.admin-nav-open::after {
        content: "";
        position: fixed;
        inset: 0;
        background: rgba(15, 47, 92, .35);
        z-index: 55;
    }
    .admin-top__burger { display: inline-block; }
    .admin-top { padding: 0 16px; }
    .admin-content { padding: 16px 16px 8px; }
    .admin-alert { margin: 14px 16px 0; }
    .admin-foot { padding: 14px 16px 20px; }
}
@media (max-width: 640px) {
    .form-grid, .form-grid--3 { grid-template-columns: minmax(0, 1fr); }
    .admin-top__title { font-size: 15px; }
    .filterbar .inp, .filterbar .sel { width: 100%; min-width: 0; }

    /* v1.1.0 新增 */
    .logo-box { grid-template-columns: 1fr; gap: 16px; }
    .edit-grid { grid-template-columns: minmax(0, 1fr); gap: 18px; }
    table.tbl { min-width: 640px; }
    .toolbar__filters, .toolbar__search { width: 100%; margin-left: 0; }
    .toolbar__search .inp { width: 100%; flex: 1; }
    .chip { padding: 7px 14px; }
    .rowmove button { width: 30px; height: 30px; font-size: 13px; }
    .icon-pick label { width: 44px; height: 44px; }
    /* 输入框字号 ≥16px，避免 iOS 聚焦时页面自动缩放 */
    .admin-content .inp, .admin-content .sel, .admin-content .txa { font-size: 16px; }
    .admin-content .inp--sm, .admin-content .inp--file { font-size: 15px; }
    .abtn { min-height: 38px; }
    .abtn--xs { min-height: 32px; }
}

@media (max-width: 420px) {
    .admin-content { padding: 12px 12px 8px; }
    .admin-alert { margin: 12px 12px 0; }
    .admin-top { padding: 0 12px; }
    .admin-foot { flex-direction: column; gap: 6px; }
    .tbl-empty { padding: 34px 14px; }
}

/* =============================================================
   v1.3.0 新增：富文本编辑器（assets/js/editor.js）
   ============================================================= */
.rich-re { border-radius: var(--r-md, 10px); }

.re {
    border: 1px solid var(--c-border, #DCE5F0);
    border-radius: var(--r-md, 10px);
    background: #fff;
    overflow: hidden;
}

.re__bar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 3px;
    padding: 7px 8px;
    background: #F4F7FB;
    border-bottom: 1px solid var(--c-border, #DCE5F0);
    position: sticky;
    top: 0;
    z-index: 4;
}

.re__btn {
    min-width: 32px;
    height: 30px;
    padding: 0 7px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: #fff;
    border: 1px solid #E1E8F1;
    border-radius: 6px;
    color: #3B4A5D;
    font-size: 14px;
    line-height: 1;
    cursor: pointer;
    transition: background .15s, border-color .15s, color .15s;
}

.re__btn:hover { background: #E8EFF9; border-color: #B9CEE8; color: var(--c-brand, #1B4D8F); }
.re__btn.is-on { background: var(--c-brand, #1B4D8F); border-color: var(--c-brand, #1B4D8F); color: #fff; }
.re__btn.is-b { font-weight: 800; }
.re__btn.is-i { font-style: italic; font-family: Georgia, serif; }
.re__btn.is-u { text-decoration: underline; }
.re__btn.is-s { text-decoration: line-through; }
.re__btn.is-q { font-size: 15px; font-weight: 700; }

.re__sep { width: 1px; height: 20px; margin: 0 3px; background: #D8E1EC; }

.re__status {
    margin-left: auto;
    padding-right: 4px;
    font-size: 12px;
    color: var(--c-text-3, #93A1B3);
    white-space: nowrap;
}

.re__body {
    padding: 16px 18px;
    font-size: 15px;
    line-height: 1.85;
    color: var(--c-text, #1F2733);
    outline: none;
    overflow-y: auto;
    max-height: 720px;
}

.re__body:focus { background: #FDFEFF; }
.re__body.is-drop { background: #EAF3FF; box-shadow: inset 0 0 0 2px var(--c-brand, #1B4D8F); }
.re__body:empty::before { content: '在这里撰写内容…'; color: #A9B6C7; }

.re__body p { margin: 0 0 10px; }
.re__body h1, .re__body h2, .re__body h3, .re__body h4, .re__body h5 {
    margin: 18px 0 10px; line-height: 1.4; color: var(--c-brand-dark, #123A6B); font-weight: 700;
}
.re__body h1 { font-size: 22px; }
.re__body h2 { font-size: 20px; }
.re__body h3 { font-size: 17px; }
.re__body h4 { font-size: 15.5px; }
.re__body h5 { font-size: 14.5px; }
.re__body ul, .re__body ol { margin: 0 0 12px; padding-left: 24px; }
.re__body li { margin-bottom: 5px; }
.re__body blockquote {
    margin: 12px 0; padding: 10px 16px;
    border-left: 3px solid var(--c-brand, #1B4D8F);
    background: #F6F9FD; color: #46586E; border-radius: 0 6px 6px 0;
}
.re__body img { max-width: 100%; height: auto; border-radius: 8px; display: block; margin: 10px 0; }
.re__body video { max-width: 100%; border-radius: 8px; display: block; margin: 10px 0; }
.re__body a { color: var(--c-brand, #1B4D8F); text-decoration: underline; }
.re__body hr { border: 0; border-top: 1px dashed #CBD8E6; margin: 18px 0; }
.re__body table { width: 100%; border-collapse: collapse; margin: 12px 0; font-size: 14px; }
.re__body table th, .re__body table td { border: 1px solid #DCE5F0; padding: 8px 10px; text-align: left; }
.re__body table th { background: #F4F7FB; font-weight: 600; }
.re__body pre {
    margin: 12px 0; padding: 12px 14px; background: #F4F7FB; border: 1px solid #E1E8F1;
    border-radius: 8px; font-family: Consolas, Monaco, monospace; font-size: 13px;
    white-space: pre-wrap; word-break: break-all;
}
.re__body code { background: #F1F5FA; padding: 1px 5px; border-radius: 4px; font-size: 13px; }

.re__source {
    width: 100%;
    padding: 14px 16px;
    font-family: Consolas, Monaco, monospace;
    font-size: 13px;
    line-height: 1.7;
    border: 0;
    outline: none;
    resize: vertical;
    color: #2C3A4E;
    background: #FBFCFE;
}

.re__tip {
    padding: 7px 12px;
    font-size: 12px;
    color: var(--c-text-3, #93A1B3);
    background: #FAFCFE;
    border-top: 1px solid #EEF2F7;
}

/* =============================================================
   v1.3.0 新增：产品图集（上传 / 预览 / 拖拽排序）
   ============================================================= */
.gal {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 12px;
    margin: 4px 0 12px;
}

.gal__item {
    border: 1px solid #E1E8F1;
    border-radius: 10px;
    background: #FBFCFE;
    overflow: hidden;
    position: relative;
}

.gal__item.is-video { box-shadow: inset 0 0 0 2px #F0B429; }

.gal__thumb {
    display: block;
    width: 100%;
    height: 104px;
    object-fit: cover;
    background: #EEF2F7;
}

.gal__thumb--ico {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 30px;
    color: #B9C6D6;
}

.gal__meta {
    padding: 7px 9px;
    font-size: 11.5px;
    color: var(--c-text-3, #93A1B3);
    word-break: break-all;
    line-height: 1.5;
}

.gal__flag {
    position: absolute;
    top: 6px;
    left: 6px;
    padding: 2px 6px;
    border-radius: 5px;
    font-size: 11px;
    color: #fff;
    background: rgba(18, 58, 107, .82);
}

.gal__flag--video { background: rgba(224, 138, 17, .92); }

.gal__ops {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 9px;
    border-top: 1px solid #EEF2F7;
    background: #fff;
    font-size: 12px;
}

.gal__ops label { display: inline-flex; align-items: center; gap: 4px; cursor: pointer; color: #C0392B; }
.gal__ops .inp--file { flex: 1; min-width: 0; font-size: 11.5px; padding: 3px 5px; }

.gal__add {
    border: 1px dashed #B9CEE8;
    border-radius: 10px;
    background: #F6FAFF;
    padding: 14px;
}

.gal__add .field { margin-bottom: 10px; }

.gal-note {
    font-size: 12.5px;
    color: var(--c-text-3, #93A1B3);
    line-height: 1.7;
}

/* 视频预览卡 */
.vid-box {
    display: flex;
    gap: 14px;
    align-items: flex-start;
    flex-wrap: wrap;
    padding: 14px;
    border: 1px solid #E1E8F1;
    border-radius: 10px;
    background: #FBFCFE;
}

.vid-box video { width: 260px; max-width: 100%; border-radius: 8px; background: #000; }

/* 商品详情区块（后台编辑用） */
.detail-edit__head {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
