/* ==========================================================================
   admin-icons.css — 后台图标层与视觉增强
   必须在 admin.css / admin-cms.css 之后加载
   图标采用 CSS mask + currentColor，颜色自动跟随文字（hover / active 同步变色）
   ========================================================================== */

:root {
    /* ---------- 导航 ---------- */
    --ico-dashboard: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='3' width='7' height='7' rx='1.5'/%3E%3Crect x='14' y='14' width='7' height='7' rx='1.5'/%3E%3Crect x='3' y='14' width='7' height='7' rx='1.5'/%3E%3C/svg%3E");
    --ico-members: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpath d='M22 21v-2a4 4 0 0 0-3-3.87'/%3E%3Cpath d='M16 3.13a4 4 0 0 1 0 7.75'/%3E%3C/svg%3E");
    --ico-orders: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='8' y1='6' x2='21' y2='6'/%3E%3Cline x1='8' y1='12' x2='21' y2='12'/%3E%3Cline x1='8' y1='18' x2='21' y2='18'/%3E%3Cline x1='3' y1='6' x2='3.01' y2='6'/%3E%3Cline x1='3' y1='12' x2='3.01' y2='12'/%3E%3Cline x1='3' y1='18' x2='3.01' y2='18'/%3E%3C/svg%3E");
    --ico-price: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20.59 13.41l-7.17 7.17a2 2 0 0 1-2.83 0L2 12V2h10l8.59 8.59a2 2 0 0 1 0 2.82z'/%3E%3Cline x1='7' y1='7' x2='7.01' y2='7'/%3E%3C/svg%3E");
    --ico-gateway: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='1' y='4' width='22' height='16' rx='2.5'/%3E%3Cline x1='1' y1='10' x2='23' y2='10'/%3E%3C/svg%3E");
    --ico-message: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2.5'/%3E%3Cpolyline points='22,6 12,13 2,6'/%3E%3C/svg%3E");
    --ico-agent: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='8.5' cy='7' r='4'/%3E%3Cline x1='19' y1='8' x2='19' y2='14'/%3E%3Cline x1='22' y1='11' x2='16' y2='11'/%3E%3C/svg%3E");
    --ico-settings: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='4' y1='21' x2='4' y2='14'/%3E%3Cline x1='4' y1='10' x2='4' y2='3'/%3E%3Cline x1='12' y1='21' x2='12' y2='12'/%3E%3Cline x1='12' y1='8' x2='12' y2='3'/%3E%3Cline x1='20' y1='21' x2='20' y2='16'/%3E%3Cline x1='20' y1='12' x2='20' y2='3'/%3E%3Cline x1='1' y1='14' x2='7' y2='14'/%3E%3Cline x1='9' y1='8' x2='15' y2='8'/%3E%3Cline x1='17' y1='16' x2='23' y2='16'/%3E%3C/svg%3E");

    /* ---------- 操作 ---------- */
    --ico-plus: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='12' y1='5' x2='12' y2='19'/%3E%3Cline x1='5' y1='12' x2='19' y2='12'/%3E%3C/svg%3E");
    --ico-search: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='8'/%3E%3Cline x1='21' y1='21' x2='16.65' y2='16.65'/%3E%3C/svg%3E");
    --ico-reset: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='23 4 23 10 17 10'/%3E%3Cpolyline points='1 20 1 14 7 14'/%3E%3Cpath d='M3.51 9a9 9 0 0 1 14.85-3.36L23 10'/%3E%3Cpath d='M1 14l4.64 4.36A9 9 0 0 0 20.49 15'/%3E%3C/svg%3E");
    --ico-save: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h11l5 5v11a2 2 0 0 1-2 2z'/%3E%3Cpolyline points='17 21 17 13 7 13 7 21'/%3E%3Cpolyline points='7 3 7 8 15 8'/%3E%3C/svg%3E");
    --ico-edit: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M11 4H4a2 2 0 0 0-2 2v14a2 2 0 0 0 2 2h14a2 2 0 0 0 2-2v-7'/%3E%3Cpath d='M18.5 2.5a2.12 2.12 0 0 1 3 3L12 15l-4 1 1-4z'/%3E%3C/svg%3E");
    --ico-trash: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='3 6 5 6 21 6'/%3E%3Cpath d='M19 6v14a2 2 0 0 1-2 2H7a2 2 0 0 1-2-2V6m3 0V4a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2'/%3E%3C/svg%3E");
    --ico-power: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18.36 6.64a9 9 0 1 1-12.73 0'/%3E%3Cline x1='12' y1='2' x2='12' y2='12'/%3E%3C/svg%3E");
    --ico-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='20 6 9 17 4 12'/%3E%3C/svg%3E");
    --ico-close: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cline x1='15' y1='9' x2='9' y2='15'/%3E%3Cline x1='9' y1='9' x2='15' y2='15'/%3E%3C/svg%3E");
    --ico-eye: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M1 12s4-8 11-8 11 8 11 8-4 8-11 8-11-8-11-8z'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E");
    --ico-link: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3Cpolyline points='15 3 21 3 21 9'/%3E%3Cline x1='10' y1='14' x2='21' y2='3'/%3E%3C/svg%3E");
    --ico-calendar: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='4' width='18' height='18' rx='2.5'/%3E%3Cline x1='16' y1='2' x2='16' y2='6'/%3E%3Cline x1='8' y1='2' x2='8' y2='6'/%3E%3Cline x1='3' y1='10' x2='21' y2='10'/%3E%3C/svg%3E");
    --ico-user: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
    --ico-logout: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 21H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h4'/%3E%3Cpolyline points='16 17 21 12 16 7'/%3E%3Cline x1='21' y1='12' x2='9' y2='12'/%3E%3C/svg%3E");
    --ico-inbox: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='22 12 16 12 14 15 10 15 8 12 2 12'/%3E%3Cpath d='M5.45 5.11L2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z'/%3E%3C/svg%3E");
    --ico-lock: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2.5'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");
    --ico-shield: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z'/%3E%3C/svg%3E");
    --ico-mobile: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='5' y='2' width='14' height='20' rx='2.5'/%3E%3Cline x1='12' y1='18' x2='12.01' y2='18'/%3E%3C/svg%3E");
    --ico-arrow-left: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cline x1='19' y1='12' x2='5' y2='12'/%3E%3Cpolyline points='12 19 5 12 12 5'/%3E%3C/svg%3E");
    --ico-user-check: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='9' cy='7' r='4'/%3E%3Cpolyline points='16 11 18 13 22 9'/%3E%3C/svg%3E");

    /* ---------- 数据指标 ---------- */
    --ico-wallet: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M21 12V7H5a2 2 0 0 1 0-4h14v4'/%3E%3Cpath d='M3 5v14a2 2 0 0 0 2 2h16v-5'/%3E%3Cpath d='M18 12a2 2 0 0 0 0 4h4v-4z'/%3E%3C/svg%3E");
    --ico-trend: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='23 6 13.5 15.5 8.5 10.5 1 18'/%3E%3Cpolyline points='17 6 23 6 23 12'/%3E%3C/svg%3E");
    --ico-activity: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='22 12 18 12 15 21 9 3 6 12 2 12'/%3E%3C/svg%3E");
    --ico-award: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='8' r='6'/%3E%3Cpolyline points='8.21 13.89 7 23 12 20 17 23 15.79 13.88'/%3E%3C/svg%3E");
    --ico-check-circle: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 11.08V12a10 10 0 1 1-5.93-9.14'/%3E%3Cpolyline points='22 4 12 14.01 9 11.01'/%3E%3C/svg%3E");
}

/* ---------------- 基础图标元素 ---------------- */
.ico {
    display: inline-block;
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    vertical-align: -3px;
    background-color: currentColor;
    -webkit-mask: var(--ico) center / contain no-repeat;
    mask: var(--ico) center / contain no-repeat;
}

.ico-dashboard { --ico: var(--ico-dashboard); }
.ico-members   { --ico: var(--ico-members); }
.ico-orders    { --ico: var(--ico-orders); }
.ico-price     { --ico: var(--ico-price); }
.ico-gateway   { --ico: var(--ico-gateway); }
.ico-message   { --ico: var(--ico-message); }
.ico-agent     { --ico: var(--ico-agent); }
.ico-settings  { --ico: var(--ico-settings); }
.ico-plus      { --ico: var(--ico-plus); }
.ico-search    { --ico: var(--ico-search); }
.ico-reset     { --ico: var(--ico-reset); }
.ico-save      { --ico: var(--ico-save); }
.ico-edit      { --ico: var(--ico-edit); }
.ico-trash     { --ico: var(--ico-trash); }
.ico-power     { --ico: var(--ico-power); }
.ico-check     { --ico: var(--ico-check); }
.ico-close     { --ico: var(--ico-close); }
.ico-eye       { --ico: var(--ico-eye); }
.ico-link      { --ico: var(--ico-link); }
.ico-calendar  { --ico: var(--ico-calendar); }
.ico-user      { --ico: var(--ico-user); }
.ico-logout    { --ico: var(--ico-logout); }
.ico-inbox     { --ico: var(--ico-inbox); }
.ico-lock      { --ico: var(--ico-lock); }
.ico-shield    { --ico: var(--ico-shield); }
.ico-mobile    { --ico: var(--ico-mobile); }
.ico-arrow-left { --ico: var(--ico-arrow-left); }
.ico-user-check { --ico: var(--ico-user-check); }
.ico-wallet    { --ico: var(--ico-wallet); }
.ico-trend     { --ico: var(--ico-trend); }
.ico-activity  { --ico: var(--ico-activity); }
.ico-award     { --ico: var(--ico-award); }
.ico-check-circle { --ico: var(--ico-check-circle); }

/* ---------------- 侧边栏 ---------------- */
.sidebar .brand .brand-mark {
    background: linear-gradient(135deg, #0fae99 0%, #066b60 100%);
    box-shadow: 0 4px 12px rgba(8, 127, 114, .34);
    letter-spacing: .02em;
}

.sidebar-nav a {
    position: relative;
    gap: 11px;
    font-weight: 500;
}

.sidebar-nav a .ico {
    width: 17px;
    height: 17px;
    opacity: .72;
    transition: opacity .16s ease, transform .16s ease;
}

.sidebar-nav a:hover .ico { opacity: 1; }
.sidebar-nav a.active .ico { opacity: 1; color: #6fe3d3; transform: scale(1.06); }
.sidebar-nav a.disabled .ico { opacity: .4; }

.sidebar-nav a.active::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    width: 3px;
    height: 22px;
    border-radius: 0 3px 3px 0;
    background: #3ec9b6;
    transform: translateY(-50%);
}

@media (max-width: 900px) {
    .sidebar-nav a.active::before { display: none; }
}

/* ---------------- 顶栏 ---------------- */
.topbar > div {
    position: relative;
    padding-left: 13px;
}

.topbar > div::before {
    content: "";
    position: absolute;
    top: 4px;
    left: 0;
    width: 4px;
    height: calc(100% - 8px);
    min-height: 30px;
    border-radius: 2px;
    background: var(--brand);
    opacity: .9;
}

.date-label,
.admin-user {
    display: inline-flex;
    align-items: center;
    gap: 6px;
}

.date-label .ico,
.admin-user .ico {
    width: 14px;
    height: 14px;
    vertical-align: 0;
    opacity: .65;
}

.admin-user {
    gap: 7px;
    padding: 0 11px;
    border-radius: 999px;
    box-shadow: 0 1px 2px rgba(20, 30, 46, .04);
}

.admin-user .ico {
    padding: 0;
    color: var(--brand);
    opacity: 1;
}

/* ---------------- 按钮 ---------------- */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    transition: color .15s ease, background-color .15s ease, border-color .15s ease, box-shadow .15s ease, transform .12s ease;
}

.btn:active { transform: translateY(1px); }
.btn .ico { width: 15px; height: 15px; vertical-align: 0; opacity: .95; }
.btn-sm .ico { width: 13px; height: 13px; }
.btn-light .ico { opacity: .7; }
.btn-light:hover .ico { opacity: 1; }

.modal-close {
    display: inline-grid;
    place-items: center;
    transition: color .15s ease, background-color .15s ease, transform .15s ease;
}

.modal-close:hover { transform: rotate(90deg); }

/* ---------------- 指标卡片 ---------------- */
.metric-card {
    position: relative;
    overflow: hidden;
    transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}

.metric-card::before {
    content: "";
    position: absolute;
    top: 16px;
    right: 16px;
    width: 38px;
    height: 38px;
    border-radius: 11px;
    background: #e6f4f1;
}

.metric-card::after {
    content: "";
    position: absolute;
    top: 27px;
    right: 27px;
    width: 16px;
    height: 16px;
    background-color: var(--brand);
    -webkit-mask: var(--card-ico, var(--ico-activity)) center / contain no-repeat;
    mask: var(--card-ico, var(--ico-activity)) center / contain no-repeat;
}

.metric-card:hover {
    transform: translateY(-2px);
    border-color: #c6ded8;
    box-shadow: 0 10px 24px rgba(20, 30, 46, .08);
}

.metric-card p { padding-right: 54px; }

.metric-grid > [class*="col-"]:nth-child(6n+1) .metric-card { --card-ico: var(--ico-members); }
.metric-grid > [class*="col-"]:nth-child(6n+2) .metric-card { --card-ico: var(--ico-agent); }
.metric-grid > [class*="col-"]:nth-child(6n+3) .metric-card { --card-ico: var(--ico-user); }
.metric-grid > [class*="col-"]:nth-child(6n+4) .metric-card { --card-ico: var(--ico-wallet); }
.metric-grid > [class*="col-"]:nth-child(6n+5) .metric-card { --card-ico: var(--ico-check-circle); }
.metric-grid > [class*="col-"]:nth-child(6n+6) .metric-card { --card-ico: var(--ico-close); }

/* ---------------- 面板标题 ---------------- */
.panel-heading h2 {
    position: relative;
    padding-left: 13px;
}

.panel-heading h2::before {
    content: "";
    position: absolute;
    top: 50%;
    left: 0;
    width: 4px;
    height: 15px;
    border-radius: 2px;
    background: var(--brand);
    opacity: .9;
    transform: translateY(-50%);
}

.admin-modal-head h2 { position: static; padding-left: 0; }
.admin-modal-head h2::before { display: none; }

/* ---------------- 表格 ---------------- */
.table tbody tr { transition: background-color .15s ease; }
.table thead th { text-transform: uppercase; }

.status-pill::before {
    content: "";
    width: 6px;
    height: 6px;
    margin-right: 6px;
    border-radius: 50%;
    background: currentColor;
    opacity: .85;
}

.empty-state::before {
    content: "";
    display: block;
    width: 42px;
    height: 42px;
    margin: 0 auto 12px;
    background-color: #b9c4d1;
    -webkit-mask: var(--ico-inbox) center / contain no-repeat;
    mask: var(--ico-inbox) center / contain no-repeat;
    opacity: .8;
}

.qr-link {
    display: inline-flex;
    align-items: center;
    gap: 5px;
}

.qr-link .ico { width: 13px; height: 13px; vertical-align: 0; }

/* ---------------- 支付配置页 ---------------- */
.gateway-grid input[type="file"].form-control {
    padding: 7px 12px;
    color: #52647f;
    font-size: .85rem;
}

.gateway-grid input[type="file"].form-control::file-selector-button {
    margin-right: 12px;
    padding: 5px 13px;
    border: 1px solid #dce5f1;
    border-radius: 4px;
    background: #f3f7fd;
    color: #29436f;
    font-weight: 600;
    font-size: .85rem;
    cursor: pointer;
    transition: background-color .15s ease, border-color .15s ease;
}

.gateway-grid input[type="file"].form-control::file-selector-button:hover {
    border-color: #b9cbe6;
    background: #e7eefb;
}

.gateway-field-help.is-ok { color: #16815a; font-weight: 600; }
.gateway-field-help.is-bad { color: #c0392b; font-weight: 600; }

/* ---------------- 表单细节 ---------------- */
.form-control::placeholder,
.form-select::placeholder { color: #a7b1bf; }

.form-control:focus,
.form-select:focus { transition: border-color .15s ease, box-shadow .15s ease; }

/* ---------------- 全局滚动条与选中 ---------------- */
::-webkit-scrollbar { width: 9px; height: 9px; }
::-webkit-scrollbar-track { background: #eef1f4; }
::-webkit-scrollbar-thumb { border: 2px solid #eef1f4; border-radius: 6px; background: #c3ccd7; }
::-webkit-scrollbar-thumb:hover { background: #a9b5c3; }

::selection { color: #fff; background: rgba(8, 127, 114, .85); }

/* ---------------- 登录页 ---------------- */
.login-intro .brand-mark {
    width: 46px;
    height: 46px;
    border: 0;
    border-radius: 11px;
    background: linear-gradient(135deg, #f0b53c 0%, #cf9224 100%);
    box-shadow: 0 8px 20px rgba(207, 146, 36, .3);
}

.login-card .form-group,
.login-card .form-stack { position: relative; }

.login-field-ico {
    position: absolute;
    top: 50%;
    left: 14px;
    z-index: 2;
    width: 16px;
    height: 16px;
    color: #98a4b3;
    transform: translateY(-50%);
    pointer-events: none;
}

.login-card .has-ico { padding-left: 40px; }
.login-card .btn-primary { display: inline-flex; align-items: center; justify-content: center; gap: 7px; }
