/* ── 艺道画室 · Apple + WordPress 融合设计系统 ── */
/*  Mobile-First · SF Pro · 卡片化 · 统一交互  */

:root {
    --primary: #0071e3;
    --primary-hover: #0077ED;
    --primary-light: #e8f4fd;
    --success: #34c759;
    --danger: #ff3b30;
    --warning: #ff9500;
    --bg: #f0f3f6;
    --card: #ffffff;
    --text: #1d1d1f;
    --text2: #646970;
    --text3: #aeaeb2;
    --border: #dcdcde;
    --border-light: #eef0f3;
    --sidebar-bg: #1d2327;
    --sidebar-hover: rgba(255,255,255,0.06);
    --sidebar-active: rgba(0,113,227,0.2);
    --radius-sm: 8px;
    --radius: 12px;
    --radius-lg: 8px;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.05);
    --shadow: 0 1px 8px rgba(15,30,60,0.06);
    --shadow-lg: 0 4px 24px rgba(0,0,0,0.1);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;

    /* ═══ 设计标准：字号 ═══ */
    --fs-xs: 11px;   /* 辅助说明 */
    --fs-sm: 12px;   /* 次要信息 */
    --fs-md: 13px;   /* 正文默认 */
    --fs-lg: 14px;   /* 强调 */
    --fs-xl: 16px;   /* 区块标题 */
    --fs-2xl: 20px;  /* 统计数字 */
    --fs-3xl: 24px;  /* 大数字 */

    /* ═══ 设计标准：语义色（深浅对） ═══ */
    --blue: #1e88e5;       --blue-light: #e3f2fd;    /* 合作方/信息 */
    --orange: #e65100;     --orange-light: #fff3e0;  /* 待办/警示 */
    --green: #2e7d32;      --green-light: #e8f5e9;   /* 成功/艺道 */
    --red: #c62828;        --red-light: #fce4ec;     /* 欠费/逾期 */
    --purple: #8e24aa;     --purple-light: #f3e5f5;  /* 统计/教职 */
    --teal: #00838f;       --teal-light: #e0f7fa;    /* 信息辅助 */
    --amber: #f57f17;      --amber-light: #fff8e1;   /* 年内累计 */
}
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
body {
    font-family: var(--font);
    background: var(--bg);
    color: var(--text);
    font-size: 15px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    padding-bottom: var(--safe-bottom);
}

/* ═══ MOBILE FIRST ═══ */

/* ── 手机顶栏 ── */
.mobile-topbar {
    display: flex; align-items: center; justify-content: space-between;
    background: var(--sidebar-bg);
    color: #fff;
    padding: 12px 18px;
    position: sticky; top: 0; z-index: 200;
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    backdrop-filter: saturate(180%) blur(20px);
}
.mobile-topbar .brand { font-size: 17px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.mobile-topbar .brand small { font-size: 11px; font-weight: 400; color: rgba(255,255,255,.5); margin-left: 2px; }
.hamburger {
    background: none; border: none; color: #fff; font-size: 24px; cursor: pointer;
    padding: 6px 8px; border-radius: 8px; line-height: 1;
}

/* ── 侧边栏（WordPress 风格深色） ── */
.sidebar {
    position: fixed; top: 0; left: -280px;
    width: 260px; height: 100vh;
    background: var(--sidebar-bg);
    color: #fff; z-index: 300;
    transition: left .28s cubic-bezier(.25,.1,.25,1);
    display: flex; flex-direction: column;
}
.sidebar.open { left: 0; }
.sidebar .close-btn {
    position: absolute; top: 12px; right: 12px;
    background: rgba(255,255,255,.1); border: none; color: #fff;
    width: 30px; height: 30px; border-radius: 50%;
    font-size: 14px; cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.sidebar .brand {
    padding: 20px 18px 10px; font-size: 18px; font-weight: 700;
    display: flex; align-items: center; gap: 8px;
    border-bottom: 1px solid rgba(255,255,255,.08);
}
.sidebar .brand small { font-size: 11px; font-weight: 400; color: rgba(255,255,255,.35); margin-left: 2px; }
.sidebar nav { flex: 1; overflow-y: auto; padding: 4px 0; }
/* 侧边栏滚动条（与深色侧边栏统一，不露白底） */
.sidebar nav::-webkit-scrollbar { width: 5px; }
.sidebar nav::-webkit-scrollbar-track { background: transparent; }
.sidebar nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); border-radius: 4px; }
.sidebar nav::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.32); }
.sidebar nav { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.25) transparent; }
.sidebar nav a, .sidebar .footer-link, .sidebar nav > a.nav-link { text-decoration: none !important; }
.sidebar-footer { border-top: 1px solid rgba(255,255,255,.08); padding: 4px 0; }

/* ── 手风琴导航（WordPress 风格） ── */
.nav-group { margin: 0; }
.nav-group-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 16px; cursor: pointer;
    font-size: 14px; font-weight: 400; color: rgba(255,255,255,.65);
    transition: color .12s, background .12s; border-left: 3px solid transparent;
    user-select: none; -webkit-user-select: none;
}
.nav-group-header:hover { background: var(--sidebar-hover); color: #fff; }
.nav-group-header span { text-decoration: none; }
.nav-group.expanded > .nav-group-header {
    color: #fff;
    background: rgba(255,255,255,.04);
}
.nav-group-header .arrow { font-size: 10px; transition: transform .2s ease; opacity: .5; display: inline-block; margin-right: 4px; }
.arrow i { font-size: 10px; }
.nav-group.expanded .nav-group-header .arrow { transform: rotate(90deg); opacity: .8; }
.nav-group-body {
    overflow: hidden; max-height: 0;
    transition: max-height .22s cubic-bezier(.4,0,.2,1);
    background: rgba(0,0,0,.1);
    will-change: max-height;
}
.nav-group.expanded .nav-group-body { max-height: 500px; }
.nav-group-body a {
    padding: 8px 16px 8px 42px !important;
    font-size: 13px !important;
    color: rgba(255,255,255,.5) !important;
    border-left: 3px solid transparent !important;
    text-decoration: none !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}
.nav-group-body a i { font-size: 14px; width: 18px; text-align: center; color: rgba(255,255,255,.4); }
.nav-group-body a.active i { color: #fff; }
.nav-group-body a:hover { background: var(--sidebar-hover); color: #fff !important; }
.nav-group-body a:hover i { color: #fff; }
.nav-group-body a.active {
    color: #fff !important;
    border-left-color: var(--primary) !important;
    background: var(--sidebar-active) !important;
}
.nav-icon { min-width: 20px; text-align: center; }

/* ── 侧边栏通用链接 ── */
.sidebar nav > a {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 16px; color: rgba(255,255,255,.65); text-decoration: none;
    font-size: 14px; transition: all .12s;
    border-left: 3px solid transparent;
}
.sidebar nav > a:hover { background: var(--sidebar-hover); color: #fff; }
.sidebar nav > a.active { color: #fff; border-left-color: var(--primary); background: var(--sidebar-active); }

.sidebar .footer-link {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 16px; color: rgba(255,255,255,.45); cursor: pointer;
    font-size: 13px; transition: .12s;
}
.sidebar .footer-link:hover { background: var(--sidebar-hover); color: #fff; }
.sidebar .footer-link i { width: 18px; text-align: center; color: rgba(255,255,255,.35); }
.sidebar .footer-link:hover i { color: #fff; }
/* ── 首页直链 ── */
.sidebar nav > a.nav-link {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 16px; color: rgba(255,255,255,.65); text-decoration: none;
    font-size: 14px; transition: all .12s;
    border-left: 3px solid transparent;
}
.sidebar nav > a.nav-link:hover { background: var(--sidebar-hover); color: #fff; }
.sidebar nav > a.nav-link i { font-size: 15px; width: 20px; text-align: center; color: rgba(255,255,255,.4); }
.sidebar nav > a.nav-link.active i { color: #fff; }
.sidebar nav > a.nav-link.active { color: #fff; border-left-color: var(--primary); background: var(--sidebar-active); }
.sidebar-overlay {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(0,0,0,.4); z-index: 299; display: none;
}
.sidebar-overlay.show { display: block; }

/* ── 内容区 ── */
.main {
    max-width: 960px;
    margin: 0 auto;
    padding: 12px 14px 40px;
    min-height: 100vh;
}

/* ── 页面标题 ── */
.page-header {
    display: flex; justify-content: space-between; align-items: flex-start;
    margin-bottom: 16px; flex-wrap: wrap; gap: 8px;
}
.page-header h2 { font-size: 20px; font-weight: 600; color: var(--text); }
.page-header .subtitle { font-size: 13px; color: var(--text2); margin-top: 1px; }

/* ── 统计卡片 ── */
.stats-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; margin-bottom: 16px; }
.stat-card {
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 14px 16px;
    border: 1px solid var(--border-light);
    border-left: 4px solid var(--primary);
    transition: transform .15s, box-shadow .15s;
}
.stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.stat-card .label { font-size: 12px; color: var(--text2); font-weight: 500; margin-bottom: 2px; }
.stat-card .value { font-size: 22px; font-weight: 700; letter-spacing: -.01em; }
.stat-card .value.blue { color: var(--primary); }
.stat-card .value.green { color: var(--success); }
.stat-card .value.orange { color: var(--warning); }
.stat-card .value.red { color: var(--danger); }
.stat-card .value.purple { color: #6a1b9a; }

/* ── 卡片 ── */
.card {
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 14px;
    overflow: hidden;
    border: 1px solid var(--border-light);
}
.card-header {
    padding: 12px 16px;
    font-weight: 600;
    font-size: 14px;
    border-bottom: 1px solid var(--border-light);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    color: var(--text);
    background: #fafafa;
}
.card-body { padding: 12px 16px; }
.card-body:empty { display: none; }
.card:empty { display: none; }

/* ── 表格（桌面端 WordPress 风格） ── */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
table thead { display: none; }
table tr {
    display: block;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border-light);
    transition: background .1s;
}
table tr:last-child { border-bottom: none; }
table tbody tr:hover { background: #f8f9fa; }
table td {
    display: flex; justify-content: space-between; align-items: center;
    padding: 4px 0; font-size: 13px;
}
table td:before {
    content: attr(data-label);
    font-weight: 500; color: var(--text2); font-size: 12px;
    flex-shrink: 0; margin-right: 10px;
}
table td.nolabel:before { display: none; }
table td:last-child { border-bottom: none; }
table td[colspan]:before { display: none; }
@media (min-width: 768px) {
    table thead { display: table-header-group; }
    table tr { display: table-row; padding: 0; }
    table tr:nth-child(even) { background: #fafafa; }
    table tbody tr:hover { background: #f0f6fc; }
    table td { display: table-cell; padding: 8px 12px; border-bottom: 1px solid var(--border-light); }
    table td:before { display: none; }
    table th {
        padding: 10px 12px; font-size: 12px; color: var(--text2); font-weight: 600;
        text-align: left; border-bottom: 2px solid var(--border);
        background: #f8f9fa;
        text-transform: uppercase; letter-spacing: .03em;
    }
}

/* ── 表单 ── */
.form-group { margin-bottom: 12px; }
.form-group label { display: block; font-size: 13px; font-weight: 500; color: var(--text2); margin-bottom: 4px; }
.form-control {
    display: block; width: 100%; padding: 9px 14px;
    border: 1px solid transparent; border-radius: var(--radius-sm);
    font-size: 14px; background: #eef1f4;
    transition: all .2s; -webkit-appearance: none; appearance: none;
    outline: none; font-family: var(--font);
}
.form-control:focus { background: #fff; border-color: #366de4; box-shadow: 0 0 0 3px rgba(54,109,228,.12); }
select.form-control {
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238a93a3' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center;
    padding-right: 32px; cursor: pointer;
}
textarea.form-control { resize: vertical; min-height: 80px; }

.form-row { display: flex; gap: 10px; flex-wrap: wrap; }
.form-row .form-group { flex: 1; min-width: 80px; }

/* ── 按钮 ── */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    padding: 8px 18px; border: none; border-radius: var(--radius-sm);
    font-size: 13px; font-weight: 500; cursor: pointer;
    transition: all .15s; text-decoration: none; white-space: nowrap;
    -webkit-appearance: none;
}
.btn:active { transform: scale(.97); }
.btn-block { width: 100%; justify-content: center; }
.btn-primary { background: #366de4; color: #fff; }
.btn-primary:hover { background: #2f5fd0; box-shadow: 0 2px 8px rgba(54,109,228,.3); }
.btn-success { background: var(--success); color: #fff; }
.btn-success:hover { box-shadow: 0 2px 8px rgba(52,199,89,.3); }
.btn-danger { background: var(--danger); color: #fff; }
.btn-danger:hover { box-shadow: 0 2px 8px rgba(255,59,48,.3); }
.btn-warning { background: var(--warning); color: #fff; }
.btn-warning:hover { box-shadow: 0 2px 8px rgba(255,149,0,.3); }
.btn-outline { background: #fff; border: 1px solid #d9dee4; color: #3a4350; }
.btn-outline:hover { background: #f5f7f9; border-color: #366de4; color: #366de4; }
.btn-info { background: #00bcd4; color: #fff; }
.btn-info:hover { box-shadow: 0 2px 8px rgba(0,188,212,.3); }
.btn-sm { padding: 5px 14px; font-size: 12px; }
.btn-xs { padding: 3px 10px; font-size: 11px; }

/* ── 图表 ── */
.chart-container { width: 100%; height: 220px; }

/* ── 空状态 ── */
.empty-state {
    text-align: center; padding: 40px 16px; color: var(--text2);
}
.empty-state .emoji { font-size: 48px; margin-bottom: 10px; }
.empty-state p { font-size: 14px; }

/* ── 徽章 ── */
.badge {
    display: inline-block; padding: 2px 8px; border-radius: 4px;
    font-size: 11px; font-weight: 500; background: var(--primary-light); color: var(--primary);
}

/* ── 弹窗 ── */
.modal-overlay {
    display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(0,0,0,.5); z-index: 500;
    align-items: center; justify-content: center; padding: 20px;
}
.modal-overlay.show { display: flex; }
.modal-box {
    background: #fff;
    border-radius: 16px; padding: 24px;
    max-width: 90%; width: 400px;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    max-height: 90vh; overflow-y: auto;
}
.modal-box h3 { font-size: 17px; font-weight: 700; margin-bottom: 16px; }

/* ── 明细表格（离校退费明细统一样式） ── */
.modal-detail-table { width: 100%; font-size: 13px; border-collapse: collapse; }
.modal-detail-table th { text-align: left; padding: 6px 10px; border-bottom: 1px solid var(--border-light); color: var(--text2); font-weight: 600; white-space: nowrap; }
.modal-detail-table th.num, .modal-detail-table td.num { text-align: right; }
.modal-detail-table td { padding: 6px 10px; border-bottom: 1px dashed var(--border-light); }
.modal-detail-table td.refund { color: var(--success); font-weight: 700; }
.detail-total { margin-top: 10px; padding: 8px 12px; background: var(--green-light); border-radius: 8px; font-weight: 700; font-size: 13px; }

/* ── 双栏 ── */
.two-col { display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 768px) { .two-col { grid-template-columns: 1fr 1fr; } }

/* ── 设置面板 ── */
.settings-tab {
    padding: 8px 16px; border: none; background: none; cursor: pointer;
    font-size: 14px; font-weight: 500; color: var(--text2);
    border-bottom: 2px solid transparent; transition: .15s;
}
.settings-tab.active { color: var(--primary); border-bottom-color: var(--primary); }
.settings-tab:hover { color: var(--text); }

/* ── 预设主题卡片 ── */
.theme-card {
    padding: 6px 12px; border-radius: 8px; cursor: pointer; font-size: 12px; font-weight: 500;
    border: 2px solid transparent; transition: .15s; text-align: center; min-width: 70px;
}
.theme-card:hover { transform: scale(1.05); border-color: var(--primary); }

/* ── 图标选择 ── */
.icon-opt { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 6px; border: 1px solid var(--border); font-size: 16px; transition: .1s; }
.icon-opt:hover { background: var(--primary-light); border-color: var(--primary); }
.icon-opt.selected { background: var(--primary); color: #fff; border-color: var(--primary); }
.nav-icon-item { display: flex; align-items: center; gap: 6px; padding: 3px 6px; border-radius: 4px; cursor: pointer; font-size: 12px; transition: .1s; }
.nav-icon-item:hover { background: #f0f0f0; }
.nav-icon-item.active { background: var(--primary-light); color: var(--primary); }

/* ── 设置面板标签 ── */
.settings-tab-content { display: none; }
#tab-basic { display: block; }

/* ── 色块选择 ── */
.color-swatch { width: 30px; height: 30px; border-radius: 6px; cursor: pointer; border: 2px solid #ddd; transition: .12s; }
.color-swatch:hover { transform: scale(1.12); }

/* ── 房间卡片 ── */
.room-slot { transition: all .15s ease; }
.room-slot:hover { transform: scale(1.04); box-shadow: 0 2px 10px rgba(0,0,0,.1); }
.floor-pill:hover { transform: scale(1.04); box-shadow: 0 2px 8px rgba(0,0,0,.1); }

/* ── 拖拽排序 ── */
.nav-drag-item {
    transition: all .25s cubic-bezier(.25,.1,.25,1) !important;
}
.nav-drag-item[draggable=true]:hover {
    border-left: 2px solid rgba(255,255,255,.15);
}
.nav-drag-item[draggable=true]:active {
    cursor: grabbing !important;
}
tr.drag-row {
    transition: transform .2s cubic-bezier(.25,.1,.25,1), opacity .2s, box-shadow .15s;
}
tr.drag-row:hover {
    background: rgba(0,113,227,.04);
}
tr.drag-row:active {
    cursor: grabbing !important;
}
/* 首页菜单一致性 */
.nav-drag-item[data-key="首页"] .nav-group-header {
    cursor: default !important;
}
.nav-drag-item[data-key="首页"] .nav-group-header:after {
    content: none !important;
}
.nav-drag-item[data-key="首页"] .nav-group-header.active-home {
    border-left-color: var(--primary);
}
/* 返回按钮在侧栏底部 */
.sidebar-footer #backBtn { display: flex !important; }
.flash-msg {
    padding: 10px 16px; border-radius: var(--radius-sm); margin-bottom: 12px;
    font-size: 13px; display: flex; align-items: center; gap: 8px;
}
.flash-msg.success { background: #edf7ed; color: #1e8a1e; border: 1px solid #b7e0b7; }
.flash-msg.danger { background: #fbe9e7; color: #c62828; border: 1px solid #f5c6cb; }
.flash-msg.warning { background: #fff8e1; color: #e65100; border: 1px solid #ffe082; }
.flash-msg.info { background: #e3f2fd; color: #1565c0; border: 1px solid #bbdefb; }

/* ── 桌面适配 ── */
@media (min-width: 768px) {
    body { padding-top: 0; }
    .mobile-topbar { display: none; }
    .sidebar { left: 0; }
    .main { margin-left: 280px; padding: 20px 24px 60px; max-width: none; }
    .sidebar-overlay { display: none !important; }
    .stats-row { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }
}

/* ── 快速工具 ── */
.quick-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 12px; margin: 16px 0 20px;
}
.quick-card {
    display: flex; align-items: center; gap: 14px;
    background: var(--card); border: 1px solid var(--border-light);
    border-radius: 14px; padding: 16px 18px;
    box-shadow: 0 1px 3px rgba(0,0,0,.05);
    transition: all .22s; text-decoration: none; cursor: pointer;
}
.quick-card:hover {
    transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,.1);
    border-color: var(--primary);
}
.qc-emoji {
    width: 46px; height: 46px; border-radius: 12px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px; color: var(--primary);
}
.qc-label { font-weight: 700; font-size: 15px; color: var(--text1); }
.qc-desc { font-size: 12px; color: var(--text2); margin-top: 3px; line-height: 1.4; }

/* ── 登录/注册页 ── */
body.auth-page .sidebar, body.auth-page .mobile-topbar { display: none; }
body.auth-page .main { margin-left: 0; padding: 0; max-width: 100%; }

/* ══════════════════════════════════════════════
   设计标准 · 工具类（全站统一使用）
   ══════════════════════════════════════════════ */
/* ── 字号：.f-xs / .f-sm / .f-md / .f-lg / .f-xl ── */
.f-xs { font-size: var(--fs-xs); }
.f-sm { font-size: var(--fs-sm); }
.f-md { font-size: var(--fs-md); }
.f-lg { font-size: var(--fs-lg); }
.f-xl { font-size: var(--fs-xl); }
.f-2xl { font-size: var(--fs-2xl); }

/* ── 语义色文字：.c-primary / .c-success / ... ── */
.c-primary { color: var(--primary); }
.c-success { color: var(--success); }
.c-danger { color: var(--danger); }
.c-warning { color: var(--warning); }
.c-blue { color: var(--blue); }
.c-orange { color: var(--orange); }
.c-green { color: var(--green); }
.c-red { color: var(--red); }
.c-purple { color: var(--purple); }
.c-teal { color: var(--teal); }
.c-text2 { color: var(--text2); }

/* ── 渐变统计卡（统一规格：圆角8 / 无边框 / 居中 / padding 14x10） ── */
.grad-card { margin: 0; border-radius: var(--radius-lg); border: none; box-shadow: var(--shadow); text-align: center; padding: 14px 10px; }
.grad-card .card-body { text-align: center; padding: 0; }
.grad-card .g-label { font-size: var(--fs-xs); }
.grad-card .g-value { font-size: var(--fs-2xl); font-weight: 700; line-height: 1.3; }
.grad-card .g-sub { font-size: 10px; opacity: .7; }
.grad-blue   { background: linear-gradient(135deg, var(--blue-light), #bbdefb); }
.grad-blue  .g-label, .grad-blue .g-value, .grad-blue .g-sub, .grad-blue .f-2xl, .grad-blue .f-sm { color: var(--blue); }
.grad-green  { background: linear-gradient(135deg, var(--green-light), #dcedc8); }
.grad-green  .g-label, .grad-green .g-value, .grad-green .g-sub, .grad-green .f-2xl, .grad-green .f-sm { color: var(--green); }
.grad-orange { background: linear-gradient(135deg, var(--orange-light), #ffecb3); }
.grad-orange  .g-label, .grad-orange .g-value, .grad-orange .g-sub, .grad-orange .f-2xl, .grad-orange .f-sm { color: var(--orange); }
.grad-red    { background: linear-gradient(135deg, var(--red-light), #f8bbd0); }
.grad-red  .g-label, .grad-red .g-value, .grad-red .g-sub, .grad-red .f-2xl, .grad-red .f-sm { color: var(--red); }
.grad-purple { background: linear-gradient(135deg, var(--purple-light), #e1bee7); }
.grad-purple  .g-label, .grad-purple .g-value, .grad-purple .g-sub, .grad-purple .f-2xl, .grad-purple .f-sm { color: var(--purple); }
.grad-teal   { background: linear-gradient(135deg, var(--teal-light), #b2ebf2); }
.grad-teal  .g-label, .grad-teal .g-value, .grad-teal .g-sub, .grad-teal .f-2xl, .grad-teal .f-sm { color: var(--teal); }
.grad-amber  { background: linear-gradient(135deg, var(--amber-light), #ffecb3); }
.grad-amber  .g-label, .grad-amber .g-value, .grad-amber .g-sub, .grad-amber .f-2xl, .grad-amber .f-sm { color: var(--amber); }

/* ── 彩色标签胶囊：.tag.tag-blue 等 ── */
.tag { display: inline-block; font-size: var(--fs-xs); padding: 1px 8px; border-radius: 10px; font-weight: 600; }
.tag-blue   { background: var(--blue-light);   color: var(--blue); }
.tag-green  { background: var(--green-light);  color: var(--green); }
.tag-orange { background: var(--orange-light); color: var(--orange); }
.tag-red    { background: var(--red-light);    color: var(--red); }
.tag-purple { background: var(--purple-light); color: var(--purple); }
.tag-teal   { background: var(--teal-light);   color: var(--teal); }
.tag-gray   { background: #f0f0f0;             color: #555; }

/* ── 组件统一规格 ── */
.page-header h2 { font-size: var(--fs-2xl); font-weight: 700; }
.card-header { font-size: var(--fs-lg); font-weight: 600; }
table th { font-size: var(--fs-sm); }
table td { font-size: var(--fs-md); }
.form-control { font-size: var(--fs-md); }
.btn { font-size: var(--fs-md); }

/* ── 打印 ── */
@media print { .sidebar, .mobile-topbar, .no-print { display: none !important; } .main { margin-left: 0; } }

/* 老师课量滑块（123 分段滑动） */
.tl-slider{position:relative;display:flex;width:108px;height:26px;background:#f0f2f5;border-radius:13px;overflow:hidden;flex-shrink:0;}
.tl-thumb{position:absolute;top:0;left:0;bottom:0;width:33.333%;display:flex;align-items:center;justify-content:center;transition:left .35s cubic-bezier(.22,.9,.35,1);}
.tl-thumb i{display:block;width:calc(100% - 6px);height:calc(100% - 6px);background:#0071e3;border-radius:11px;box-shadow:0 1px 4px rgba(0,113,227,.35);}
.tl-seg{position:relative;flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:#8a93a3;cursor:pointer;z-index:1;user-select:none;transition:color .25s;}
.tl-seg:hover{color:#0071e3;}
.tl-seg.tl-on{color:#fff;}

/* ── 上传组件（参考 上传.png：虚线框 + 蓝色上传按钮） ── */
input[type=file].form-control {
    background: #eef1f4; border: 1.5px dashed #b8c2cc; border-radius: 10px;
    padding: 10px 12px; cursor: pointer; color: #57606f; font-size: 13px;
    transition: all .2s;
}
input[type=file].form-control:hover { border-color: #366de4; background: #f0f5ff; }
input[type=file].form-control::file-selector-button {
    background: #366de4; color: #fff; border: none; border-radius: 8px;
    padding: 6px 14px; margin-right: 10px; font-size: 13px; font-weight: 500;
    cursor: pointer; transition: background .15s;
}
input[type=file].form-control::file-selector-button:hover { background: #2f5fd0; }

/* ── Tab 切换过渡动画（全站）：淡入 + 微缩放（Apple 风格） ── */
.yd-tab-fade { animation: ydTabFade .32s cubic-bezier(.25,.8,.35,1); }
@keyframes ydTabFade { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: scale(1); } }

/* ── 数据卡片交错入场（首页 ws-card / card） ── */
.stagger-card { opacity: 0; transform: translateY(16px); transition: opacity .7s cubic-bezier(.25,.8,.35,1), transform .7s cubic-bezier(.25,.8,.35,1); }
.stagger-card.in { opacity: 1; transform: none; }

/* ── 首页看板编辑模式 ── */
.dash-grip { display:none; position:absolute; left:8px; top:8px; font-size:14px; color:rgba(255,255,255,.8); cursor:grab; z-index:2; }
.dash-resize { display:none; position:absolute; right:6px; bottom:4px; font-size:14px; color:#366de4; cursor:nwse-resize; z-index:2; }
body.dash-editing .dash-grip { display:block; }
body.dash-editing .dash-resize { display:block; }
body.dash-editing .deep-card { outline:1.5px dashed rgba(54,109,228,.55); outline-offset:2px; }
body.dash-editing .dash-big-card { outline:1.5px dashed rgba(54,109,228,.55); outline-offset:2px; }
.dash-big-card { position: relative; width: 100%; justify-self: stretch; }
body.dash-editing .dash-top-item, body.dash-editing .dash-big-card { cursor:grab; }
.dash-big-card { position:relative; }
.dash-big-card[data-w="half"] { grid-column: span 2; }
.dash-big-card[data-w="full"] { grid-column: 1 / -1; }
#dashBigCards > .dash-big-card { flex: 1 1 270px; max-width: 100%; }
#dashBigCards > .dash-big-card[data-w="half"] { flex: 2 2 270px; }
#dashBigCards > .dash-big-card[data-w="full"] { flex: 3 3 100%; }
@media (max-width: 900px) { #dashBigCards > .dash-big-card[data-w="half"] { flex: 2 2 270px; } #dashBigCards > .dash-big-card[data-w="full"] { flex: 3 3 100%; } }

.dash-top-item { display: block; }

body.dash-editing .dash-del-btn { display: inline-block !important; }

/* 数字等宽（滚动/跳变不晃动） */
.dc-val { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* 拖拽：浮起卡 + 占位卡 */
.dash-dragging { box-shadow: 0 14px 34px rgba(15,30,60,.22); }
.dash-placeholder { background: rgba(54,109,228,.07); border: 1.5px dashed rgba(54,109,228,.35); border-radius: 12px; }


.dash-ghost { border-radius: 12px; overflow: hidden; transition: none !important; animation: none !important; }

/* 拖拽目标卡高亮（静态样式切换，无动画——微信内核不闪） */
.dash-target {
    outline: 2px solid #366de4 !important;
    outline-offset: -2px !important;
    box-shadow: 0 0 0 4px rgba(54, 109, 228, 0.15) !important;
    background: #e7eaee !important;
    border-radius: 12px;
}
/* 顶部小卡被覆盖：白底 + 深色文字（原深色渐变+白字，变白需同步改字色） */
#dashModuleGrid .dash-target {
    background: #ffffff !important;
}
#dashModuleGrid .dash-target .dc-icon,
#dashModuleGrid .dash-target .dc-val,
#dashModuleGrid .dash-target .dc-label {
    color: #1f2d4d !important;
}

/* 添加模块弹窗列表项 */
.dash-add-item:hover { background: #f0f4fb; }
.dash-add-item:active { background: #e6eef9; }

/* ── 首页看板卡片宽度 · 响应式自适应 ── */
@media (max-width: 640px) {
    #dashBigCards > .dash-big-card,
    #dashBigCards > .dash-big-card[data-w="half"],
    #dashBigCards > .dash-big-card[data-w="full"] {
        flex: 1 1 100% !important;
        width: 100% !important;
    }
    #dashModuleGrid { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (min-width: 641px) and (max-width: 960px) {
    #dashBigCards > .dash-big-card { flex: 1 1 calc(50% - 6px) !important; }
    #dashBigCards > .dash-big-card[data-w="half"],
    #dashBigCards > .dash-big-card[data-w="full"] {
        flex: 1 1 100% !important;
        width: 100% !important;
    }
}

/* ── 宽屏内容区自适应（限制最大宽度，大屏不拉满）── */
@media (min-width: 1500px) {
    main, .main {
        max-width: 1200px;
        margin-left: auto;
        margin-right: auto;
        padding-left: calc(280px + 24px);
        padding-right: 24px;
    }
}

/* 维修位置/房号 醒目标签 */
.loc-tag {
    background: #eef4ff;
    color: #1a56c9;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 6px;
    font-size: 12px;
    white-space: nowrap;
}

/* 报修难易程度选择器（卡片单选） */
.difficulty-picker { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.difficulty-picker label {
    display:block; cursor:pointer; text-align:center;
    border:1.5px solid #e3e8f0; border-radius:12px;
    padding:10px 6px 8px; background:#fff;
    transition:border-color .2s, background .2s, box-shadow .2s;
}
.difficulty-picker label:hover { border-color:#b9cdf2; }
.difficulty-picker input { position:absolute; opacity:0; pointer-events:none; }
.difficulty-picker .dl-name { font-size:14px; font-weight:700; color:#3a4a63; }
.difficulty-picker .dl-time { font-size:11px; color:#8a94a8; margin-top:2px; }
.difficulty-picker label.active { border-color:#366de4; background:#eef4ff; box-shadow:0 0 0 3px rgba(54,109,228,.12); }
.difficulty-picker label.active .dl-name { color:#1a56c9; }
.difficulty-picker label.active .dl-time { color:#5b7fc9; }
@media (max-width:480px){ .difficulty-picker { grid-template-columns:repeat(2,1fr); } }

/* ── 维修流程条（1报修→2分派→3维修→4完成）── */
.flow-bar{display:flex;align-items:center;gap:0;margin:8px 0 4px;flex-wrap:nowrap;overflow-x:auto;}
.flow-step{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text2);white-space:nowrap;}
.flow-step .dot{width:9px;height:9px;border-radius:50%;background:#cbd2dc;flex-shrink:0;}
.flow-step.done{color:#1a56c9;font-weight:600;}
.flow-step.done .dot{background:#1a56c9;}
.flow-step.current{color:#e37400;font-weight:700;font-size:13px;}
.flow-step.current .dot{width:11px;height:11px;background:#e37400;box-shadow:0 0 0 3px rgba(227,116,0,.18);}
.flow-step.cancel{color:var(--danger);font-weight:700;}
.flow-step.cancel .dot{background:var(--danger);}
.flow-line{flex:1;min-width:10px;height:2px;background:#e3e8f0;margin:0 5px;border-radius:1px;}
.flow-line.done{background:#1a56c9;}

/* 设置折叠组（侧边栏底部） */
.footer-group .footer-link { display:flex; align-items:center; justify-content:space-between; cursor:pointer; }
.footer-sub { padding:2px 0 6px; }
.footer-sub-link { display:flex; align-items:center; gap:8px; padding:7px 16px 7px 38px; color:rgba(255,255,255,.62);
    font-size:13px; text-decoration:none; transition:background .15s,color .15s; }
.footer-sub-link:hover { background:rgba(255,255,255,.07); color:#fff; }
.footer-sub-link.active { color:#fff; background:rgba(59,130,246,.18); }

/* 学员名册：手机端精简（保留姓名/画室班级/宿舍/档案） */
@media (max-width: 767px) {
    table td.col-hide-sm { display: none !important; }
    table td.col-name {
        font-size: 16px;
        background: #f0f6ff;
        margin: -4px -14px 4px;
        padding: 10px 14px;
        border-radius: 8px;
    }
}

/* 学员名册：手机卡片列表（替换表格） */
.roster-mobile { display: none; }
@media (max-width: 767px) {
    .roster-mobile { display: block; }
    .roster-desktop { display: none !important; }
    .rm-item { display: block; padding: 12px 16px; border-bottom: 1px solid var(--border-light);
        text-decoration: none; color: inherit; }
    .rm-item:active { background: #f0f6ff; }
    .rm-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .rm-name { font-size: 17px; font-weight: 700; color: #1f2937; }
    .rm-class { background: var(--blue-light); color: var(--blue); padding: 1px 8px;
        border-radius: 10px; font-size: 12px; font-weight: 600; }
    .rm-dorm { background: #eef4ff; color: #1a56c9; padding: 1px 8px; border-radius: 10px;
        font-size: 12px; font-weight: 600; }
    .rm-sub { display: flex; gap: 12px; margin-top: 4px; font-size: 12px; color: var(--text2); }
}

/* 宿舍：手机端卡片（待入住预订/待分配宿舍） */
.dorm-mobile-cards { display: none; }
@media (max-width: 767px) {
    .dorm-mobile-cards { display: block; }
    .dorm-desktop-table { display: none !important; }
    .dm-card { padding: 12px 16px; border-bottom: 1px solid var(--border-light); }
    .dm-card:last-child { border-bottom: none; }
    .dm-top { display: flex; align-items: center; gap: 8px; font-size: 16px; margin-bottom: 6px; }
    .dm-line { display: flex; font-size: 13px; padding: 2px 0; }
    .dm-line span { width: 70px; flex-shrink: 0; color: var(--text2); font-size: 12px; }
}

/* ═══ 全站手机端适配优化（覆盖所有页面） ═══ */
@media (max-width: 767px) {

    /* 1. 禁 hover 效果（手机无鼠标）——提升流畅度 */
    * { -webkit-tap-highlight-color: transparent; }
    .card:hover, table tbody tr:hover, .btn:hover, .stat-card:hover,
    .grad-card:hover, .dash-card:hover, .nav-item:hover, a:hover {
        transform: none !important;
        box-shadow: none !important;
    }

    /* 2. 动画降级（手机精简） */
    * {
        animation-duration: .1s !important;
        transition-duration: .1s !important;
    }

    /* 3. 弹窗手机全屏化（更易操作） */
    .modal-box { max-width: 100% !important; width: 100% !important;
        border-radius: 16px 16px 0 0 !important; margin: 0 !important;
        position: fixed; bottom: 0; left: 0; max-height: 92vh !important;
        overflow-y: auto; }
    .modal-overlay { align-items: flex-end !important; }

    /* 4. 按钮最小触控 40px */
    .btn, button { min-height: 36px; }
    .btn-xs { min-height: 32px; }

    /* 5. 表单输入优化 */
    input, select, textarea { font-size: 16px !important; } /* 防 iOS 缩放 */

    /* 6. 卡片间距紧凑 */
    .card { margin-bottom: 10px; }
    .card-header { padding: 10px 14px; }
    .card-body { padding: 10px 14px; }

    /* 7. 页头紧凑 */
    .page-header { padding: 10px 0 8px; }
    .page-header h2 { font-size: 20px; }

    /* 8. 表格横向滚动优化（保留完整信息） */
    .table-wrap { -webkit-overflow-scrolling: touch; }

    /* 9. 主内容区边距 */
    .main, .main-content { padding: 10px 12px 60px; }

    /* 10. 流程图/流程条紧凑 */
    .flow-step { min-width: 0; }
}

/* ═══ 手机端修复 2：兜底覆盖（不依赖模板改动） ═══ */
@media (max-width: 767px) {
    /* 大表 min-width 强制收缩（内联样式也用 !important 覆盖） */
    .table-wrap table, table { min-width: 0 !important; width: 100% !important; }
    /* 自定义弹窗容器（维修分派等 .modal 类）手机全屏化 */
    .modal { max-width: 100% !important; width: 100% !important;
        left: 0 !important; right: 0 !important; bottom: 0 !important; top: auto !important;
        border-radius: 16px 16px 0 0 !important; max-height: 92vh !important; margin: 0 !important; }
    .popup-box { max-width: 100% !important; width: 100% !important; }
    /* 固定两列网格手机改单列 */
    .grid-2, [class*="grid-cols-2"], div[style*="grid-template-columns:1fr 1fr"] {
        grid-template-columns: 1fr !important;
    }
    /* 无 wrap 操作条允许换行 */
    div[style*="flex"] { flex-wrap: wrap; }
    /* 平面图横向滚动优化 */
    svg, .floor-plan { max-width: 100%; height: auto; }
    .floor-plan-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* ═══ 手机端修复 3：排课日历横滑（保持完整功能） ═══ */
@media (max-width: 767px) {
    .cal-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .cal-wrap > div[style*="grid-template-columns"] { min-width: 720px; }
    .hol-cal, [id*="holCal"] { overflow-x: auto; }
}

/* 手机端提示条显示 */
@media (max-width: 767px) {
    .mobile-tip { display: block !important; }
}
/* 请假申请手机端单列 */
@media (max-width: 767px) {
    div[style*="grid-template-columns:2fr 1fr 1fr"],
    div[style*="2fr 1fr 1fr"] { grid-template-columns: 1fr !important; }
}

.hamburger { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }
.hamburger i { font-size: 20px; }

/* 快速安排弹窗：手机端居中显示（不贴底）+ 房间卡更紧凑 */
@media (max-width: 767px) {
    #quickAssignModal.modal-overlay { align-items: center; padding: 12px; }
    #quickAssignModal .modal-box {
        position: fixed; top: 8% !important; bottom: auto !important; left: 4% !important;
        width: 92% !important; max-width: 92% !important; max-height: 84vh !important;
        border-radius: 16px !important;
    }
    #quickAssignModal .modal-box > div:last-child { padding: 10px 12px; }
    #quickAssignModal #qaRoomList { max-height: 48vh !important; }
    #quickAssignModal #qaFloorTabs button { padding: 3px 10px !important; font-size: 11px !important; }
}

/* 房间卡网格：手机 4 列 / 桌面 8 列 */
.qa-room-grid { grid-template-columns: repeat(4, 1fr); }
@media (min-width: 768px) {
    .qa-room-grid { grid-template-columns: repeat(8, 1fr) !important; }
}
/* 房间卡内部：房间号和空位并排（省垂直空间） */
.qa-room-grid > div > div:first-child { display: inline; }
.qa-room-grid > div > div:nth-child(2) { display: inline; margin-left: 3px; }
.qa-room-grid > div > div:nth-child(3) { display: none; } /* 手机端隐藏进度条省空间 */
@media (min-width: 768px) {
    .qa-room-grid > div > div:nth-child(3) { display: block !important; }
}

/* 报销表单：分组标题 + 手机端单列大框 */
.rb-section-title {
    font-size: 13px; font-weight: 700; color: var(--primary);
    margin: 14px 0 8px; padding-left: 10px; border-left: 3px solid var(--primary);
}
@media (max-width: 767px) {
    #reimbForm .form-row .form-group { flex: 1 1 100% !important; min-width: 100% !important; }
    #reimbForm .form-control, #reimbForm select, #reimbForm textarea {
        min-height: 44px; font-size: 15px !important;
    }
    #reimbForm .btn { min-height: 44px; font-size: 15px; width: 48%; }
    #reimbForm .form-group:last-child .btn { width: 48%; }
}

/* ═══ 统计卡全局手机端统一（报销页样式推广） ═══ */
@media (max-width: 767px) {
    .stat-card {
        display: flex; align-items: center; justify-content: center; gap: 8px;
        background: #f0f6ff !important;
        border: 1px solid #d6e4ff !important;
        border-radius: 12px !important;
        padding: 10px 6px !important;
        box-shadow: none !important;
        flex-direction: row;
    }
    .stat-card .label { font-size: 12px !important; font-weight: 600; margin: 0 !important; }
    .stat-card .value { font-size: 24px !important; font-weight: 800; margin: 0 !important; }
    .stat-card a, .stat-card[onclick] { text-decoration: none; color: inherit; }
    /* 渐变卡同统一 */
    .grad-card {
        background: #f0f6ff !important;
        border: 1px solid #d6e4ff !important;
        border-radius: 12px !important;
    }
}

/* 统计卡容器：手机端自动多列（2列→3-4列） */
@media (max-width: 767px) {
    div[style*="repeat(auto-fill,minmax(140px,1fr))"],
    div[style*="repeat(auto-fit,minmax(140px,1fr))"],
    div[style*="repeat(auto-fill,minmax(150px,1fr))"],
    div[style*="repeat(auto-fit,minmax(150px,1fr))"] {
        grid-template-columns: repeat(4, 1fr) !important;
    }
    /* 统计卡 a 链接整体可点 */
    .stat-card a { display: flex; align-items: center; gap: 6px; justify-content: center; width: 100%; }
}

/* ═══ 手机端表格卡片：字体加大+行距拉宽（更好操作） ═══ */
@media (max-width: 767px) {
    table tr { padding: 14px 16px; }
    table td {
        font-size: 15px !important;
        padding: 8px 0 !important;
        min-height: 30px;
    }
    table td:before {
        font-size: 13px !important;
        margin-right: 12px;
    }
    table td strong { font-size: 16px; }
    table td .btn-xs, table td button.btn-xs {
        min-height: 34px; padding: 6px 12px; font-size: 13px;
    }
    table td small { font-size: 12px !important; }
}

/* ═══ 设计系统统一（ui-ux-pro-max + Anthropic 规范执行） ═══ */
:root {
    --radius-lg: 20px;          /* 修复：原 8px 错误，规范应为 20px */
    --radius-card: 14px;        /* 卡片标准圆角 */
    --radius-btn: 980px;        /* Apple 胶囊按钮 */
    --focus-ring: 0 0 0 3px rgba(0,113,227,0.15);  /* 焦点蓝光 */
    --card-border: 1px solid #eef0f3;
}

/* 卡片统一：圆角 14px + 细边框 + 轻阴影 */
.card {
    border-radius: var(--radius-card) !important;
    border: var(--card-border);
    box-shadow: var(--shadow-sm);
}
.card .card-header { border-radius: var(--radius-card) var(--radius-card) 0 0; }
.card .card-body { border-radius: 0 0 var(--radius-card) var(--radius-card); }

/* 按钮统一：胶囊 + hover 稳定 + active 微缩 */
.btn, button.btn {
    border-radius: var(--radius-btn);
    transition: background-color .15s, color .15s, box-shadow .15s, transform .1s;
}
.btn:active, button.btn:active { transform: scale(.97); }
.btn-xs { border-radius: var(--radius-btn); }

/* 表单焦点蓝光（Apple 规范） */
.form-control:focus, input:focus, select:focus, textarea:focus {
    outline: none;
    box-shadow: var(--focus-ring);
    border-color: var(--primary);
}

/* 所有可交互元素 cursor-pointer（Anthropic 规范） */
button, .btn, a, select, input[type="checkbox"], input[type="radio"],
[onclick], [role="button"], .clickable, tr[onclick] { cursor: pointer; }

/* 标题层级统一 */
h2 { font-size: 22px; font-weight: 700; letter-spacing: -0.02em; }
.page-header h2 { font-size: 22px; }

/* hover 统一：稳定颜色过渡（不位移） */
.btn-primary:hover { background: var(--primary-hover); }
a:hover { opacity: .85; }

/* ═══ Apple 排版精修（popular-web-designs apple.md 规范） ═══ */
body {
    letter-spacing: -0.2px;              /* Apple 负字距（正文 17px≈-0.374px 缩放） */
}
h1, h2, h3, .page-header h2 {
    letter-spacing: -0.3px;              /* 标题更紧 */
    line-height: 1.15;                   /* 标题紧凑行高 */
}
.card-header {
    letter-spacing: -0.15px;
    font-weight: 600;
}
/* 统计数字：大且紧（Apple 数字风格） */
.stat-card .value, .grad-card .f-2xl, .rb-stat div:first-child,
.dc-val, .f-2xl {
    letter-spacing: -0.5px;
    font-weight: 700;
    line-height: 1.1;
}
/* 卡片：去重边框（Apple 无边框哲学）——保留极浅分隔 */
.card {
    border-color: rgba(0,0,0,0.04) !important;
    box-shadow: 0 1px 8px rgba(0,0,0,0.04);
}
/* 间距：8px 基准节奏 */
.card { margin-bottom: 12px; }
.card-header { padding: 12px 16px; }
.card-body { padding: 12px 16px; }
/* 标签/徽章：紧凑圆角 */
.badge, [class*="badge"], span[style*="border-radius"] {
    letter-spacing: -0.1px;
}
/* 主色只用于交互（Apple 哲学）：按钮/链接/焦点 */
.btn-primary { background: var(--primary); border-color: var(--primary); }
a { color: #0066cc; }  /* Apple 链接蓝 */

/* ═══ 手机全屏菜单 + 底部 Tab ═══ */
.fm-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.fm-item {
    background: #fff; border-radius: 14px; padding: 12px 4px;
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    text-decoration: none; color: #1d1d1f; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.fm-ic {
    width: 40px; height: 40px; border-radius: 12px; background: #eef4ff; color: #0071e3;
    display: flex; align-items: center; justify-content: center; font-size: 16px;
}
.fm-lb { font-size: 11px; font-weight: 500; color: #3a3a3c; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 90%; }

.bottom-tab {
    display: none;
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 1500;
    background: rgba(255,255,255,0.92); backdrop-filter: saturate(180%) blur(20px);
    border-top: 1px solid #f0f2f6;
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom, 0px));
}
.bt-item {
    flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px;
    text-decoration: none; color: #86868b; font-size: 10px; padding: 4px 0;
}
.bt-item i { font-size: 18px; }
.bt-item.active { color: #0071e3; }
.bt-item.active i { color: #0071e3; }

@media (max-width: 767px) {
    .bottom-tab { display: flex; }
    body { padding-bottom: 64px; }
}
@media (min-width: 768px) {
    .bottom-tab { display: none !important; }
    #fullMenu { display: none !important; }
}

/* ═══ HarmonyOS Sans 字体（本地化，全字库 woff2） ═══ */
@font-face {
    font-family: 'HarmonyOS Sans';
    src: url('/static/fonts/HarmonyOS-SC-Regular.woff2') format('woff2');
    font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'HarmonyOS Sans';
    src: url('/static/fonts/HarmonyOS-SC-Medium.woff2') format('woff2');
    font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'HarmonyOS Sans';
    src: url('/static/fonts/HarmonyOS-SC-Bold.woff2') format('woff2');
    font-weight: 600 700; font-style: normal; font-display: swap;
}
:root { --font: 'HarmonyOS Sans', -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif; }

/* 数字等宽对齐（财务高级感） */
body, .stat-card .value, .cc-val, .rb-stat div, .dc-val, table td, .f-2xl {
    font-variant-numeric: tabular-nums;
}

/* ═══════════════════════════════════════════════
   ═ 全站手机端视觉重构（Apple 风格 · 高级感）
   ═ 功能不变 · 网页端不受影响
   ═══════════════════════════════════════════════ */
@media (max-width: 767px) {

    /* ── 页头：层级清晰 ── */
    .page-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 14px; }
    .page-header h2 { font-size: 20px; font-weight: 700; letter-spacing: -0.4px; line-height: 1.2; }
    .page-header .ph-sub, .page-header small, .page-header p { font-size: 12px; color: #86868b; margin-top: 2px; }
    .page-header .btn, .page-header a.btn { min-height: 36px; padding: 8px 14px; font-size: 13px; }

    /* ── 卡片：统一质感 ── */
    .card {
        border-radius: 16px !important;
        border: 1px solid rgba(0,0,0,0.05) !important;
        box-shadow: 0 2px 12px rgba(0,0,0,0.05) !important;
    }
    .card-header {
        font-size: 14px; font-weight: 600; padding: 13px 16px !important;
        background: linear-gradient(180deg, #fafbfc, #fff);
        border-bottom: 1px solid #f2f4f7 !important;
    }
    .card-header span { letter-spacing: -0.2px; }

    /* ── 表格卡片化：信息完整+呼吸感 ── */
    .table-wrap { margin: 0 !important; }
    table { width: 100% !important; min-width: 0 !important; }
    table tr {
        display: block; padding: 12px 14px !important;
        border-bottom: 1px solid #f4f5f7 !important;
        transition: background .15s;
    }
    table tr:active { background: #f7f9fc; }
    table td {
        display: flex; justify-content: space-between; align-items: center;
        font-size: 14px !important; padding: 6px 0 !important; gap: 16px;
        border: none !important; text-align: right !important;
    }
    table td:first-child { text-align: right !important; }
    table td:before {
        content: attr(data-label);
        font-size: 12px !important; color: #86868b; font-weight: 500;
        margin-right: auto; text-align: left; flex-shrink: 0;
    }
    table td[data-label=""]:before, table td.nolabel:before { content: none; }
    thead { display: none; }
    table td .btn, table td button { margin: 2px 0; }

    /* ── 按钮：胶囊+层级 ── */
    .btn { border-radius: 980px !important; font-weight: 500; }
    .btn-primary, .btn-success, .btn-danger, .btn-warning {
        box-shadow: 0 2px 8px rgba(0,113,227,0.25);
    }
    .btn-outline { border-color: #d8dce2 !important; color: #3a3a3c !important; background: #fff !important; }

    /* ── 表单：大触控+聚焦蓝光 ── */
    .form-group { margin-bottom: 14px; }
    .form-group label { font-size: 13px; font-weight: 600; color: #3a3a3c; margin-bottom: 6px; }
    .form-control, select.form-control, textarea.form-control {
        min-height: 44px !important; font-size: 15px !important;
        border-radius: 12px !important; border: 1px solid #e3e6ea !important;
        background: #fafbfc !important; padding: 10px 12px !important;
    }
    .form-control:focus, select:focus, textarea:focus {
        background: #fff !important; border-color: #0071e3 !important;
        box-shadow: 0 0 0 3px rgba(0,113,227,0.12) !important;
    }

    /* ── 弹窗：底部全屏+圆角 ── */
    .modal-overlay { align-items: flex-end !important; }
    .modal-box {
        max-width: 100% !important; width: 100% !important;
        border-radius: 20px 20px 0 0 !important;
        max-height: 90vh !important; overflow-y: auto;
        box-shadow: 0 -8px 40px rgba(0,0,0,0.15);
    }
    .modal-box .modal-header {
        position: sticky; top: 0; background: #fff; z-index: 5;
        border-bottom: 1px solid #f2f4f7; padding: 14px 16px;
        font-size: 15px; font-weight: 600;
    }
    .modal-box .modal-close, .modal-box button[onclick*="close"] {
        min-width: 32px; min-height: 32px; border-radius: 50% !important;
    }

    /* ── 标签/徽章：统一圆角语义色 ── */
    .badge, [class*="badge"] {
        border-radius: 8px !important; padding: 3px 8px !important;
        font-size: 11px !important; font-weight: 600 !important;
    }

    /* ── 折叠区块：计数+箭头 ── */
    .card-header[onclick] { display: flex; align-items: center; justify-content: space-between; }

    /* ── 空状态/加载 ── */
    .empty, p[style*="text-align:center"] {
        color: #aeaeb2 !important; font-size: 13px !important;
    }

    /* ── 搜索框 ── */
    input[type="search"], .search-input, input[placeholder*="搜索"], input[placeholder*="查"] {
        border-radius: 12px !important; min-height: 40px !important;
        background: #fff !important; border: 1px solid #e3e6ea !important;
    }

    /* ── 链接色 ── */
    a { color: #0071e3; text-decoration: none; }

    /* ── 桌面残留清理：grid 两列自动变单列 ── */
    div[style*="grid-template-columns:1fr 1fr"]:not(.fm-grid):not(.core-grid):not(.quick-grid):not(.qa-room-grid) {
        grid-template-columns: 1fr !important;
    }
}

/* ═══ 首页看板（Jinja 版，Apple 统一蓝色系） ═══ */
.home-wrap { max-width: 1200px; margin: 0 auto; padding: 16px 14px 40px; }
.home-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.home-header h1 { font-size: 24px; font-weight: 700; letter-spacing: -0.4px; line-height: 1.2; }
.hd-sub { font-size: 13px; color: #86868b; margin-top: 4px; letter-spacing: -0.2px; }
.hd-date { background: #f0f6ff; color: #0071e3; font-weight: 700; font-size: 15px; padding: 8px 14px; border-radius: 980px; }
.core-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
.core-card { background: #fff; border-radius: 16px; padding: 14px; box-shadow: 0 1px 8px rgba(0,0,0,0.05); cursor: pointer; transition: box-shadow .15s; }
.core-card:active { box-shadow: 0 2px 12px rgba(0,113,227,0.12); }
.cc-top { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.cc-icon { font-size: 12px; width: 26px; height: 26px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #0071e3; background: #eef4ff; }
.cc-label { font-size: 12px; color: #86868b; font-weight: 500; }
.cc-val { font-size: 28px; font-weight: 700; letter-spacing: -0.8px; line-height: 1.1; color: #1d1d1f; }
.cc-sub { font-size: 11px; color: #aeaeb2; margin-top: 4px; letter-spacing: -0.1px; }
.todo-strip { display: flex; gap: 8px; margin-bottom: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.todo-item { display: flex; align-items: center; gap: 6px; background: #fff; border: 1px solid #f0f2f6; border-radius: 12px; padding: 8px 12px; font-size: 12px; color: #3a3a3c; text-decoration: none; white-space: nowrap; }
.todo-dot { width: 6px; height: 6px; border-radius: 50%; background: #0071e3; flex-shrink: 0; }
.todo-item b { font-size: 14px; color: #0071e3; }
.quick-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 14px; }
.quick-item { background: #fff; border-radius: 14px; padding: 12px 6px; display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none; color: #1d1d1f; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.qi-icon { width: 38px; height: 38px; border-radius: 12px; background: #eef4ff; color: #0071e3; display: flex; align-items: center; justify-content: center; font-size: 16px; }
.qi-label { font-size: 12px; font-weight: 500; color: #3a3a3c; }
.panel { background: #fff; border-radius: 16px; padding: 14px 16px; margin-bottom: 12px; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.pn-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; letter-spacing: -0.2px; }
.bar-chart { display: flex; align-items: flex-end; gap: 6px; height: 110px; }
.bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; }
.bar { width: 60%; max-width: 26px; background: #0071e3; border-radius: 6px 6px 2px 2px; min-height: 4px; }
.bar-day { font-size: 10px; color: #aeaeb2; }
.tt-row { margin-bottom: 10px; }
.tt-head { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 4px; }
.tt-head b { font-weight: 600; }
.tt-bar { height: 8px; background: #f0f2f6; border-radius: 4px; overflow: hidden; }
.tt-fill { height: 100%; background: #0071e3; border-radius: 4px; }
@media (min-width: 768px) {
    .core-grid { grid-template-columns: repeat(4, 1fr); }
    .quick-grid { grid-template-columns: repeat(6, 1fr); }
    .home-wrap { padding: 24px 20px 60px; }
}

/* ═══════════════════════════════════════════════
   ═ 全站颜色收敛层（首页高级感标准：白底/浅蓝/单色点缀）
   ═══════════════════════════════════════════════ */
@media (max-width: 767px) {

    /* ── 统计卡全站统一：白底/浅蓝底 + 深色数字（收敛所有渐变变体） ── */
    .grad-card, .grad-blue, .grad-green, .grad-orange, .grad-red,
    .grad-purple, .grad-teal, .grad-amber, .stat-card, [class*="stat-"] {
        background: #ffffff !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        box-shadow: 0 2px 10px rgba(0,0,0,0.04) !important;
    }
    .grad-card .f-2xl, .grad-card div:first-child,
    .stat-card .value, [class*="stat-"] .value {
        color: #1d1d1f !important;
        font-weight: 700;
    }
    .grad-card .f-sm, .stat-card .label {
        color: #86868b !important;
        opacity: 1 !important;
    }

    /* ── 语义状态（保留但柔和：浅底+深字） ── */
    td span, td small {
        border-radius: 8px;
        padding: 2px 8px;
    }
    td span[style*="orange"], td small[style*="orange"],
    span[style*="warning"] { color: #b45309 !important; background: #fff7ed; }
    td span[style*="green"], td small[style*="green"],
    span[style*="success"] { color: #15803d !important; background: #f0fdf4; }
    td span[style*="red"], td small[style*="red"],
    span[style*="danger"] { color: #b91c1c !important; background: #fef2f2; }
    td span[style*="primary"], span[style*="blue"] { color: #0369a1 !important; background: #f0f9ff; }

    /* ── 标签/徽章：统一柔和 ── */
    .badge, [class*="badge"], [class*="tag"] {
        background: #f0f6ff !important;
        color: #0369a1 !important;
        border-radius: 8px !important;
        font-weight: 600 !important;
        padding: 3px 8px !important;
    }

    /* ── 内联彩色背景收敛（卡片/区块背景渐变化为纯白） ── */
    div[style*="linear-gradient"], div[style*="radial-gradient"] {
        background: #ffffff !important;
    }
}

/* ═══ 合作方卡手机端重排：3 列徽章网格 + 删除独立行 ═══ */
@media (max-width: 767px) {
    .partner-card .card-header { align-items: flex-start; }
    .partner-card .card-header > span:first-child {
        width: 100%; display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    }
    .partner-card .card-header > span:last-child {
        display: grid !important;
        grid-template-columns: repeat(3, 1fr);
        gap: 5px;
        width: 100%;
        margin-top: 4px;
    }
    .partner-card .card-header > span:last-child > span,
    .partner-card .card-header > span:last-child form {
        display: flex; align-items: center; justify-content: center;
        text-align: center; margin: 0 !important;
        padding: 5px 4px !important; border-radius: 10px;
        font-size: 11px !important; font-weight: 600;
    }
    .partner-card .card-header > span:last-child form { grid-column: 1 / -1; }
    .partner-card .card-header > span:last-child form .btn {
        width: 100%; min-height: 32px; font-size: 12px;
    }
    /* 徽章统一柔和色 */
    .partner-card .card-header > span:last-child > span {
        background: #f0f6ff !important; color: #0369a1 !important;
    }
}

/* ═══ 合作方页手机端：筛选横滑 + 按钮主次 ═══ */
@media (max-width: 767px) {
    /* 筛选条：横向滑动不换行 */
    .partner-filter-scroll {
        display: flex; gap: 6px; align-items: center;
        overflow-x: auto; -webkit-overflow-scrolling: touch;
        white-space: nowrap; padding-bottom: 4px;
    }
    .partner-filter-scroll button {
        flex-shrink: 0; white-space: nowrap;
    }
    /* 页头操作：主按钮全宽 + 次级按钮两列 */
    .ph-actions {
        display: grid; grid-template-columns: 1fr 1fr 1fr;
        gap: 6px; width: 100%;
    }
    .ph-actions .btn { margin: 0 !important; padding: 8px 4px; font-size: 12px; }
    .ph-actions .btn-del { color: var(--danger) !important; border-color: var(--danger) !important; }
    /* 统计卡标签：加图标样式（与首页一致） */
    .grad-card .f-sm { font-weight: 500; }
}

/* ═══ overview 统计卡（deep-card）手机端收敛：白卡黑字蓝图标 ═══ */
@media (max-width: 767px) {
    .deep-card {
        background: #ffffff !important;
        color: #1d1d1f !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        box-shadow: 0 2px 10px rgba(0,0,0,0.04) !important;
        outline: none !important;
    }
    .deep-card .dc-icon {
        color: #0071e3 !important; opacity: 1 !important;
        background: #eef4ff !important; border-radius: 10px !important;
        padding: 7px !important; right: 12px !important; top: 12px !important;
        font-size: 14px !important;
    }
    .deep-card .dc-val { color: #1d1d1f !important; font-size: 24px; }
    .deep-card .dc-label { color: #86868b !important; opacity: 1 !important; }
    .deep-card .dc-sub { color: #aeaeb2 !important; opacity: 1 !important; }
    .deep-card .dc-badge { color: #0071e3 !important; background: #eef4ff !important; border-radius: 8px; padding: 2px 8px; }
}

/* ═══ 收费表单手机端：块级布局（修复 X5 flex 顺序错乱） ═══ */
@media (max-width: 767px) {
    #feeForm { display: block !important; }
    #feeForm > div {
        flex-basis: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        margin-bottom: 12px;
    }
    /* ② 伙食住宿费警示框：柔和化（收敛黄色粗边框） */
    #feeForm div[style*="ffd54f"] {
        background: #f0f6ff !important;
        border: 1px solid #d6e4ff !important;
        border-radius: 12px !important;
    }
}

/* ═══ 收费表单重新设计：分步卡片（手机端） ═══ */
@media (max-width: 767px) {
    #feeForm .fee-step {
        background: #fff !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        padding: 14px !important;
        margin-bottom: 12px !important;
        box-shadow: 0 2px 8px rgba(0,0,0,0.04) !important;
        display: block !important;
    }
    #feeForm .fee-step-title {
        display: flex !important; align-items: center; gap: 8px;
        font-size: 14px !important; font-weight: 700 !important;
        color: #1d1d1f !important; width: 100% !important;
        margin-bottom: 10px !important; padding-bottom: 8px;
        border-bottom: 1px solid #f2f4f7;
    }
    #feeForm .fee-step-num {
        display: inline-flex !important; align-items: center; justify-content: center;
        width: 22px; height: 22px; border-radius: 50%;
        background: #0071e3 !important; color: #fff !important;
        font-size: 12px !important; font-style: normal !important; font-weight: 700 !important;
        flex-shrink: 0;
    }
    #feeForm .fee-step small { color: #86868b !important; font-size: 11px !important; font-weight: 400 !important; }
    #feeForm .fee-step .form-group { margin-bottom: 10px !important; }
    /* 字段 2 列网格 */
    #feeForm .fee-step > .form-group {
        width: 48% !important; display: inline-block !important; vertical-align: top;
        margin-right: 2% !important;
    }
    #feeForm .fee-step > .form-group:nth-child(even) { margin-right: 0 !important; }
    #feeForm .fee-step > .form-group:has(textarea),
    #feeForm .fee-step > div[style*="flex:0 0 100%"] { width: 100% !important; display: block !important; }
    /* 自动字段提示 */
    #feeForm label:has(+ input[readonly]), #feeForm label:has(+ select[disabled]) {
        color: #86868b !important;
    }
    /* 汇总数字（费用总计等） */
    #feeForm [id*="TotalShow"], #feeForm [id*="Show"] {
        font-size: 18px !important;
    }
    /* 操作按钮：固定底部 */
    #feeForm > div:last-child {
        position: fixed; bottom: 56px; left: 0; right: 0; z-index: 1400;
        background: rgba(255,255,255,0.95);
        backdrop-filter: saturate(180%) blur(16px);
        border-top: 1px solid #f0f2f6;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
        display: flex !important; gap: 8px;
        box-shadow: 0 -4px 16px rgba(0,0,0,0.06);
    }
    #feeForm > div:last-child .btn {
        flex: 1; margin: 0 !important; min-height: 44px;
    }
    /* 表单底部留白防遮挡 */
    #feeForm { padding-bottom: 90px !important; }
    /* 打包价说明弱化 */
    #feeForm small, #feeForm div[style*="font-size:11px"] { color: #86868b !important; }
}

/* ═══ 收费表单优化 2：警示框收敛 + 汇总突出 + 杂费折叠 ═══ */
@media (max-width: 767px) {
    /* 未来入学警告：柔和化 */
    #futureWarn {
        background: #fff8e1 !important;
        border: 1px solid #ffe9a8 !important;
        border-radius: 12px !important;
        color: #8a6d3b !important;
        font-weight: 500 !important;
    }
    /* 费用总计：大号突出 */
    #totalShow { font-size: 26px !important; color: #1d1d1f !important; font-weight: 800 !important; letter-spacing: -0.5px; }
    /* 已收/欠费 摘要 */
    #paidInput, #debtShow { font-weight: 600; }
    /* 杂费明细折叠按钮 */
    div[onclick*="toggleFeeDetail"], div[onclick*="杂费"] {
        background: #f0f6ff !important;
        border-radius: 10px !important;
        padding: 8px 10px !important;
        color: #0369a1 !important;
        font-weight: 600 !important;
        border: 1px solid #d6e4ff !important;
    }
    /* 步骤内提示文字弱化 */
    #feeForm .fee-step div[style*="font-size:11px"],
    #feeForm .fee-step div[style*="font-size:10px"] { color: #aeaeb2 !important; }
}

/* ═══ form-row 表单通用手机端修复：块级单列（收入/支出/报销等） ═══ */
@media (max-width: 767px) {
    form.form-row, .form-row {
        display: block !important;
    }
    form.form-row > .form-group, .form-row > .form-group {
        flex: 1 1 100% !important;
        min-width: 100% !important;
        width: 100% !important;
        max-width: 100% !important;
        margin-bottom: 12px !important;
    }
    /* 按钮组：两按钮并排 */
    form.form-row .form-group:last-child,
    .form-row .form-group:last-child {
        display: flex !important; gap: 8px;
    }
    form.form-row .form-group:last-child .btn,
    .form-row .form-group:last-child .btn { flex: 1; margin: 0 !important; min-height: 44px; }
    /* 表单内提示文字 */
    form.form-row small { color: #86868b !important; }
}

/* ═══ 内联渐变统计卡：数字/标签统一（收入/支出等页） ═══ */
@media (max-width: 767px) {
    div[style*="linear-gradient"] div[style*="font-size:20px"],
    div[style*="linear-gradient"] div[style*="font-size:22px"],
    div[style*="linear-gradient"] div[style*="font-size:24px"] {
        color: #1d1d1f !important;
    }
    div[style*="linear-gradient"] div[style*="font-size:11px"],
    div[style*="linear-gradient"] div[style*="font-size:12px"] {
        color: #86868b !important;
    }
}

/* 统计卡数字+图标 */
.sc-val-with-ic { display: flex; align-items: center; justify-content: center; gap: 8px; }
.sc-ic {
    font-size: 12px; width: 24px; height: 24px; border-radius: 8px;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
}
@media (max-width: 767px) {
    .sc-val-with-ic { justify-content: center; }
}


/* ═══ 支出/收入记录表：备注列精简（与付款方式/经办人/时间重复） ═══ */
@media (max-width: 767px) {
    table.hide-note td[data-label="备注"] { display: none !important; }
}

/* ═══ 应收明细卡手机端：block 布局（X5 稳定）+ 圆形勾选 ═══ */
@media (max-width: 767px) {
    table.ar-table tr {
        display: block !important;
        padding: 14px 14px 12px 42px !important;
        margin-bottom: 10px !important;
        background: #fff !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        box-shadow: 0 2px 10px rgba(0,0,0,0.04) !important;
        position: relative !important;
        transition: border-color .15s, background .15s, box-shadow .15s;
        cursor: pointer;
    }
    table.ar-table td {
        display: flex !important;
        width: 100% !important;
        box-sizing: border-box;
        justify-content: space-between;
        align-items: center;
        font-size: 14px !important;
        padding: 3px 0 !important;
        border: none !important;
        text-align: left;
    }
    table.ar-table td:before {
        font-size: 12px !important;
        color: #a0a4ab !important;
        margin-right: 10px !important;
        flex-shrink: 0;
        content: attr(data-label) !important;
    }
    /* ── 勾选框：大号圆形（iOS 风） ── */
    table.ar-table .ar-cb {
        position: absolute !important;
        left: 12px; top: 14px;
        -webkit-appearance: none; appearance: none;
        width: 22px; height: 22px; border-radius: 50%;
        border: 1.5px solid #cbd5e1; background: #fff;
        cursor: pointer; flex-shrink: 0; margin: 0 !important;
        z-index: 3;
    }
    table.ar-table .ar-cb:checked {
        background: #0071e3; border-color: #0071e3;
    }
    table.ar-table .ar-cb:checked::after {
        content: ''; position: absolute; left: 7px; top: 2px;
        width: 6px; height: 11px;
        border: solid #fff; border-width: 0 2px 2px 0;
        transform: rotate(45deg);
    }
    /* 选中卡片态 */
    table.ar-table tr.ar-selected {
        border-color: #0071e3 !important;
        background: #f5faff !important;
        box-shadow: 0 0 0 1px #0071e3, 0 4px 14px rgba(0,113,227,0.15) !important;
    }
    /* ── 学员名：大字+分隔线 ── */
    table.ar-table td[data-label*="学员"] {
        font-size: 18px !important; font-weight: 700; color: #1d1d1f;
        padding-bottom: 8px !important;
        border-bottom: 1px solid #f2f4f7 !important;
        margin-bottom: 2px !important;
    }
    table.ar-table td[data-label*="学员"] strong { font-size: 18px; }
    /* ── 合作方：右上标签 ── */
    table.ar-table td[data-label*="合作方"] {
        position: absolute !important;
        right: 10px; top: 14px;
        width: auto !important;
        background: #eef4ff !important; color: #0369a1 !important;
        border-radius: 8px !important; padding: 4px 12px !important;
        font-size: 12px !important; font-weight: 600;
    }
    table.ar-table td[data-label*="合作方"]:before { content: none !important; }
    /* ── 日期行 ── */
    table.ar-table td[data-label*="入学"],
    table.ar-table td[data-label*="计费截止"] {
        font-size: 13px !important; color: #6b7280;
        justify-content: flex-start; gap: 6px;
    }
    /* ── 金额：全宽卡 ── */
    table.ar-table td[data-label*="实际已收"],
    table.ar-table td[data-label*="当前欠费"] {
        flex-direction: row !important;
        justify-content: space-between !important;
        align-items: center !important;
        background: #f8fafc !important;
        border-radius: 12px !important;
        padding: 8px 12px !important;
        min-height: 42px;
        margin-top: 4px;
        width: calc(100% - 0px) !important;
    }
    table.ar-table td[data-label*="实际已收"]:before,
    table.ar-table td[data-label*="当前欠费"]:before { margin-right: 0 !important; }
    table.ar-table td[data-label*="实际已收"] { color: #6b7280 !important; font-weight: 700; font-size: 16px !important; }
    table.ar-table td[data-label*="当前欠费"] { color: var(--danger) !important; font-weight: 800; font-size: 20px !important; background: #fef2f2 !important; }
    /* ── 操作：右对齐 ── */
    table.ar-table td[data-label*="操作"] {
        justify-content: flex-end !important;
        padding-top: 8px !important;
    }
    table.ar-table td[data-label*="操作"]:before { content: none !important; }
    table.ar-table td[data-label*="操作"] .btn {
        min-height: 34px; padding: 6px 18px; font-size: 12px;
        border-radius: 980px !important;
    }
    /* ── 隐藏次要字段 ── */
    table.ar-table td[data-label*="培训结束"],
    table.ar-table td[data-label*="月数"],
    table.ar-table td[data-label*="实际应计"],
    table.ar-table td[data-label*="实际未收"],
    table.ar-table td[data-label*="年应计"] {
        display: none !important;
    }
    table.ar-table thead { display: none; }
    table.ar-table td:first-child { display: none !important; }
}
/* ═══ 应收明细手机端精简：隐藏可推导/次要字段 ═══ */
@media (max-width: 767px) {
    table.ar-table td[data-label*="培训结束"],
    table.ar-table td[data-label*="月数"],
    table.ar-table td[data-label*="实际应计"],
    table.ar-table td[data-label*="实际未收"],
    table.ar-table td[data-label*="年应计"] {
        display: none !important;
    }
    /* 保留字段重新网格：已收+当前欠费 金额行突出 */
    table.ar-table td[data-label*="实际已收"],
    table.ar-table td[data-label*="当前欠费"] {
        font-size: 14px !important;
        padding: 7px 0 !important;
    }
    table.ar-table td[data-label*="当前欠费"] {
        color: var(--danger) !important; font-weight: 800; font-size: 15px !important;
    }
    /* 合作方改标签样式（和学员同行右对齐） */
    table.ar-table td[data-label*="合作方"] {
        position: absolute !important; right: 12px; top: 10px;
        width: auto !important; max-width: 40% !important;
        justify-content: flex-end !important;
    }
    table.ar-table td[data-label*="合作方"]:before { content: none !important; }
    table.ar-table td[data-label*="合作方"] {
        background: #eef4ff !important; color: #0369a1 !important;
        border-radius: 8px !important; padding: 2px 8px !important;
        font-size: 11px !important;
    }
    /* 学员行 padding 给合作方标签留位 */
    table.ar-table td[data-label*="学员"] {
        padding-right: 45% !important;
    }
    /* 入学/计费截止 紧凑 */
    table.ar-table td[data-label*="入学"],
    table.ar-table td[data-label*="计费截止"] {
        font-size: 12px !important;
    }
    table.ar-table tr { padding-top: 14px !important; }
}

/* ═══ 应收明细·手机专属卡片（全新模板，桌面表格不动） ═══ */
.ar-mobile-list { display: none; }
@media (max-width: 767px) {
    .ar-mobile-list { display: block; padding: 2px 0 12px; }
    #arTable, .table-wrap:has(#arTable) { display: none !important; }
    .ar-mc {
        position: relative;
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        padding: 14px; margin-bottom: 10px;
        box-shadow: 0 1px 6px rgba(0,0,0,0.04);
        transition: border-color .15s, box-shadow .15s;
    }
    .ar-mc.ar-selected {
        border-color: #0071e3;
        box-shadow: 0 0 0 1px #0071e3, 0 3px 10px rgba(0,113,227,0.12);
    }
    /* 勾选：小巧 20px 圆点 */
    .ar-mc .ar-cb {
        position: absolute; left: 10px; top: 12px; z-index: 2;
        -webkit-appearance: none; appearance: none;
        width: 20px; height: 20px; border-radius: 50%;
        border: 1.5px solid #cbd5e1; background: #fff; cursor: pointer; margin: 0;
    }
    .ar-mc .ar-cb:checked {
        background: #0071e3; border-color: #0071e3;
    }
    .ar-mc .ar-cb:checked::after {
        content: ''; position: absolute; left: 6px; top: 2px;
        width: 5px; height: 10px;
        border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
    }
    .ar-mc-check-done {
        position: absolute; left: 10px; top: 12px;
        width: 20px; height: 20px; border-radius: 50%;
        background: #eef2f6; border: 1.5px solid #d8dee6;
    }
    /* 标题行 */
    .ar-mc-top { display: flex; align-items: center; padding-left: 30px; margin-bottom: 6px; }
    .ar-mc-name { font-size: 17px; font-weight: 700; color: #1d1d1f; flex: 1; }
    .ar-mc-partner {
        background: #eef4ff; color: #0369a1;
        border-radius: 8px; padding: 3px 10px;
        font-size: 11px; font-weight: 600;
    }
    /* 日期行 */
    .ar-mc-meta { font-size: 12px; color: #9ca3af; padding-left: 30px; margin-bottom: 8px; }
    /* 金额行 */
    .ar-mc-amt {
        display: flex; justify-content: space-between; align-items: center;
        background: #f8fafc; border-radius: 10px;
        padding: 7px 12px; margin-top: 5px;
        font-size: 13px; color: #6b7280;
    }
    .ar-mc-amt b { font-size: 15px; font-weight: 700; }
    .ar-mc-debt { background: #fef2f2; }
    .ar-mc-debt b { color: var(--danger); font-size: 17px; font-weight: 800; }
    /* 操作 */
    .ar-mc-op { display: flex; justify-content: flex-end; padding-top: 9px; }
    .ar-mc-btn {
        background: #0071e3; color: #fff; text-decoration: none;
        border-radius: 980px; padding: 6px 18px; font-size: 13px; font-weight: 600;
    }
    .ar-mc-btn:active { opacity: .8; }
    .ar-mc-done { color: #16a34a; font-size: 12px; font-weight: 600; }
}

/* ═══ 应收卡片微调 2：已结清降噪+按压反馈+金额色微调 ═══ */
@media (max-width: 767px) {
    /* 按压反馈 */
    .ar-mc:active { transform: scale(0.985); }
    /* 已结清：整卡浅灰降噪（不用逐张细看） */
    .ar-mc:has(.ar-mc-done) {
        background: #fafbfc;
        box-shadow: none;
    }
    .ar-mc:has(.ar-mc-done) .ar-mc-name { color: #9ca3af; }
    .ar-mc:has(.ar-mc-done) .ar-mc-amt { background: #f2f4f6; }
    .ar-mc:has(.ar-mc-done) .ar-mc-amt b { color: #9ca3af; }
    .ar-mc-done {
        color: #16a34a !important;
        background: #f0fdf4; border-radius: 8px;
        padding: 4px 12px; font-size: 12px;
    }
    /* 欠费金额更高对比 */
    .ar-mc-debt b { letter-spacing: -0.3px; }
    /* 日期行加分隔点装饰 */
    .ar-mc-meta { letter-spacing: -0.1px; }
    /* 收费按钮宽度稳定 */
    .ar-mc-btn { min-width: 76px; text-align: center; }
}

/* ═══ 应收手机端：工具栏重排 + 卡片计数条 ═══ */
@media (max-width: 767px) {
    /* 搜索框全宽 */
    #arSearch { width: 100% !important; min-height: 38px; font-size: 14px !important; padding: 8px 12px !important; border-radius: 10px !important; }
    /* 工具栏：搜索一行 + 操作一行 */
    .card-header:has(#arSearch) { display: block !important; }
    .card-header:has(#arSearch) > span:last-child {
        display: flex !important; gap: 8px; margin-top: 8px;
    }
    .card-header:has(#arSearch) > span:last-child label {
        flex: 1; justify-content: center;
        border: 1px solid #d6e4ff; border-radius: 10px;
        padding: 8px 0; font-size: 13px !important; background: #f5faff;
    }
    .card-header:has(#arSearch) > span:last-child .btn {
        flex: 1; margin: 0 !important; min-height: 38px;
    }
    /* 全选 checkbox 也放大 */
    #selectAllAR { width: 18px; height: 18px; }
    /* 计数条 */
    .ar-count-bar {
        display: none; align-items: center; justify-content: space-between;
        background: #0071e3; color: #fff;
        border-radius: 12px; padding: 9px 14px;
        margin-bottom: 10px; font-size: 13px; font-weight: 600;
        position: sticky; top: 0; z-index: 100;
    }
    .ar-count-bar.show { display: flex; }
    .ar-count-bar .ar-clear {
        background: rgba(255,255,255,0.2); border: none; color: #fff;
        border-radius: 8px; padding: 4px 12px; font-size: 12px;
    }
    /* 已选卡片计数 */
    .ar-mc.selected-count { }
}

/* 逾期标签 */
.ar-mc-overdue {
    background: #fef2f2 !important; color: #dc2626 !important;
    border-radius: 6px; padding: 1px 6px;
    font-size: 10px; font-weight: 700; margin-left: 6px;
}

/* ═══ 应收统计卡：统一白卡深数字（唯一红=欠费） ═══ */
.ar-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px; margin-bottom: 14px;
}
.ar-stat {
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 12px; text-align: center;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.as-label { font-size: 11px; color: #86868b; margin-bottom: 6px; letter-spacing: -0.1px; }
.as-val { font-size: 19px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
.as-sub { font-size: 10px; color: #aeaeb2; margin-top: 4px; }
.ar-stat.as-focus { border-color: #fecaca; background: #fff; }
.ar-stat.as-focus .as-label { color: #b91c1c; }
.ar-stat.as-focus .as-val { color: #dc2626; }
@media (min-width: 768px) {
    .ar-stats { grid-template-columns: repeat(5, 1fr); }
}
@media (max-width: 767px) {
    .ar-stats { grid-template-columns: repeat(2, 1fr); }
    .as-val { font-size: 18px; }
}

/* ═══ 应收：Tab 横滑 + 操作按钮 2 列 ═══ */
@media (max-width: 767px) {
    .ar-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; white-space: nowrap; }
    .ar-tabs .card-body { flex-wrap: nowrap !important; display: inline-flex !important; }
    .ar-tabs .ar-tab { flex-shrink: 0 !important; white-space: nowrap; }
    .ar-actions { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px !important; width: 100%; }
    .ar-actions a { margin: 0 !important; min-height: 40px; display: flex; align-items: center; justify-content: center; }
}

/* 合作方标签可点击样式 */
.ar-mc-partner { cursor: pointer; transition: opacity .15s; }
.ar-mc-partner:active { opacity: .6; }
/* 空状态 */
.ar-empty {
    text-align: center; color: #9ca3af;
    padding: 40px 0; font-size: 13px;
    background: #fff; border-radius: 14px;
    border: 1px dashed #e5e7eb; margin-bottom: 10px;
}

/* ═══ 催费提醒页统一：Tab 蓝色系 + 横滑 ═══ */
@media (max-width: 767px) {
    .fee-tab {
        background: #f5f7fa !important; color: #4b5563 !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 980px !important;
        padding: 8px 16px !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        white-space: nowrap;
    }
    .fee-tab.active {
        background: #0071e3 !important; color: #fff !important;
        border-color: #0071e3 !important;
        box-shadow: 0 2px 8px rgba(0,113,227,0.25);
    }
    div:has(> .fee-tab) {
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
        white-space: nowrap;
        display: flex !important;
        flex-wrap: nowrap !important;
        gap: 6px !important;
        padding-bottom: 4px;
    }
    div:has(> .fee-tab) button { flex-shrink: 0 !important; }
    /* 卡片标题统一 */
    .card-header[style*="danger"], .card-header[style*="color:var(--danger)"] {
        color: #1d1d1f !important;
        font-weight: 700 !important;
        font-size: 15px !important;
    }
}

/* ═══ 催费提醒：手机专属卡片（应收同款） ═══ */
.rm-cards { display: none; }
@media (max-width: 767px) {
    .rm-cards { display: block; padding: 2px 0 12px; }
    /* 隐藏表格 */
    .rm-cards + .table-wrap { display: none; }
    #tab-overdue .table-wrap, #tab-upcoming .table-wrap,
    #tab-monthly .table-wrap, #tab-nodedl .table-wrap,
    #tab-new .table-wrap { display: none; }
    /* 催费卡无勾选：正常左内边距 */
    .rm-mc { padding-left: 14px !important; }
    .rm-mc .monthly-checkbox {
        position: absolute; left: 12px; top: 14px; z-index: 2;
        width: 20px; height: 20px; border-radius: 50%;
        -webkit-appearance: none; appearance: none;
        border: 1.5px solid #cbd5e1; background: #fff; cursor: pointer; margin: 0;
    }
    .rm-mc .monthly-checkbox:checked {
        background: #0071e3; border-color: #0071e3;
    }
    .rm-mc .monthly-checkbox:checked::after {
        content: ''; position: absolute; left: 6px; top: 2px;
        width: 5px; height: 10px;
        border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
    }
    /* 有 checkbox 的卡重新留位 */
    .rm-mc.has-cb { padding-left: 42px !important; }
}

/* ═══ 催费页：monthly 工具栏手机端重排 ═══ */
@media (max-width: 767px) {
    .monthly-tools { display: grid !important; grid-template-columns: 1fr 1fr; gap: 6px !important; width: 100%; }
    .monthly-tools select { width: 100% !important; min-height: 36px; font-size: 13px !important; padding: 4px 8px !important; }
    .monthly-tools label { width: 100%; justify-content: flex-start; }
    .monthly-tools .btn { grid-column: 1 / -1; margin: 0 !important; min-height: 38px; }
    .monthly-tools #selectAllMonthly { width: 18px; height: 18px; }
    /* 催费弹窗手机端 */
    #notifyModal .modal-dialog, #notifyModal [class*="modal-"] { width: 94% !important; }
    #notifyMsg { min-height: 140px !important; font-size: 14px !important; }
}

/* ═══ 未设截止工具栏手机端：大控件重排 ═══ */
@media (max-width: 767px) {
    #tab-nodedl .card-header > span:last-child {
        display: grid !important;
        grid-template-columns: 1fr 1fr;
        gap: 6px !important;
        width: 100%;
    }
    #tab-nodedl .card-header > span:last-child label {
        grid-column: 1 / -1;
        justify-content: center;
        border: 1px solid #e5e7eb; border-radius: 10px;
        padding: 8px 0; background: #fafbfc; font-size: 13px !important;
    }
    #tab-nodedl #batchDeadline {
        width: 100% !important;
        min-height: 38px; font-size: 13px !important;
        padding: 6px 10px !important;
        border-radius: 10px !important;
    }
    #tab-nodedl .btn {
        margin: 0 !important; min-height: 38px;
    }
    #tab-nodedl #selectAllNoDl { width: 18px; height: 18px; }
    /* 单卡点击设置：内联日期框加大 */
    .rm-mc .deadline-span input {
        width: 150px !important; min-height: 34px; font-size: 13px !important;
        border-radius: 8px !important; border: 1px solid #d6e4ff !important;
    }
}

/* ═══ 通用日历选择器 ═══ */
.yd-cal-mask {
    position: fixed; inset: 0; z-index: 3000;
    background: rgba(0,0,0,0.4);
    display: flex; align-items: flex-end; justify-content: center;
}
.yd-cal {
    background: #fff; border-radius: 18px 18px 0 0;
    width: 100%; max-width: 420px;
    padding: 14px 16px calc(18px + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -8px 30px rgba(0,0,0,0.15);
}
.yd-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.yd-cal-title { font-size: 16px; font-weight: 700; }
.yd-cal-nav {
    width: 34px; height: 34px; border-radius: 50%; border: none;
    background: #f0f2f6; font-size: 18px; color: #1d1d1f;
}
.yd-cal-close { border: none; background: none; font-size: 14px; color: #86868b; padding: 6px; }
.yd-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; text-align: center; }
.yd-cal-grid > span { padding: 8px 0; font-size: 12px; color: #86868b; }
.yd-cal-day {
    color: #1d1d1f !important; font-size: 14px !important;
    border-radius: 10px; cursor: pointer;
}
.yd-cal-day:active { background: #0071e3; color: #fff !important; }
.yd-cal-today { background: #eef4ff; color: #0071e3 !important; font-weight: 700; }
@media (min-width: 768px) {
    .yd-cal-mask { align-items: center; }
    .yd-cal { border-radius: 18px; width: 340px; }
}

/* 日期选择 div 触发器（X5 兼容：div 点击 100% 触发） */
.dl-picker {
    display: flex; align-items: center; justify-content: space-between;
    width: 100% !important; min-height: 38px;
    background: #fff; border: 1px solid #d6e4ff; border-radius: 10px;
    padding: 6px 12px; font-size: 13px; color: #1d1d1f;
    cursor: pointer; box-sizing: border-box;
}
.dl-picker:active { background: #f0f6ff; }
.dl-picker-text { color: #9ca3af; }
.dl-picker .dl-has-val { color: #1d1d1f; }
.dl-picker-inline {
    display: inline-block; min-width: 140px;
    background: #fff; border: 1px solid #d6e4ff; border-radius: 8px;
    padding: 6px 12px; font-size: 13px; color: #1d1d1f;
    cursor: pointer;
}
.dl-picker-inline:active { background: #f0f6ff; }

.yd-cal-selected {
    background: #0071e3 !important; color: #fff !important; font-weight: 700;
    box-shadow: 0 2px 8px rgba(0,113,227,0.35);
}

/* ═══ 催费页全选按钮化 + 卡片整卡勾选态 ═══ */
@media (max-width: 767px) {
    /* 全选：整行浅灰按钮 + iOS 圆钮 */
    .monthly-tools label,
    #tab-nodedl .card-header > span:last-child label {
        display: flex !important;
        align-items: center; justify-content: center; gap: 8px;
        background: #f5f7fa !important;
        border: 1px solid #e5e7eb !important;
        border-radius: 10px !important;
        padding: 8px 0 !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        color: #4b5563 !important;
        cursor: pointer;
    }
    /* iOS 圆形全选框 */
    .monthly-tools #selectAllMonthly,
    #tab-nodedl #selectAllNoDl,
    #tab-new selectAllNew {
        -webkit-appearance: none; appearance: none;
        width: 20px; height: 20px; border-radius: 50%;
        border: 1.5px solid #cbd5e1; background: #fff;
        cursor: pointer; margin: 0 !important; flex-shrink: 0;
    }
    .monthly-tools #selectAllMonthly:checked,
    #tab-nodedl #selectAllNoDl:checked {
        background: #0071e3; border-color: #0071e3;
    }
    .monthly-tools #selectAllMonthly:checked::after,
    #tab-nodedl #selectAllNoDl:checked::after {
        content: ''; position: absolute; left: 6px; top: 2px;
        width: 5px; height: 10px;
        border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
    }
    /* 全选点击后卡片选中态（与应收一致） */
    .ar-mc.ar-selected {
        border-color: #0071e3 !important;
        background: #f5faff !important;
        box-shadow: 0 0 0 1px #0071e3, 0 3px 10px rgba(0,113,227,0.12) !important;
    }
    /* 全选按钮的 checkbox 圆钮需要 position relative 才能显示对勾 */
    .monthly-tools #selectAllMonthly,
    #tab-nodedl #selectAllNoDl { position: relative; }
}

/* ═══ 月摊卡：进度条 + 月欠分级 ═══ */
.ar-mc-progress {
    display: flex; align-items: center; gap: 8px;
    margin-top: 6px;
}
.arp-bar {
    flex: 1; height: 6px; background: #f0f2f6; border-radius: 3px; overflow: hidden;
}
.arp-fill {
    height: 100%; background: #0071e3; border-radius: 3px;
    transition: width .3s;
}
.arp-label { font-size: 10px; color: #9ca3af; white-space: nowrap; }
/* 月欠分级 */
.ar-mc-debt.debt-big { background: #fee2e2 !important; }
.ar-mc-debt.debt-big b { color: #b91c1c !important; font-size: 19px !important; }
.ar-mc-debt.debt-mid { background: #ffedd5 !important; }
.ar-mc-debt.debt-mid b { color: #c2410c !important; }

/* ═══ 收入管理：手机专属卡片 ═══ */
.inc-mobile-list { display: none; }
@media (max-width: 767px) {
    .inc-mobile-list { display: block; padding: 2px 0 12px; }
    .inc-mobile-list + .table-wrap, .inc-mobile-list + div .table-wrap { display: none; }
    .inc-mc { padding: 14px !important; }
    .inc-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
    .inc-amt { font-size: 22px; font-weight: 800; color: #16a34a; letter-spacing: -0.5px; }
    .inc-cat {
        background: #eef4ff; color: #0369a1;
        border-radius: 8px; padding: 3px 10px;
        font-size: 12px; font-weight: 600;
    }
    .inc-meta { font-size: 12px; color: #9ca3af; }
    .inc-remark {
        font-size: 12px; color: #6b7280;
        background: #f8fafc; border-radius: 8px;
        padding: 6px 10px; margin-top: 6px;
        overflow: hidden; text-overflow: ellipsis;
        display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    }
    .inc-op { display: flex; justify-content: flex-end; padding-top: 8px; }
    .inc-tag {
        background: #f0f2f6; color: #86868b;
        border-radius: 8px; padding: 4px 12px; font-size: 12px;
    }
    .inc-del {
        background: none; border: 1px solid #fecaca; color: #dc2626;
        border-radius: 980px; padding: 5px 16px; font-size: 12px;
    }
}

@media (max-width: 767px) {
    .inc-table-wrap { display: none !important; }
}

/* ═══ 收入管理全新设计：统计卡 2×2 + 表单卡片化 ═══ */
.inc-stats {
    display: block !important;
    margin-bottom: 14px;
    font-size: 0;
}
.inc-stat {
    display: inline-block !important;
    vertical-align: top;
    box-sizing: border-box;
    width: calc(50% - 5px) !important;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    font-size: 14px;
    margin-bottom: 10px;
}
.inc-stat:nth-child(odd) { margin-right: 10px !important; }
.inc-stat:nth-child(even) { margin-right: 0 !important; }
.is-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.is-ic {
    font-size: 12px; width: 26px; height: 26px; border-radius: 8px;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
}
.is-head span { font-size: 12px; color: #86868b; font-weight: 500; }
.is-val { font-size: 24px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.8px; }
@media (min-width: 768px) {
    .inc-stat { width: calc(25% - 8px) !important; }
    .inc-stat:nth-child(odd) { margin-right: 10px !important; }
    .inc-stat:nth-child(even) { margin-right: 10px !important; }
    .inc-stat:nth-child(4n) { margin-right: 0 !important; }
}
/* 表单手机端：字段卡片化 */
@media (max-width: 767px) {
    #incomeForm .form-group, form.form-row[action*="add_transaction"] .form-group {
        background: #f8fafc !important;
        border-radius: 12px !important;
        padding: 10px 12px !important;
        margin-bottom: 10px !important;
    }
    #incomeForm label, form.form-row[action*="add_transaction"] label {
        font-size: 13px !important; font-weight: 600 !important;
        color: #4b5563 !important; margin-bottom: 6px;
    }
    #incomeForm .form-control, form.form-row[action*="add_transaction"] .form-control {
        min-height: 42px !important; font-size: 15px !important;
        border-radius: 10px !important;
    }
    /* 提交按钮全宽 */
    #incomeForm .form-group:last-child, form.form-row[action*="add_transaction"] .form-group:last-child {
        background: none !important; padding: 4px 0 !important;
    }
    #incomeForm .form-group:last-child .btn, form.form-row[action*="add_transaction"] .form-group:last-child .btn {
        min-height: 46px !important; font-size: 15px !important;
        border-radius: 980px !important; width: 100%;
    }
}

.pm-badge {
    background: #f0f6ff; color: #0369a1;
    border-radius: 6px; padding: 2px 8px;
    font-size: 11px; font-weight: 600; white-space: nowrap;
}

/* ═══ 付款方式分布 ═══ */
.inc-panel {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; margin-bottom: 14px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ip-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; color: #1d1d1f; }
.pm-row { margin-bottom: 10px; }
.pm-head { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 4px; }
.pm-name { font-weight: 600; color: #3a3a3c; }
.pm-num { font-size: 12px; color: #86868b; }
.pm-bar { height: 8px; background: #f0f2f6; border-radius: 4px; overflow: hidden; }
.pm-fill { height: 100%; background: #0071e3; border-radius: 4px; }

/* ═══ 收入科目筛选条（手机横滑） ═══ */
.inc-cat-scroll {
    display: none;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    white-space: nowrap; padding-bottom: 6px; margin-bottom: 8px;
    gap: 6px;
}
.icc-btn {
    display: inline-block;
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 6px 14px;
    font-size: 12px; white-space: nowrap; margin-right: 6px;
}
.icc-btn.active {
    background: #0071e3; color: #fff; border-color: #0071e3;
    box-shadow: 0 2px 8px rgba(0,113,227,0.25);
}
@media (max-width: 767px) { .inc-cat-scroll { display: block; } }
/* 分布选中态 */
.pm-row { cursor: pointer; }
.pm-row.pm-active .pm-name { color: #0071e3; }
.pm-row.pm-active .pm-fill { background: #0a84ff; }

/* ═══ 付款方式胶囊 + 日期分组 + 空状态 ═══ */
.pm-picker { display: flex; flex-wrap: wrap; gap: 6px; }
.pm-opt {
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 7px 14px;
    font-size: 13px; cursor: pointer;
}
.pm-opt.active {
    background: #0071e3; color: #fff; border-color: #0071e3;
    box-shadow: 0 2px 8px rgba(0,113,227,0.25);
}
/* 日期分组头 */
.inc-date-head {
    display: flex; align-items: center; gap: 8px;
    font-size: 13px; font-weight: 700; color: #6b7280;
    padding: 10px 2px 6px;
}
.inc-date-head:first-child { padding-top: 0; }
.inc-date-head::after {
    content: ''; flex: 1; height: 1px; background: #f0f2f6;
}
.inc-date-cnt { font-size: 11px; color: #9ca3af; font-weight: 400; }
/* 空状态 */
.inc-empty {
    text-align: center; color: #9ca3af;
    padding: 40px 0; font-size: 13px;
    background: #fff; border-radius: 14px;
    border: 1px dashed #e5e7eb; margin: 10px 0;
}

/* ═══ 收入页视觉细节精修 ═══ */
.inc-stat { padding: 16px 14px; }
.is-val { font-size: 26px; }
.is-head { margin-bottom: 10px; }
.is-head span { font-size: 13px; }
.inc-panel { padding: 16px; }
.ip-title { font-size: 15px; margin-bottom: 14px; }
.pm-row { margin-bottom: 12px; }
.pm-head { font-size: 14px; margin-bottom: 5px; }
.pm-num { font-size: 13px; }
@media (max-width: 767px) {
    /* 表单卡片化细节 */
    form.form-row[action*="add_transaction"] .form-group {
        padding: 12px 14px !important;
        margin-bottom: 12px !important;
    }
    form.form-row[action*="add_transaction"] label {
        font-size: 14px !important;
        margin-bottom: 8px;
    }
    form.form-row[action*="add_transaction"] .form-control {
        min-height: 44px !important;
        font-size: 15px !important;
    }
    /* 记录卡细节 */
    .inc-amt { font-size: 24px; }
    .inc-meta { font-size: 13px; margin-top: 2px; }
    .inc-mc { padding: 16px !important; margin-bottom: 12px; }
    /* 日期分组头 */
    .inc-date-head { font-size: 14px; padding: 12px 2px 8px; }
}

/* ═══ 科目弹窗新排版 ═══ */
.cat-modal {
    background: #fff; border-radius: 18px;
    width: 92%; max-width: 380px;
    max-height: 82vh; overflow-y: auto;
    padding: 18px 16px 14px;
    box-shadow: 0 12px 40px rgba(0,0,0,0.15);
}
.cm-head {
    font-size: 16px; font-weight: 700; color: #1d1d1f;
    display: flex; align-items: center; justify-content: space-between;
    padding-bottom: 12px; border-bottom: 1px solid #f0f2f6;
    margin-bottom: 6px;
}
.cm-count { font-size: 12px; color: #9ca3af; font-weight: 400; }
.cm-list { max-height: 52vh; overflow-y: auto; }
.cm-item {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 4px; border-bottom: 1px solid #f7f8fa;
}
.cm-name { font-size: 14px; color: #1d1d1f; font-weight: 500; flex: 1; }
.cm-name.cm-off { color: #b0b4bb; text-decoration: line-through; }
.cm-off-tag {
    font-style: normal; font-size: 10px; color: #b91c1c;
    background: #fef2f2; border-radius: 6px; padding: 1px 6px;
    margin-left: 6px; text-decoration: none;
}
.cm-fix {
    font-size: 11px; padding: 2px 8px; border-radius: 6px;
    background: #f5f0ff; color: #7c3aed; cursor: pointer; flex-shrink: 0;
}
.cm-ops { display: flex; gap: 6px; flex-shrink: 0; }
.cm-btn {
    border: none; border-radius: 980px; padding: 5px 12px;
    font-size: 12px; cursor: pointer;
}
.cm-blue { background: #0071e3; color: #fff; }
.cm-grey { background: #f0f2f6; color: #6b7280; }
.cm-del { background: none; color: #dc2626; }
.cm-empty { text-align: center; color: #9ca3af; padding: 24px 0; font-size: 13px; }
.cm-add {
    display: flex; gap: 8px; margin-top: 12px;
    padding-top: 12px; border-top: 1px solid #f0f2f6;
}
.cm-add .form-control { min-height: 40px; font-size: 14px; border-radius: 10px; }
.cm-add-btn { min-height: 40px; border-radius: 980px; padding: 0 18px; flex-shrink: 0; }
.cm-foot { text-align: center; margin-top: 10px; }
.cm-done {
    border: none; background: #f0f6ff; color: #0071e3;
    border-radius: 980px; padding: 8px 32px; font-size: 13px; font-weight: 600;
}

/* ═══ 科目弹窗：手机端底部滑出面板 ═══ */
@media (max-width: 767px) {
      }
    @keyframes cm-slide {
        from { transform: translateY(40px); opacity: .6; }
        to { transform: translateY(0); opacity: 1; }
    }
    .cm-list { max-height: 48vh !important; }

.cm-list { max-height: 44vh !important; overflow-y: auto; }
.cm-add { position: sticky; bottom: 0; background: #fff; z-index: 5; }

.cm-add { position: static !important; padding: 4px 0 12px; border-bottom: 1px solid #f0f2f6; }

/* ═══ 新增收入折叠 + 快捷金额 ═══ */
.inc-form-fold { background: #fff; border: 1px solid #eef1f5; border-radius: 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.iff-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px; font-size: 15px; font-weight: 600; color: #1d1d1f;
    cursor: pointer; user-select: none;
}
.iff-arrow { width: 8px; height: 8px; border-right: 2px solid #9ca3af; border-bottom: 2px solid #9ca3af; transform: rotate(45deg); transition: transform .15s; margin-right: 4px; }
.iff-head.open .iff-arrow { transform: rotate(-135deg); }
.iff-body { padding: 0 16px 16px; border-top: 1px solid #f0f2f6; }
.amt-quick { display: flex; gap: 6px; margin-top: 8px; }
.aq-btn {
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 6px 14px; font-size: 13px; cursor: pointer;
}
.aq-btn:active { background: #0071e3; color: #fff; }

.inc-remark { cursor: pointer; }
.inc-remark:not(.open) { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.inc-remark.open { white-space: normal; }
.inc-more {
    text-align: center; padding: 14px; margin: 8px 0 16px;
    background: #f5f7fa; border-radius: 12px;
    color: #0071e3; font-size: 14px; font-weight: 500; cursor: pointer;
}
.inc-more:active { background: #e8f0fb; }

/* 今日收入摘要 */
.inc-today {
    display: flex; align-items: center; justify-content: space-between;
    background: linear-gradient(135deg, #0071e3, #0a84ff);
    border-radius: 16px; padding: 14px 16px; margin-bottom: 12px;
    color: #fff;
}
.it-label { font-size: 12px; opacity: .85; display: block; margin-bottom: 2px; }
.it-val { font-size: 26px; font-weight: 700; letter-spacing: -0.5px; }
.it-r { text-align: right; }
.it-cnt { font-size: 15px; font-weight: 600; display: block; }
.it-date { font-size: 12px; opacity: .8; }
/* 日期快捷 */
.date-quick { display: flex; gap: 6px; margin-top: 8px; }
.dq-btn {
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 6px 16px; font-size: 13px; cursor: pointer;
}
.dq-btn.dq-on { background: #0071e3; color: #fff; border-color: #0071e3; }

/* 筛选结果合计条 */
.inc-total {
    background: #eef4ff; color: #0071e3;
    border-radius: 10px; padding: 10px 14px;
    font-size: 14px; font-weight: 600;
    margin: 10px 0; text-align: center;
}

/* 本月收支结余条 */
.inc-balance {
    display: flex; align-items: stretch;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 12px 0; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ib-item { flex: 1; text-align: center; }
.ib-mid { border-left: 1px solid #f0f2f6; border-right: 1px solid #f0f2f6; }
.ib-label { display: block; font-size: 11px; color: #86868b; margin-bottom: 4px; }
.ib-num { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.ib-out { color: #6b7280; }
.ib-pos { color: #059669; }
.ib-neg { color: #dc2626; }
.ib-avg { color: #0071e3; }
.ib-refund { font-style: normal; font-size: 9px; color: #dc2626; margin-left: 2px; font-weight: 400; }

/* 支出页收支结余条 */
.exp-balance {
    display: flex; align-items: stretch;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 12px 0; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.eb-item { flex: 1; text-align: center; }
.eb-mid { border-left: 1px solid #f0f2f6; border-right: 1px solid #f0f2f6; }
.eb-label { display: block; font-size: 11px; color: #86868b; margin-bottom: 4px; }
.eb-num { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.eb-inc { color: #0071e3; }
.eb-out { color: #6b7280; }
.eb-pos { color: #059669; }
.eb-neg { color: #dc2626; }
.eb-refund { font-style: normal; font-size: 9px; color: #dc2626; margin-left: 2px; font-weight: 400; }

/* 支出页统计卡（白卡规范） */
.exp-stats { display: block; margin-bottom: 14px; font-size: 0; }
.exp-stat {
    display: inline-block; vertical-align: top;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; width: calc(50% - 10px); margin: 4px 5px; box-sizing: border-box;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.es-head { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; font-size: 12px; color: #86868b; }
.es-ic { width: 22px; height: 22px; background: #eef4ff; color: #0071e3; border-radius: 7px; display: flex; align-items: center; justify-content: center; font-size: 11px; }
.es-val { font-size: 22px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
@media (min-width: 768px) { .exp-stat { width: calc(25% - 10px); } }

/* 支出页手机卡片 */
.exp-mobile-list { display: none; }
@media (max-width: 767px) {
    .exp-mobile-list { display: block; }
}
.exp-amt { font-size: 22px; font-weight: 700; color: #dc2626; letter-spacing: -0.3px; }
.exp-mc { padding: 14px 16px !important; margin-bottom: 12px !important; }

@media (max-width: 767px) { .exp-main-wrap { display: none; } }

/* 折叠面板（成本结构+预算） */
.fold-panel { background: #fff; border: 1px solid #eef1f5; border-radius: 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.fp-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px; font-size: 15px; font-weight: 600; color: #1d1d1f;
    cursor: pointer; user-select: none;
}
.fp-body { padding: 0 16px 14px; border-top: 1px solid #f0f2f6; }

/* 报表页分析面板 */
.rp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.rp-card { margin: 0; }
@media (max-width: 767px) { .rp-grid { grid-template-columns: 1fr; } }

.exp-today { background: linear-gradient(135deg, #5856d6, #7c6cf0); }

/* 待支付报销 */
.pp-head .iff-arrow { margin-left: 6px; }
.pp-head.open .iff-arrow { transform: rotate(-135deg); }
.pp-body .table-wrap { max-height: 320px; overflow-y: auto; }

/* ═══ /* ═══ /* ═══ /* ═══ 科目弹窗 ✕ 关闭 */
.cm-head .cm-x {
    margin-left: auto; cursor: pointer; color: #86868b;
    font-size: 15px; padding: 4px 6px; border-radius: 8px;
}
.cm-head .cm-x:active { background: #f0f2f6; }

/* 弹窗隐藏（!important 全覆盖，X5 必生效） */
.cat-hidden { display: none !important; visibility: hidden !important; pointer-events: none !important; }

/* ═══ 考勤/通用快捷入口卡片美化（图标底+纯文字） ═══ */
.qc-emoji { background: #eef4ff; color: #0071e3; }
.qc-label { color: #1d1d1f; }
.quick-card { box-shadow: 0 1px 4px rgba(0,0,0,.05); }

/* 学员档案搜索条 */
.roster-search { display: flex; gap: 8px; margin-bottom: 12px; }
.roster-search .form-control { flex: 1; font-size: 15px; padding: 10px 14px; border-radius: 12px; }
.roster-search .btn { padding: 10px 22px; border-radius: 12px; font-size: 15px; white-space: nowrap; }
@media (max-width: 767px) {
    .roster-search .btn { padding: 10px 16px; }
}

/* 学员档案手机卡片 v2 */
.rm-name { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.rm-gender { font-size: 11px; color: #8b8b93; }
.rm-class { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 10px; }
.rm-dorm { background: #f5f5f7; color: #1d1d1f; font-size: 11px; font-weight: 500; padding: 1px 8px; border-radius: 10px; }
.rm-tag { font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 10px; }
.rm-tag-green { background: #e8f7ee; color: #16a34a; }
.rm-tag-blue { background: #eef4ff; color: #0071e3; }
.rm-tag-red { background: #fdecec; color: #dc2626; }
.rm-tag-gray { background: #f5f5f5; color: #8b8b93; }
.rm-partner { font-size: 12px; color: #8b8b93; }
.rm-item { padding: 14px 16px; }
.rm-sub { gap: 8px; margin-top: 6px; }

/* 学员档案分页 */
.roster-pager { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 12px; }
.pg-btn { font-size: 13px; color: #0071e3; text-decoration: none; padding: 6px 16px; border: 1px solid #d9e4f5; border-radius: 980px; }
.pg-btn:active { background: #eef4ff; }
.pg-disabled { opacity: .35; pointer-events: none; }
.pg-info { font-size: 13px; color: #6e6e73; }

/* 学员卡片化（圆角白卡+间距） */
@media (max-width: 767px) {
    .roster-mobile { padding: 10px 12px; display: grid; gap: 10px; }
    .rm-item {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        padding: 14px 16px; box-shadow: 0 1px 5px rgba(0,0,0,.04);
    }
}

/* 统计卡被 a 包裹时：文字色继承（防链接蓝） */
.exp-stats a { color: inherit; }
.exp-stats a .es-head span, .exp-stats a .es-val { color: #1d1d1f; }
.exp-stats a .es-head .es-ic { color: #0071e3; }
.exp-stats a:active .exp-stat { background: #f5f8ff; }

/* 学员档案过滤行（横向滚动胶囊，防 X5 wrap 错乱） */
.rs-filter {
    display: block; white-space: nowrap; overflow-x: auto;
    -webkit-overflow-scrolling: touch; margin-bottom: 10px; padding: 2px 0 6px;
}
.rs-filter::-webkit-scrollbar { display: none; }
.rs-f-label { display: inline-block; font-size: 12px; color: #86868b; margin-right: 6px; }
.rs-pill {
    display: inline-block; font-size: 12px; text-decoration: none;
    padding: 4px 12px; border-radius: 15px; margin-right: 6px;
    background: #f0f0f0; color: #1d1d1f; white-space: nowrap;
}
.rs-pill-on { background: #0071e3; color: #fff; }
.rs-pill-red { background: #dc2626; color: #fff; }
.rs-pill:active { opacity: .8; }

/* ═══ 学员档案 v3（Apple 风格重排版） ═══ */
/* 卡片三分区 */
.rm-item { display: block; padding: 14px 16px; text-decoration: none; color: inherit; }
.rm-head { display: flex; align-items: center; }
.rm-name { font-size: 18px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.rm-gender { font-size: 11px; color: #8b8b93; margin-left: 6px; }
.rm-status { margin-left: auto; }
.rm-mid { margin-top: 7px; display: flex; gap: 6px; flex-wrap: wrap; }
.rm-foot { margin-top: 6px; display: flex; align-items: center; justify-content: space-between; }
.rm-partner { font-size: 12px; color: #8b8b93; }
.rm-debt { font-size: 12px; color: #dc2626; font-weight: 600; }
.rm-class { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-dorm { background: #f5f5f7; color: #3a3a3c; font-size: 11px; font-weight: 500; padding: 2px 9px; border-radius: 10px; }
.rm-dim { font-size: 11px; color: #c7c7cc; }
.rm-tag { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-tag-green { background: #e8f7ee; color: #16a34a; }
.rm-tag-blue { background: #eef4ff; color: #0071e3; }
.rm-tag-red { background: #fdecec; color: #dc2626; }
.rm-tag-gray { background: #f5f5f5; color: #8b8b93; }
@media (max-width: 767px) {
    .roster-mobile { padding: 10px 12px; display: grid; gap: 10px; }
    .rm-item { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 1px 5px rgba(0,0,0,.04); }
}
/* 统计卡数字加大 */
.exp-stat .es-val { font-size: 26px; font-weight: 700; letter-spacing: -0.5px; color: #1d1d1f; }
.es-ic { width: 30px; height: 30px; border-radius: 9px; background: #eef4ff; color: #0071e3; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; }
/* 搜索条增强 */
.roster-search .form-control { border-radius: 12px; border: 1px solid #e3e6ea; background: #f8f9fb; font-size: 15px; }
.roster-search .form-control:focus { border-color: #0071e3; background: #fff; box-shadow: 0 0 0 3px rgba(0,113,227,.12); outline: none; }
/* 页头大标题 */
.page-header h2 { font-size: 24px; letter-spacing: -0.3px; }

/* ═══ 学员档案 v4：圆形首字头像卡片 ═══ */
.rm-item { display: flex; gap: 12px; padding: 14px 16px; text-decoration: none; color: inherit; border-left: 4px solid transparent; }
.rm-avatar {
    width: 46px; height: 46px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 19px; font-weight: 700; color: #fff;
    background: #8e8e93; letter-spacing: 0;
}
.rm-active .rm-avatar { background: #0071e3; }
.rm-active { border-left-color: #0071e3; }
.rm-checked_in .rm-avatar { background: #34c759; }
.rm-checked_in { border-left-color: #34c759; }
.rm-dep .rm-avatar { background: #8e8e93; }
.rm-reg .rm-avatar { background: #a78bfa; }
.rm-body { flex: 1; min-width: 0; }
.rm-row1 { display: flex; align-items: center; }
.rm-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.rm-gender { font-size: 11px; color: #8b8b93; margin-left: 5px; }
.rm-status { margin-left: auto; }
.rm-row2 { margin-top: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
.rm-row3 { margin-top: 5px; display: flex; align-items: center; justify-content: space-between; }
.rm-class { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-dorm { background: #f5f5f7; color: #3a3a3c; font-size: 11px; font-weight: 500; padding: 2px 9px; border-radius: 10px; }
.rm-dim { font-size: 11px; color: #c7c7cc; }
.rm-partner { font-size: 12px; color: #8b8b93; }
.rm-debt { font-size: 12px; color: #dc2626; font-weight: 600; }
.rm-tag { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-tag-green { background: #e8f7ee; color: #16a34a; }
.rm-tag-blue { background: #eef4ff; color: #0071e3; }
.rm-tag-red { background: #fdecec; color: #dc2626; }
.rm-tag-gray { background: #f5f5f5; color: #8b8b93; }
@media (max-width: 767px) {
    .roster-mobile { padding: 10px 12px; display: grid; gap: 10px; }
    .rm-item { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 1px 5px rgba(0,0,0,.04); }
}

/* 归属多层级下拉 */
.rs-select { display: inline-block; width: auto; min-width: 160px; max-width: 100%; height: 34px; font-size: 13px; border-radius: 10px; border: 1px solid #e3e6ea; background: #fff; padding: 0 8px; color: #1d1d1f; }

/* 范围切换：iOS 分段控件 */
.rs-seg {
    display: block; text-align: center; white-space: nowrap; background: #f2f2f7;
    border-radius: 11px; padding: 3px; margin-bottom: 12px;
}
.rs-seg-item {
    display: inline-block; width: 96px; padding: 7px 0; font-size: 13px;
    color: #6e6e73; text-decoration: none; border-radius: 9px;
    transition: background .15s;
}
.rs-seg-item.on { background: #fff; color: #1d1d1f; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.rs-n { font-style: normal; font-size: 11px; font-weight: 700; margin-left: 3px; color: #0071e3; }
.rs-seg-item.on .rs-n { color: #0071e3; }

/* 登录页错误提示 */
.lg-alert {
    background: #fdecec; color: #dc2626; font-size: 13px;
    border-radius: 10px; padding: 10px 14px; margin-bottom: 12px;
    border: 1px solid #f5c6c6;
}

/* ═══════════════════════════════════════════════
   ═ 学员档案页重新设计（Apple 风 · 桌面+手机同语言）
   ═══════════════════════════════════════════════ */

/* ── 头像圈（桌面+手机共用） ── */
.av {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; border-radius: 50%;
    background: linear-gradient(135deg, #0071e3, #4da3ff);
    color: #fff; font-size: 13px; font-weight: 600;
    flex-shrink: 0;
}
.av-f { background: linear-gradient(135deg, #ec4899, #f472b6); }
.av-m { background: linear-gradient(135deg, #0071e3, #4da3ff); }

/* ── 桌面表格精致化 ── */
.roster-desktop {
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 13px;
}
.roster-desktop thead th {
    background: #f8fafc !important;
    color: #6b7280 !important;
    font-weight: 600 !important;
    font-size: 12px !important;
    padding: 12px 14px !important;
    border-bottom: 1px solid #eef1f5 !important;
    white-space: nowrap;
}
.roster-desktop thead th:first-child { border-radius: 12px 0 0 0; }
.roster-desktop thead th:last-child { border-radius: 0 12px 0 0; }
.roster-desktop tbody td {
    padding: 12px 14px !important;
    border-bottom: 1px solid #f4f5f7 !important;
    vertical-align: middle;
}
.roster-desktop tbody tr { transition: background .12s; }
.roster-desktop tbody tr:hover { background: #f5faff !important; }
.roster-desktop tbody tr:last-child td { border-bottom: none !important; }
.roster-desktop .col-name { white-space: nowrap; }
.roster-desktop .col-name .av { margin-right: 10px; vertical-align: middle; }
.roster-desktop .col-name strong { font-size: 14px; vertical-align: middle; }
.roster-desktop .col-name .gen {
    font-size: 11px; color: #9ca3af; margin-left: 4px; vertical-align: middle;
}

/* ── 手机端卡片升级（桌面设计移植） ── */
@media (max-width: 767px) {
    .roster-mobile { padding: 2px 0 12px; }
    .rm-item {
        display: flex !important; gap: 12px !important;
        background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
        padding: 14px; margin-bottom: 10px;
        box-shadow: 0 1px 6px rgba(0,0,0,0.04);
        text-decoration: none; color: inherit;
    }
    .rm-avatar {
        width: 40px; height: 40px; border-radius: 50%;
        background: linear-gradient(135deg, #0071e3, #4da3ff);
        color: #fff; font-size: 16px; font-weight: 700;
        display: flex; align-items: center; justify-content: center;
        flex-shrink: 0;
    }
    .rm-body { flex: 1; min-width: 0; }
    .rm-row1 { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
    .rm-name { font-size: 17px; font-weight: 700; color: #1d1d1f; }
    .rm-gender {
        font-size: 11px; color: #86868b;
        background: #f5f7fa; border-radius: 6px; padding: 1px 7px;
    }
    .rm-status { margin-left: auto; }
    .rm-tag {
        font-size: 11px !important; font-weight: 600 !important;
        padding: 3px 10px !important; border-radius: 8px !important;
    }
    .rm-tag-green { background: #f0fdf4 !important; color: #15803d !important; }
    .rm-tag-blue { background: #eef4ff !important; color: #0369a1 !important; }
    .rm-tag-red { background: #fef2f2 !important; color: #b91c1c !important; }
    .rm-tag-gray { background: #f5f7fa !important; color: #6b7280 !important; }
    .rm-row2 { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; }
    .rm-class, .rm-dorm {
        font-size: 11px; color: #0369a1;
        background: #eef4ff; border-radius: 7px; padding: 2px 8px; font-weight: 500;
    }
    .rm-dorm { color: #6b7280; background: #f5f7fa; }
    .rm-row3 { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
    .rm-partner { font-size: 12px; color: #86868b; }
    .rm-debt {
        font-size: 12px !important; color: #dc2626 !important;
        background: #fef2f2 !important; border-radius: 7px !important;
        padding: 2px 8px !important; font-weight: 700 !important;
    }
    /* 金额行（已缴/欠费/考勤） */
    .rm-row4 {
        display: flex; align-items: center; gap: 8px;
        background: #f8fafc; border-radius: 10px;
        padding: 8px 12px; margin-bottom: 8px;
    }
    .rm-paid { font-size: 12px; color: #6b7280; }
    .rm-paid b { color: #15803d; font-size: 13px; }
    .rm-att {
        margin-left: auto; font-size: 12px; color: #6b7280;
        display: flex; align-items: center; gap: 4px;
    }
    .rm-att .att-bad { color: #dc2626; font-weight: 700; }
    .rm-row5 { display: flex; justify-content: flex-end; }
    .rm-btn {
        background: #0071e3; color: #fff !important; text-decoration: none;
        border-radius: 980px; padding: 6px 18px; font-size: 12px; font-weight: 600;
        display: inline-block;
    }
}

/* ═══ 学员档案：筛选工具栏（范围+状态合并，去重） ═══ */
.rs-toolbar {
    display: flex; gap: 10px; align-items: flex-start;
    margin-bottom: 12px; flex-wrap: wrap;
}
.rs-seg {
    display: inline-flex; background: #f0f2f6; border-radius: 12px; padding: 3px;
    gap: 2px; flex-wrap: wrap;
}
.rs-seg-item {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 16px; border-radius: 10px;
    font-size: 13px; font-weight: 600; color: #4b5563; text-decoration: none;
    white-space: nowrap;
}
.rs-seg-item .rs-n {
    font-style: normal; font-size: 11px; font-weight: 700;
    background: rgba(0,0,0,0.06); border-radius: 6px; padding: 1px 6px;
}
.rs-seg-item.on { background: #fff; color: #0071e3; box-shadow: 0 1px 4px rgba(0,0,0,0.08); }
.rs-seg-item.on .rs-n { background: #eef4ff; }
.rs-status { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rs-st-item {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 12px; color: #6b7280; text-decoration: none;
    background: #fff; border: 1px solid #eef1f5; border-radius: 980px;
    padding: 6px 14px; font-weight: 500;
}
.rs-st-item em { font-style: normal; font-weight: 700; color: #0071e3; }
.rs-st-item.on { background: #eef4ff; border-color: #d6e4ff; color: #0369a1; }
/* 手机端：筛选工具栏 2 行 */
@media (max-width: 767px) {
    .rs-toolbar { flex-direction: column; gap: 8px; }
    .rs-seg { width: 100%; }
    .rs-seg-item { flex: 1; justify-content: center; padding: 8px 6px; font-size: 13px; }
    .rs-status { width: 100%; }
    .rs-st-item { flex: 1; justify-content: center; }
    .rs-filter { width: 100%; margin-top: 2px; }
}

/* ═══ 学员档案：范围切换 = 下划线 Tab ═══ */
.rs-tabs {
    display: flex; gap: 28px;
    border-bottom: 1px solid #eef1f5;
    margin-bottom: 12px; padding: 0 4px;
}
.rs-tab {
    position: relative;
    padding: 8px 2px 10px;
    font-size: 14px; font-weight: 600; color: #6b7280;
    text-decoration: none; white-space: nowrap;
}
.rs-tab em { font-style: normal; font-size: 11px; color: #9ca3af; margin-left: 4px; font-weight: 500; }
.rs-tab.on { color: #0071e3; }
.rs-tab.on::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -1px;
    height: 2.5px; border-radius: 2px; background: #0071e3;
}
.rs-tab.on em { color: #0071e3; font-weight: 700; }
.rs-tab:active { opacity: .7; }
@media (max-width: 767px) {
    .rs-tabs { gap: 0; justify-content: space-around; }
    .rs-tab { font-size: 14px; padding: 9px 0 11px; }
}

/* Tab 行右侧归属下拉 */
.rs-filter-inline { margin-left: auto; display: flex; align-items: center; }
.rs-filter-inline .rs-select {
    min-height: 32px; font-size: 12px;
    border: 1px solid #eef1f5; border-radius: 8px;
    padding: 3px 8px; background: #fff; color: #4b5563;
}
@media (max-width: 767px) {
    .rs-tabs { align-items: center; }
    .rs-filter-inline .rs-select { max-width: 110px; }
}

/* ═══ 学员档案：搜索框 + 表头吸顶 ═══ */
.roster-search { display: flex; gap: 8px; margin-bottom: 12px; }
.rs-s-wrap { position: relative; flex: 1; display: flex; align-items: center; }
.rs-s-input {
    width: 100%; min-height: 40px; font-size: 14px;
    border-radius: 12px !important; padding: 8px 36px 8px 14px !important;
    border: 1px solid #e5e7eb !important; background: #fff !important;
}
.rs-s-input:focus { box-shadow: 0 0 0 3px rgba(0,113,227,0.15) !important; border-color: #0071e3 !important; }
.rs-s-clear {
    position: absolute; right: 10px;
    width: 22px; height: 22px; border-radius: 50%;
    background: #f0f2f6; color: #6b7280;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; text-decoration: none;
}
.rs-s-btn { border-radius: 12px !important; min-height: 40px; padding: 0 22px !important; }
/* 表头吸顶（桌面） */
@media (min-width: 768px) {
    .roster-desktop thead th { position: sticky; top: 0; z-index: 5; }
}
@media (max-width: 767px) {
    .rs-s-input { min-height: 44px; }
}

/* ═══════════════════════════════════════════════
   ═ 学员档案详情页（Apple 风 · 头像圈+分组卡片） ═
   ═══════════════════════════════════════════════ */

/* ── Hero 卡：大号首字头像圈 + 姓名 + 状态徽章 ── */
.pf-hero { display: flex; align-items: center; padding: 20px; margin-bottom: 14px; }
.pf-avatar {
    width: 72px; height: 72px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 30px; font-weight: 700; color: #fff; letter-spacing: 0;
    box-shadow: 0 2px 10px rgba(0,113,227,.18);
}
.pf-avatar.av-f { background: linear-gradient(135deg, #ec4899, #f472b6); }
.pf-avatar.av-m { background: linear-gradient(135deg, #0071e3, #4da3ff); }
.pf-hero-info { margin-left: 16px; min-width: 0; flex: 1; }
.pf-hero-name-row { display: flex; align-items: center; flex-wrap: wrap; }
.pf-hero-name { font-size: 26px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.2; }
.pf-hero-gender {
    font-size: 12px; color: #86868b; background: #f5f7fa;
    border-radius: 6px; padding: 1px 8px; margin-left: 8px;
}
.pf-hero-meta { margin-top: 9px; display: flex; flex-wrap: wrap; align-items: center; }

/* ── 状态徽章（浅底深字胶囊） ── */
.pf-badge {
    display: inline-block; font-size: 12px; font-weight: 600;
    padding: 3px 12px; border-radius: 980px;
    margin-left: 10px; vertical-align: middle; white-space: nowrap;
}
.pf-badge-green { background: #e8f7ee; color: #15803d; }
.pf-badge-blue { background: #eef4ff; color: #0369a1; }
.pf-badge-orange { background: #fff4e5; color: #b45309; }
.pf-badge-red { background: #fdecec; color: #b91c1c; }
.pf-badge-gray { background: #f5f5f7; color: #6b7280; }
.pf-badge-purple { background: #f3e8ff; color: #7c3aed; }
.pf-badge-amber { background: #fff8e1; color: #b45309; border: 1px dashed #e6c25c; }

/* ── 信息胶囊 ── */
.pf-chip {
    display: inline-block; background: #f5f5f7; color: #3a3a3c;
    font-size: 12px; font-weight: 600; padding: 3px 11px; border-radius: 980px;
    margin: 0 8px 6px 0; vertical-align: middle;
}
.pf-chip-blue { background: #eef4ff; color: #0071e3; }
.pf-chip-green { background: #e8f7ee; color: #15803d; }
.pf-chip-red { background: #fdecec; color: #b91c1c; }
.pf-chip-orange { background: #fff4e5; color: #b45309; }
.pf-chip-row { display: flex; flex-wrap: wrap; margin-bottom: 4px; }

/* ── 提示横幅（离校/试学） ── */
.pf-banner {
    border-radius: 14px; padding: 11px 16px; margin-bottom: 14px;
    font-size: 13px; line-height: 1.7;
}
.pf-banner-red { background: #fdecec; border: 1px solid #f5c6c6; color: #b91c1c; }
.pf-banner-amber { background: #fff8e1; border: 1px dashed #e6c25c; color: #b45309; }

/* ── 入学流程进度条 ── */
.pf-flow-body { padding: 14px 16px 12px; }
.pf-flow-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: 12px; }
.pf-flow-title { font-size: 15px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.pf-flow-cur { font-size: 12px; color: #86868b; }
.pf-flow-cur b { color: #0071e3; }
.pf-flow { display: flex; align-items: flex-start; overflow-x: auto; padding-bottom: 2px; }
.pf-flow::-webkit-scrollbar { display: none; }
.pf-step { flex: 1 1 0; min-width: 84px; text-align: center; }
.pf-step-dot {
    width: 26px; height: 26px; border-radius: 50%; margin: 0 auto 6px;
    display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; color: #86868b; background: #e9edf2;
}
.pf-step.done .pf-step-dot { background: #34c759; color: #fff; }
.pf-step.cur .pf-step-dot { background: #0071e3; color: #fff; box-shadow: 0 0 0 4px rgba(0,113,227,.15); }
.pf-step-name { display: block; font-size: 12px; font-weight: 600; color: #86868b; }
.pf-step.done .pf-step-name, .pf-step.cur .pf-step-name { color: #1d1d1f; }
.pf-step-sub { display: block; font-size: 10px; color: #aeaeb2; margin-top: 1px; }
/* 未到步骤显式灰色（更直观的未完成态） */
.pf-step:not(.done):not(.cur) .pf-step-dot {
    background: #e3e7ee; color: #b0b4bb;
}
.pf-step:not(.done):not(.cur) .pf-step-name {
    color: #b0b4bb; font-weight: 400;
}
.pf-step:not(.done):not(.cur) .pf-step-sub { color: #c8ccd4; }
.pf-flow-line { flex: 0 0 22px; height: 2px; background: #e9edf2; margin-top: 13px; border-radius: 1px; }
.pf-flow-line.done { background: #34c759; }

/* ── 费用摘要统计卡（白底深色数字，X5 安全 inline-block） ── */
.pf-money-row { display: block; margin: 0 -5px 14px; font-size: 0; }
.pf-money {
    display: inline-block; vertical-align: top; box-sizing: border-box;
    width: calc(50% - 10px); margin: 0 5px 10px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.pf-money-label { font-size: 12px; color: #86868b; margin-bottom: 4px; }
.pf-money-val { font-size: 24px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.1; }
.pf-money .pf-badge { margin: 8px 0 0; }
.pf-money-wide { width: 100% !important; }
@media (min-width: 768px) { .pf-money { width: calc(25% - 10px); } }

/* ── 信息分组卡片网格（flex-wrap，X5 安全；手机 block 单列） ── */
.pf-grid { display: flex; flex-wrap: wrap; margin: 0 -7px; }
.pf-grid > .card { flex: 1 1 330px; margin: 0 7px 14px; box-sizing: border-box; }
.pf-card-header {
    background: #fff !important;
    padding: 14px 16px; font-size: 15px; font-weight: 700;
    color: #1d1d1f; letter-spacing: -0.3px;
}
.pf-card-title { display: inline-flex; align-items: center; }
.pf-card-ic {
    width: 26px; height: 26px; border-radius: 8px; flex-shrink: 0;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; margin-right: 8px;
}

/* ── 信息字段网格 ── */
.pf-info-grid { display: flex; flex-wrap: wrap; margin: -2px -8px; }
.pf-field { flex: 1 1 30%; min-width: 130px; padding: 6px 8px; box-sizing: border-box; }
.pf-field.wide { flex: 1 1 100%; }
.pf-field-label { font-size: 11px; color: #86868b; margin-bottom: 2px; }
.pf-field-val { font-size: 14px; color: #1d1d1f; font-weight: 500; line-height: 1.45; word-break: break-all; }
.pf-num { font-size: 17px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.3px; }
.pf-ado-val { font-size: 20px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.4px; line-height: 1.2; }

/* ── 表格金额强调（深色大字号） ── */
.pf-table { font-size: 13px; }
.td-amt { font-weight: 700; color: #1d1d1f; }

/* ── 折叠展开（交费记录） ── */
.pf-fold {
    display: flex; align-items: center;
    font-size: 13px; color: #0071e3; font-weight: 600; cursor: pointer;
    margin: 10px 0 4px; padding: 8px 12px;
    background: #f5f8ff; border-radius: 10px; user-select: none;
}
.pf-fold-ic { font-size: 10px; margin-right: 6px; transition: transform .15s; flex-shrink: 0; }
.pf-fold-hint { font-size: 11px; color: #86868b; font-weight: 400; margin-left: auto; }

/* ── 列表行（请假/分班/离校记录） ── */
.pf-list-row { padding: 9px 0; border-bottom: 1px dashed #eef0f3; font-size: 13px; }
.pf-list-row:last-child { border-bottom: none; }
.pf-row-flex { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.pf-row-text { font-size: 13px; margin-right: 8px; }
.pf-row-sub { font-size: 11px; color: #86868b; margin-top: 3px; line-height: 1.5; }
.pf-list-row .pf-badge { margin-left: 8px; }
.pf-arrow { font-size: 11px; color: #0071e3; margin: 0 5px; vertical-align: middle; }

/* ── 辅助元素 ── */
.pf-sub-label { font-size: 12px; color: #86868b; margin: 10px 0 4px; }
.pf-empty { color: #86868b; font-size: 13px; padding: 4px 0; }
.pf-empty-center { text-align: center; padding: 18px 0; }
.pf-card-foot { margin-top: 10px; }

/* ── 手机端适配 ── */
@media (max-width: 767px) {
    .pf-hero { padding: 16px; margin-bottom: 12px; }
    .pf-avatar { width: 56px; height: 56px; font-size: 24px; }
    .pf-hero-name { font-size: 21px; }
    .pf-hero-info { margin-left: 13px; }
    .pf-hero-meta { margin-top: 7px; }
    .pf-grid { display: block; margin: 0; }
    .pf-grid > .card { margin: 0 0 12px; }
    .pf-money-row { margin: 0 -4px 12px; }
    .pf-money { width: calc(50% - 8px); margin: 0 4px 8px; padding: 12px 14px; }
    .pf-money-val { font-size: 21px; }
    .pf-card-header { padding: 12px 14px; font-size: 15px; }
    .pf-field { flex: 1 1 44%; min-width: 115px; }
    .pf-field-val { font-size: 14px; }
    .pf-ado-val { font-size: 18px; }
    .pf-step { min-width: 76px; }
    .pf-flow { -webkit-overflow-scrolling: touch; }
    .pf-banner { margin-bottom: 12px; }
    .pf-list-row { padding: 9px 0; }
    .pf-card .btn, .pf-card .btn-sm, .pf-card .btn-xs, .pf-hero .btn { min-height: 36px; }
}

/* ═══ 班级管理页（Apple 风重设计） ═══ */
/* 新增班级表单 */
.cls-add-form .form-control { min-height: 38px; border-radius: 10px; font-size: 14px; }
.cls-add-btn { flex: 0 0 auto; }
.cls-add-btn .btn { border-radius: 980px; padding: 8px 26px; min-height: 38px; }

/* 筛选栏（block + inline-block 横向滚动，防 X5 wrap 错乱） */
.cls-filter { display: block; padding: 12px 16px; white-space: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.cls-filter::-webkit-scrollbar { display: none; }
.cls-filter-label { display: inline-block; font-size: 13px; font-weight: 600; color: #1d1d1f; margin-right: 8px; }
.cls-filter-select { display: inline-block; width: auto; min-width: 150px; font-size: 13px; border-radius: 980px; padding: 6px 16px; border: 1px solid #e5e7eb; background: #fff; color: #1d1d1f; }
.cls-filter-hint { display: inline-block; font-size: 11px; color: #86868b; margin-left: 12px; }

/* 班级卡片（inline-block 布局，X5 稳定，勿改 grid） */
.cls-grid { display: block; font-size: 0; margin: -5px; margin-bottom: 9px; }
.cls-card { display: inline-block; vertical-align: top; box-sizing: border-box; width: calc(33.333% - 10px); margin: 5px; background: #fff; border: 1px solid #eef1f5; border-radius: 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04); overflow: hidden; font-size: 14px; }
.cls-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 14px 16px 8px; }
.cls-title { display: flex; align-items: center; gap: 6px; min-width: 0; }
.cls-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cls-tag { flex: none; font-size: 10px; font-weight: 600; padding: 1px 8px; border-radius: 8px; }
.cls-tag-blue { background: var(--blue-light); color: var(--blue); }
.cls-tag-orange { background: var(--orange-light); color: var(--orange); }
.cls-tag-green { background: var(--green-light); color: var(--green); }
.cls-cap { flex: none; font-size: 12px; font-weight: 600; color: #6e6e73; white-space: nowrap; }
.cls-cap-full { color: #dc2626; font-weight: 700; }
.cls-progress { height: 4px; margin: 0 16px 2px; background: #f0f2f6; border-radius: 2px; overflow: hidden; }
.cls-progress-bar { display: block; height: 100%; background: #0071e3; border-radius: 2px; transition: width .3s; }
.cls-progress-bar.full { background: #dc2626; }
.cls-body { padding: 8px 16px 6px; max-height: 200px; overflow-y: auto; }
.cls-empty { text-align: center; color: #86868b; font-size: 12px; padding: 14px 0; }
.cls-body .member-row { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--border-light); font-size: 13px; }
.cls-body .member-row:last-child { border-bottom: none; }
.cls-body .member-av { flex: none; width: 26px; height: 26px; border-radius: 50%; background: linear-gradient(135deg, #0071e3, #4da3ff); color: #fff; font-size: 12px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; }
.cls-body .member-name { font-weight: 600; color: #1d1d1f; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cls-body .member-org { flex: none; font-size: 10px; color: #86868b; }
.cls-body .member-out-form { margin-left: auto; flex: none; }
.cls-body .member-out-form .btn { border-radius: 980px; min-height: 26px; }
.cls-body .member-partner { display: block; font-size: 10px; font-weight: 700; color: #86868b; letter-spacing: .3px; padding: 8px 0 2px; }
.cls-actions { display: flex; gap: 8px; justify-content: flex-end; padding: 10px 16px 14px; border-top: 1px solid #f0f2f6; background: #fafbfc; }
.cls-actions .btn { min-height: 30px; border-radius: 980px; font-size: 12px; }
.cls-del-form { display: inline-block; }

/* 未分班学员 */
.unassigned-card .card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.unassigned-head { cursor: pointer; user-select: none; color: #b45309; }
.unassigned-head::after { font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f107"; font-size: 13px; color: #b45309; transition: transform .2s; }
.unassigned-head.open::after { transform: rotate(180deg); }
.unassign-toolbar { display: block; padding: 12px 14px; border-bottom: 1px solid var(--border-light); background: #fafbfc; }
.unassign-search-wrap { display: block; margin-bottom: 8px; }
.unassign-search-wrap .form-control { width: 100%; border-radius: 980px; padding: 8px 16px; font-size: 13px; border: 1px solid #e5e7eb; min-height: 36px; }
.unassign-class { width: 100%; margin-bottom: 8px; border-radius: 980px; font-size: 13px; min-height: 36px; border: 1px solid #e5e7eb; }
.unassign-batch-btn { width: 100%; border-radius: 980px; min-height: 38px; font-size: 13px; opacity: .6; }
.unassign-tip { padding: 6px 2px 0; font-size: 11px; color: #86868b; }
.unassign-batch-head { display: flex; align-items: center; gap: 8px; padding: 9px 14px; border-top: 1px solid var(--border-light); cursor: pointer; user-select: none; }
.unassign-batch-head:first-child { border-top: none; }
.unassign-batch-icon { font-size: 11px; color: #86868b; }
.unassign-batch-icon::before { font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f054"; font-size: 10px; display: inline-block; transition: transform .2s; }
.unassign-batch-head.open .unassign-batch-icon::before { transform: rotate(90deg); }
.ub-tag { font-size: 10px; font-weight: 700; padding: 1px 8px; border-radius: 10px; color: #fff; }
.ub-tag-blue { background: var(--blue); }
.ub-tag-orange { background: var(--orange); }
.ub-tag-green { background: var(--green); }
.unassign-batch-count { font-size: 11px; color: #86868b; background: #f0f0f0; padding: 1px 8px; border-radius: 10px; }
.ub-all { margin-left: auto; font-size: 11px; }
.ub-all label { cursor: pointer; color: #0071e3; }
.ub-all input { accent-color: #0071e3; width: 15px; height: 15px; vertical-align: -2px; }
.unassign-row { display: flex; align-items: center; gap: 8px; padding: 8px 14px; border-bottom: 1px dashed var(--border-light); font-size: 13px; cursor: pointer; transition: background .15s; }
.unassign-row:active { background: #f5f9ff; }
.unassign-row input[type=checkbox] { accent-color: #0071e3; width: 16px; height: 16px; flex: none; }
.unassign-av { flex: none; width: 28px; height: 28px; border-radius: 50%; background: linear-gradient(135deg, #0071e3, #4da3ff); color: #fff; font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; }
.unassign-name { font-size: 14px; font-weight: 600; color: #1d1d1f; min-width: 64px; }
.unassign-tag { flex: none; font-size: 10px; font-weight: 600; padding: 0 6px; border-radius: 8px; }
.unassign-tag-blue { background: var(--blue-light); color: var(--blue); }
.unassign-tag-orange { background: var(--orange-light); color: var(--orange); }
.unassign-tag-green { background: var(--green-light); color: var(--green); }
.unassign-org { color: #86868b; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.unassign-empty { display: none; padding: 16px; text-align: center; font-size: 12px; color: #86868b; }

/* 编辑班级弹窗：桌面居中卡片 / 手机全屏 */
.ce-overlay { padding: 20px; }
.ce-modal { box-sizing: border-box; background: #fff; border-radius: 18px; width: 92%; max-width: 400px; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.ce-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 0; }
.ce-head h3 { font-size: 17px; font-weight: 700; margin: 0; color: #1d1d1f; }
.ce-x { border: none; background: #f0f2f6; color: #6e6e73; width: 30px; height: 30px; border-radius: 50%; font-size: 13px; cursor: pointer; line-height: 1; flex: none; }
.ce-x:active { background: #e2e5ea; }
.ce-body { padding: 14px 20px 4px; }
.ce-body .form-group { margin-bottom: 14px; }
.ce-body .form-control { min-height: 40px; border-radius: 10px; font-size: 14px; }
.ce-note { font-size: 12px; color: #86868b; margin: 4px 0 6px; }
.ce-foot { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 20px 18px; }
.ce-btn { min-height: 40px; border-radius: 980px; padding: 8px 24px; font-size: 14px; }

/* 手机端 */
@media (max-width: 767px) {
    .cls-add-form { display: block; }
    .cls-add-form .form-group { width: 100%; margin-bottom: 12px; }
    .cls-add-form .form-control { width: 100%; min-height: 42px; font-size: 14px; }
    .cls-add-btn .btn { width: 100%; min-height: 42px; font-size: 14px; }
    .cls-filter-select { min-height: 36px; }
    .cls-filter-hint { display: none; }
    .cls-card { width: 100%; margin: 5px 0; }
    .cls-name { font-size: 17px; }
    .cls-cap { font-size: 13px; }
    .cls-actions .btn { min-height: 36px; font-size: 13px; }
    .cls-body .member-row { font-size: 14px; padding: 7px 0; }
    .cls-body .member-name { font-size: 14px; }
    .cls-body .member-out-form .btn { min-height: 32px; }
    .unassign-search-wrap .form-control { min-height: 40px; font-size: 14px; }
    .unassign-class { min-height: 40px; font-size: 14px; }
    .unassign-batch-btn { min-height: 42px; font-size: 14px; }
    .unassign-row { font-size: 14px; padding: 9px 14px; }
    .unassign-name { font-size: 15px; }
    .unassign-av { width: 30px; height: 30px; font-size: 14px; }
    /* 编辑班级弹窗：全屏 + 大输入框（16px 防 iOS 聚焦缩放） */
    .ce-overlay { padding: 0; }
    .ce-modal { width: 100% !important; max-width: 100% !important; height: 100% !important; max-height: 100% !important; border-radius: 0 !important; }
    .ce-body { flex: 1; overflow-y: auto; }
    .ce-modal .form-control { min-height: 46px; font-size: 16px; border-radius: 12px; }
    .ce-modal .form-group label { font-size: 14px; }
    .ce-head { padding: 20px 20px 4px; }
    .ce-btn { flex: 1; min-height: 44px; font-size: 15px; }
}

/* ═══ 考勤：今日出勤率大数字 + 各班简报名单卡片化（Apple 白卡） ═══ */
.att-rate-big { text-align: right; }
.att-rate-big b { font-size: 24px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.1; }
.att-rate-big b small { font-size: 15px; font-weight: 700; color: #0071e3; margin-left: 1px; }
.att-rate-big i { display: block; font-style: normal; font-size: 11px; color: #86868b; margin-top: 2px; }

.att-brief-list { display: block; font-size: 0; }
.att-brief-item {
    display: inline-block; vertical-align: top; box-sizing: border-box;
    width: calc(50% - 10px); margin: 0 5px 10px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 12px 14px; box-shadow: 0 1px 5px rgba(0,0,0,.04);
}
.ab-row1 { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.ab-class { font-size: 15px; font-weight: 700; color: #1d1d1f; }
.ab-row2 { display: block; font-size: 0; }
.ab-stat {
    display: inline-block; width: 20%; box-sizing: border-box; text-align: center;
    border-right: 1px solid #f0f2f6;
}
.ab-stat:last-child { border-right: none; }
.ab-stat b { display: block; font-size: 16px; font-weight: 700; color: #1d1d1f; line-height: 1.25; }
.ab-stat b.ab-bad { color: #dc2626; }
.ab-stat i { display: block; font-style: normal; font-size: 10px; color: #86868b; margin-top: 2px; }

/* ═══ 考勤：柔和状态徽章（出勤绿/迟到橙/缺勤红/请假蓝/灰） ═══ */
.tk-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 10px; line-height: 1.5; white-space: nowrap;
}
.tk-badge-green { background: #e8f7ee; color: #16a34a; }
.tk-badge-red   { background: #fdecec; color: #dc2626; }
.tk-badge-orange{ background: #fff4e5; color: #d97706; }
.tk-badge-blue  { background: #eef4ff; color: #0071e3; }
.tk-badge-gray  { background: #f5f5f5; color: #8b8b93; }

/* ═══ 考勤：班级点名名单卡片化（姓名 17 + 分段状态钮 + 备注） ═══ */
.tk-card {
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 12px 14px; margin-bottom: 10px; box-shadow: 0 1px 5px rgba(0,0,0,.04);
}
.tk-card-absent { background: #fff7f6; border-color: #f6dedd; }
.tk-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.tk-name-wrap { min-width: 0; }
.tk-name { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.tk-dorm { font-size: 12px; color: #8b8b93; margin-left: 8px; }

/* 分段状态钮（iOS 分段控件样式，inline-block 防 X5 乱序） */
.tk-seg {
    display: block; font-size: 0;
    background: #f2f2f7; border-radius: 12px; padding: 3px; margin-bottom: 8px;
}
.tk-seg input { position: absolute; opacity: 0; pointer-events: none; }
.tk-opt {
    display: inline-block; width: 25%; box-sizing: border-box;
    font-size: 14px; text-align: center; padding: 7px 0; min-height: 34px; line-height: 1.4;
    border-radius: 9px; background: transparent; color: #4b5563;
    cursor: pointer; user-select: none; -webkit-user-select: none;
}
.tk-opt:active { opacity: .7; }
.tk-seg input:checked + .tk-opt-green  { background: #fff; color: #16a34a; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tk-seg input:checked + .tk-opt-red    { background: #fff; color: #dc2626; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tk-seg input:checked + .tk-opt-orange { background: #fff; color: #d97706; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tk-seg input:checked + .tk-opt-blue   { background: #fff; color: #0071e3; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }

.tk-note {
    width: 100%; font-size: 14px; padding: 7px 10px; border-radius: 9px;
    border: 1px solid #e5e7eb; background: #fafafa; color: #3a3a3c;
    box-sizing: border-box;
}
.tk-note:focus { background: #fff; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }

.tk-submit { border-radius: 12px !important; min-height: 44px; }

@media (max-width: 767px) {
    .att-brief-item { display: block; width: auto; margin: 0 0 10px; }
    .att-rate-big b { font-size: 22px; }
    .tk-opt { min-height: 38px; font-size: 15px; padding: 9px 0; }
    .tk-card { padding: 12px; }
}

/* ═══ 统计卡图标：简洁版（浅蓝底 + 蓝图标） ═══ */
.exp-stat .es-head .es-ic {
    width: 28px; height: 28px;
    border-radius: 8px;
    background: #eef4ff;
    color: #0071e3;
    font-size: 12px;
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.exp-stat .es-head {
    display: flex; align-items: center; gap: 8px;
    font-size: 12px; color: #86868b; font-weight: 500;
    margin-bottom: 8px;
}
.exp-stat .es-val {
    font-size: 26px; font-weight: 700; color: #1d1d1f;
    letter-spacing: -0.5px; line-height: 1.15;
    padding-left: 2px;
}
@media (max-width: 767px) {
    .exp-stat .es-head .es-ic { width: 26px; height: 26px; font-size: 11px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 合作方管理 / 缺勤预警 / 考勤报表 — Apple 风统一层
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── 统计卡数值着色：警示红 / 正向绿 ── */
.es-val-danger { color: #dc2626 !important; }
.es-val-ok     { color: #16a34a !important; }

/* ── 3 张统计卡布局（桌面 1/3，手机 2+1；inline-block 防 X5 乱序） ── */
.exp-stats-3 .exp-stat { width: calc(50% - 10px); }
@media (min-width: 768px) {
    .exp-stats-3 .exp-stat { width: calc(33.333% - 10px); }
}

/* ── 合作方页：搜索框（Apple 圆角搜索条） ── */
.partner-search { margin-bottom: 12px; }
.ps-wrap {
    display: flex; align-items: center; gap: 6px;
    background: #f8f9fb; border: 1px solid #e3e6ea; border-radius: 12px;
    padding: 0 12px; box-sizing: border-box;
}
.ps-wrap:focus-within { border-color: #0071e3; background: #fff; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.ps-ic { color: #86868b; font-size: 13px; flex-shrink: 0; }
.ps-input {
    flex: 1; border: none !important; background: transparent !important;
    box-shadow: none !important; padding: 10px 0; font-size: 15px; min-height: 40px;
}
.ps-clear { color: #c7c7cc; font-size: 15px; cursor: pointer; flex-shrink: 0; display: none; padding: 4px; }
.ps-clear:active { color: #86868b; }

/* ── 全站 status-badge 补缺（此前有使用无定义：alerts/leave 页共用） ── */
.status-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 10px; line-height: 1.5; white-space: nowrap;
    background: #f5f5f5; color: #8b8b93;
}
.status-badge.overdue   { background: #fdecec; color: #dc2626; }
.status-badge.pending   { background: #fff4e5; color: #d97706; }
.status-badge.processing{ background: #eef4ff; color: #0071e3; }
.status-badge.completed { background: #e8f7ee; color: #16a34a; }

/* ── 缺勤预警：待处理名单卡片化（圆形首字 + 状态左色 + 柔和徽章） ── */
.al-list { display: block; }
.al-card {
    display: flex; gap: 12px; background: #fff; border: 1px solid #eef1f5;
    border-radius: 14px; padding: 12px 14px; margin-bottom: 10px;
    box-shadow: 0 1px 5px rgba(0,0,0,.04);
}
.al-avatar {
    width: 42px; height: 42px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; font-weight: 700;
    background: #fdecec; color: #dc2626;
}
.al-body { flex: 1; min-width: 0; }
.al-row1 { display: flex; align-items: center; gap: 6px; }
.al-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.al-tag { font-size: 11px; font-weight: 600; padding: 1px 9px; border-radius: 10px; margin-left: auto; flex-shrink: 0; }
.al-tag-red { background: #fdecec; color: #dc2626; }
.al-row2 { margin-top: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
.al-badge { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.al-badge-blue { background: #eef4ff; color: #0071e3; }
.al-badge-gray { background: #f5f5f7; color: #3a3a3c; }
.al-row3 { margin-top: 6px; font-size: 12px; color: #86868b; }
.al-form { display: flex; gap: 8px; margin-top: 10px; }
.al-select {
    flex: 1; min-width: 0; font-size: 13px; padding: 8px 10px;
    border-radius: 10px; background: #f8f9fb; border: 1px solid #e3e6ea;
    min-height: 36px;
}
.al-select:focus { background: #fff; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.al-submit { min-height: 36px; border-radius: 10px; }

/* ── 考勤报表：筛选 + 结果头 + 出勤率 ── */
.rep-filter .form-group { min-width: 130px; }
.rep-placeholder { text-align: center; padding: 40px 16px; color: #86868b; }
.rep-ph-ic { font-size: 30px; color: #c7c7cc; display: block; margin-bottom: 8px; }
.rep-empty-ic { font-size: 30px; color: #c7c7cc; display: block; margin-bottom: 8px; }
.rep-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 14px 16px; border-bottom: 1px solid #f0f2f6;
}
.rep-title { font-size: 15px; font-weight: 600; color: #1d1d1f; }
.rep-sub { font-size: 12px; color: #86868b; margin-top: 2px; }
.rep-rate { text-align: right; flex-shrink: 0; margin-left: 12px; }
.rep-rate-num { display: block; font-size: 22px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.4px; line-height: 1.1; }
.rep-rate-lb { font-size: 11px; color: #86868b; }

/* ── 空状态 FA 图标（通用） ── */
.empty-state i.fas { font-size: 30px; color: #c7c7cc; display: block; margin-bottom: 8px; }

/* ── 手机端（<768px） ── */
@media (max-width: 767px) {
    /* 合作方页头按钮：补 min-height 36px（原有 .ph-actions 规则不动） */
    .ph-actions .btn { min-height: 36px; }
    /* 合作方搜索条 */
    .ps-wrap { padding: 0 10px; }
    .ps-input { font-size: 14px; min-height: 40px; }
    /* 缺勤预警：处理表单纵向排列，按钮全宽 */
    .al-form { display: block; }
    .al-select { width: 100%; margin-bottom: 8px; min-height: 40px; }
    .al-submit { width: 100%; min-height: 40px; }
    /* 考勤报表：筛选单列、结果头紧凑 */
    .rep-filter .form-group { min-width: 100%; }
    .rep-head { padding: 12px 14px; }
    .rep-rate-num { font-size: 19px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 录取管理 / 成绩分析 / 课表总览（Apple 风统一重设计 · 追加段）
   ═ 追加于 style.css 末尾；不删上方任何规则，不动后端
   ═══════════════════════════════════════════════════════════════ */

/* ── 统计卡强调色（白卡规范：白底 + 深色数字，仅图标/数值可着色） ── */
.es-val-green  { color: #34c759 !important; }
.es-val-red    { color: #ff3b30 !important; }
.es-val-orange { color: #d97706 !important; }
.es-ic-green  { background: #e8f7ee !important; color: #16a34a !important; }
.es-ic-red    { background: #fdecec !important; color: #dc2626 !important; }
.es-ic-orange { background: #fff4e5 !important; color: #d97706 !important; }
.es-ic-purple { background: #f3e8ff !important; color: #7c3aed !important; }
.es-val small { font-weight: 600; color: #86868b; }

/* ═══ 录取管理 ═══ */

/* 录入表单：flex-wrap 网格（X5 安全，勿用 grid 强排） */
.adm-form-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.adm-form-grid > .form-group { flex: 1 1 200px; min-width: 0; margin-bottom: 0; box-sizing: border-box; }
.adm-form-grid label { display: block; font-size: 12px; color: #86868b; margin-bottom: 4px; font-weight: 500; }
.adm-xk-rows { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.adm-xk-rows .xk-row { display: flex; gap: 6px; align-items: center; }
.adm-xk-rows .xk-row .form-control:nth-child(1) { flex: 1.2; min-width: 120px; }
.adm-xk-rows .xk-row .btn { border-radius: 980px; min-height: 30px; color: #dc2626; border-color: #f5c6c6; }
.adm-add-xk { background: #eef4ff; color: #0071e3; border-radius: 980px; min-height: 36px; font-weight: 600; }
.adm-add-xk i { font-size: 11px; margin-right: 3px; }
.adm-upload-row { display: flex; gap: 8px; align-items: center; }
.adm-upload-row .btn { border-radius: 980px; min-height: 36px; white-space: nowrap; }
.adm-foot { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 14px; }
.adm-foot .btn { border-radius: 980px; min-height: 40px; padding: 8px 22px; }
.adm-foot .btn i { font-size: 12px; margin-right: 4px; }

/* 记录列表搜索条（胶囊） */
.adm-search-wrap { position: relative; flex: 1; min-width: 220px; max-width: 340px; }
.adm-search { width: 100%; min-height: 36px; border-radius: 980px !important; border: 1px solid #e5e7eb !important; background: #f8f9fb !important; padding: 6px 14px 6px 34px !important; font-size: 13px; }
.adm-search:focus { border-color: #0071e3 !important; background: #fff !important; box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important; }
.adm-search-ic { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); font-size: 12px; color: #86868b; pointer-events: none; }

/* 记录表（Apple 表格：头像圈 + 徽章 + 截图缩略） */
.adm-table tbody td { vertical-align: top; }
.adm-table .col-name { white-space: normal; }
.adm-table .col-name .av { margin-right: 8px; vertical-align: middle; }
.adm-table .col-name strong { font-size: 14px; vertical-align: middle; }
.adm-cls { font-size: 11px; color: #86868b; margin-top: 2px; }
.adm-lk { color: #0071e3; font-size: 15px; font-weight: 700; }
.adm-dim { color: #c7c7cc; font-size: 12px; }
.adm-xk-cell { max-width: 170px; }
.adm-xk-tag { font-size: 11px; color: #3a3a3c; background: #f5f7fa; border-radius: 8px; padding: 2px 8px; margin: 0 4px 4px 0; display: inline-block; }
.adm-xk-tag em { font-style: normal; font-weight: 700; margin-left: 4px; }
.adm-xk-tag .xk-pass { color: #16a34a; }
.adm-xk-tag .xk-fail { color: #dc2626; }
.adm-school b { color: #1d1d1f; font-size: 13px; }
.adm-major { display: block; font-size: 11px; color: #86868b; margin-top: 2px; }
.adm-batch { display: inline-block; font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 980px; white-space: nowrap; }
.adm-batch-blue   { background: #eef4ff; color: #0369a1; }
.adm-batch-green  { background: #e8f7ee; color: #15803d; }
.adm-batch-purple { background: #f3e8ff; color: #7c3aed; }
.adm-batch-orange { background: #fff4e5; color: #b45309; }
.adm-batch-gray   { background: #f5f5f7; color: #6b7280; }
.adm-shot-link { display: inline-block; }
.adm-shot-thumb { width: 56px; height: 40px; object-fit: cover; border-radius: 8px; border: 1px solid #eef1f5; box-shadow: 0 1px 4px rgba(0,0,0,.06); display: block; }
.adm-shot-link:hover .adm-shot-thumb { border-color: #0071e3; }
.adm-ops { display: flex; gap: 6px; flex-wrap: wrap; }
.adm-ops .btn { border-radius: 980px; min-height: 30px; font-size: 12px; }
.adm-ops .btn i { font-size: 10px; margin-right: 3px; }
.adm-ops .adm-del { color: #dc2626 !important; border-color: #f5c6c6 !important; }

/* 录取管理：手机端表格转卡片（td data-label） */
@media (max-width: 767px) {
    .adm-table-wrap { overflow: visible !important; }
    table.adm-table { min-width: 0 !important; }
    table.adm-table thead { display: none; }
    table.adm-table, table.adm-table tbody, table.adm-table tr, table.adm-table td { display: block; width: 100% !important; box-sizing: border-box; }
    table.adm-table tbody tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04); padding: 2px 14px; margin-bottom: 10px;
    }
    table.adm-table td {
        display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
        padding: 9px 0 !important; border-bottom: 1px dashed #f0f2f6; text-align: right;
    }
    table.adm-table td:last-child { border-bottom: none; }
    table.adm-table td::before {
        content: attr(data-label); font-size: 12px; color: #86868b;
        flex-shrink: 0; text-align: left; font-weight: 500;
    }
    table.adm-table .col-name strong { font-size: 15px; }
    table.adm-table .adm-xk-cell { max-width: none; }
    table.adm-table .adm-ops { justify-content: flex-end; width: 100%; }
    table.adm-table .adm-ops .btn { min-height: 36px; padding: 6px 16px; font-size: 13px; }
    table.adm-table tr.adm-empty td { display: block; text-align: center; padding: 24px 0 !important; }
    table.adm-table tr.adm-empty td::before { display: none; }
    .adm-shot-thumb { width: 72px; height: 50px; }
    .adm-form-grid > .form-group { flex: 1 1 100%; }
    .adm-form-grid .form-control { min-height: 42px; font-size: 16px; }
    .adm-xk-rows .xk-row { flex-wrap: wrap; }
    .adm-xk-rows .xk-row .form-control { min-height: 40px; }
    .adm-xk-rows .xk-row .form-control:nth-child(1) { flex: 1 1 100%; }
    .adm-foot .btn { flex: 1; min-height: 42px; font-size: 14px; }
    .adm-upload-row .btn { min-height: 40px; }
    .adm-search-wrap { max-width: none; }
}

/* ═══ 成绩分析 ═══ */

/* 考试选择 */
.sa-exam-form select.form-control { min-height: 38px; border-radius: 10px; border: 1px solid #e5e7eb; background: #fff; font-size: 13px; padding: 6px 10px; color: #1d1d1f; }

/* 分布条（Apple 细圆条） */
.sa-bars { padding: 6px 16px 14px; }
.sa-bar { margin-bottom: 10px; }
.sa-bar:last-child { margin-bottom: 0; }
.sa-bar-head { display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: #86868b; margin-bottom: 4px; }
.sa-bar-head b { color: #1d1d1f; font-weight: 700; }
.sa-bar-track { height: 10px; background: #f0f2f6; border-radius: 5px; overflow: hidden; }
.sa-bar-fill { height: 100%; border-radius: 5px; min-width: 2px; transition: width .4s; }
.sa-fill-blue   { background: linear-gradient(90deg, #0071e3, #4da3ff); }
.sa-fill-green  { background: linear-gradient(90deg, #34c759, #30d158); }
.sa-fill-red    { background: linear-gradient(90deg, #ff3b30, #ff6961); }
.sa-fill-orange { background: linear-gradient(90deg, #ff9500, #ffb340); }

/* 排名表 */
.sa-rank { font-weight: 700; }
.sa-rank-badge { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; font-size: 12px; font-weight: 700; }
.sa-rank-1 { background: linear-gradient(135deg, #f59e0b, #fbbf24); }
.sa-rank-2 { background: linear-gradient(135deg, #9ca3af, #cbd5e1); }
.sa-rank-3 { background: linear-gradient(135deg, #cd7f32, #d8a15a); }
.sa-delta { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; border-radius: 980px; padding: 2px 9px; white-space: nowrap; }
.sa-delta i { font-size: 9px; }
.sa-delta-up   { background: #e8f7ee; color: #16a34a; }
.sa-delta-down { background: #fdecec; color: #dc2626; }
.sa-delta-flat { background: #f5f5f7; color: #8b8b93; }
.sa-trend-btn { border-radius: 980px !important; }
.sa-trend-btn i { font-size: 10px; margin-right: 3px; }

/* 成绩分析：手机端表格转卡片 */
@media (max-width: 767px) {
    .sa-table-wrap { overflow: visible !important; }
    table.sa-table { min-width: 0 !important; }
    table.sa-table thead { display: none; }
    table.sa-table, table.sa-table tbody, table.sa-table tr, table.sa-table td { display: block; width: 100% !important; box-sizing: border-box; }
    table.sa-table tbody tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04); padding: 2px 14px; margin-bottom: 10px;
    }
    table.sa-table td {
        display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
        padding: 9px 0 !important; border-bottom: 1px dashed #f0f2f6; text-align: right;
    }
    table.sa-table td:last-child { border-bottom: none; }
    table.sa-table td::before {
        content: attr(data-label); font-size: 12px; color: #86868b;
        flex-shrink: 0; text-align: left; font-weight: 500;
    }
    table.sa-table .sa-trend-btn { min-height: 36px; padding: 6px 16px; }
    table.sa-table tr.sa-empty td { display: block; text-align: center; padding: 24px 0 !important; }
    table.sa-table tr.sa-empty td::before { display: none; }
    .sa-exam-form select.form-control { min-height: 42px; font-size: 15px; }
}

/* ═══ 课表总览 ═══ */

/* 工具栏（flex-wrap，X5 安全） */
.vw-toolbar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; align-items: flex-end; }
.vw-toolbar .form-group { margin-bottom: 0; }
.vw-label { font-size: 12px; color: #86868b; font-weight: 500; }
.vw-select { min-height: 38px; border-radius: 10px !important; border: 1px solid #e5e7eb !important; background: #fff !important; font-size: 13px !important; padding: 6px 10px !important; color: #1d1d1f; }
.vw-info { font-size: 13px; color: #86868b; margin-bottom: 12px; }

/* 视图切换：iOS 分段控件 */
.vw-seg { display: inline-flex; gap: 2px; background: #f2f2f7; border: 1px solid #eef1f5; border-radius: 10px; padding: 2px; }
.vw-seg-btn { border: none; border-radius: 8px; background: transparent; color: #4b5563; font-size: 13px; padding: 6px 14px; min-height: 32px; white-space: nowrap; }
.vw-seg-btn.on { background: #fff; color: #0071e3; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.vw-seg-btn:active { opacity: .7; }

/* 课时统计折叠面板 */
.vw-stats-panel { border: 1px solid #eef1f5; border-radius: 14px; background: #fff; margin-bottom: 12px; overflow: hidden; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.vw-stats-head { padding: 12px 16px; background: #f8fafc; cursor: pointer; display: flex; align-items: center; justify-content: space-between; }
.vw-stats-head strong { font-size: 14px; font-weight: 600; color: #1d1d1f; }
.vw-stats-arrow { color: #8a94a6; font-size: 12px; }
.vw-month-title { font-size: 13px; color: #86868b; }
.vw-hol-btn { background: #eef4ff; color: #0071e3; font-weight: 600; border-radius: 980px; min-height: 32px; }

/* 课表网格：表头吸顶 + 今日高亮 + 课程块圆角 */
.cal-block { border-radius: 8px !important; padding: 4px 7px !important; box-shadow: 0 1px 3px rgba(0,0,0,.05) !important; }
.cal-block:active { box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.cal-head-row { position: sticky; top: 0; z-index: 20; }
.cal-head-today { background: #eef7ff !important; }
.cal-period-label { background: #fafbfc; }
.vw-cls-card {
    border: 1px solid #eef1f5; border-radius: 14px; overflow-x: auto; overflow-y: hidden;
    -webkit-overflow-scrolling: touch; background: #fff; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.vw-cls-card > div[style*="grid-template-columns"] { min-width: 640px; }
.vw-month-grid { border: 1px solid #eef1f5; border-radius: 14px; overflow: hidden; background: #fff; box-shadow: 0 1px 6px rgba(0,0,0,.04); }

/* 课表总览：手机端 */
@media (max-width: 767px) {
    .vw-toolbar { align-items: stretch; }
    .vw-toolbar .form-group { flex: 1 1 46%; margin-bottom: 8px; }
    .vw-toolbar .form-group select { width: 100%; min-height: 40px; font-size: 15px; }
    .vw-seg { margin-left: 0 !important; flex: 1 1 100%; }
    .vw-seg-btn { flex: 1; min-height: 38px; font-size: 14px; }
    .vw-subrow .form-group { flex: 1 1 100%; }
    .vw-hol-btn { min-height: 38px; }
    .vw-stats-head { padding: 12px 14px; }
}

/* ══════════════════════════════════════════════════════════════════
   ═══ 学员管理三页 Apple 风重设计（入学登记 / 离校申请 / 招生查重）═══
   ═══ 追加于 style.css 末尾 · 不改动既有规则 · 手机端规则包在 @media ═══
   ══════════════════════════════════════════════════════════════════ */

/* ── 一、入学登记 enroll.html（前缀 en-） ───────────────── */

/* 录入方式 Tab：iOS 分段控件 */
.en-tabs {
    display: flex; gap: 2px; margin-bottom: 14px;
    background: #f2f2f7; border-radius: 12px; padding: 3px;
    width: fit-content;
}
.en-tab {
    border-radius: 980px !important;
    font-size: 13px !important; font-weight: 600;
    padding: 7px 18px !important; min-height: 34px;
    transition: background-color .15s, color .15s;
}
#tabSingleBtn[style*="background:var(--primary)"], #tabSingleBtn[style*="background: var(--primary)"],
#tabBatchBtn[style*="background:var(--primary)"], #tabBatchBtn[style*="background: var(--primary)"] { box-shadow: 0 1px 3px rgba(0,0,0,.15); }

/* 区块小标题（蓝色竖条） */
.en-sec-title {
    display: flex; align-items: center; gap: 7px;
    font-size: 13px !important; font-weight: 700 !important;
    color: #1d1d1f !important; margin-bottom: 10px !important;
    letter-spacing: -.1px;
}
.en-sec-title::before {
    content: ""; width: 3px; height: 14px; border-radius: 2px;
    background: #0071e3; flex: none;
}

/* 更多信息折叠链接 + 箭头 */
.en-more-link { font-weight: 500; }
#moreArrow, #pendingArrow, #activeArrow { display: inline-block !important; transition: transform .2s; }
#moreArrow::after {
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    content: "\f054"; font-size: 11px; color: #0071e3; margin-left: 2px;
}
#pendingArrow::after, #activeArrow::after {
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    content: "\f078"; font-size: 10px; margin-left: 2px;
}

/* 折叠卡片页头徽章（柔和浅底深字） */
.en-fold-warn, .en-fold-ok {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 5px 14px; border-radius: 980px;
    font-size: 13px !important; font-weight: 600 !important; letter-spacing: -.1px;
}
.en-fold-warn { background: #fff4e5; color: #b45309 !important; }
.en-fold-ok   { background: #e8f7ee; color: #16a34a !important; }

/* 表单：大输入框 + 清晰标签 + 聚焦蓝光 */
#singleForm .form-control, #batchForm .form-control {
    min-height: 40px !important; border-radius: 10px;
    font-size: 14px !important; padding: 9px 14px !important;
    background: #f7f8fa; border: 1px solid transparent;
    box-sizing: border-box;
}
#singleForm .form-control:focus, #batchForm .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
#singleForm .form-group label, #batchForm .form-group label {
    font-size: 12.5px; font-weight: 600; color: #6e6e73; margin-bottom: 6px;
}
#singleForm input[type=checkbox], #batchForm input[type=checkbox] { accent-color: #0071e3; width: 16px; height: 16px; }
#quickMode { width: 17px !important; height: 17px !important; }

/* 快速建档面板 */
#quickSection {
    background: #f5f9ff !important;
    border: 1px solid #cfe2ff !important;
    border-radius: 14px !important; padding: 14px !important;
}
#quickSection #quickRoomLabel {
    background: #fff !important; border: 1px solid #e3e6ea !important;
    cursor: pointer;
}

/* 提交按钮（胶囊） */
#singleForm button[type=submit] {
    border-radius: 980px !important; min-height: 40px;
    padding: 10px 28px !important; font-size: 14px !important;
    background: #0071e3 !important; border-color: #0071e3 !important;
    box-shadow: 0 2px 8px rgba(0,113,227,.25);
}
.en-submit-hint { font-size: 12px !important; color: #86868b !important; }
#batchForm button[type=submit] {
    border-radius: 980px !important; min-height: 40px; padding: 9px 24px !important;
}

/* 列表徽章柔和化（试学/培训类型/流程状态） */
#pendingFold td span[style*="border-radius"],
#activeFold td span[style*="border-radius"] {
    border-radius: 8px !important;
    padding: 2px 9px !important;
    font-size: 11px !important; font-weight: 600;
}

/* 表格操作按钮 */
#pendingFold .btn-xs, #activeFold .btn-xs {
    border-radius: 980px !important; min-height: 30px;
    padding: 5px 14px !important; font-size: 12px !important;
}

/* 在册学员搜索框 */
#activeSearch {
    border-radius: 980px !important;
    min-height: 34px; padding: 5px 14px !important;
    font-size: 13px !important; width: 150px !important;
}

/* 宿舍选择器：房间卡 X5 加固（flex-wrap 容器 → inline-block 子项） */
#dormPickerBody div[style*="flex-wrap"] { display: block; font-size: 0; }
#dormPickerBody div[style*="flex-wrap"] > div {
    display: inline-block !important; vertical-align: top;
    margin: 0 6px 8px 0 !important; font-size: 13px;
    box-sizing: border-box;
}

/* ── 二、离校申请 depart.html（前缀 dp-） ───────────────── */

/* 退费流程条：白卡化 + 柔和胶囊步骤 */
.dp-flow {
    display: flex !important; align-items: center; gap: 6px; flex-wrap: wrap;
    background: #fff !important; border: 1px solid #eef1f5 !important;
    border-radius: 14px !important; box-shadow: 0 1px 6px rgba(0,0,0,.04);
    padding: 10px 14px !important; margin-bottom: 12px !important;
}
.dp-flow-label { font-size: 12px !important; color: #6e6e73 !important; font-weight: 600; }
.dp-flow-step {
    border-radius: 980px !important;
    padding: 5px 12px !important; font-size: 12px !important; font-weight: 600;
    line-height: 1.5; white-space: nowrap;
}
.dp-flow-arrow { color: #c7c7cc !important; font-size: 12px !important; font-weight: 600; }

/* 离校申请表单 */
#departForm .form-control {
    min-height: 40px !important; border-radius: 10px;
    font-size: 14px !important; padding: 9px 14px !important;
    background: #f7f8fa; border: 1px solid transparent; box-sizing: border-box;
}
#departForm .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
#departForm .form-group label { font-size: 12.5px; font-weight: 600; color: #6e6e73; margin-bottom: 6px; }
#departForm textarea.form-control { min-height: 72px !important; }
#departForm button[type=submit] {
    border-radius: 980px !important; min-height: 42px;
    padding: 10px 28px !important; font-size: 14px !important;
    background: #0071e3 !important; border-color: #0071e3 !important;
    box-shadow: 0 2px 8px rgba(0,113,227,.25);
}

/* 学员搜索下拉 */
#stuSearch { border-radius: 12px !important; }
#stuList {
    border: 1px solid #eef1f5 !important;
    border-radius: 12px !important;
    box-shadow: 0 12px 32px rgba(0,0,0,.14) !important;
    overflow: hidden;
}
#stuList div { padding: 10px 14px !important; border-bottom: 1px solid #f0f2f6 !important; }
#stuList div:active { background: #f0f6ff !important; }
#stuList div:last-child { border-bottom: none !important; }

/* 离校记录表：状态徽章柔和胶囊 + 操作按钮 */
#dpTable td strong { color: #1d1d1f; }
#dpTable .badge {
    border-radius: 980px !important;
    padding: 3px 12px !important; font-size: 11px !important; font-weight: 600;
    line-height: 1.5;
}
#dpTable .btn-xs, #dpTable a.btn-xs {
    border-radius: 980px !important; min-height: 30px;
    padding: 5px 12px !important; font-size: 12px !important;
}

/* 退费/明细/宿管检查弹窗：flex 布局 + 头尾固定 */
#refundModal .modal-box, #detailModal .modal-box, #dormModal .modal-box {
    border-radius: 18px; max-height: 90vh;
    display: flex !important; flex-direction: column !important; overflow: hidden;
}
#refundModal .modal-box > div:first-child,
#detailModal .modal-box > div:first-child,
#dormModal .modal-box > div:first-child { flex: none; }
#refundModal .modal-box > div:nth-child(2) {
    flex: 1; min-height: 0; overflow-y: auto;
    max-height: none !important;
}
#refundModal .modal-box > div:last-child { flex: none; }
#detailModal #detailBody { flex: 1; min-height: 0; overflow-y: auto; }
#dormModal .modal-box form { flex: 1; min-height: 0; overflow-y: auto; }
#refundModal .modal-box .btn, #dormModal .modal-box .btn {
    border-radius: 980px !important; min-height: 40px; padding: 8px 22px !important;
}

/* 退费预览明细表 */
#refundPreviewBody table { font-size: 13px; }
#refundTotal { letter-spacing: -.5px; }

/* ── 三、招生查重 check.html（前缀 ck-） ───────────────── */

/* 查重搜索条 */
.ck-search { display: flex; gap: 8px; }
.ck-search .form-control {
    flex: 1; min-height: 44px; border-radius: 12px;
    font-size: 15px !important; padding: 10px 16px !important;
    background: #f7f8fa; border: 1px solid transparent; box-sizing: border-box;
}
.ck-search .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
.ck-search .btn {
    border-radius: 980px !important; min-height: 44px;
    padding: 10px 22px !important; font-size: 14px !important; white-space: nowrap;
}
.ck-result-info { font-size: 13px !important; color: #6e6e73 !important; }

/* 查重/录入表格 */
.ck-table td strong { color: #1d1d1f; }
.ck-table td[data-label="电话"] { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .2px; }
.ck-table .btn-xs { border-radius: 980px !important; min-height: 30px; padding: 5px 14px !important; }

/* 需协助柔和徽章 */
.ck-assist {
    display: inline-block; background: #fff4e5; color: #d97706;
    padding: 2px 10px; border-radius: 980px;
    font-size: 11px; font-weight: 600; line-height: 1.5;
}

/* 空结果状态 */
.ck-empty {
    background: #fafbfc; border: 1px dashed #e5e7eb;
    border-radius: 14px; padding: 30px 16px !important;
}
.ck-empty-ic::before {
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    content: "\f002"; font-size: 34px; color: #c7c7cc;
}

/* 录入接触学员表单 */
#recruitForm .form-control {
    min-height: 40px !important; border-radius: 10px;
    font-size: 14px !important; padding: 9px 14px !important;
    background: #f7f8fa; border: 1px solid transparent; box-sizing: border-box;
}
#recruitForm .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
#recruitForm .form-group label { font-size: 12.5px; font-weight: 600; color: #6e6e73; margin-bottom: 6px; }
#recruitForm input[type=checkbox] { accent-color: #0071e3; width: 16px; height: 16px; }
#recruitForm input[type=file].form-control { padding: 6px 10px !important; }
#recruitForm .btn { border-radius: 980px !important; min-height: 40px; padding: 9px 24px !important; }

/* 批量导入（页头内嵌） */
.ck-import-form input[type=file] {
    max-width: 150px; min-height: 30px; padding: 4px 10px;
    border-radius: 980px; font-size: 12px;
}
.ck-import-form .btn { border-radius: 980px !important; min-height: 30px; }

/* ── 四、手机端（≤767px）────────────────────────── */
@media (max-width: 767px) {

    /* 表格操作按钮加大（36px 触控） */
    #pendingFold .btn-xs, #activeFold .btn-xs,
    #dpTable .btn-xs, #dpTable a.btn-xs,
    .ck-table .btn-xs {
        min-height: 36px !important;
        padding: 8px 16px !important;
        font-size: 13px !important;
    }

    /* 录入 Tab 占满整行 */
    .en-tabs { width: 100% !important; }
    .en-tab { flex: 1; padding: 8px 10px !important; }

    /* 表单字段单列（block 布局，X5 稳定） */
    #singleForm .form-row, #batchForm .form-row,
    #batchForm form .form-row, #quickSection .form-row,
    #recruitForm, #departForm {
        display: block !important;
    }
    #singleForm .form-row .form-group, #batchForm .form-row .form-group,
    #quickSection .form-row .form-group,
    #recruitForm .form-group, #departForm .form-group {
        width: 100% !important; min-width: 100% !important;
        flex: none !important; margin-bottom: 12px !important;
    }

    /* 提交按钮全宽 */
    #singleForm button[type=submit], #batchForm button[type=submit] {
        width: 100%; min-height: 44px;
    }
    #singleForm .en-submit-row { display: block !important; }
    #singleForm .en-submit-row .en-submit-hint { display: block; margin-top: 8px; }
    #departForm button[type=submit] { width: 100%; min-height: 44px; }
    #departForm .form-group:last-child label { display: none; }
    #recruitForm .form-group:last-child { display: flex !important; gap: 8px; }
    #recruitForm .form-group:last-child .btn { flex: 1; min-height: 42px; }

    /* 在册学员搜索框全宽 */
    #activeSearch { width: 100% !important; min-height: 38px; }

    /* 批量导入（页头内嵌）窄屏收纳 */
    .ck-import-form input[type=file] { max-width: 110px; min-height: 34px; }

    /* 弹窗全屏化（入学宿舍选择 + 离校三弹窗） */
    #dormPickerModal.modal-overlay, #refundModal.modal-overlay,
    #detailModal.modal-overlay, #dormModal.modal-overlay {
        padding: 0 !important; align-items: stretch !important;
    }
    #dormPickerModal .modal-box,
    #refundModal .modal-box,
    #detailModal .modal-box,
    #dormModal .modal-box {
        height: 100% !important; max-height: 100% !important;
        width: 100% !important; border-radius: 0 !important;
    }
    #refundPreviewBody { padding: 12px 16px !important; }

    /* 流程条步骤换行更宽松 */
    .dp-flow { gap: 6px; padding: 12px 14px !important; }
    .dp-flow-step { white-space: normal; }
}

/* ═══ iOS 风格开关（考试课量排课） ═══ */
.yd-switch {
    width: 51px; height: 31px; border-radius: 16px;
    background: #e9e9ea;
    position: relative; display: inline-block;
    transition: background .2s; cursor: pointer;
    flex-shrink: 0;
}
.yd-switch::after {
    content: ''; position: absolute; top: 2px; left: 2px;
    width: 27px; height: 27px; border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0,0,0,.25);
    transition: transform .2s;
}
.yd-switch.on { background: #34c759; }
.yd-switch.on::after { transform: translateX(20px); }
.yd-switch:active::after { width: 31px; }
@media (max-width: 767px) {
    #examHoursRow input[type=number] { font-size: 16px; }
}


/* ═══════════════════════════════════════════════════════════════
   ═ 学员总览(overview) / 报名表(apply) / 报名完成(apply_done) Apple 风重设计
   ═ 仅追加覆盖，不删除上方任何已有规则
   ═══════════════════════════════════════════════════════════════ */

/* ── 全局主色统一 #0071e3（白卡规范下的 Apple 蓝）── */
.btn-primary { background: #0071e3; }
.btn-primary:hover { background: #0077ed; box-shadow: 0 2px 8px rgba(0,113,227,.3); }
.btn-outline:hover { border-color: #0071e3; color: #0071e3; }
.form-control:focus { background: #fff; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.15); }

/* ── 学员总览：顶部统计模块白卡化 ──
   弃深渐变卡；容器 block + 子项 inline-block（防 X5 grid/flex 倒序沉底）*/
#dashModuleGrid { display: block; font-size: 0; }
#dashModuleGrid .dash-top-item {
    display: inline-block; vertical-align: top;
    width: calc(50% - 10px); margin: 4px 5px; box-sizing: border-box;
    font-size: 14px; font-family: var(--font);
}
@media (min-width: 768px) { #dashModuleGrid .dash-top-item { width: calc(25% - 10px); } }
.ov-stat {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; min-height: 88px; box-sizing: border-box;
    box-shadow: 0 1px 6px rgba(0,0,0,.04); position: relative;
}
/* 后端下发的 dc-* 模块色：仅作用于图标底/色（0,2,0 覆盖旧渐变规则） */
.ov-stat.dc-blue, .ov-stat.dc-green, .ov-stat.dc-orange,
.ov-stat.dc-purple, .ov-stat.dc-red, .ov-stat.dc-teal {
    background: #fff; border: 1px solid #eef1f5;
    border-radius: 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.ov-ic {
    width: 30px; height: 30px; border-radius: 9px;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 13px;
}
.ov-stat.dc-blue .ov-ic { background: #eef4ff; color: #0071e3; }
.ov-stat.dc-green .ov-ic { background: #e8f7ee; color: #34c759; }
.ov-stat.dc-orange .ov-ic { background: #fff4e6; color: #ff9500; }
.ov-stat.dc-purple .ov-ic { background: #f3eefe; color: #af52de; }
.ov-stat.dc-red .ov-ic { background: #fdecec; color: #ff3b30; }
.ov-stat.dc-teal .ov-ic { background: #e6f7f7; color: #30b0c7; }
.ov-val {
    font-size: 26px; font-weight: 700; letter-spacing: -0.5px;
    color: #1d1d1f; line-height: 1.15; margin-top: 10px;
    font-variant-numeric: tabular-nums; white-space: nowrap;
}
.ov-label { font-size: 12px; color: #86868b; margin-top: 2px; }
/* 柱状图/进度条去渐变 → 纯色 Apple 蓝 */
.bar { background: #0071e3 !important; }
#dashBigCards .pbar-fill { background: #0071e3 !important; }
/* 编辑态：白卡上的拖拽柄/缩放手柄 + 虚线框 */
#dashModuleGrid .dash-grip { color: #c7c7cc; }
.dash-resize { color: #0071e3; }
body.dash-editing .ov-stat { outline: 1.5px dashed rgba(0,113,227,.55); outline-offset: 2px; }
/* 拖拽目标高亮：白卡保持白底、文字深色 */
#dashModuleGrid .dash-target { background: #fff !important; }
#dashModuleGrid .dash-target .ov-ic,
#dashModuleGrid .dash-target .ov-val,
#dashModuleGrid .dash-target .ov-label { color: #1d1d1f !important; }

/* ── 学员总览：内容卡手机端 block 堆叠（防 X5 flex 乱序）── */
@media (max-width: 767px) {
    #dashBigCards { display: block !important; }
    #dashBigCards > .dash-big-card { width: 100% !important; margin-bottom: 12px; }
    #dashBigCards table td { font-size: 12px; }
    #dashBigCards td .pbar { width: auto !important; flex: 1; min-width: 56px; margin-left: 8px; }
}
/* 行内小标签：手机卡片化时隐藏（td:before 已展示 data-label） */
.ov-rowlabel { display: none; }
@media (min-width: 768px) { .ov-rowlabel { display: inline; } }

/* ═══ 报名表 / 报名完成页（免登录分享页 · 独立挂接本样式表）═══ */
.ap-page {
    font-family: var(--font);
    background: #f5f5f7 !important;
    -webkit-font-smoothing: antialiased;
}
.ap-page .wrap { max-width: 520px; margin: 0 auto; }
.ap-page .logo { text-align: center; margin-bottom: 20px; }
.ap-page .badge {
    width: 56px; height: 56px; border-radius: 16px;
    background: linear-gradient(135deg, #0071e3, #0a84ff);
    display: flex; align-items: center; justify-content: center;
    font-size: 26px; color: #fff; margin: 0 auto 10px;
    box-shadow: 0 8px 24px rgba(0,113,227,.3);
}
.ap-page .logo h1 { font-size: 20px; font-weight: 700; color: #1d1d1f; }
.ap-page .logo p { font-size: 12px; color: #86868b; margin-top: 4px; }
.ap-page .card {
    background: #fff; border: 1px solid #eef1f5;
    border-radius: 16px; padding: 20px; margin-bottom: 16px;
    box-shadow: 0 4px 20px rgba(0,0,0,.06);
}
.ap-page .card h3 { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 14px; }
.ap-page .form-group { margin-bottom: 14px; }
.ap-page .form-group label {
    display: block; font-size: 13px; font-weight: 500;
    color: #515154; margin-bottom: 6px;
}
/* 大输入框：min-height 40px + 聚焦蓝光 */
.ap-page .form-group input,
.ap-page .form-group select {
    width: 100%; min-height: 40px; padding: 10px 12px;
    border: 1px solid #d2d2d7; border-radius: 12px;
    font-size: 14px; color: #1d1d1f; background: #fff;
    outline: none; -webkit-appearance: none; appearance: none;
    box-sizing: border-box;
}
.ap-page .form-group input:focus,
.ap-page .form-group select:focus {
    border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
.ap-page select {
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238a93a3' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px;
}
/* 两列行：桌面 flex 一行，手机 block 单列（禁 grid——X5 乱序） */
.ap-page .row { display: flex; gap: 10px; }
.ap-page .row .form-group { flex: 1; min-width: 0; }
@media (max-width: 767px) {
    .ap-page .row { display: block; }
    .ap-page .row .form-group { margin-bottom: 14px; }
}
/* 报名类型分段（正式报名） */
.ap-page .mode-tabs { display: flex; gap: 8px; margin-bottom: 14px; }
.ap-page .mode-tab {
    flex: 1; padding: 12px; border: 2px solid #0071e3;
    border-radius: 12px; text-align: center;
    background: #eef4ff; cursor: default;
}
.ap-page .mode-tab .t { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.ap-page .mode-tab .d { font-size: 11px; color: #86868b; margin-top: 2px; }
/* 提交按钮：全宽胶囊 */
.ap-page .btn {
    display: block; width: 100%; min-height: 48px;
    padding: 13px; border: none; border-radius: 980px;
    background: linear-gradient(135deg, #0071e3, #0a84ff);
    color: #fff; font-size: 16px; font-weight: 600;
    cursor: pointer; box-shadow: 0 4px 12px rgba(0,113,227,.25);
    text-decoration: none; text-align: center; line-height: 1.4;
    box-sizing: border-box; -webkit-appearance: none;
}
.ap-page .btn:active { transform: scale(.98); }
.ap-page .footer { text-align: center; font-size: 11px; color: #86868b; margin-top: 16px; }
/* 提示条（覆盖页面内联未定义 var 导致的透明背景） */
.ap-page .ap-flash {
    background: #e8f7ee !important; color: #16a34a !important;
    border-radius: 12px; padding: 12px 14px; font-size: 13px;
    margin-bottom: 14px; border: 1px solid #b7e3c5;
}
.ap-page .ap-flash-danger { background: #fdecec !important; color: #dc2626 !important; border-color: #f5c6c6; }
/* 报名完成页：居中白卡 + 绿色对勾 + 全宽胶囊按钮 */
.ap-page.ap-done .card {
    max-width: 380px; width: 100%; padding: 40px 32px;
    text-align: center; border-radius: 20px;
}
.ap-page.ap-done .icon {
    width: 72px; height: 72px; border-radius: 50%;
    background: #e8f7ee; color: #34c759;
    display: flex; align-items: center; justify-content: center;
    font-size: 32px; margin: 0 auto 16px;
}
.ap-page.ap-done h1 { font-size: 20px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
.ap-page.ap-done p { font-size: 13px; color: #86868b; line-height: 1.7; }
.ap-page.ap-done a.btn { display: block; margin: 20px auto 0; }

/* ── 手机端基础：按钮 min-height 36px、输入框 16px（防 iOS 聚焦缩放）── */
@media (max-width: 767px) {
    .main .btn { min-height: 36px; }
    .ap-page input, .ap-page select { font-size: 16px !important; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 排课管理 settings.html + 离校单 depart_slip.html — Apple 风统一层
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── 排课管理：主色收敛为 Apple 蓝（仅 .sd-page 作用域，不影响他页） ── */
.sd-page .btn-primary { background: #0071e3; }
.sd-page .btn-primary:hover { background: #0a66c9; box-shadow: 0 2px 8px rgba(0,113,227,.3); }
.sd-page .btn-success { background: #34c759; }
.sd-page .btn-success:hover { background: #28a745; box-shadow: 0 2px 8px rgba(52,199,89,.3); }

/* ── 卡片：白底 + 圆角 16px ── */
.sd-card { border-radius: 16px; border: 1px solid #eef1f5; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.sd-card-head { background: #fff; border-bottom: 1px solid #f0f2f6; padding: 14px 16px; }
.sd-card-head .sd-head-title {
    display: inline-flex; align-items: center; gap: 8px;
    font-weight: 600; font-size: 14px; color: #1d1d1f;
}
.sd-card-head .sd-head-title > i { color: #0071e3; font-size: 13px; }
.sd-card-body { padding: 14px 16px; }

/* ── 步骤徽标（圆形蓝点 / 灰色齿轮） ── */
.sd-badge {
    width: 22px; height: 22px; border-radius: 50%;
    background: #0071e3; color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; flex-shrink: 0;
    box-shadow: 0 1px 4px rgba(0,113,227,.35);
}
.sd-badge-gray { background: #8e99ab; box-shadow: none; font-size: 11px; }

/* ── 表单行（flex 换行，X5 稳定） ── */
.sd-form-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.sd-fg { margin-bottom: 0; }
.sd-fg label { font-size: 12px; color: #86868b; }
.sd-inline { display: flex; gap: 6px; }
.sd-sel { min-height: 36px; }

/* ── 提示条 ── */
.sd-hint {
    display: flex; gap: 6px; align-items: flex-start;
    font-size: 12px; color: #86868b; line-height: 1.6; margin-top: 10px;
    background: #f7f9fc; border: 1px solid #eef1f5; border-radius: 10px;
    padding: 8px 10px;
}
.sd-hint i { color: #0071e3; margin-top: 2px; flex-shrink: 0; }

/* ── 班级配置卡网格（桌面 grid；手机 block 防 X5 乱序） ── */
@media (min-width: 768px) {
    .sd-cfg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
}
.cls-cfg-card {
    border-radius: 14px !important;
    box-shadow: 0 1px 4px rgba(0,0,0,.03);
    transition: box-shadow .2s, transform .2s, border-color .2s;
}
.cls-cfg-card:hover {
    box-shadow: 0 6px 18px rgba(0,0,0,.08);
    transform: translateY(-1px); border-color: #d8e2ef !important;
}
.cls-cfg-card select.form-control {
    border-radius: 8px; background: #f2f4f7; font-size: 13px;
    border: 1px solid transparent;
    padding-top: 7px !important; padding-bottom: 7px !important;
}
.cls-cfg-card select.form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.12);
}

/* ── 一键生成：分段胶囊按钮 ── */
.sd-seg { display: inline-flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.sd-seg-btn {
    border-radius: 999px !important;
    border: 1px solid #e8ebf1; background: #fff;
    padding: 6px 18px !important; font-size: 13px; font-weight: 500;
    transition: all .15s;
}
.sd-seg-btn:active { transform: scale(.97); }

/* ── 高级设置：胶囊 Tab ── */
.adv-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.adv-tab {
    border-radius: 999px !important;
    border: 1px solid #e8ebf1; background: #fff;
    padding: 6px 16px !important; font-size: 13px;
    transition: all .15s;
}
.adv-tab:active { transform: scale(.97); }
.sd-adv-head { user-select: none; }
.sd-adv-arrow {
    width: 24px; height: 24px; border-radius: 50%;
    background: #f2f4f7; color: #86868b;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; flex-shrink: 0;
}

/* ── 高级设置：分区标题 / 表格容器 / 日历 ── */
.sd-sec-title {
    display: flex; align-items: center; gap: 6px;
    font-size: 13px; font-weight: 600; color: #1d1d1f; margin-bottom: 10px;
}
.sd-sec-title i { color: #0071e3; font-size: 12px; }
.sd-table { border: 1px solid #eef1f5; border-radius: 12px; overflow: hidden; margin-top: 10px; background: #fff; }
.sd-table table { margin: 0; }
.sd-cal { border: 1px solid #eef1f5; border-radius: 14px; overflow: hidden; background: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.03); }
.sd-cal-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 8px 12px; background: #f8fafc; border-bottom: 1px solid #eef1f5;
}
.sd-cal-foot {
    padding: 6px 12px; font-size: 11px; color: #8a94a6;
    background: #fbfbfd; border-top: 1px solid #f0f2f7;
}

/* ── 老师课量网格（桌面 grid；手机 block） ── */
@media (min-width: 768px) {
    .sd-tl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 8px; }
}

/* ── 排课管理：手机适配 ── */
@media (max-width: 767px) {
    .sd-page .btn { min-height: 36px; }
    .sd-card-head { padding: 12px 14px; }
    .sd-card-body { padding: 12px 14px; }
    .sd-form-row > .form-group { width: 100%; min-width: 100%; flex: none; }
    .sd-form-row > .form-group .sd-inline { width: 100%; }
    .sd-form-row > .form-group .sd-inline select { flex: 1; min-width: 0; }
    #cfgCards, .sd-tl-grid { display: block !important; }
    #cfgCards .cls-cfg-card { width: 100%; margin-bottom: 12px; }
    .sd-seg { width: 100%; }
    .sd-seg-btn { flex: 1; }
    .adv-tabs { gap: 6px; }
    .adv-tab { flex: 1; min-width: 68px; }
    .sd-hint { margin-top: 8px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 离校单 depart_slip.html — Apple 风打印页
   ═══════════════════════════════════════════════════════════════ */
.slip-page { max-width: 720px; margin: 0 auto; }
.slip-card {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,.04); overflow: hidden; margin-top: 4px;
}
.slip-head {
    background: linear-gradient(180deg, #f7f9fc, #fff);
    text-align: center; padding: 26px 20px 18px;
    border-bottom: 1px solid #f0f2f6; position: relative;
}
.slip-head::before {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px;
    background: linear-gradient(90deg, #0071e3, #5ac8fa);
}
.slip-brand {
    width: 44px; height: 44px; border-radius: 12px;
    background: #eef4ff; color: #0071e3; font-size: 18px;
    display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 10px;
}
.slip-title { font-size: 21px; font-weight: 800; letter-spacing: 4px; color: #1d1d1f; margin: 0 0 10px; }
.slip-meta { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.slip-pill {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 11px; color: #86868b; background: #f2f4f7;
    border: 1px solid #e8ebf1; border-radius: 999px; padding: 3px 10px;
}
.slip-pill i { color: #0071e3; font-size: 10px; }
.slip-body { padding: 18px 40px 26px; }
.slip-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.slip-table tr:nth-child(even) { background: none; }
.slip-table td { padding: 9px 10px; vertical-align: top; border-bottom: 1px solid #f0f2f6; line-height: 1.7; }
.slip-table tr:last-child td { border-bottom: none; }
.slip-table .slip-lbl { width: 92px; color: #86868b; font-size: 13px; white-space: nowrap; }
.slip-name { font-size: 15px; }
.slip-badge {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 12px; font-weight: 600; border-radius: 999px; padding: 3px 10px;
    white-space: nowrap;
}
.slip-badge-danger { background: #ffebee; color: #dc2626; }
.slip-badge-ok { background: #ecfdf3; color: #16a34a; }
.slip-sub { font-size: 11px; color: #86868b; margin-left: 4px; }
.slip-note {
    display: flex; gap: 8px; align-items: center;
    margin-top: 16px; padding: 8px 12px;
    background: #f7f9fc; border: 1px solid #eef1f5; border-radius: 10px;
    font-size: 12px; color: #86868b;
}
.slip-note i { color: #0071e3; }
.slip-signs { display: flex; gap: 20px; margin-top: 34px; padding: 0 8px; }
.slip-sign { flex: 1; text-align: center; min-width: 0; }
.ss-head {
    height: 54px; display: flex; align-items: flex-end; justify-content: center; gap: 5px;
    font-size: 13px; color: #1d1d1f; font-weight: 600;
}
.ss-head i { color: #86868b; font-size: 12px; flex-shrink: 0; }
.ss-head span { color: #86868b; font-weight: 400; font-size: 12px; }
.ss-line { border-top: 1.5px solid #8a93a3; margin: 0 4px; }
.ss-role { font-size: 12px; color: #86868b; margin-top: 6px; }

/* ── 离校单：手机适配（表格转卡片：隐藏标签列 + data-label 成对显示） ── */
@media (max-width: 767px) {
    .slip-page .btn { min-height: 36px; }
    .slip-body { padding: 12px 14px 20px; }
    .slip-head { padding: 20px 14px 14px; }
    .slip-title { font-size: 18px; letter-spacing: 2px; }
    .slip-table td { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 2px; }
    .slip-table .slip-lbl { display: none; }
    .slip-table td[colspan]::before {
        content: attr(data-label);
        font-weight: 500; color: #86868b; font-size: 12px; flex-shrink: 0; margin-right: 10px;
    }
    .slip-signs { flex-direction: column; gap: 22px; }
    .slip-note { align-items: flex-start; }
}


/* ════════════════════════════════════════════════════════════
   ═ 学员收费页（fee/manage.html）· Apple 风重设计（追加层）
   ═ 统计卡白卡 / 搜索筛选 / 列表手机卡片化 / 表格精致化
   ═ 4 步收费表单结构未动；本块全部为新增规则，勿删已有
   ════════════════════════════════════════════════════════════ */

/* ── ① 统计卡单位后缀（人/条） ── */
.fee-unit {
    font-style: normal; font-size: 13px; font-weight: 500;
    color: #86868b; margin-left: 4px; letter-spacing: 0;
}

/* ── ② 收费记录搜索框：复用 .rs-s-input/.rs-s-clear 圆角大框 ── */
.fee-search-wrap { width: 180px; flex: none; }
.fee-search-wrap .rs-s-input {
    min-height: 36px; font-size: 13px;
    padding: 6px 34px 6px 12px !important;
}
@media (max-width: 767px) {
    .fee-search-wrap { width: 100%; }
    .fee-search-wrap .rs-s-input { min-height: 44px; font-size: 16px; }
}

/* ── ③ 班级标签（浅蓝胶囊，手机卡片 + 表格通用） ── */
.fee-cls-tag {
    display: inline-block;
    background: #eef4ff; color: #0071e3;
    font-size: 11px; font-weight: 600;
    padding: 1px 10px; border-radius: 980px;
    line-height: 1.6; white-space: nowrap;
}

/* ── ④ 状态徽章（柔和） ── */
.fee-badge {
    display: inline-block;
    font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 980px;
    line-height: 1.5; white-space: nowrap;
}
.fee-badge-blue { background: #eef4ff; color: #0071e3; }
.fee-badge-gray { background: #f5f5f5; color: #8b8b93; }

/* ── ⑤ 收费表格：表头浅灰 + 行 hover + 金额深色大字号 ── */
.fee-table { border-collapse: separate !important; border-spacing: 0 !important; }
.fee-table thead th {
    background: #f8fafc !important; color: #6b7280 !important;
    font-weight: 600 !important; font-size: 12px !important;
    padding: 12px 14px !important;
    border-bottom: 1px solid #eef1f5 !important;
    white-space: nowrap; text-transform: none; letter-spacing: 0;
}
.fee-table thead th:first-child { border-radius: 12px 0 0 0; }
.fee-table thead th:last-child  { border-radius: 0 12px 0 0; }
.fee-table tbody td {
    padding: 12px 14px !important;
    border-bottom: 1px solid #f4f5f7 !important;
    vertical-align: middle;
}
.fee-table tbody tr { transition: background .12s; }
.fee-table tbody tr:nth-child(even) { background: transparent; }
.fee-table tbody tr:hover { background: #f5faff !important; }
.fee-table tbody tr:last-child td { border-bottom: none !important; }
/* 表头吸顶（桌面） */
@media (min-width: 768px) {
    .fee-table thead th { position: sticky; top: 0; z-index: 5; }
}
/* 金额列：深色大字号（欠费红 / 已收绿 仅语义色） */
#feeTable thead th { text-align: right; }
#feeTable thead th:first-child, #feeTable thead th:last-child { text-align: left; }
#feeTable td[data-label="姓名"] { font-weight: 600; }
#feeTable td[data-label="姓名"] .editable-name {
    font-size: 14px; font-weight: 700; color: #1d1d1f;
    cursor: text; letter-spacing: -0.2px;
}
#feeTable td[data-label="学费"],
#feeTable td[data-label="伙食住宿"],
#feeTable td[data-label="其他"] { color: #4b5563; }
#feeTable td[data-label="合计"] strong { font-size: 15px; color: #1d1d1f; letter-spacing: -0.2px; }
#feeTable td[data-label="已收"] { color: #16a34a; font-weight: 600; }
#feeTable td[data-label="欠费"] { font-size: 14px; font-weight: 600; }
#feeTable td[data-label="优惠"] { font-size: 12px; }

/* ── ⑥ 手机端：表格转卡片（td data-label + td:before，inline-block/flex 防 X5 乱序） ── */
@media (max-width: 767px) {
    .fee-table-wrap { overflow: visible !important; }
    .fee-table tbody { display: block; padding: 10px 12px; }
    .fee-table tbody tr {
        display: block; background: #fff !important;
        border: 1px solid #eef1f5; border-radius: 16px;
        box-shadow: 0 1px 6px rgba(0,0,0,.04);
        padding: 12px 14px; margin-bottom: 10px;
    }
    .fee-table tbody tr:last-child { border-bottom: 1px solid #eef1f5; }
    .fee-table tbody tr:nth-child(even) { background: #fff !important; }
    .fee-table tbody td {
        display: flex !important; justify-content: space-between; align-items: center;
        padding: 6px 0 !important; border-bottom: none !important;
        font-size: 14px !important; min-height: 30px; text-align: right !important;
    }
    .fee-table tbody td:before {
        content: attr(data-label);
        font-size: 12px !important; color: #86868b; font-weight: 500;
        margin-right: auto; text-align: left; flex-shrink: 0;
    }
    .fee-table tbody td[data-label=""]:before,
    .fee-table tbody td.nolabel:before { content: none; }
    /* 姓名：17px 粗 + 班级标签 + 详情（左对齐折行） */
    .fee-table tbody td[data-label="姓名"] {
        justify-content: flex-start; flex-wrap: wrap; gap: 4px 8px;
    }
    .fee-table tbody td[data-label="姓名"]:before { display: none; }
    .fee-table tbody td[data-label="姓名"] .editable-name,
    .fee-table tbody td[data-label="姓名"] strong {
        font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px;
    }
    .fee-table tbody td[data-label="姓名"] br { display: none; }
    .fee-table tbody td[data-label="姓名"] a {
        font-size: 12px !important; margin-left: 6px;
    }
    /* 欠费：红字大号 + 浅红底（仅真正欠费行） */
    .fee-table tbody td[data-label="欠费"][style*="--danger"] {
        color: #dc2626 !important; font-weight: 800; font-size: 19px !important;
        background: #fef2f2; border-radius: 10px;
        padding: 6px 10px !important; margin-top: 2px;
    }
    .fee-table tbody td[data-label="欠费"]:not([style*="--danger"]) {
        font-size: 16px !important; font-weight: 700;
    }
    .fee-table tbody td[data-label="已收"] { color: #16a34a !important; font-size: 16px !important; }
    /* 操作按钮：胶囊 + min-height 36px */
    .fee-table tbody td.nolabel { justify-content: flex-end; padding-top: 8px !important; }
    .fee-table tbody td .btn {
        min-height: 36px; border-radius: 980px !important;
        padding: 6px 18px !important; font-size: 13px !important; margin: 0 !important;
    }
    /* 批量欠费名单：勾选框行 */
    .fee-table tbody td[data-label=""] { justify-content: flex-start; }
    .fee-table tbody td[data-label=""] input { width: 20px; height: 20px; }
}

/* 课量区灰化（开关关闭时：灰色+不可操作） */
.tl-disabled { opacity: .45; filter: grayscale(1); pointer-events: none; user-select: none; transition: opacity .25s; }

/* ═══ 我的课表（my.html）Apple 风 ═══ */
.my-toolbar {
    display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap;
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 14px 16px; margin-bottom: 14px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.my-fg { margin-bottom: 0; }
.my-fg label { font-size: 12px; color: #86868b; margin-bottom: 4px; display: block; }
.my-select {
    min-height: 38px; border-radius: 10px !important; border: 1px solid #e5e7eb !important;
    font-size: 13px !important; padding: 4px 10px !important; background: #fff !important;
}
.my-select:focus { box-shadow: 0 0 0 3px rgba(0,113,227,0.15) !important; border-color: #0071e3 !important; }
.my-week-wrap { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; padding: 12px; overflow-x: auto; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.my-week { width: 100%; border-collapse: separate; border-spacing: 6px; min-width: 720px; }
.my-week thead th { font-size: 12px; color: #6b7280; font-weight: 600; padding: 8px 4px; text-align: center; white-space: nowrap; }
.my-dow { display: block; }
.my-day-head { background: #f8fafc; border-radius: 8px 8px 0 0; }
.my-today-head { background: #eef4ff !important; border-radius: 8px 8px 0 0; }
.my-today-pill {
    display: inline-block; background: #0071e3; color: #fff;
    font-size: 10px; font-weight: 700; border-radius: 980px; padding: 1px 8px; margin-left: 4px;
}
.my-day-cell {
    background: #fafbfc; border-radius: 0 0 8px 8px; vertical-align: top;
    padding: 6px 4px !important; min-height: 90px;
}
.my-today-cell { background: #f5f9ff !important; }
.my-weekend { background: #f6f6f7 !important; }
.my-block {
    display: block; background: #fff; border: 1px solid #eef1f5;
    border-left: 3px solid #0071e3; border-radius: 8px;
    padding: 6px 8px; margin-bottom: 6px; font-size: 11px;
}
.my-block[data-p="下午"] { border-left-color: #34c759; }
.my-block[data-p="晚上"] { border-left-color: #6366f1; }
.my-block.my-mine { background: #eef4ff; border-color: #cfe0ff; }
.my-block-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; }
.my-period { font-size: 10px; color: #0071e3; font-weight: 700; }
.my-block.my-mine .my-period { color: #0369a1; }
.my-mine-tag {
    background: #0071e3; color: #fff; font-size: 9px; font-weight: 700;
    border-radius: 980px; padding: 1px 7px;
}
.my-cls { font-size: 12px; font-weight: 600; color: #1d1d1f; }
.my-tch { font-size: 10px; color: #86868b; margin-top: 2px; }
.my-empty { font-size: 11px; color: #c0c4cc; text-align: center; padding: 12px 0; }
.my-empty-week {
    background: #fff; border: 1.5px dashed #d8dce3; border-radius: 14px;
    padding: 32px; text-align: center; color: #9ca3af; font-size: 13px; margin-bottom: 14px;
}
.my-info { font-size: 12px; color: #86868b; margin: 8px 0 4px; }
@media (max-width: 767px) {
    .my-week-wrap { padding: 8px; }
    .my-toolbar { padding: 12px; }
}

/* ═══ 学员名单（students.html）折叠卡 + 表格 ═══ */
.yd-details {
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.yd-summary {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 16px; cursor: pointer; font-size: 14px; font-weight: 600;
    list-style: none; color: #1d1d1f;
}
.yd-summary::-webkit-details-marker { display: none; }
.yd-s-ic {
    width: 30px; height: 30px; border-radius: 9px;
    background: #eef4ff; color: #0071e3; font-size: 13px;
    display: inline-flex; align-items: center; justify-content: center;
}
.yd-s-arrow { margin-left: auto; color: #9ca3af; font-size: 12px; transition: transform .2s; }
.yd-details[open] .yd-s-arrow { transform: rotate(180deg); }
.yd-body { padding: 4px 16px 16px; border-top: 1px solid #f4f5f7; padding-top: 12px; }
.yd-body .form-group { margin-bottom: 8px; }
.yd-body input, .yd-body select { min-height: 40px; }
.yd-body button[type=submit] { min-height: 40px; border-radius: 10px !important; }
.st-del-btn {
    background: #fef2f2 !important; color: #dc2626 !important;
    border: 1px solid #fecaca !important; border-radius: 980px !important;
    padding: 6px 14px !important; font-size: 12px !important; font-weight: 600 !important;
    min-height: 32px;
}
.st-del-btn:active { transform: scale(.96); }

/* ═══════════════════════════════════════════════════════════
   优惠审批 / 合作方收费 / 合作方打款 · Apple 风重设计（追加）
   ═══════════════════════════════════════════════════════════ */
.da-page, .pf-page, .pp-page { font-variant-numeric: tabular-nums; }

/* ── 通用：金额右对齐 / 弱化文字 / 胶囊按钮 ── */
.da-page .t-right, .pf-page .t-right, .pp-page .t-right { text-align: right; }
.col-muted { font-size: 12px; color: #86868b; }
.btn-capsule { border-radius: 980px !important; font-weight: 600; white-space: nowrap; }

/* ── 优惠审批 · 流程条 ── */
.da-flow {
    display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 12px 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.da-flow-step { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #6e6e73; white-space: nowrap; }
.da-flow-step .dfs-ic {
    width: 26px; height: 26px; border-radius: 50%; background: #f5f5f7; color: #86868b;
    display: inline-flex; align-items: center; justify-content: center; font-size: 11px;
}
.da-flow-step.on { color: #1d1d1f; font-weight: 600; }
.da-flow-step.on .dfs-ic { background: #eef4ff; color: #0071e3; }
.da-flow-step .dfs-ic.ok { background: #e8f7ee; color: #16a34a; }
.da-flow-step .dfs-ic.no { background: #fdecec; color: #dc2626; }
.da-flow-arrow { color: #c7c7cc; font-size: 10px; }
.da-flow-alt { font-size: 10px; color: #aeaeb2; }
@media (max-width: 767px) {
    .da-flow { padding: 10px 12px; gap: 6px 8px; }
    .da-flow-step { font-size: 11px; }
}

/* ── 优惠审批 · 状态徽章（柔和） ── */
.da-badge { display: inline-block; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 980px; margin-left: 6px; vertical-align: 2px; }
.da-badge-warn { background: #fff3e0; color: #e65100; }
.da-badge-ok { background: #e8f7ee; color: #16a34a; }
.da-badge-no { background: #fdecec; color: #dc2626; }

/* ── 优惠审批 · 待审批卡（橙色强调） ── */
.da-pending-card { border: 1px solid #ffe0b2; box-shadow: 0 1px 8px rgba(255,149,0,.10); }
.da-pending-card .card-header { background: #fffaf3; color: #b45309; font-size: 14px; }
.da-pending-dot { width: 8px; height: 8px; border-radius: 50%; background: #ff9500; display: inline-block; margin-right: 6px; }

/* ── 优惠审批 · 表格美化 ── */
.da-av {
    width: 32px; height: 32px; border-radius: 50%; background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 14px; flex-shrink: 0;
}
.da-name-cell { display: flex; align-items: center; gap: 8px; }
.da-name-w { display: inline-flex; align-items: center; gap: 4px; }
.da-name { font-size: 15px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.2px; }
.da-money-down { color: #dc2626; font-weight: 700; font-size: 15px; }
.da-money-ok { color: #16a34a; font-weight: 600; }
.da-reason { font-size: 12px; color: #6e6e73; }
.da-time { font-size: 12px; color: #86868b; white-space: nowrap; }
.da-actions { display: inline-flex; gap: 6px; }
.da-actions form { display: inline; margin: 0; }
.da-ok-btn { background: #34c759 !important; }
.da-ok-btn:hover { background: #28a745 !important; box-shadow: 0 2px 8px rgba(52,199,89,.3); }
.da-no-btn { background: #fff !important; color: #dc2626 !important; border: 1px solid #fecaca !important; }
.da-no-btn:hover { background: #fdecec !important; box-shadow: none !important; }

/* ── 优惠审批 · 已通过/已驳回 双栏 ── */
.da-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 767px) { .da-cols { grid-template-columns: 1fr; } }
.da-sub-card .card-header { background: #fff; font-size: 14px; }
.da-sub-ok .card-header { color: #16a34a; }
.da-sub-no .card-header { color: #dc2626; }
@media (min-width: 768px) {
    .da-page .table-wrap table { min-width: 900px; }
}

/* ── 合作方收费 · 合作方卡片头 ── */
.pf-partner-head { cursor: pointer; user-select: none; background: #fff; }
.pf-partner-head:hover { background: #fafbfc; }
.pc-arrow { transition: transform .25s; font-size: 12px; color: #c7c7cc; margin-right: 8px; }
.pf-head-left { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.pf-pname { font-size: 16px; color: #1d1d1f; letter-spacing: -0.2px; }
.pf-count-pill { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 980px; white-space: nowrap; }
.pf-head-actions { display: inline-flex; gap: 6px; }

/* ── 合作方收费 · 状态徽章（柔和） ── */
.pf-badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 980px; }
.pf-badge-ok { background: #e8f7ee; color: #16a34a; }
.pf-badge-warn { background: #fff3e0; color: #e65100; }
.pf-badge-no { background: #fdecec; color: #dc2626; }

/* ── 合作方收费 · 表格美化 ── */
.pf-sname { font-size: 14px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.2px; }
.pf-amount { font-size: 15px; font-weight: 700; color: #1d1d1f; }
.pf-feeitems { font-size: 12px; color: #6e6e73; }
.pf-feeitems.dim { color: #c7c7cc; }

/* ── 合作方收费 · 底部批量条 ── */
.pf-batch-bar {
    padding: 8px 14px; border-top: 1px solid #f0f2f6; display: flex; gap: 8px;
    align-items: center; flex-wrap: wrap; font-size: 12px; background: #fafbfc;
    border-radius: 0 0 14px 14px;
}
.pf-batch-bar .btn { margin: 0; }
@media (min-width: 768px) {
    .pf-page .table-wrap table { min-width: 920px; }
}

/* ── 合作方收费 · 弹窗苹果化 ── */
.pf-modal .modal { border-radius: 16px !important; }
.pf-modal .modal-header {
    background: #fff !important; border-bottom: 1px solid #f0f2f6 !important;
    border-radius: 16px 16px 0 0 !important; padding: 14px 16px !important;
    font-size: 15px !important;
}
.pf-modal .modal-body { padding: 16px !important; }
.pf-modal .modal-body .form-control { min-height: 38px; }
.pf-modal .modal-body .btn { min-height: 36px; }

/* ── 合作方打款 · 汇总条（浅蓝） ── */
.pp-sum-bar {
    display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
    padding: 10px 14px; background: #f5f9ff; border-bottom: 1px solid #e8eef8;
}
.pp-sum-bar label { font-size: 12px; font-weight: 600; color: #6e6e73; }
.pp-sum-bar input { min-height: 36px; border-radius: 8px; }
.pp-sum-label { font-size: 12px; color: #6e6e73; }
.pp-pay-amount { font-size: 16px; font-weight: 700; color: #16a34a; }
.pp-benefit { font-size: 14px; font-weight: 700; color: #0071e3; }

/* ── 合作方打款 · 分配表 ── */
.pp-bal { color: #dc2626; font-weight: 700; }
.pp-after { font-weight: 700; color: #1d1d1f; }
.pp-sname { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.pp-alloc-input {
    width: 100px; font-size: 14px !important; text-align: right; border-radius: 8px !important;
    border: 1px solid #d9dee4 !important; background: #fff !important; padding: 6px 8px !important;
    display: inline-block;
}
.pp-alloc-input:focus { border-color: #0071e3 !important; box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important; }

/* ── 合作方打款 · 底部操作条 ── */
.pp-foot-bar {
    display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px;
    padding: 12px 14px; border-top: 1px solid #f0f2f6;
}
.pp-foot-bar .btn { margin: 0; }
.pp-select-card .form-group label { font-size: 12px; font-weight: 600; color: #6e6e73; }
.pp-select-card .form-control { min-height: 40px; }

/* ── 三页通用：移动端表格转独立卡片（覆盖全局列表式，block 布局防 X5 乱序） ── */
@media (max-width: 767px) {
    .da-page .table-wrap table tr,
    .pf-page .table-wrap table tr,
    .pp-page .table-wrap table tr {
        display: block; background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04); margin-bottom: 10px; padding: 12px 14px;
    }
    .da-page .table-wrap table td,
    .pf-page .table-wrap table td,
    .pp-page .table-wrap table td { font-size: 13px; padding: 5px 0; }
    .da-page .t-right, .pf-page .t-right, .pp-page .t-right { text-align: left; }
    .da-name-cell { justify-content: flex-start; }
    /* 触控规范：按钮 min-height 36px、输入框 16px */
    .da-page .btn, .pf-page .btn, .pp-page .btn { min-height: 36px; font-size: 14px; }
    .da-page .btn-xs, .pf-page .btn-xs, .pp-page .btn-xs { min-height: 32px; font-size: 12px; }
    .da-page .form-control, .pf-page .form-control, .pp-page .form-control { font-size: 16px; }
    .pp-alloc-input { width: 100%; font-size: 16px !important; min-height: 36px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 财务三页（收入/支出/报表）Apple 风统一层 v2
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── 今日收支摘要：渐变横幅 → 白卡（浅蓝底蓝图标 + 深色数字） ── */
.inc-today {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    color: #1d1d1f;
}
.exp-today { background: #fff; }
.it-l { display: flex; align-items: center; }
.it-ic {
    width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 16px; margin-right: 10px;
}
.it-wrap { display: block; min-width: 0; }
.it-label { font-size: 12px; color: #86868b; font-weight: 600; }
.it-val { font-size: 26px; color: #1d1d1f; }
.it-cnt { font-size: 15px; color: #0071e3; }
.it-date { font-size: 12px; color: #9ca3af; }
@media (max-width: 767px) {
    .it-ic { width: 36px; height: 36px; border-radius: 10px; font-size: 15px; }
    .it-val { font-size: 23px; }
}

/* ── 收入统计卡：图标升 28px / 补 .is-sub 环比（此前无样式） ── */
.inc-stat .is-ic { width: 28px; height: 28px; border-radius: 8px; font-size: 12px; }
.is-sub { font-size: 11px; color: #86868b; margin-top: 6px; font-weight: 500; }
.is-up { color: #16a34a; font-weight: 600; }
.is-down { color: #dc2626; font-weight: 600; }
.is-net { font-style: normal; font-size: 10px; color: #dc2626; font-weight: 600; margin-left: 4px; }

/* ── 待支付报销统计卡（expense 页 pp-stat 此前无样式） ── */
.pp-stat {
    display: flex; align-items: center; justify-content: space-between;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04); cursor: pointer;
}
.pp-stat:active { background: #f5f8ff; }
.pps-label { display: block; font-size: 11px; color: #86868b; margin-bottom: 4px; font-weight: 500; }
.pps-val { font-size: 24px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
.pps-cnt { display: block; font-size: 13px; font-weight: 600; color: #d97706; text-align: right; }
.pps-tip { font-size: 11px; color: #9ca3af; }

/* ── 表格精致化：表头浅灰圆角 + 行 hover 蓝 tint + 轻斑马纹 ── */
.fin-t { border-collapse: separate; border-spacing: 0; }
.fin-t thead th {
    background: #f8fafc; color: #6e6e73;
    font-size: 12px; font-weight: 600; text-transform: none; letter-spacing: 0;
    padding: 10px 12px; border-bottom: 1px solid #eceef1;
}
.fin-t thead th:first-child { border-radius: 12px 0 0 0; }
.fin-t thead th:last-child { border-radius: 0 12px 0 0; }
.fin-t tbody tr:nth-child(even) { background: #fafbfc; }
.fin-t tbody tr:hover { background: #f5f9ff; }
.fin-t tbody td { border-bottom: 1px solid #f2f4f6; padding: 9px 12px; }
.fin-t tbody tr:last-child td { border-bottom: none; }
.fin-t tbody tr:last-child td:first-child { border-radius: 0 0 0 12px; }
.fin-t tbody tr:last-child td:last-child { border-radius: 0 0 12px 0; }

/* ── 筛选区统一：胶囊搜索框 + 记录数弱化 ── */
.fin-search {
    width: 170px;
    border-radius: 980px !important;
    background: #f5f7fa !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    padding: 7px 14px !important;
    font-size: 13px !important;
    min-height: 34px;
}
.fin-search:focus {
    background: #fff !important; border-color: #0071e3 !important;
    box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important;
}
.fin-note { font-size: 12px; color: #9ca3af; white-space: nowrap; }
@media (max-width: 767px) { .fin-note { display: none; } }

/* ── 支出页：Tab 胶囊（仅形状，JS 控制背景/文字色，勿加 !important） ── */
#expTabBtn, #refTabBtn { border-radius: 980px !important; padding: 7px 18px !important; font-weight: 500; }
@media (max-width: 767px) {
    #expTabBtn, #refTabBtn { min-height: 36px; }
}

/* ── 支出页：导出工具条 ── */
.fin-exlabel { font-size: 12px; color: #86868b; }
.fin-date {
    border: 1px solid #e3e6ea !important; border-radius: 8px !important;
    padding: 5px 8px !important; font-size: 12px !important;
    background: #fff !important; min-height: 30px;
}
.fin-exbtn {
    border-radius: 980px !important;
    background: #fff !important; border: 1px solid #0071e3 !important; color: #0071e3 !important;
    padding: 5px 16px !important; font-size: 12px !important;
}
@media (max-width: 767px) {
    .fin-search { width: 140px; }
    .fin-date { font-size: 16px !important; min-height: 36px !important; }
    .fin-exbtn { min-height: 36px; }
}

/* ── 状态徽章（柔和浅底深字）+ 支出科目徽章 ── */
.fin-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 980px; line-height: 1.5;
    white-space: nowrap; vertical-align: 2px; margin-left: 6px;
}
.fin-badge-orange { background: #fff4e5; color: #d97706; }
.fin-badge-blue   { background: #eef4ff; color: #0071e3; }
.fin-badge-green  { background: #e8f7ee; color: #16a34a; }
.fin-badge-red    { background: #fdecec; color: #dc2626; }
.badge.badge-danger { background: #fdecec; color: #dc2626; border-radius: 980px; }

/* 表格操作按钮触控高度 */
.fin-ops-btn { min-height: 30px; }
@media (max-width: 767px) { .fin-ops-btn { min-height: 36px !important; } }

/* ── 报表页：全年盈利预测白卡（flex 强排，禁 grid） ── */
.profit-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.pf-stat {
    flex: 1 1 150px; min-width: 150px; max-width: 240px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    box-sizing: border-box;
}
.pf-s-ic {
    width: 30px; height: 30px; border-radius: 8px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 13px; margin-bottom: 8px;
}
.pf-s-blue   { background: #eef4ff; color: #0071e3; }
.pf-s-orange { background: #fff4e5; color: #d97706; }
.pf-s-amber  { background: #fef3c7; color: #b45309; }
.pf-s-green  { background: #e8f7ee; color: #16a34a; }
.pf-s-red    { background: #fdecec; color: #dc2626; }
.pf-label { font-size: 11px; color: #86868b; margin-bottom: 4px; font-weight: 500; }
.pf-val { font-size: 20px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
.pf-sub { font-size: 11px; color: #16a34a; margin-top: 4px; font-weight: 600; }
.pf-sub-red { color: #dc2626; }
.pf-tips { margin-top: 12px; }
.pf-tips > div { margin-bottom: 6px; }
@media (max-width: 767px) {
    .pf-stat { flex: 1 1 44%; min-width: 44%; max-width: none; }
    .pf-val { font-size: 18px; }
}

/* ── 报表页：本月分析面板 grid → flex（X5 不乱序） ── */
.rp-grid { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 16px; }
.rp-card { width: calc(50% - 6px); box-sizing: border-box; margin: 0; }
@media (max-width: 767px) { .rp-card { width: 100%; } }

/* ── 报表页：JS 动态汇总白卡（总收入/总支出/结余） ── */
.fin-sum-grid { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.fin-sum-card {
    flex: 1 1 140px; min-width: 140px; max-width: 260px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    box-sizing: border-box;
}
.fsc-head { display: flex; align-items: center; gap: 6px; font-size: 11px; color: #86868b; font-weight: 600; margin-bottom: 6px; }
.fsc-ic {
    width: 22px; height: 22px; border-radius: 7px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 10px; flex-shrink: 0;
}
.fsc-ic-green { background: #e8f7ee; color: #16a34a; }
.fsc-ic-red   { background: #fdecec; color: #dc2626; }
.fsc-ic-blue  { background: #eef4ff; color: #0071e3; }
.fsc-val { font-size: 20px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
@media (max-width: 767px) {
    .fin-sum-card { flex: 1 1 44%; min-width: 44%; max-width: none; }
}

/* ── 报表页：支出分类/支出结构 two-col grid → flex（仅 #reportContent 作用域） ── */
#reportContent .two-col { display: flex; flex-wrap: wrap; gap: 12px; }
#reportContent .two-col > .card { flex: 1 1 340px; min-width: 280px; box-sizing: border-box; margin: 0; }
@media (max-width: 767px) {
    #reportContent .two-col > .card { flex: 1 1 100%; min-width: 100%; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 收费管理四页 — Apple 风统一层（annual_stats / ar_monthly / batch_charge / fee/settings）
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── ① 统计卡：5 张布局（annual_stats 年度汇总；inline-block 防 X5 乱序） ── */
.exp-stats-5 .exp-stat { width: calc(50% - 10px); }
@media (min-width: 768px) {
    .exp-stats-5 .exp-stat { width: calc(20% - 10px); }
}
.es-val small { font-size: 12px; font-weight: 600; color: #86868b; margin-left: 2px; letter-spacing: 0; }

/* ── ② annual_stats：表单/搜索控件白卡化 ── */
.as-card .form-control {
    min-height: 38px; border-radius: 10px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 14px;
}
.as-card .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.as-year-form .form-control {
    min-height: 34px; border-radius: 9px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 12px;
}
.as-search {
    width: 170px; min-height: 36px; border-radius: 10px !important;
    border: 1px solid #e5e7eb !important; background: #fff !important;
    font-size: 13px !important; padding: 6px 12px !important;
}
.as-search:focus { border-color: #0071e3 !important; box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important; }

/* ── ③ 回收率胶囊（annual_stats 按合作方汇总） ── */
.fee-rate-pill { display: inline-block; padding: 2px 10px; border-radius: 980px; font-size: 12px; font-weight: 600; }
.r-ok   { background: #e8f7ee; color: #16a34a; }
.r-warn { background: #fff4e5; color: #d97706; }
.r-bad  { background: #fdecec; color: #dc2626; }

/* ── ④ annual_stats 明细表：序号列手机隐藏 + 桌面最小宽 ── */
@media (max-width: 767px) {
    .col-idx { display: none !important; }
}
@media (min-width: 768px) {
    .as-sum-table { min-width: 720px; }
    #asTable { min-width: 900px; }
}

/* ── ⑤ ar_monthly：宏观统计卡 + 合作方卡片白卡化 ── */
.am-partner-card { border-radius: 16px; box-shadow: 0 1px 8px rgba(0,0,0,.05); }
.am-partner-head {
    background: #fff !important; border-bottom: 1px solid #f0f2f6;
    padding: 13px 16px; border-radius: 16px 16px 0 0;
}
.am-sub   { color: #86868b; font-size: 12px; font-weight: 400; margin-left: 6px; }
.am-total { font-size: 14px; font-weight: 700; color: #dc2626; }
.am-tiles { display: flex; flex-wrap: wrap; gap: 8px; }
.am-tile {
    flex: 1 1 calc(50% - 8px); min-width: 0; box-sizing: border-box;
    background: #fff; border: 1px solid #eef1f5; border-radius: 12px;
    padding: 11px 10px; text-align: center;
}
@media (min-width: 768px) { .am-tile { flex: 1 1 calc(25% - 8px); } }
.am-tl { font-size: 11px; color: #86868b; margin-bottom: 4px; }
.am-tv { font-size: 18px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; }
.am-tv-red    { color: #dc2626; }
.am-tv-green  { color: #16a34a; }
.am-tv-orange { color: #d97706; }
.am-tn  { font-size: 10px; color: #86868b; margin-top: 2px; }
.am-progress { margin-top: 12px; }
.am-p-head { display: flex; justify-content: space-between; font-size: 11px; color: #86868b; margin-bottom: 5px; }
.am-p-track { background: #f0f2f5; border-radius: 6px; height: 8px; overflow: hidden; }
.am-p-fill { background: linear-gradient(90deg, #34c759, #00e676); height: 100%; border-radius: 6px; transition: width .5s; }
.am-empty-ic { font-size: 44px; color: #c9cdd4; margin-bottom: 10px; }

/* ── ⑥ batch_charge：顶部表单工具条（白卡） ── */
.bc-toolbar {
    display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.bc-toolbar .form-group { margin-bottom: 0; }
.bc-toolbar .form-group label { font-size: 12px; color: #86868b; font-weight: 500; margin-bottom: 5px; display: block; }
.bc-toolbar .form-control {
    min-height: 42px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 15px; padding: 9px 14px;
}
.bc-toolbar .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.bc-toolbar .btn { min-height: 42px; border-radius: 980px; padding: 0 24px; font-size: 14px; }
.bc-count { font-size: 13px; color: #86868b; margin-left: 8px; }

/* ── ⑦ batch_charge：分段式 Tab（浅灰底 + 白色激活胶囊） ── */
.bc-tabs {
    display: flex; gap: 4px; background: #f0f2f5; border-radius: 12px;
    padding: 4px; margin-bottom: 14px; border: none;
}
.bc-tabs .settings-tab {
    flex: 1; border: none !important; background: transparent;
    border-radius: 9px; padding: 10px 0; font-size: 14px; font-weight: 500;
    color: #3a4350; text-align: center; transition: all .15s;
    border-bottom-color: transparent !important;
}
.bc-tabs .settings-tab.active {
    background: #fff; color: #0071e3; font-weight: 600;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
}

/* ── ⑧ batch_charge：合作方勾选列表（块级堆叠，防 X5 grid 乱序） ── */
.bc-tenant-list { display: block; }
.bc-tenant-list > .card { margin: 0 0 12px; border-radius: 12px; }
.bc-tenant-list > .card:last-child { margin-bottom: 0; }
.bc-tc-head {
    font-size: 13px; padding: 9px 12px;
    background: #fafbfc; border-radius: 12px 12px 0 0;
}
.bc-checkall {
    font-size: 12px; color: #3a4350; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px; min-height: 32px;
}
.bc-cb { width: 19px; height: 19px; accent-color: #0071e3; flex-shrink: 0; }
.bc-checkrow {
    display: flex; align-items: center; gap: 8px; padding: 9px 8px;
    font-size: 14px; cursor: pointer; border-radius: 9px; min-height: 38px;
    transition: background .12s;
}
.bc-checkrow:hover { background: #f5f8ff; }
.bc-checkrow small { color: #86868b; font-size: 12px; }
.bc-tenant-empty { font-size: 12px; color: #86868b; }
.bc-cb-cell { text-align: center; }

/* ── ⑨ fee/settings：设置项大控件化 ── */
.fee-settings .card { border-radius: 16px; }
.fee-settings .card-header {
    background: #fff; border-bottom: 1px solid #f0f2f6; padding: 14px 18px;
}
.fee-settings .form-control {
    min-height: 42px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 15px; padding: 9px 14px;
}
.fee-settings .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); background: #fff; }
.fee-settings .btn { min-height: 36px; border-radius: 980px; }
.fee-settings .btn-xs { min-height: 30px; padding: 3px 14px; font-size: 12px; }
.fs-row {
    display: flex; align-items: center; justify-content: space-between;
    gap: 10px; flex-wrap: wrap; padding: 12px 2px;
    border-bottom: 1px solid #f0f2f6;
}
.fs-row:last-child { border-bottom: none; }
.fs-name { font-size: 14px; color: #1d1d1f; font-weight: 500; flex: 1; min-width: 120px; }
.fs-remark {
    width: 170px !important; min-height: 34px !important;
    font-size: 12px !important; padding: 5px 10px !important; border-radius: 9px !important;
}
.fs-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.fs-pill { display: inline-flex; align-items: center; gap: 4px; padding: 5px 13px; border-radius: 980px; font-size: 13px; font-weight: 500; }

/* ── ⑩ 手机端微调（<768px） ── */
@media (max-width: 767px) {
    .bc-toolbar { padding: 12px; }
    .bc-toolbar .form-control, .fee-settings .form-control, .as-card .form-control { font-size: 16px; }
    .bc-toolbar .btn, .fee-settings .btn { min-height: 40px; }
    .bc-submit { flex: 1 1 100%; }
    .bc-submit .btn { flex: 1; }
    .fs-remark { width: 100% !important; }
    .bc-checkrow { font-size: 15px; }
    .as-search { width: 100%; min-height: 40px; font-size: 16px !important; }
    .bc-cb-cell { justify-content: flex-start !important; }
}

/* 合作方卡片容器（Apple 白卡） */
.pf-partner-card {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04); margin-bottom: 12px; overflow: hidden;
}
.pf-partner-card .pf-partner-head { padding: 14px 16px; cursor: pointer; }
.pf-partner-card .pf-feeitems { border-top: 1px solid #f4f5f7; }

/* ═══════════════════════════════════════════════════════════════════
   ═ 财务六页 Apple 风重设计（2026-08）
   ═ 页面：报销管理 / 部门预算 / 通知中心 / 成本核算(2) / 数据管理 / 微信通知
   ═ 类名前缀：app- 通用表格 · rb- 报销 · bd- 预算 · nt- 通知 · cs- 成本 · dm- 数据 · wx- 微信
   ═ 纯追加规则，不修改/删除任何已有样式
   ═══════════════════════════════════════════════════════════════════ */

/* ── 通用：Apple 精致表格（表头浅灰圆角 + 行 hover + 手机卡片化） ── */
@media (min-width: 768px) {
    .app-table { border-collapse: separate; border-spacing: 0; }
    .app-table thead th {
        background: #f5f6f8; color: #6e6e73; font-size: 11.5px; font-weight: 600;
        letter-spacing: .02em; text-transform: uppercase;
        border-bottom: 1px solid #eef0f3; padding: 11px 12px;
    }
    .app-table thead th:first-child { border-top-left-radius: 12px; }
    .app-table thead th:last-child  { border-top-right-radius: 12px; }
    .app-table tbody tr { transition: background .12s; }
    .app-table tbody tr:hover { background: #f0f6fc; }
    .app-table tbody tr:nth-child(even) { background: #fafbfc; }
    .app-table tbody tr:nth-child(even):hover { background: #f0f6fc; }
    .app-table tbody tr:last-child td { border-bottom: none; }
}
@media (max-width: 767px) {
    .app-table tr {
        display: block; background: #fff; border: 1px solid #eef1f5;
        border-radius: 14px; margin: 0 2px 10px; padding: 12px 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04);
    }
    .app-table tr:last-child { margin-bottom: 0; }
    .app-table td { border-bottom: 1px dashed #f0f2f6; }
    .app-table td:last-child { border-bottom: none; }
    .app-table tbody tr.nt-unread,
    .app-table tbody tr.nt-unread:nth-child(even),
    .app-table tbody tr.nt-unread:hover { background: #eef4ff !important; }
}

/* ── 报销状态徽章（柔和胶囊） ── */
.rb-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 3px 10px; border-radius: 980px; white-space: nowrap; line-height: 1.5;
}
.rb-badge-pending  { background: #fff4e5; color: #d97706; }
.rb-badge-dept     { background: #eef4ff; color: #0071e3; }
.rb-badge-approved { background: #eef4ff; color: #0066cc; }
.rb-badge-paid     { background: #e8f7ee; color: #16a34a; }
.rb-badge-rejected { background: #fdecec; color: #dc2626; }
.rb-step { display: inline-block; font-size: 10px; margin-top: 3px; }
.rb-step-blue   { color: #0071e3; }
.rb-step-red    { color: #dc2626; }
.rb-step-green  { color: #16a34a; }
.rb-step-orange { color: #d97706; }
.rb-sub { color: #86868b; font-size: 10px; }

/* ── 报销页：统计卡白卡（可点击筛选，active 由 JS 置蓝） ── */
.rb-stat { box-shadow: 0 1px 6px rgba(0,0,0,.04); transition: transform .1s, box-shadow .15s; }
.rb-stat:active { transform: scale(.97); }
.rb-stat .es-head { font-weight: 500; letter-spacing: 0; line-height: 1.2; }
.rb-stat .es-val { font-size: 26px; }
@media (max-width: 767px) {
    .rb-stat { padding: 12px 8px; }
    .rb-stat .es-head { font-size: 11px; }
    .rb-stat .es-val { font-size: 22px; }
}

/* ── 部门预算：进度条 + 行内编辑输入框 ── */
.bd-bar {
    background: #f0f2f5; border-radius: 6px; height: 8px;
    width: 100px; position: relative; overflow: hidden;
}
.bd-fill { height: 100%; border-radius: 6px; }
.bd-fill-used    { background: #0071e3; }
.bd-fill-pending { background: #ff9f0a; position: absolute; top: 0; opacity: .55; }
.bd-pct { font-size: 10px; color: #86868b; margin-top: 3px; }
.bd-inp {
    min-height: 32px; padding: 3px 8px; font-size: 12px;
    border: 1px solid #e5e7eb; border-radius: 9px; background: #fff;
}
.bd-inp:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); outline: none; }
@media (max-width: 767px) {
    .bd-inp { width: 72px !important; min-height: 38px; font-size: 14px !important; }
    .bd-bar { width: 100%; max-width: 160px; }
}

/* ── 通知中心：类型图标 + 未读行 ── */
.nt-row { transition: background .12s; }
.nt-ic {
    width: 30px; height: 30px; border-radius: 9px;
    display: inline-flex; align-items: center; justify-content: center; font-size: 13px;
}
.nt-ic-orange { background: #fff4e5; color: #d97706; }
.nt-ic-blue   { background: #eef4ff; color: #0071e3; }
.nt-ic-gray   { background: #f2f2f7; color: #8e8e93; }
.nt-unread,
.app-table tbody tr.nt-unread,
.app-table tbody tr.nt-unread:nth-child(even) { background: #eef4ff !important; }
.app-table tbody tr.nt-unread:hover { background: #e2edff !important; }
.nt-unread td { font-weight: 600; }

/* ── 成本核算：筛选区 + 分类明细 + 明细表 ── */
.cost-filter { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.cost-filter .form-group { margin-bottom: 0; }
.cost-filter label { font-size: 12px; color: #86868b; font-weight: 500; margin-bottom: 5px; }
.cost-filter .form-control {
    min-height: 40px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 14px;
}
.cost-filter .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
@media (max-width: 767px) {
    .cost-filter .form-group { flex: 1 1 100%; min-width: 100% !important; }
    .cost-filter .form-control { min-height: 44px; font-size: 16px; }
}
.cb-row {
    display: flex; justify-content: space-between; align-items: center;
    padding: 10px 2px; border-bottom: 1px solid #f0f2f6; font-size: 13px;
}
.cb-row:last-child { border-bottom: none; }
.cb-name { font-weight: 600; color: #1d1d1f; }
.cb-val  { font-weight: 600; }
.cb-pct  { color: #86868b; font-weight: 400; margin-left: 4px; }
.cb-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 9px; border-radius: 980px; background: #eef4ff; color: #0071e3;
}
.cs-map { max-width: 220px; min-height: 34px; border-radius: 9px; }
.cs-save { margin-top: 12px; min-height: 40px; }
.cs-tip { background: #fff !important; border-left: 3px solid #0071e3; }
.cs-tip-body { color: #515154; font-size: 13px; line-height: 1.8; }
.cs-tip-title { font-weight: 700; color: #1d1d1f; margin-bottom: 6px; font-size: 14px; }
.cs-tip-title i { color: #0071e3; margin-right: 4px; }
.cs-tip-body strong { color: #1d1d1f; }
@media (max-width: 767px) {
    .cs-map { max-width: 100%; min-height: 44px; font-size: 16px !important; }
}

/* ── 数据管理：统计卡 + 模块勾选分组 + 表单 ── */
.dm-groups { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.dm-group {
    border: 1px solid #eef1f5; border-radius: 12px; padding: 10px 12px;
    background: #fff; min-width: 150px; box-shadow: 0 1px 3px rgba(0,0,0,.03);
}
.dm-group > div:first-child { font-weight: 600; font-size: 12px; color: #1d1d1f; margin-bottom: 5px; }
.dm-group label {
    display: flex; align-items: center; gap: 6px; cursor: pointer;
    padding: 2px 0; font-size: 12px; color: #515154;
}
.dm-group input[type="checkbox"] { width: 17px; height: 17px; accent-color: #0071e3; flex-shrink: 0; }
.dm-label { font-weight: 600; font-size: 13px; margin-bottom: 8px; color: #1d1d1f; }
.dm-label i { color: #0071e3; margin-right: 4px; }
.dm-label-inline { font-size: 12px; color: #515154; }
.dm-sep { font-size: 11px; color: #86868b; }
.dm-toolbar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.dm-toolbar .form-group { margin-bottom: 0; }
.dm-date {
    min-height: 34px; border-radius: 9px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 12px; padding: 4px 8px;
}
.dm-file {
    max-width: 220px; min-height: 38px; font-size: 13px;
    border: 1px solid #e5e7eb; border-radius: 11px; background: #fff;
    padding: 8px 12px;
}
.dm-import { border-top: 1px solid #f0f2f6; padding-top: 12px; }
@media (max-width: 767px) {
    .dm-group { min-width: 100%; box-sizing: border-box; }
    .dm-group label { font-size: 14px; padding: 6px 0; }
    .dm-group input[type="checkbox"] { width: 20px; height: 20px; }
    .dm-date { min-height: 40px; font-size: 16px !important; flex: 1 1 100%; }
    .dm-file { max-width: 100%; min-height: 42px; font-size: 16px !important; flex: 1 1 100%; }
    .dm-toolbar .btn { min-height: 40px; }
}

/* ── 微信通知：双栏卡片网格（手机端单列 block，防 X5 grid 乱序） ── */
.wx-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 767px) {
    .wx-grid { display: block; }
    .wx-grid > .card { margin-bottom: 12px; }
}
.wx-grid .card { margin: 0; }
.wx-grid .form-control {
    min-height: 42px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 15px; padding: 9px 14px;
}
.wx-grid .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); background: #fff; }
.wx-grid .btn { min-height: 36px; border-radius: 980px; }
.pp-item {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 10px; margin: 4px 0;
    background: #f7f8fa; border: 1px solid #f0f2f5; border-radius: 10px;
}
.pp-name  { font-weight: 600; font-size: 13px; min-width: 70px; }
.pp-token { font-size: 12px; color: #86868b; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 767px) {
    .wx-grid .form-control { min-height: 44px; font-size: 16px !important; }
    .pp-item { flex-wrap: wrap; }
    .pp-token { min-width: 100%; order: 3; }
}

/* ═══════════════════════════════════════════════════════════
   请假销假模块 · Apple 风重设计（lv- 前缀，仅追加不改旧规则）
   页面：总览/我要请假/请假管理/通知设置/我的请假
   ═══════════════════════════════════════════════════════════ */

/* ── 统计卡：白底 + 深色数字 + 浅蓝图标（复用 .exp-stat 家族，勿彩色渐变） ── */
.lv-page .exp-stats { margin-bottom: 16px; }
.lv-page .exp-stat { border-radius: 16px; padding: 16px; }
.lv-page .es-val { font-size: 26px; font-weight: 700; letter-spacing: -0.5px; color: #1d1d1f; }
.lv-page .es-ic { width: 30px; height: 30px; border-radius: 9px; background: #eef4ff; color: #0071e3; }

/* ── 快捷入口卡 ── */
.lv-page .quick-card { border-radius: 16px; }
.lv-page .qc-emoji { width: 46px; height: 46px; border-radius: 13px; background: #eef4ff; color: #0071e3; font-size: 18px; }

/* ── 卡片与头部 ── */
.lv-page .card { border-radius: 16px; border: 1px solid #eef1f5; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.lv-page .card-header {
    display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px;
    font-size: 15px; font-weight: 600; color: #1d1d1f;
    background: #fff; border-bottom: 1px solid #f0f2f6; padding: 14px 18px;
}
.lv-page .card-header i { color: #0071e3; margin-right: 6px; font-size: 14px; }
.lv-note { font-size: 12px; color: #86868b; font-weight: 400; }
.lv-count { background: #f5f5f7; color: #6e6e73; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 980px; }

/* ── 状态徽章：待审批橙 / 已批准绿 / 已驳回红 / 已销假蓝 ── */
.lv-badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 3px 12px; border-radius: 980px;
    font-size: 12px; font-weight: 600; white-space: nowrap; flex-shrink: 0;
}
.lv-badge-pending  { background: #fff4e5; color: #d97706; }
.lv-badge-approved { background: #e8f7ee; color: #16a34a; }
.lv-badge-rejected { background: #fdecec; color: #dc2626; }
.lv-badge-returned { background: #eef4ff; color: #0071e3; }
.lv-badge-sms      { background: #fff4e5; color: #d97706; }
.lv-badge-sm { font-size: 11px; padding: 2px 10px; }

/* ── 类型胶囊（请假类型） ── */
.lv-type {
    display: inline-flex; align-items: center;
    padding: 2px 10px; border-radius: 980px;
    background: #f5f5f7; color: #3a3a3c; font-size: 11px; font-weight: 600; white-space: nowrap;
}

/* ── 角色胶囊（通知目标人） ── */
.lv-role { display: inline-flex; align-items: center; padding: 2px 11px; border-radius: 980px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.lv-role-dorm    { background: #fff4e5; color: #d97706; }
.lv-role-admin   { background: #eef4ff; color: #0071e3; }
.lv-role-teacher { background: #e8f7ee; color: #16a34a; }

/* ── 头像（姓名首字） ── */
.lv-av {
    width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
    background: #eef4ff; color: #0071e3;
    font-size: 16px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}

/* ── 请假条目卡片（学员/教师名大字 + 类型标签 + 时间 + 徽章 + 操作） ── */
.lv-item { padding: 14px 16px; border-bottom: 1px solid #f0f2f6; }
.lv-item:last-child { border-bottom: none; }
.lv-item-top { display: flex; align-items: center; gap: 12px; }
.lv-main { flex: 1; min-width: 0; }
.lv-name {
    font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.2px;
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.lv-meta { font-size: 12px; color: #86868b; margin-top: 2px; }
.lv-reason { font-size: 13px; color: #3a3a3c; margin-top: 8px; line-height: 1.5; }
.lv-time { font-size: 12px; color: #86868b; margin-top: 6px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lv-time i { color: #b0b0b8; width: 14px; text-align: center; }
.lv-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.lv-reject {
    margin-top: 8px; font-size: 12px; color: #dc2626;
    background: #fdf2f2; border-radius: 8px; padding: 6px 10px; line-height: 1.5;
}

/* ── 操作胶囊按钮 ── */
.lv-btn { border-radius: 980px !important; min-height: 36px; padding: 6px 20px !important; font-size: 13px !important; font-weight: 600; }
.lv-page .btn-outline.lv-btn-danger { color: #dc2626; border-color: #f0c4c4; }
.lv-page .btn-outline.lv-btn-danger:active { background: #fdecec; }
.lv-page .btn-xs.lv-xs-btn { border-radius: 980px; min-height: 30px; padding: 4px 14px; font-size: 12px; }

/* ── 动态流（请假动态） ── */
.lv-feed-item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 18px; border-bottom: 1px solid #f0f2f6; font-size: 13px; }
.lv-feed-item:last-child { border-bottom: none; }
.lv-feed-time { color: #86868b; font-size: 11px; white-space: nowrap; padding-top: 2px; }
.lv-feed-role { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 1px 9px; border-radius: 980px; white-space: nowrap; }
.lv-feed-msg { color: #1d1d1f; line-height: 1.5; }

/* ── 短信条目 ── */
.lv-phone { background: #f5f5f7; color: #3a3a3c; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 980px; }
.lv-sms-content { font-size: 13px; color: #6e6e73; margin-top: 8px; line-height: 1.5; background: #f8f9fb; border-radius: 10px; padding: 8px 12px; }
.lv-hint { padding: 10px 18px; font-size: 12px; color: #86868b; background: #f8f9fb; border-top: 1px solid #f0f2f6; }
.lv-hint i { color: #0071e3; margin-right: 4px; }

/* ── 表格（请假页专用：白表头 + 名字带头像） ── */
.lv-table thead th { background: #fafbfc; color: #86868b; font-weight: 600; border-bottom: 1px solid #eef1f5; }
.lv-name-cell { display: flex; align-items: center; gap: 8px; }
.lv-name-cell .lv-av { width: 30px; height: 30px; font-size: 13px; }
.lv-cell-time { font-size: 12px; white-space: nowrap; }
.lv-cell-reason { max-width: 100px; }

/* ── 请假表单（我要请假） ── */
.lv-apply-card { max-width: 620px; margin: 0 auto; }
.lv-page .form-control {
    background: #fff; border: 1px solid #e3e6ea; border-radius: 11px;
    min-height: 42px; font-size: 15px; padding: 9px 14px;
}
.lv-page .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); background: #fff; outline: none; }
.lv-page .form-group label { font-size: 13px; font-weight: 600; color: #1d1d1f; }
.lv-label-ic { color: #0071e3; margin-right: 3px; }
.lv-select { -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23868e96' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 32px; }
.lv-grid2 { display: flex; gap: 10px; flex-wrap: wrap; }
.lv-grid2 .form-group { flex: 1 1 200px; min-width: 0; }
.lv-time-row { display: flex; gap: 8px; flex-wrap: wrap; }
.lv-time-row input[type="date"] { flex: 2 1 180px; }
.lv-time-row select { flex: 1 1 80px; }
.lv-divider { border-top: 1px solid #f0f2f6; margin: 14px 0; }
.lv-submit { min-height: 48px !important; border-radius: 980px !important; font-size: 16px !important; font-weight: 600; margin-top: 10px; }
.lv-submit i { margin-right: 6px; }
.lv-add-student summary {
    cursor: pointer; font-size: 14px; color: #0071e3; font-weight: 500;
    padding: 8px 0; list-style: none; display: flex; align-items: center; gap: 6px;
}
.lv-add-student summary::-webkit-details-marker { display: none; }
.lv-add-student summary i { font-size: 13px; }

/* ── 手机端（<768px）：输入 16px / 按钮 36px / 卡片条目适配 ── */
@media (max-width: 767px) {
    .lv-page .form-control, .lv-page select.form-control, .lv-page textarea.form-control { font-size: 16px; }
    .lv-page .btn { min-height: 36px; }
    .lv-item-top { flex-wrap: wrap; }
    .lv-av { width: 38px; height: 38px; font-size: 15px; }
    .lv-name { font-size: 16px; }
    .lv-actions .btn { flex: 1 1 auto; }
    .lv-actions form { flex: 1 1 auto; }
    .lv-actions form .btn { width: 100%; }
    .lv-cell-reason { max-width: none; }
    .lv-table td { font-size: 14px; }
    .lv-time-row input[type="date"], .lv-time-row select { flex: 1 1 100%; }
    .lv-feed-item { flex-wrap: wrap; gap: 4px 10px; }
    .lv-feed-time { width: 100%; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 维修工单模块 — Apple 风统一层（dashboard / submit / manage / worker / stats）
   （追加于文件末尾，勿删已有规则；本块全部为新增，mt- 前缀防冲突）
   ═══════════════════════════════════════════════════════════════ */

/* ── ① 统计卡：白底 + 深色数字 + 浅蓝底蓝图标（inline-block 防 X5 乱序） ── */
.mt-stats { display: block; margin-bottom: 14px; font-size: 0; }
.mt-stat {
    display: inline-block; vertical-align: top; box-sizing: border-box;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 13px 14px 12px; margin: 4px 5px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    width: calc(50% - 10px);
}
.mt-ic {
    width: 30px; height: 30px; border-radius: 9px; background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center; font-size: 13px;
}
.mt-lb { font-size: 12px; color: #86868b; margin-top: 9px; }
.mt-val { font-size: 26px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.15; }
.mt-sub { font-size: 11px; color: #a1a1a6; margin-top: 1px; }
.mt-sub-warn { color: #e0372d !important; font-weight: 600; }
.mt-lb-gold { color: #b8860b; }
.mt-lb-green { color: #1a7f4e; }
.mt-lb-blue { color: #1a56c9; }
.mt-lb-orange { color: #e37400; }
.mt-lb-red { color: #e0372d; }
@media (min-width: 768px) {
    .mt-stats-4 .mt-stat { width: calc(25% - 10px); }
    .mt-stats-5 .mt-stat { width: calc(20% - 10px); }
    .mt-stats-6 .mt-stat { width: calc(16.666% - 10px); }
}

/* ── ② 工具栏 / 搜索条 / 筛选胶囊 ── */
.mt-toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.mt-search-wrap { position: relative; flex: 1; min-width: 180px; }
.mt-search-wrap > .fas {
    position: absolute; left: 13px; top: 50%; transform: translateY(-50%);
    color: #a1a1a6; font-size: 13px; pointer-events: none;
}
.mt-search { width: 100%; min-height: 38px; border-radius: 10px; padding-left: 34px !important; }
.mt-tabs { display: flex; gap: 6px; flex-wrap: wrap; padding: 10px 14px 2px; }
.mt-tab {
    display: inline-flex; align-items: center; gap: 5px; min-height: 30px;
    padding: 4px 14px; border-radius: 980px; border: 1px solid #e5e7eb;
    background: #fff; color: #3a3a3c; font-size: 12px; font-weight: 500;
    cursor: pointer; transition: background .15s, color .15s, border-color .15s;
}
.mt-tab:hover { background: #f5f5f7; }
.mt-tab.on { background: #0071e3; border-color: #0071e3; color: #fff; font-weight: 600; }
.mt-tab.on:hover { background: #0077ed; }

/* ── ③ 工单卡片列表 ── */
.mt-list { padding: 8px 10px 12px; }
.mt-item {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 13px 16px; margin: 0 0 10px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    cursor: pointer; transition: box-shadow .15s, transform .1s;
}
.mt-item:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.09); }
.mt-item:active { transform: scale(.995); }
.mt-item.mt-overdue { background: #fffafa; border-color: #fde0e0; }
.mt-item-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.mt-item-main { flex: 1; min-width: 0; }
.mt-item-title { font-size: 15px; font-weight: 600; color: #1d1d1f; line-height: 1.45; }
.mt-item-meta {
    display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px;
    margin-top: 6px; font-size: 12px; color: #86868b;
}
.mt-wno { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 11px; color: #a1a1a6; }
.mt-loc {
    display: inline-flex; align-items: center; gap: 4px; background: #eef4ff; color: #1a56c9;
    font-weight: 600; padding: 1px 9px; border-radius: 980px; font-size: 11px; white-space: nowrap;
}
.mt-dead { font-weight: 500; }
.mt-dead-over { color: #e0372d; font-weight: 700; }
.mt-item-side { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex-shrink: 0; }
.mt-item .flow-bar { margin: 8px 0 0; }
.mt-card-note { font-size: 12px; color: #86868b; font-weight: 400; }

/* ── ④ 状态 / 优先级徽章（柔和） ── */
.mt-badge {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 10px; border-radius: 980px; font-size: 12px; font-weight: 600;
    white-space: nowrap;
}
.mt-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.mt-badge-wait { background: #fef3e0; color: #e37400; }   /* 待分派/待接单 橙 */
.mt-badge-work { background: #e8f0fe; color: #1a56c9; }   /* 维修中 蓝 */
.mt-badge-ext { background: #f3e8fd; color: #8b5cf6; }    /* 外修中 紫 */
.mt-badge-done { background: #e6f7ee; color: #1a9d5c; }   /* 已完成 绿 */
.mt-badge-over { background: #fde8e8; color: #e0372d; }   /* 超时 红 */
.mt-badge-reject { background: #fde8e8; color: #e0372d; } /* 已驳回/取消 红 */
.mt-badge-major { background: #fde8e8; color: #e0372d; }  /* 重大 红 */
.mt-pri { font-size: 11px; font-weight: 600; padding: 1px 9px; border-radius: 980px; white-space: nowrap; }
.mt-pri-urgent { background: #fde8e8; color: #e0372d; }
.mt-pri-hard { background: #fef3e0; color: #e37400; }
.mt-pri-norm { background: #eef4ff; color: #1a56c9; }
.mt-pri-easy { background: #e6f7ee; color: #1a9d5c; }

/* ── ⑤ 弹窗（Apple 白卡） ── */
.mt-modal { position: fixed; inset: 0; background: rgba(15,23,42,.45); z-index: 9999; display: none; align-items: center; justify-content: center; padding: 20px; }
.mt-modal.show { display: flex; }
.mt-modal-box {
    background: #fff; border-radius: 18px; width: 100%; max-width: 400px;
    max-height: 85vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(15,23,42,.3);
}
.mt-modal-head {
    padding: 15px 18px; font-size: 16px; font-weight: 700; color: #1d1d1f;
    border-bottom: 1px solid #f0f2f6; display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.mt-modal-body { padding: 14px 18px; }
.mt-modal-foot { padding: 10px 18px; border-top: 1px solid #f0f2f6; }
.mt-modal-x { border: none; background: #f2f3f5; color: #86868b; width: 26px; height: 26px; border-radius: 50%; font-size: 12px; cursor: pointer; flex-shrink: 0; }

/* 工单详情行 / 日志 */
.mt-dl { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; font-size: 13px; border-bottom: 1px dashed #f0f2f6; }
.mt-dl:last-child { border-bottom: none; }
.mt-dl .k { color: #86868b; flex-shrink: 0; }
.mt-dl .v { font-weight: 600; color: #1d1d1f; text-align: right; }
.mt-log { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px dashed #eef1f5; font-size: 13px; }
.mt-log:last-child { border-bottom: none; }
.mt-log .act { min-width: 52px; font-weight: 600; color: #0071e3; flex-shrink: 0; }
.mt-log .note { flex: 1; color: #1d1d1f; line-height: 1.5; }
.mt-log .meta { color: #a1a1a6; font-size: 12px; white-space: nowrap; }

/* 分派人员选项 */
.mt-wk-opt {
    display: flex; align-items: center; gap: 8px; padding: 10px 12px;
    border: 1px solid #e5e7eb; border-radius: 12px; margin-bottom: 6px;
    cursor: pointer; background: #fff; transition: border-color .15s, background .15s;
}
.mt-wk-opt:hover { border-color: #b9cdf2; }
.mt-wk-opt.on { border-color: #0071e3; background: #eef4ff; }
.mt-wk-opt input { accent-color: #0071e3; }
.mt-wk-opt input:checked ~ span { color: #1a56c9; }

/* ── ⑥ 提交页：识别区 / 难度选择 / 时限 ── */
.mt-parse-card { border: 1.5px dashed #9ec5fe; background: #f7faff; }
.mt-parse-head { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: #1d1d1f; }
.mt-parse-head .mt-ic { width: 26px; height: 26px; border-radius: 8px; font-size: 12px; }
.mt-result { background: #eef4ff; border-radius: 12px; padding: 10px 14px; font-size: 13px; line-height: 1.9; }
.mt-result-tag { display: inline-block; background: #fff; border: 1px solid #dbe7ff; border-radius: 980px; padding: 2px 11px; margin: 2px 6px 2px 0; font-size: 12px; }
.mt-diff { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-diff label {
    flex: 1 1 calc(25% - 8px); min-width: 88px; box-sizing: border-box; text-align: center;
    padding: 10px 6px; border: 1px solid #e5e7eb; border-radius: 14px;
    cursor: pointer; background: #fff; transition: all .15s;
}
.mt-diff label:hover { border-color: #b9cdf2; }
.mt-diff label.active { border-color: #0071e3; background: #eef4ff; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.mt-diff label.active .dl-name { color: #1a56c9; }
.mt-diff .dl-name { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.mt-diff .dl-time { font-size: 11px; color: #86868b; margin-top: 2px; }
.mt-diff input { position: absolute; opacity: 0; pointer-events: none; }
.mt-limit { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-limit-item {
    flex: 1 1 130px; min-width: 110px; box-sizing: border-box; padding: 10px 12px; border-radius: 14px;
    background: #f8f9fb; text-align: center; font-size: 12px; color: #86868b;
}
.mt-limit-item b { display: block; font-size: 13px; color: #1d1d1f; margin-bottom: 2px; }
.mt-limit-item.hot { background: #fdeeea; }
.mt-limit-item.hot b { color: #e0372d; }

/* ── ⑦ 完工弹窗选项 ── */
.mt-opt { display: flex; align-items: center; gap: 6px; padding: 9px 12px; border: 1px solid #e5e7eb; border-radius: 12px; font-size: 13px; background: #fff; cursor: pointer; transition: all .15s; }
.mt-opt:hover { border-color: #b9cdf2; }
.mt-opt.on { border-color: #0071e3; background: #eef4ff; color: #1a56c9; font-weight: 600; }
.mt-opt input { accent-color: #0071e3; }
.mt-opt-grid { display: flex; flex-wrap: wrap; gap: 6px; }
.mt-opt-grid .mt-opt { flex: 1 1 calc(50% - 6px); box-sizing: border-box; }

/* ── ⑧ 评分星级 ── */
.mt-stars { display: flex; gap: 8px; }
.mt-star {
    width: 42px; height: 42px; border-radius: 12px; background: #f2f3f5; color: #8a94a6;
    display: inline-flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 17px; transition: all .12s;
}

/* ── ⑨ 统计页：排行表 / 评级 / 明细 ── */
@media (min-width: 768px) {
    .mt-page table tr { background: #fff !important; }
    .mt-page table tbody tr:hover { background: #f5f8ff !important; }
    .mt-page table td { padding: 11px 12px; border-bottom: 1px solid #f0f2f6; vertical-align: middle; }
    .mt-page table thead th { background: #f8f9fb; font-size: 12px; color: #86868b; font-weight: 600; padding: 10px 12px; border-bottom: 1px solid #eef1f5; }
}
.mt-rank { display: inline-flex; width: 26px; height: 26px; border-radius: 50%; align-items: center; justify-content: center; font-weight: 700; color: #fff; font-size: 13px; }
.mt-rank-1 { background: #f0b429; }
.mt-rank-2 { background: #9aa7b5; }
.mt-rank-3 { background: #cd7f3d; }
.mt-grade { display: inline-flex; align-items: center; padding: 3px 12px; border-radius: 980px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.mt-grade-gold { background: #fff7e0; color: #b8860b; }
.mt-grade-green { background: #e6f7ed; color: #1a7f4e; }
.mt-grade-blue { background: #e8f0fe; color: #1a56c9; }
.mt-grade-orange { background: #fef3e0; color: #e37400; }
.mt-grade-red { background: #fde8e8; color: #e0372d; }
.mt-rate { color: #f0a020; font-weight: 700; }
.mt-grads { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-grad { flex: 1 1 140px; min-width: 120px; box-sizing: border-box; padding: 12px; border-radius: 14px; text-align: center; font-size: 13px; }
.mt-fault { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-fault-item { flex: 1 1 120px; min-width: 100px; box-sizing: border-box; padding: 12px; border-radius: 14px; background: #f8f9fb; text-align: center; }
.mt-fault-item .n { font-size: 22px; font-weight: 700; color: #1d1d1f; }
.mt-fault-item .n.danger { color: #e0372d; }
.mt-fault-item .l { font-size: 12px; color: #86868b; margin-bottom: 4px; }
.mt-other-note { margin-top: 10px; font-size: 12px; color: #86868b; line-height: 1.8; }

/* ── ⑩ 维修人员页：选择卡 / 任务分组 / 已完成 ── */
.mt-worker-sel { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.mt-worker-sel .form-group { flex: 1; min-width: 200px; margin: 0; }
.mt-worker-sel label { display: block; font-size: 12px; color: #86868b; margin-bottom: 5px; }
.mt-grp-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 9px 16px; background: #f8f9fb; border-bottom: 1px solid #eef1f5;
    cursor: pointer; font-size: 13px; font-weight: 700; color: #1d1d1f;
}
.mt-grp-cnt { font-size: 12px; color: #0071e3; background: #eef4ff; border-radius: 980px; padding: 2px 10px; font-weight: 600; }
.mt-done-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 12px 16px; background: #f8f9fb; cursor: pointer;
    font-weight: 600; font-size: 13px; color: #3a3a3c; border-bottom: 1px solid #eef1f5;
}
.mt-done-item { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 16px; border-bottom: 1px solid #f5f5f7; }

/* ── ⑪ 手机端适配（<768px） ── */
@media (max-width: 767px) {
    .mt-page .form-control, .mt-page select, .mt-page textarea { font-size: 16px; }
    .mt-page .btn, .mt-page button.btn { min-height: 40px; }
    .mt-page .btn-xs, .mt-page button.btn-xs { min-height: 36px; padding: 6px 14px; font-size: 13px; }
    .mt-item { padding: 14px; }
    .mt-item-top { flex-direction: column; }
    .mt-item-side { flex-direction: row; align-items: center; justify-content: flex-start; width: 100%; flex-wrap: wrap; }
    .mt-diff label { flex: 1 1 calc(50% - 8px); }
    .mt-opt-grid .mt-opt { flex: 1 1 100%; }
    .mt-parse-card { padding: 4px; }
    .mt-modal-box { max-width: 92%; }
}

/* 支出页下划线 Tab（复用 rs-tabs，button 版适配 + 计数徽章） */
.ex-tabs { margin: 10px 0 4px; }
.ex-tab {
    background: none; border: none; cursor: pointer;
    font-family: inherit; font-size: 14px; font-weight: 600; color: #6b7280;
    padding: 8px 2px 10px; position: relative; white-space: nowrap;
}
.ex-tab.on { color: #0071e3; }
.ex-tab.on::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -1px;
    height: 2.5px; border-radius: 2px; background: #0071e3;
}
.ex-tab-badge {
    font-style: normal; display: inline-block; background: #ff9500; color: #fff;
    border-radius: 980px; padding: 0 7px; font-size: 10px; font-weight: 700; margin-left: 4px;
    vertical-align: 1px;
}
.ex-tab.on .ex-tab-badge { background: #0071e3; }

/* ═══ 首页桌面端增强（>768px 完整仪表盘布局） ═══ */
@media (min-width: 768px) {
    .home-wrap { padding: 24px 28px 48px; }
    .home-header h1 { font-size: 28px; letter-spacing: -0.5px; }
    .hd-sub { font-size: 14px; margin-top: 6px; }
    .hd-date { font-size: 16px; padding: 10px 18px; }
    .core-grid { gap: 14px; }
    .core-card { padding: 20px 22px; border-radius: 18px; }
    .cc-icon { width: 30px; height: 30px; font-size: 13px; border-radius: 9px; }
    .cc-label { font-size: 13px; }
    .cc-val { font-size: 34px; }
    .cc-sub { font-size: 12px; margin-top: 6px; }
    .todo-item { padding: 10px 16px; font-size: 13px; }
    .quick-grid { grid-template-columns: repeat(6, 1fr); gap: 12px; }
    .quick-item { padding: 18px 8px; border-radius: 16px; }
    .qi-icon { width: 46px; height: 46px; border-radius: 14px; font-size: 18px; }
    .qi-label { font-size: 13px; margin-top: 6px; }
    .chart-row { display: flex; gap: 14px; }
    .chart-row .panel { flex: 1; min-width: 0; }
    .panel { border-radius: 18px; padding: 18px 20px; }
    .pn-title { font-size: 15px; }
    .bar-chart { height: 150px; gap: 10px; }
    .tt-row { margin-bottom: 12px; }
}

/* ═══ 离校退费明细弹窗（重设计） ═══ */
.dm-head {
    padding: 16px 20px; border-bottom: 1px solid #eef1f5;
    display: flex; justify-content: space-between; align-items: center;
}
.dm-title { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.dm-title #detailName { color: #0071e3; }
.dm-close {
    cursor: pointer; width: 28px; height: 28px; border-radius: 50%;
    background: #f0f2f6; color: #6b7280; font-size: 13px;
    display: inline-flex; align-items: center; justify-content: center;
}
.dm-close:active { transform: scale(.92); }
.rd-table { width: 100%; border-collapse: collapse; }
.rd-table thead th {
    background: #f8fafc; color: #6b7280; font-size: 11px; font-weight: 600;
    padding: 8px 10px; border-bottom: 1px solid #eef1f5;
}
.rd-table thead th:first-child { border-radius: 8px 0 0 0; text-align: left; }
.rd-table thead th:last-child { border-radius: 0 8px 0 0; }
.rd-table td {
    padding: 9px 10px; font-size: 13px; border-bottom: 1px solid #f4f5f7;
    color: #4b5563;
}
.rd-table td:first-child { text-align: left; font-weight: 500; }
.rd-table tr:last-child td { border-bottom: none; }
.rd-table td.refund { color: #dc2626; font-weight: 700; }
.rd-table tbody tr:active { background: #f9fafb; }
.rd-total {
    display: flex; justify-content: space-between; align-items: center;
    margin-top: 12px; padding: 12px 14px;
    background: #f0f6ff; border-radius: 10px;
}
.rd-total span { font-size: 12px; color: #6b7280; font-weight: 500; }
.rd-total b { font-size: 20px; color: #0071e3; font-weight: 700; letter-spacing: -0.5px; }
@media (max-width: 767px) {
    .rd-table thead { display: none; }
    .rd-table, .rd-table tbody, .rd-table tr, .rd-table td { display: block; width: 100%; }
    .rd-table tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 12px;
        padding: 8px 12px; margin-bottom: 8px;
    }
    .rd-table td {
        display: flex; justify-content: space-between; align-items: center;
        padding: 5px 0; border: none; font-size: 14px;
    }
    .rd-table td::before { content: attr(data-label); color: #9ca3af; font-size: 12px; }
    .rd-table td.refund { font-size: 16px; }
}

/* ═══ 离校记录表格（重设计） ═══ */
.dp-table { border-collapse: separate !important; border-spacing: 0 !important; }
.dp-table thead th {
    background: #f8fafc !important; color: #6b7280 !important;
    font-size: 12px !important; font-weight: 600 !important;
    padding: 12px 14px !important; border-bottom: 1px solid #eef1f5 !important;
    white-space: nowrap;
}
.dp-table thead th:first-child { border-radius: 12px 0 0 0; }
.dp-table thead th:last-child { border-radius: 0 12px 0 0; }
.dp-table tbody td {
    padding: 12px 14px !important; border-bottom: 1px solid #f4f5f7 !important;
    vertical-align: middle; font-size: 13px;
}
.dp-table tbody tr { transition: background .12s; }
.dp-table tbody tr:hover { background: #f5faff !important; }
.dp-table tbody tr:last-child td { border-bottom: none !important; }
.dp-name { white-space: nowrap; }
.dp-name .av { margin-right: 10px; vertical-align: middle; }
.dp-name-box { display: inline-block; vertical-align: middle; }
.dp-name-box strong { font-size: 14px; display: block; }
.dp-sub { font-size: 10px; color: #9ca3af; }
/* 手机端卡片化 */
@media (max-width: 767px) {
    .dp-table thead { display: none; }
    .dp-table, .dp-table tbody, .dp-table tr, .dp-table td { display: block; width: 100%; }
    .dp-table tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        padding: 10px 14px; margin-bottom: 10px;
        box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    }
    .dp-table td {
        display: flex; justify-content: space-between; align-items: center;
        padding: 6px 0 !important; border: none !important; font-size: 14px;
    }
    .dp-table td::before { content: attr(data-label); color: #9ca3af; font-size: 12px; }
    .dp-table td.dp-name { justify-content: flex-start; }
    .dp-table td.dp-name::before { display: none; }
}

/* ═══ 首页自定义展示数据卡 ═══ */
.hd-cfg {
    background: #f0f6ff; color: #0071e3; border: none; border-radius: 980px;
    padding: 8px 14px; font-size: 12px; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px;
}
.hd-cfg:active { transform: scale(.96); }
.widget-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px;
}
.widget-card {
    background: #fff; border-radius: 16px; padding: 14px;
    box-shadow: 0 1px 8px rgba(0,0,0,0.05); text-decoration: none !important;
    display: block; transition: box-shadow .15s;
}
.widget-card:active { box-shadow: 0 2px 12px rgba(0,113,227,0.12); }
.wc-top { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.wc-icon {
    font-size: 12px; width: 26px; height: 26px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: #0071e3; background: #eef4ff;
}
.wc-label { font-size: 12px; color: #86868b; font-weight: 500; }
.wc-val { font-size: 24px; font-weight: 700; letter-spacing: -0.6px; line-height: 1.1; color: #1d1d1f; }
.wc-sub { font-size: 11px; color: #aeaeb2; margin-top: 4px; }
/* 勾选弹窗 */
.wm-box { max-width: 420px; border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.wm-head {
    padding: 16px 20px; border-bottom: 1px solid #eef1f5;
    display: flex; justify-content: space-between; align-items: center;
}
.wm-title { font-size: 17px; font-weight: 700; }
.wm-close {
    cursor: pointer; width: 28px; height: 28px; border-radius: 50%;
    background: #f0f2f6; color: #6b7280; font-size: 13px;
    display: inline-flex; align-items: center; justify-content: center;
}
.wm-body { padding: 14px 20px; max-height: 60vh; overflow-y: auto; }
.wm-tip { font-size: 12px; color: #9ca3af; margin-bottom: 10px; }
.wm-list { display: flex; flex-direction: column; gap: 4px; }
.wm-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border-radius: 10px; cursor: pointer;
    border: 1px solid #eef1f5; font-size: 13px; font-weight: 500;
}
.wm-item.on { border-color: #0071e3; background: #f0f6ff; }
.wm-ic {
    width: 28px; height: 28px; border-radius: 8px;
    background: #eef4ff; color: #0071e3; font-size: 12px;
    display: inline-flex; align-items: center; justify-content: center;
}
.wm-name { flex: 1; }
.wm-cb {
    width: 18px; height: 18px; border-radius: 50%;
    border: 2px solid #d1d5db; display: inline-block; position: relative;
}
.wm-item.on .wm-cb { border-color: #0071e3; background: #0071e3; }
.wm-item.on .wm-cb::after {
    content: ''; position: absolute; left: 5px; top: 2px;
    width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
.wm-foot {
    padding: 12px 20px; border-top: 1px solid #eef1f5;
    display: flex; justify-content: flex-end; gap: 10px;
}
@media (min-width: 768px) {
    .widget-grid { grid-template-columns: repeat(4, 1fr); gap: 12px; }
    .widget-card { padding: 18px 20px; border-radius: 18px; }
    .wc-val { font-size: 28px; }
}

/* ═══ 首页最新动态板块 ═══ */
.feed-panel {
    background: #fff; border-radius: 16px; padding: 14px 16px; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.feed-head {
    display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;
}
.feed-title { font-size: 14px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }
.feed-ic { color: #0071e3; font-size: 12px; }
.feed-more { font-size: 10px; color: #9ca3af; background: #f0f2f6; border-radius: 980px; padding: 2px 8px; }
.feed-list { display: flex; flex-direction: column; }
.feed-item {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 0; border-bottom: 1px solid #f4f5f7;
}
.feed-item:last-child { border-bottom: none; }
.feed-tag {
    flex-shrink: 0; width: 40px; text-align: center;
    font-size: 11px; font-weight: 600; border-radius: 8px; padding: 4px 0;
}
.ft-缴费 { background: #eef4ff; color: #0071e3; }
.ft-入住 { background: #ecfdf5; color: #059669; }
.ft-离校 { background: #fef2f2; color: #dc2626; }
.ft-报名 { background: #f5f3ff; color: #7c3aed; }
.ft-报修 { background: #fff7ed; color: #ea580c; }
.ft-请假 { background: #f0f9ff; color: #0284c7; }
.feed-main { flex: 1; min-width: 0; }
.feed-title2 { font-size: 13px; font-weight: 600; color: #1d1d1f; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.feed-sub { font-size: 11px; color: #9ca3af; margin-top: 1px; }
.feed-ts { font-size: 10px; color: #c0c4cc; flex-shrink: 0; }
@media (min-width: 768px) {
    .feed-panel { border-radius: 18px; padding: 18px 20px; }
    .feed-item { padding: 10px 0; }
}


/* ═══ 营业额分析卡片 ═══ */
.sa-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.sa-unit { font-size: 10px; color: #9ca3af; font-weight: 400; margin-left: 4px; }
.sa-tabs { display: flex; background: #f0f2f6; border-radius: 980px; padding: 2px; }
.sa-tab {
    border: none; background: none; cursor: pointer;
    font-size: 11px; font-weight: 600; color: #6b7280;
    padding: 4px 14px; border-radius: 980px; font-family: inherit;
}
.sa-tab.on { background: #fff; color: #0071e3; box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.sa-chart { height: 190px; width: 100%; margin-bottom: 4px; }
.sa-svg { display: none; }
.sa-svg { width: 100%; height: auto; display: block; }
.sa-axis {
    display: flex; justify-content: space-between;
    font-size: 9px; color: #b0b4bb; padding: 0 4px; margin-top: 2px;
}
.sa-sum {
    margin-top: 8px; padding-top: 8px; border-top: 1px dashed #eef1f5;
    font-size: 12px; color: #6b7280;
}
.sa-sum b { font-size: 16px; color: #0071e3; font-weight: 700; margin-left: 4px; }
.sa-div { color: #d1d5db; margin: 0 8px; }

/* ═══ 财务报表经营分析图形 ═══ */
.rp-analytics { margin-bottom: 16px; }
.ra-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.ra-title { font-size: 16px; font-weight: 700; }
.ra-sub { font-size: 12px; color: #9ca3af; }
.ra-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
.ra-stat {
    background: #fff; border-radius: 14px; padding: 14px 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ras-lb { font-size: 12px; color: #86868b; margin-bottom: 6px; }
.ras-val { font-size: 22px; font-weight: 700; letter-spacing: -0.5px; }
.ra-panel {
    background: #fff; border-radius: 14px; padding: 14px 16px; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ra-panel-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.ra-panel-title { font-size: 14px; font-weight: 700; margin-bottom: 8px; }
.ra-panel-title small { font-size: 11px; color: #9ca3af; font-weight: 400; }
.ra-seg { display: flex; background: #f0f2f6; border-radius: 980px; padding: 2px; }
.ra-seg-btn {
    border: none; background: none; cursor: pointer;
    font-size: 11px; font-weight: 600; color: #6b7280;
    padding: 4px 14px; border-radius: 980px; font-family: inherit;
}
.ra-seg-btn.on { background: #fff; color: #7c3aed; box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.ra-svg { width: 100%; height: auto; display: block; }
.ra-axis {
    display: flex; justify-content: space-between;
    font-size: 9px; color: #b0b4bb; padding: 0 4px; margin-top: 2px;
}
.ra-legend { font-size: 11px; color: #6b7280; margin-top: 8px; display: flex; align-items: center; gap: 6px; }
.rl-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.rl-inc { background: #7c3aed; }
.rl-exp { background: #f97316; }
.rl-sum { margin-left: auto; font-size: 11px; color: #9ca3af; }
.ra-grid2 { display: grid; grid-template-columns: 1fr; gap: 12px; }
.ra-ring-wrap { display: flex; justify-content: center; padding: 6px 0; }
.ra-ring { width: 170px; height: auto; }
.ra-ring-legend { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.rr-item { display: flex; align-items: center; gap: 8px; font-size: 12px; padding: 3px 0; }
.rr-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.rr-name { flex: 1; color: #4b5563; }
.rr-val { font-weight: 600; color: #1d1d1f; }
.rr-pct { color: #9ca3af; width: 38px; text-align: right; }
.ra-bars { display: flex; flex-direction: column; gap: 8px; }
.rb-row { display: flex; align-items: center; gap: 8px; }
.rb-name { width: 76px; font-size: 11px; color: #4b5563; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rb-track { flex: 1; height: 14px; background: #f4f5f7; border-radius: 980px; overflow: hidden; }
.rb-fill { height: 100%; background: #f97316; border-radius: 980px; }
.rb-val { font-size: 11px; font-weight: 600; color: #1d1d1f; width: 86px; text-align: right; }
.ra-mbars { display: flex; align-items: flex-end; gap: 10px; height: 120px; padding: 4px 0; }
.rmb-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; }
.rmb-bars { flex: 1; display: flex; align-items: flex-end; gap: 3px; width: 100%; justify-content: center; }
.rmb-bar { width: 14px; border-radius: 4px 4px 0 0; min-height: 2px; }
.rmb-inc { background: #7c3aed; }
.rmb-exp { background: #f97316; }
.rmb-lb { font-size: 10px; color: #9ca3af; }
.ra-empty { font-size: 12px; color: #b0b4bb; text-align: center; padding: 18px 0; }
@media (min-width: 768px) {
    .ra-stats { grid-template-columns: repeat(4, 1fr); }
    .ra-grid2 { grid-template-columns: 1fr 1fr; }
    .ras-val { font-size: 26px; }
}

/* ═══ 图表精致化（v2） ═══ */
/* 环形图中心白底遮罩（扇区分隔感） */
.ra-ring-wrap svg { overflow: visible; }
/* 条形图百分比 */
.rb-pct {
    font-size: 10px; color: #9ca3af; width: 34px; text-align: right;
    font-weight: 600;
}
/* 月度柱状图：y 轴刻度 + 网格 */
.ra-mbars { position: relative; padding-left: 40px; }
.rmb-scale {
    position: absolute; left: 0; top: 0; bottom: 18px; width: 38px;
    display: flex; flex-direction: column; justify-content: space-between;
    font-size: 9px; color: #b0b4bb; text-align: right; pointer-events: none;
}
.rmb-scale span { transform: translateY(3px); }
.ra-mbars::before {
    content: ''; position: absolute; left: 40px; right: 0; top: 0; bottom: 18px;
    background: repeating-linear-gradient(to top, transparent 0, transparent calc(25% - 1px), #f0f2f6 calc(25% - 1px), #f0f2f6 25%);
    pointer-events: none;
}
.rmb-col { position: relative; z-index: 1; }

.pf-paid-tip {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 12px; color: #16a34a; font-weight: 500;
}
.pf-paid-tip i { font-size: 13px; }

.pf-flow-ver {
    display: inline-block; background: #eef4ff; color: #0071e3;
    font-size: 9px; font-weight: 700; border-radius: 980px;
    padding: 1px 6px; margin-left: 6px; vertical-align: 2px;
}
/* ── 艺道画室 · Apple + WordPress 融合设计系统 ── */
/*  Mobile-First · SF Pro · 卡片化 · 统一交互  */

:root {
    --primary: #0071e3;
    --primary-hover: #0077ED;
    --primary-light: #e8f4fd;
    --success: #34c759;
    --danger: #ff3b30;
    --warning: #ff9500;
    --bg: #f0f3f6;
    --card: #ffffff;
    --text: #1d1d1f;
    --text2: #646970;
    --text3: #aeaeb2;
    --border: #dcdcde;
    --border-light: #eef0f3;
    --sidebar-bg: #1d2327;
    --sidebar-hover: rgba(255,255,255,0.06);
    --sidebar-active: rgba(0,113,227,0.2);
    --radius-sm: 8px;
    --radius: 12px;
    --radius-lg: 8px;
    --shadow-sm: 0 1px 3px rgba(0,0,0,0.05);
    --shadow: 0 1px 8px rgba(15,30,60,0.06);
    --shadow-lg: 0 4px 24px rgba(0,0,0,0.1);
    --safe-bottom: env(safe-area-inset-bottom, 0px);
    --font: -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text", "Helvetica Neue", "PingFang SC", "Microsoft YaHei", sans-serif;

    /* ═══ 设计标准：字号 ═══ */
    --fs-xs: 11px;   /* 辅助说明 */
    --fs-sm: 12px;   /* 次要信息 */
    --fs-md: 13px;   /* 正文默认 */
    --fs-lg: 14px;   /* 强调 */
    --fs-xl: 16px;   /* 区块标题 */
    --fs-2xl: 20px;  /* 统计数字 */
    --fs-3xl: 24px;  /* 大数字 */

    /* ═══ 设计标准：语义色（深浅对） ═══ */
    --blue: #1e88e5;       --blue-light: #e3f2fd;    /* 合作方/信息 */
    --orange: #e65100;     --orange-light: #fff3e0;  /* 待办/警示 */
    --green: #2e7d32;      --green-light: #e8f5e9;   /* 成功/艺道 */
    --red: #c62828;        --red-light: #fce4ec;     /* 欠费/逾期 */
    --purple: #8e24aa;     --purple-light: #f3e5f5;  /* 统计/教职 */
    --teal: #00838f;       --teal-light: #e0f7fa;    /* 信息辅助 */
    --amber: #f57f17;      --amber-light: #fff8e1;   /* 年内累计 */
}
* { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
body {
    font-family: var(--font);
    background: var(--bg);
    color: var(--text);
    font-size: 15px;
    line-height: 1.5;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    padding-bottom: var(--safe-bottom);
}

/* ═══ MOBILE FIRST ═══ */

/* ── 手机顶栏 ── */
.mobile-topbar {
    display: flex; align-items: center; justify-content: space-between;
    background: var(--sidebar-bg);
    color: #fff;
    padding: 12px 18px;
    position: sticky; top: 0; z-index: 200;
    -webkit-backdrop-filter: saturate(180%) blur(20px);
    backdrop-filter: saturate(180%) blur(20px);
}
.mobile-topbar .brand { font-size: 17px; font-weight: 700; display: flex; align-items: center; gap: 6px; }
.mobile-topbar .brand small { font-size: 11px; font-weight: 400; color: rgba(255,255,255,.5); margin-left: 2px; }
.hamburger {
    background: none; border: none; color: #fff; font-size: 24px; cursor: pointer;
    padding: 6px 8px; border-radius: 8px; line-height: 1;
}

/* ── 侧边栏（WordPress 风格深色） ── */
.sidebar {
    position: fixed; top: 0; left: -280px;
    width: 260px; height: 100vh;
    background: var(--sidebar-bg);
    color: #fff; z-index: 300;
    transition: left .28s cubic-bezier(.25,.1,.25,1);
    display: flex; flex-direction: column;
}
.sidebar.open { left: 0; }
.sidebar .close-btn {
    position: absolute; top: 12px; right: 12px;
    background: rgba(255,255,255,.1); border: none; color: #fff;
    width: 30px; height: 30px; border-radius: 50%;
    font-size: 14px; cursor: pointer; display: flex; align-items: center; justify-content: center;
}
.sidebar .brand {
    padding: 20px 18px 10px; font-size: 18px; font-weight: 700;
    display: flex; align-items: center; gap: 8px;
    border-bottom: 1px solid rgba(255,255,255,.08);
}
.sidebar .brand small { font-size: 11px; font-weight: 400; color: rgba(255,255,255,.35); margin-left: 2px; }
.sidebar nav { flex: 1; overflow-y: auto; padding: 4px 0; }
/* 侧边栏滚动条（与深色侧边栏统一，不露白底） */
.sidebar nav::-webkit-scrollbar { width: 5px; }
.sidebar nav::-webkit-scrollbar-track { background: transparent; }
.sidebar nav::-webkit-scrollbar-thumb { background: rgba(255,255,255,.18); border-radius: 4px; }
.sidebar nav::-webkit-scrollbar-thumb:hover { background: rgba(255,255,255,.32); }
.sidebar nav { scrollbar-width: thin; scrollbar-color: rgba(255,255,255,.25) transparent; }
.sidebar nav a, .sidebar .footer-link, .sidebar nav > a.nav-link { text-decoration: none !important; }
.sidebar-footer { border-top: 1px solid rgba(255,255,255,.08); padding: 4px 0; }

/* ── 手风琴导航（WordPress 风格） ── */
.nav-group { margin: 0; }
.nav-group-header {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 16px; cursor: pointer;
    font-size: 14px; font-weight: 400; color: rgba(255,255,255,.65);
    transition: color .12s, background .12s; border-left: 3px solid transparent;
    user-select: none; -webkit-user-select: none;
}
.nav-group-header:hover { background: var(--sidebar-hover); color: #fff; }
.nav-group-header span { text-decoration: none; }
.nav-group.expanded > .nav-group-header {
    color: #fff;
    background: rgba(255,255,255,.04);
}
.nav-group-header .arrow { font-size: 10px; transition: transform .2s ease; opacity: .5; display: inline-block; margin-right: 4px; }
.arrow i { font-size: 10px; }
.nav-group.expanded .nav-group-header .arrow { transform: rotate(90deg); opacity: .8; }
.nav-group-body {
    overflow: hidden; max-height: 0;
    transition: max-height .22s cubic-bezier(.4,0,.2,1);
    background: rgba(0,0,0,.1);
    will-change: max-height;
}
.nav-group.expanded .nav-group-body { max-height: 500px; }
.nav-group-body a {
    padding: 8px 16px 8px 42px !important;
    font-size: 13px !important;
    color: rgba(255,255,255,.5) !important;
    border-left: 3px solid transparent !important;
    text-decoration: none !important;
    display: flex !important;
    align-items: center !important;
    gap: 8px !important;
}
.nav-group-body a i { font-size: 14px; width: 18px; text-align: center; color: rgba(255,255,255,.4); }
.nav-group-body a.active i { color: #fff; }
.nav-group-body a:hover { background: var(--sidebar-hover); color: #fff !important; }
.nav-group-body a:hover i { color: #fff; }
.nav-group-body a.active {
    color: #fff !important;
    border-left-color: var(--primary) !important;
    background: var(--sidebar-active) !important;
}
.nav-icon { min-width: 20px; text-align: center; }

/* ── 侧边栏通用链接 ── */
.sidebar nav > a {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 16px; color: rgba(255,255,255,.65); text-decoration: none;
    font-size: 14px; transition: all .12s;
    border-left: 3px solid transparent;
}
.sidebar nav > a:hover { background: var(--sidebar-hover); color: #fff; }
.sidebar nav > a.active { color: #fff; border-left-color: var(--primary); background: var(--sidebar-active); }

.sidebar .footer-link {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 16px; color: rgba(255,255,255,.45); cursor: pointer;
    font-size: 13px; transition: .12s;
}
.sidebar .footer-link:hover { background: var(--sidebar-hover); color: #fff; }
.sidebar .footer-link i { width: 18px; text-align: center; color: rgba(255,255,255,.35); }
.sidebar .footer-link:hover i { color: #fff; }
/* ── 首页直链 ── */
.sidebar nav > a.nav-link {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 16px; color: rgba(255,255,255,.65); text-decoration: none;
    font-size: 14px; transition: all .12s;
    border-left: 3px solid transparent;
}
.sidebar nav > a.nav-link:hover { background: var(--sidebar-hover); color: #fff; }
.sidebar nav > a.nav-link i { font-size: 15px; width: 20px; text-align: center; color: rgba(255,255,255,.4); }
.sidebar nav > a.nav-link.active i { color: #fff; }
.sidebar nav > a.nav-link.active { color: #fff; border-left-color: var(--primary); background: var(--sidebar-active); }
.sidebar-overlay {
    position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(0,0,0,.4); z-index: 299; display: none;
}
.sidebar-overlay.show { display: block; }

/* ── 内容区 ── */
.main {
    max-width: 960px;
    margin: 0 auto;
    padding: 12px 14px 40px;
    min-height: 100vh;
}

/* ── 页面标题 ── */
.page-header {
    display: flex; justify-content: space-between; align-items: flex-start;
    margin-bottom: 16px; flex-wrap: wrap; gap: 8px;
}
.page-header h2 { font-size: 20px; font-weight: 600; color: var(--text); }
.page-header .subtitle { font-size: 13px; color: var(--text2); margin-top: 1px; }

/* ── 统计卡片 ── */
.stats-row { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; margin-bottom: 16px; }
.stat-card {
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 14px 16px;
    border: 1px solid var(--border-light);
    border-left: 4px solid var(--primary);
    transition: transform .15s, box-shadow .15s;
}
.stat-card:hover { transform: translateY(-2px); box-shadow: var(--shadow-lg); }
.stat-card .label { font-size: 12px; color: var(--text2); font-weight: 500; margin-bottom: 2px; }
.stat-card .value { font-size: 22px; font-weight: 700; letter-spacing: -.01em; }
.stat-card .value.blue { color: var(--primary); }
.stat-card .value.green { color: var(--success); }
.stat-card .value.orange { color: var(--warning); }
.stat-card .value.red { color: var(--danger); }
.stat-card .value.purple { color: #6a1b9a; }

/* ── 卡片 ── */
.card {
    background: var(--card);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    margin-bottom: 14px;
    overflow: hidden;
    border: 1px solid var(--border-light);
}
.card-header {
    padding: 12px 16px;
    font-weight: 600;
    font-size: 14px;
    border-bottom: 1px solid var(--border-light);
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    color: var(--text);
    background: #fafafa;
}
.card-body { padding: 12px 16px; }
.card-body:empty { display: none; }
.card:empty { display: none; }

/* ── 表格（桌面端 WordPress 风格） ── */
.table-wrap { overflow-x: auto; }
table { width: 100%; border-collapse: collapse; font-size: 13px; }
table thead { display: none; }
table tr {
    display: block;
    padding: 10px 14px;
    border-bottom: 1px solid var(--border-light);
    transition: background .1s;
}
table tr:last-child { border-bottom: none; }
table tbody tr:hover { background: #f8f9fa; }
table td {
    display: flex; justify-content: space-between; align-items: center;
    padding: 4px 0; font-size: 13px;
}
table td:before {
    content: attr(data-label);
    font-weight: 500; color: var(--text2); font-size: 12px;
    flex-shrink: 0; margin-right: 10px;
}
table td.nolabel:before { display: none; }
table td:last-child { border-bottom: none; }
table td[colspan]:before { display: none; }
@media (min-width: 768px) {
    table thead { display: table-header-group; }
    table tr { display: table-row; padding: 0; }
    table tr:nth-child(even) { background: #fafafa; }
    table tbody tr:hover { background: #f0f6fc; }
    table td { display: table-cell; padding: 8px 12px; border-bottom: 1px solid var(--border-light); }
    table td:before { display: none; }
    table th {
        padding: 10px 12px; font-size: 12px; color: var(--text2); font-weight: 600;
        text-align: left; border-bottom: 2px solid var(--border);
        background: #f8f9fa;
        text-transform: uppercase; letter-spacing: .03em;
    }
}

/* ── 表单 ── */
.form-group { margin-bottom: 12px; }
.form-group label { display: block; font-size: 13px; font-weight: 500; color: var(--text2); margin-bottom: 4px; }
.form-control {
    display: block; width: 100%; padding: 9px 14px;
    border: 1px solid transparent; border-radius: var(--radius-sm);
    font-size: 14px; background: #eef1f4;
    transition: all .2s; -webkit-appearance: none; appearance: none;
    outline: none; font-family: var(--font);
}
.form-control:focus { background: #fff; border-color: #366de4; box-shadow: 0 0 0 3px rgba(54,109,228,.12); }
select.form-control {
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238a93a3' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center;
    padding-right: 32px; cursor: pointer;
}
textarea.form-control { resize: vertical; min-height: 80px; }

.form-row { display: flex; gap: 10px; flex-wrap: wrap; }
.form-row .form-group { flex: 1; min-width: 80px; }

/* ── 按钮 ── */
.btn {
    display: inline-flex; align-items: center; justify-content: center; gap: 6px;
    padding: 8px 18px; border: none; border-radius: var(--radius-sm);
    font-size: 13px; font-weight: 500; cursor: pointer;
    transition: all .15s; text-decoration: none; white-space: nowrap;
    -webkit-appearance: none;
}
.btn:active { transform: scale(.97); }
.btn-block { width: 100%; justify-content: center; }
.btn-primary { background: #366de4; color: #fff; }
.btn-primary:hover { background: #2f5fd0; box-shadow: 0 2px 8px rgba(54,109,228,.3); }
.btn-success { background: var(--success); color: #fff; }
.btn-success:hover { box-shadow: 0 2px 8px rgba(52,199,89,.3); }
.btn-danger { background: var(--danger); color: #fff; }
.btn-danger:hover { box-shadow: 0 2px 8px rgba(255,59,48,.3); }
.btn-warning { background: var(--warning); color: #fff; }
.btn-warning:hover { box-shadow: 0 2px 8px rgba(255,149,0,.3); }
.btn-outline { background: #fff; border: 1px solid #d9dee4; color: #3a4350; }
.btn-outline:hover { background: #f5f7f9; border-color: #366de4; color: #366de4; }
.btn-info { background: #00bcd4; color: #fff; }
.btn-info:hover { box-shadow: 0 2px 8px rgba(0,188,212,.3); }
.btn-sm { padding: 5px 14px; font-size: 12px; }
.btn-xs { padding: 3px 10px; font-size: 11px; }

/* ── 图表 ── */
.chart-container { width: 100%; height: 220px; }

/* ── 空状态 ── */
.empty-state {
    text-align: center; padding: 40px 16px; color: var(--text2);
}
.empty-state .emoji { font-size: 48px; margin-bottom: 10px; }
.empty-state p { font-size: 14px; }

/* ── 徽章 ── */
.badge {
    display: inline-block; padding: 2px 8px; border-radius: 4px;
    font-size: 11px; font-weight: 500; background: var(--primary-light); color: var(--primary);
}

/* ── 弹窗 ── */
.modal-overlay {
    display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%;
    background: rgba(0,0,0,.5); z-index: 500;
    align-items: center; justify-content: center; padding: 20px;
}
.modal-overlay.show { display: flex; }
.modal-box {
    background: #fff;
    border-radius: 16px; padding: 24px;
    max-width: 90%; width: 400px;
    box-shadow: 0 20px 60px rgba(0,0,0,.25);
    max-height: 90vh; overflow-y: auto;
}
.modal-box h3 { font-size: 17px; font-weight: 700; margin-bottom: 16px; }

/* ── 明细表格（离校退费明细统一样式） ── */
.modal-detail-table { width: 100%; font-size: 13px; border-collapse: collapse; }
.modal-detail-table th { text-align: left; padding: 6px 10px; border-bottom: 1px solid var(--border-light); color: var(--text2); font-weight: 600; white-space: nowrap; }
.modal-detail-table th.num, .modal-detail-table td.num { text-align: right; }
.modal-detail-table td { padding: 6px 10px; border-bottom: 1px dashed var(--border-light); }
.modal-detail-table td.refund { color: var(--success); font-weight: 700; }
.detail-total { margin-top: 10px; padding: 8px 12px; background: var(--green-light); border-radius: 8px; font-weight: 700; font-size: 13px; }

/* ── 双栏 ── */
.two-col { display: grid; grid-template-columns: 1fr; gap: 12px; }
@media (min-width: 768px) { .two-col { grid-template-columns: 1fr 1fr; } }

/* ── 设置面板 ── */
.settings-tab {
    padding: 8px 16px; border: none; background: none; cursor: pointer;
    font-size: 14px; font-weight: 500; color: var(--text2);
    border-bottom: 2px solid transparent; transition: .15s;
}
.settings-tab.active { color: var(--primary); border-bottom-color: var(--primary); }
.settings-tab:hover { color: var(--text); }

/* ── 预设主题卡片 ── */
.theme-card {
    padding: 6px 12px; border-radius: 8px; cursor: pointer; font-size: 12px; font-weight: 500;
    border: 2px solid transparent; transition: .15s; text-align: center; min-width: 70px;
}
.theme-card:hover { transform: scale(1.05); border-color: var(--primary); }

/* ── 图标选择 ── */
.icon-opt { width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; cursor: pointer; border-radius: 6px; border: 1px solid var(--border); font-size: 16px; transition: .1s; }
.icon-opt:hover { background: var(--primary-light); border-color: var(--primary); }
.icon-opt.selected { background: var(--primary); color: #fff; border-color: var(--primary); }
.nav-icon-item { display: flex; align-items: center; gap: 6px; padding: 3px 6px; border-radius: 4px; cursor: pointer; font-size: 12px; transition: .1s; }
.nav-icon-item:hover { background: #f0f0f0; }
.nav-icon-item.active { background: var(--primary-light); color: var(--primary); }

/* ── 设置面板标签 ── */
.settings-tab-content { display: none; }
#tab-basic { display: block; }

/* ── 色块选择 ── */
.color-swatch { width: 30px; height: 30px; border-radius: 6px; cursor: pointer; border: 2px solid #ddd; transition: .12s; }
.color-swatch:hover { transform: scale(1.12); }

/* ── 房间卡片 ── */
.room-slot { transition: all .15s ease; }
.room-slot:hover { transform: scale(1.04); box-shadow: 0 2px 10px rgba(0,0,0,.1); }
.floor-pill:hover { transform: scale(1.04); box-shadow: 0 2px 8px rgba(0,0,0,.1); }

/* ── 拖拽排序 ── */
.nav-drag-item {
    transition: all .25s cubic-bezier(.25,.1,.25,1) !important;
}
.nav-drag-item[draggable=true]:hover {
    border-left: 2px solid rgba(255,255,255,.15);
}
.nav-drag-item[draggable=true]:active {
    cursor: grabbing !important;
}
tr.drag-row {
    transition: transform .2s cubic-bezier(.25,.1,.25,1), opacity .2s, box-shadow .15s;
}
tr.drag-row:hover {
    background: rgba(0,113,227,.04);
}
tr.drag-row:active {
    cursor: grabbing !important;
}
/* 首页菜单一致性 */
.nav-drag-item[data-key="首页"] .nav-group-header {
    cursor: default !important;
}
.nav-drag-item[data-key="首页"] .nav-group-header:after {
    content: none !important;
}
.nav-drag-item[data-key="首页"] .nav-group-header.active-home {
    border-left-color: var(--primary);
}
/* 返回按钮在侧栏底部 */
.sidebar-footer #backBtn { display: flex !important; }
.flash-msg {
    padding: 10px 16px; border-radius: var(--radius-sm); margin-bottom: 12px;
    font-size: 13px; display: flex; align-items: center; gap: 8px;
}
.flash-msg.success { background: #edf7ed; color: #1e8a1e; border: 1px solid #b7e0b7; }
.flash-msg.danger { background: #fbe9e7; color: #c62828; border: 1px solid #f5c6cb; }
.flash-msg.warning { background: #fff8e1; color: #e65100; border: 1px solid #ffe082; }
.flash-msg.info { background: #e3f2fd; color: #1565c0; border: 1px solid #bbdefb; }

/* ── 桌面适配 ── */
@media (min-width: 768px) {
    body { padding-top: 0; }
    .mobile-topbar { display: none; }
    .sidebar { left: 0; }
    .main { margin-left: 280px; padding: 20px 24px 60px; max-width: none; }
    .sidebar-overlay { display: none !important; }
    .stats-row { grid-template-columns: repeat(auto-fill, minmax(170px, 1fr)); }
}

/* ── 快速工具 ── */
.quick-grid {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr));
    gap: 12px; margin: 16px 0 20px;
}
.quick-card {
    display: flex; align-items: center; gap: 14px;
    background: var(--card); border: 1px solid var(--border-light);
    border-radius: 14px; padding: 16px 18px;
    box-shadow: 0 1px 3px rgba(0,0,0,.05);
    transition: all .22s; text-decoration: none; cursor: pointer;
}
.quick-card:hover {
    transform: translateY(-3px); box-shadow: 0 8px 24px rgba(0,0,0,.1);
    border-color: var(--primary);
}
.qc-emoji {
    width: 46px; height: 46px; border-radius: 12px; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 20px; color: var(--primary);
}
.qc-label { font-weight: 700; font-size: 15px; color: var(--text1); }
.qc-desc { font-size: 12px; color: var(--text2); margin-top: 3px; line-height: 1.4; }

/* ── 登录/注册页 ── */
body.auth-page .sidebar, body.auth-page .mobile-topbar { display: none; }
body.auth-page .main { margin-left: 0; padding: 0; max-width: 100%; }

/* ══════════════════════════════════════════════
   设计标准 · 工具类（全站统一使用）
   ══════════════════════════════════════════════ */
/* ── 字号：.f-xs / .f-sm / .f-md / .f-lg / .f-xl ── */
.f-xs { font-size: var(--fs-xs); }
.f-sm { font-size: var(--fs-sm); }
.f-md { font-size: var(--fs-md); }
.f-lg { font-size: var(--fs-lg); }
.f-xl { font-size: var(--fs-xl); }
.f-2xl { font-size: var(--fs-2xl); }

/* ── 语义色文字：.c-primary / .c-success / ... ── */
.c-primary { color: var(--primary); }
.c-success { color: var(--success); }
.c-danger { color: var(--danger); }
.c-warning { color: var(--warning); }
.c-blue { color: var(--blue); }
.c-orange { color: var(--orange); }
.c-green { color: var(--green); }
.c-red { color: var(--red); }
.c-purple { color: var(--purple); }
.c-teal { color: var(--teal); }
.c-text2 { color: var(--text2); }

/* ── 渐变统计卡（统一规格：圆角8 / 无边框 / 居中 / padding 14x10） ── */
.grad-card { margin: 0; border-radius: var(--radius-lg); border: none; box-shadow: var(--shadow); text-align: center; padding: 14px 10px; }
.grad-card .card-body { text-align: center; padding: 0; }
.grad-card .g-label { font-size: var(--fs-xs); }
.grad-card .g-value { font-size: var(--fs-2xl); font-weight: 700; line-height: 1.3; }
.grad-card .g-sub { font-size: 10px; opacity: .7; }
.grad-blue   { background: linear-gradient(135deg, var(--blue-light), #bbdefb); }
.grad-blue  .g-label, .grad-blue .g-value, .grad-blue .g-sub, .grad-blue .f-2xl, .grad-blue .f-sm { color: var(--blue); }
.grad-green  { background: linear-gradient(135deg, var(--green-light), #dcedc8); }
.grad-green  .g-label, .grad-green .g-value, .grad-green .g-sub, .grad-green .f-2xl, .grad-green .f-sm { color: var(--green); }
.grad-orange { background: linear-gradient(135deg, var(--orange-light), #ffecb3); }
.grad-orange  .g-label, .grad-orange .g-value, .grad-orange .g-sub, .grad-orange .f-2xl, .grad-orange .f-sm { color: var(--orange); }
.grad-red    { background: linear-gradient(135deg, var(--red-light), #f8bbd0); }
.grad-red  .g-label, .grad-red .g-value, .grad-red .g-sub, .grad-red .f-2xl, .grad-red .f-sm { color: var(--red); }
.grad-purple { background: linear-gradient(135deg, var(--purple-light), #e1bee7); }
.grad-purple  .g-label, .grad-purple .g-value, .grad-purple .g-sub, .grad-purple .f-2xl, .grad-purple .f-sm { color: var(--purple); }
.grad-teal   { background: linear-gradient(135deg, var(--teal-light), #b2ebf2); }
.grad-teal  .g-label, .grad-teal .g-value, .grad-teal .g-sub, .grad-teal .f-2xl, .grad-teal .f-sm { color: var(--teal); }
.grad-amber  { background: linear-gradient(135deg, var(--amber-light), #ffecb3); }
.grad-amber  .g-label, .grad-amber .g-value, .grad-amber .g-sub, .grad-amber .f-2xl, .grad-amber .f-sm { color: var(--amber); }

/* ── 彩色标签胶囊：.tag.tag-blue 等 ── */
.tag { display: inline-block; font-size: var(--fs-xs); padding: 1px 8px; border-radius: 10px; font-weight: 600; }
.tag-blue   { background: var(--blue-light);   color: var(--blue); }
.tag-green  { background: var(--green-light);  color: var(--green); }
.tag-orange { background: var(--orange-light); color: var(--orange); }
.tag-red    { background: var(--red-light);    color: var(--red); }
.tag-purple { background: var(--purple-light); color: var(--purple); }
.tag-teal   { background: var(--teal-light);   color: var(--teal); }
.tag-gray   { background: #f0f0f0;             color: #555; }

/* ── 组件统一规格 ── */
.page-header h2 { font-size: var(--fs-2xl); font-weight: 700; }
.card-header { font-size: var(--fs-lg); font-weight: 600; }
table th { font-size: var(--fs-sm); }
table td { font-size: var(--fs-md); }
.form-control { font-size: var(--fs-md); }
.btn { font-size: var(--fs-md); }

/* ── 打印 ── */
@media print { .sidebar, .mobile-topbar, .no-print { display: none !important; } .main { margin-left: 0; } }

/* 老师课量滑块（123 分段滑动） */
.tl-slider{position:relative;display:flex;width:108px;height:26px;background:#f0f2f5;border-radius:13px;overflow:hidden;flex-shrink:0;}
.tl-thumb{position:absolute;top:0;left:0;bottom:0;width:33.333%;display:flex;align-items:center;justify-content:center;transition:left .35s cubic-bezier(.22,.9,.35,1);}
.tl-thumb i{display:block;width:calc(100% - 6px);height:calc(100% - 6px);background:#0071e3;border-radius:11px;box-shadow:0 1px 4px rgba(0,113,227,.35);}
.tl-seg{position:relative;flex:1;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:#8a93a3;cursor:pointer;z-index:1;user-select:none;transition:color .25s;}
.tl-seg:hover{color:#0071e3;}
.tl-seg.tl-on{color:#fff;}

/* ── 上传组件（参考 上传.png：虚线框 + 蓝色上传按钮） ── */
input[type=file].form-control {
    background: #eef1f4; border: 1.5px dashed #b8c2cc; border-radius: 10px;
    padding: 10px 12px; cursor: pointer; color: #57606f; font-size: 13px;
    transition: all .2s;
}
input[type=file].form-control:hover { border-color: #366de4; background: #f0f5ff; }
input[type=file].form-control::file-selector-button {
    background: #366de4; color: #fff; border: none; border-radius: 8px;
    padding: 6px 14px; margin-right: 10px; font-size: 13px; font-weight: 500;
    cursor: pointer; transition: background .15s;
}
input[type=file].form-control::file-selector-button:hover { background: #2f5fd0; }

/* ── Tab 切换过渡动画（全站）：淡入 + 微缩放（Apple 风格） ── */
.yd-tab-fade { animation: ydTabFade .32s cubic-bezier(.25,.8,.35,1); }
@keyframes ydTabFade { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: scale(1); } }

/* ── 数据卡片交错入场（首页 ws-card / card） ── */
.stagger-card { opacity: 0; transform: translateY(16px); transition: opacity .7s cubic-bezier(.25,.8,.35,1), transform .7s cubic-bezier(.25,.8,.35,1); }
.stagger-card.in { opacity: 1; transform: none; }

/* ── 首页看板编辑模式 ── */
.dash-grip { display:none; position:absolute; left:8px; top:8px; font-size:14px; color:rgba(255,255,255,.8); cursor:grab; z-index:2; }
.dash-resize { display:none; position:absolute; right:6px; bottom:4px; font-size:14px; color:#366de4; cursor:nwse-resize; z-index:2; }
body.dash-editing .dash-grip { display:block; }
body.dash-editing .dash-resize { display:block; }
body.dash-editing .deep-card { outline:1.5px dashed rgba(54,109,228,.55); outline-offset:2px; }
body.dash-editing .dash-big-card { outline:1.5px dashed rgba(54,109,228,.55); outline-offset:2px; }
.dash-big-card { position: relative; width: 100%; justify-self: stretch; }
body.dash-editing .dash-top-item, body.dash-editing .dash-big-card { cursor:grab; }
.dash-big-card { position:relative; }
.dash-big-card[data-w="half"] { grid-column: span 2; }
.dash-big-card[data-w="full"] { grid-column: 1 / -1; }
#dashBigCards > .dash-big-card { flex: 1 1 270px; max-width: 100%; }
#dashBigCards > .dash-big-card[data-w="half"] { flex: 2 2 270px; }
#dashBigCards > .dash-big-card[data-w="full"] { flex: 3 3 100%; }
@media (max-width: 900px) { #dashBigCards > .dash-big-card[data-w="half"] { flex: 2 2 270px; } #dashBigCards > .dash-big-card[data-w="full"] { flex: 3 3 100%; } }

.dash-top-item { display: block; }

body.dash-editing .dash-del-btn { display: inline-block !important; }

/* 数字等宽（滚动/跳变不晃动） */
.dc-val { font-variant-numeric: tabular-nums; white-space: nowrap; }

/* 拖拽：浮起卡 + 占位卡 */
.dash-dragging { box-shadow: 0 14px 34px rgba(15,30,60,.22); }
.dash-placeholder { background: rgba(54,109,228,.07); border: 1.5px dashed rgba(54,109,228,.35); border-radius: 12px; }


.dash-ghost { border-radius: 12px; overflow: hidden; transition: none !important; animation: none !important; }

/* 拖拽目标卡高亮（静态样式切换，无动画——微信内核不闪） */
.dash-target {
    outline: 2px solid #366de4 !important;
    outline-offset: -2px !important;
    box-shadow: 0 0 0 4px rgba(54, 109, 228, 0.15) !important;
    background: #e7eaee !important;
    border-radius: 12px;
}
/* 顶部小卡被覆盖：白底 + 深色文字（原深色渐变+白字，变白需同步改字色） */
#dashModuleGrid .dash-target {
    background: #ffffff !important;
}
#dashModuleGrid .dash-target .dc-icon,
#dashModuleGrid .dash-target .dc-val,
#dashModuleGrid .dash-target .dc-label {
    color: #1f2d4d !important;
}

/* 添加模块弹窗列表项 */
.dash-add-item:hover { background: #f0f4fb; }
.dash-add-item:active { background: #e6eef9; }

/* ── 首页看板卡片宽度 · 响应式自适应 ── */
@media (max-width: 640px) {
    #dashBigCards > .dash-big-card,
    #dashBigCards > .dash-big-card[data-w="half"],
    #dashBigCards > .dash-big-card[data-w="full"] {
        flex: 1 1 100% !important;
        width: 100% !important;
    }
    #dashModuleGrid { grid-template-columns: repeat(2, 1fr) !important; }
}
@media (min-width: 641px) and (max-width: 960px) {
    #dashBigCards > .dash-big-card { flex: 1 1 calc(50% - 6px) !important; }
    #dashBigCards > .dash-big-card[data-w="half"],
    #dashBigCards > .dash-big-card[data-w="full"] {
        flex: 1 1 100% !important;
        width: 100% !important;
    }
}

/* ── 宽屏内容区自适应（限制最大宽度，大屏不拉满）── */
@media (min-width: 1500px) {
    main, .main {
        max-width: 1200px;
        margin-left: auto;
        margin-right: auto;
        padding-left: calc(280px + 24px);
        padding-right: 24px;
    }
}

/* 维修位置/房号 醒目标签 */
.loc-tag {
    background: #eef4ff;
    color: #1a56c9;
    font-weight: 700;
    padding: 2px 8px;
    border-radius: 6px;
    font-size: 12px;
    white-space: nowrap;
}

/* 报修难易程度选择器（卡片单选） */
.difficulty-picker { display:grid; grid-template-columns:repeat(4,1fr); gap:8px; }
.difficulty-picker label {
    display:block; cursor:pointer; text-align:center;
    border:1.5px solid #e3e8f0; border-radius:12px;
    padding:10px 6px 8px; background:#fff;
    transition:border-color .2s, background .2s, box-shadow .2s;
}
.difficulty-picker label:hover { border-color:#b9cdf2; }
.difficulty-picker input { position:absolute; opacity:0; pointer-events:none; }
.difficulty-picker .dl-name { font-size:14px; font-weight:700; color:#3a4a63; }
.difficulty-picker .dl-time { font-size:11px; color:#8a94a8; margin-top:2px; }
.difficulty-picker label.active { border-color:#366de4; background:#eef4ff; box-shadow:0 0 0 3px rgba(54,109,228,.12); }
.difficulty-picker label.active .dl-name { color:#1a56c9; }
.difficulty-picker label.active .dl-time { color:#5b7fc9; }
@media (max-width:480px){ .difficulty-picker { grid-template-columns:repeat(2,1fr); } }

/* ── 维修流程条（1报修→2分派→3维修→4完成）── */
.flow-bar{display:flex;align-items:center;gap:0;margin:8px 0 4px;flex-wrap:nowrap;overflow-x:auto;}
.flow-step{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--text2);white-space:nowrap;}
.flow-step .dot{width:9px;height:9px;border-radius:50%;background:#cbd2dc;flex-shrink:0;}
.flow-step.done{color:#1a56c9;font-weight:600;}
.flow-step.done .dot{background:#1a56c9;}
.flow-step.current{color:#e37400;font-weight:700;font-size:13px;}
.flow-step.current .dot{width:11px;height:11px;background:#e37400;box-shadow:0 0 0 3px rgba(227,116,0,.18);}
.flow-step.cancel{color:var(--danger);font-weight:700;}
.flow-step.cancel .dot{background:var(--danger);}
.flow-line{flex:1;min-width:10px;height:2px;background:#e3e8f0;margin:0 5px;border-radius:1px;}
.flow-line.done{background:#1a56c9;}

/* 设置折叠组（侧边栏底部） */
.footer-group .footer-link { display:flex; align-items:center; justify-content:space-between; cursor:pointer; }
.footer-sub { padding:2px 0 6px; }
.footer-sub-link { display:flex; align-items:center; gap:8px; padding:7px 16px 7px 38px; color:rgba(255,255,255,.62);
    font-size:13px; text-decoration:none; transition:background .15s,color .15s; }
.footer-sub-link:hover { background:rgba(255,255,255,.07); color:#fff; }
.footer-sub-link.active { color:#fff; background:rgba(59,130,246,.18); }

/* 学员名册：手机端精简（保留姓名/画室班级/宿舍/档案） */
@media (max-width: 767px) {
    table td.col-hide-sm { display: none !important; }
    table td.col-name {
        font-size: 16px;
        background: #f0f6ff;
        margin: -4px -14px 4px;
        padding: 10px 14px;
        border-radius: 8px;
    }
}

/* 学员名册：手机卡片列表（替换表格） */
.roster-mobile { display: none; }
@media (max-width: 767px) {
    .roster-mobile { display: block; }
    .roster-desktop { display: none !important; }
    .rm-item { display: block; padding: 12px 16px; border-bottom: 1px solid var(--border-light);
        text-decoration: none; color: inherit; }
    .rm-item:active { background: #f0f6ff; }
    .rm-top { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
    .rm-name { font-size: 17px; font-weight: 700; color: #1f2937; }
    .rm-class { background: var(--blue-light); color: var(--blue); padding: 1px 8px;
        border-radius: 10px; font-size: 12px; font-weight: 600; }
    .rm-dorm { background: #eef4ff; color: #1a56c9; padding: 1px 8px; border-radius: 10px;
        font-size: 12px; font-weight: 600; }
    .rm-sub { display: flex; gap: 12px; margin-top: 4px; font-size: 12px; color: var(--text2); }
}

/* 宿舍：手机端卡片（待入住预订/待分配宿舍） */
.dorm-mobile-cards { display: none; }
@media (max-width: 767px) {
    .dorm-mobile-cards { display: block; }
    .dorm-desktop-table { display: none !important; }
    .dm-card { padding: 12px 16px; border-bottom: 1px solid var(--border-light); }
    .dm-card:last-child { border-bottom: none; }
    .dm-top { display: flex; align-items: center; gap: 8px; font-size: 16px; margin-bottom: 6px; }
    .dm-line { display: flex; font-size: 13px; padding: 2px 0; }
    .dm-line span { width: 70px; flex-shrink: 0; color: var(--text2); font-size: 12px; }
}

/* ═══ 全站手机端适配优化（覆盖所有页面） ═══ */
@media (max-width: 767px) {

    /* 1. 禁 hover 效果（手机无鼠标）——提升流畅度 */
    * { -webkit-tap-highlight-color: transparent; }
    .card:hover, table tbody tr:hover, .btn:hover, .stat-card:hover,
    .grad-card:hover, .dash-card:hover, .nav-item:hover, a:hover {
        transform: none !important;
        box-shadow: none !important;
    }

    /* 2. 动画降级（手机精简） */
    * {
        animation-duration: .1s !important;
        transition-duration: .1s !important;
    }

    /* 3. 弹窗手机全屏化（更易操作） */
    .modal-box { max-width: 100% !important; width: 100% !important;
        border-radius: 16px 16px 0 0 !important; margin: 0 !important;
        position: fixed; bottom: 0; left: 0; max-height: 92vh !important;
        overflow-y: auto; }
    .modal-overlay { align-items: flex-end !important; }

    /* 4. 按钮最小触控 40px */
    .btn, button { min-height: 36px; }
    .btn-xs { min-height: 32px; }

    /* 5. 表单输入优化 */
    input, select, textarea { font-size: 16px !important; } /* 防 iOS 缩放 */

    /* 6. 卡片间距紧凑 */
    .card { margin-bottom: 10px; }
    .card-header { padding: 10px 14px; }
    .card-body { padding: 10px 14px; }

    /* 7. 页头紧凑 */
    .page-header { padding: 10px 0 8px; }
    .page-header h2 { font-size: 20px; }

    /* 8. 表格横向滚动优化（保留完整信息） */
    .table-wrap { -webkit-overflow-scrolling: touch; }

    /* 9. 主内容区边距 */
    .main, .main-content { padding: 10px 12px 60px; }

    /* 10. 流程图/流程条紧凑 */
    .flow-step { min-width: 0; }
}

/* ═══ 手机端修复 2：兜底覆盖（不依赖模板改动） ═══ */
@media (max-width: 767px) {
    /* 大表 min-width 强制收缩（内联样式也用 !important 覆盖） */
    .table-wrap table, table { min-width: 0 !important; width: 100% !important; }
    /* 自定义弹窗容器（维修分派等 .modal 类）手机全屏化 */
    .modal { max-width: 100% !important; width: 100% !important;
        left: 0 !important; right: 0 !important; bottom: 0 !important; top: auto !important;
        border-radius: 16px 16px 0 0 !important; max-height: 92vh !important; margin: 0 !important; }
    .popup-box { max-width: 100% !important; width: 100% !important; }
    /* 固定两列网格手机改单列 */
    .grid-2, [class*="grid-cols-2"], div[style*="grid-template-columns:1fr 1fr"] {
        grid-template-columns: 1fr !important;
    }
    /* 无 wrap 操作条允许换行 */
    div[style*="flex"] { flex-wrap: wrap; }
    /* 平面图横向滚动优化 */
    svg, .floor-plan { max-width: 100%; height: auto; }
    .floor-plan-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* ═══ 手机端修复 3：排课日历横滑（保持完整功能） ═══ */
@media (max-width: 767px) {
    .cal-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .cal-wrap > div[style*="grid-template-columns"] { min-width: 720px; }
    .hol-cal, [id*="holCal"] { overflow-x: auto; }
}

/* 手机端提示条显示 */
@media (max-width: 767px) {
    .mobile-tip { display: block !important; }
}
/* 请假申请手机端单列 */
@media (max-width: 767px) {
    div[style*="grid-template-columns:2fr 1fr 1fr"],
    div[style*="2fr 1fr 1fr"] { grid-template-columns: 1fr !important; }
}

.hamburger { min-width: 44px; min-height: 44px; display: flex; align-items: center; justify-content: center; }
.hamburger i { font-size: 20px; }

/* 快速安排弹窗：手机端居中显示（不贴底）+ 房间卡更紧凑 */
@media (max-width: 767px) {
    #quickAssignModal.modal-overlay { align-items: center; padding: 12px; }
    #quickAssignModal .modal-box {
        position: fixed; top: 8% !important; bottom: auto !important; left: 4% !important;
        width: 92% !important; max-width: 92% !important; max-height: 84vh !important;
        border-radius: 16px !important;
    }
    #quickAssignModal .modal-box > div:last-child { padding: 10px 12px; }
    #quickAssignModal #qaRoomList { max-height: 48vh !important; }
    #quickAssignModal #qaFloorTabs button { padding: 3px 10px !important; font-size: 11px !important; }
}

/* 房间卡网格：手机 4 列 / 桌面 8 列 */
.qa-room-grid { grid-template-columns: repeat(4, 1fr); }
@media (min-width: 768px) {
    .qa-room-grid { grid-template-columns: repeat(8, 1fr) !important; }
}
/* 房间卡内部：房间号和空位并排（省垂直空间） */
.qa-room-grid > div > div:first-child { display: inline; }
.qa-room-grid > div > div:nth-child(2) { display: inline; margin-left: 3px; }
.qa-room-grid > div > div:nth-child(3) { display: none; } /* 手机端隐藏进度条省空间 */
@media (min-width: 768px) {
    .qa-room-grid > div > div:nth-child(3) { display: block !important; }
}

/* 报销表单：分组标题 + 手机端单列大框 */
.rb-section-title {
    font-size: 13px; font-weight: 700; color: var(--primary);
    margin: 14px 0 8px; padding-left: 10px; border-left: 3px solid var(--primary);
}
@media (max-width: 767px) {
    #reimbForm .form-row .form-group { flex: 1 1 100% !important; min-width: 100% !important; }
    #reimbForm .form-control, #reimbForm select, #reimbForm textarea {
        min-height: 44px; font-size: 15px !important;
    }
    #reimbForm .btn { min-height: 44px; font-size: 15px; width: 48%; }
    #reimbForm .form-group:last-child .btn { width: 48%; }
}

/* ═══ 统计卡全局手机端统一（报销页样式推广） ═══ */
@media (max-width: 767px) {
    .stat-card {
        display: flex; align-items: center; justify-content: center; gap: 8px;
        background: #f0f6ff !important;
        border: 1px solid #d6e4ff !important;
        border-radius: 12px !important;
        padding: 10px 6px !important;
        box-shadow: none !important;
        flex-direction: row;
    }
    .stat-card .label { font-size: 12px !important; font-weight: 600; margin: 0 !important; }
    .stat-card .value { font-size: 24px !important; font-weight: 800; margin: 0 !important; }
    .stat-card a, .stat-card[onclick] { text-decoration: none; color: inherit; }
    /* 渐变卡同统一 */
    .grad-card {
        background: #f0f6ff !important;
        border: 1px solid #d6e4ff !important;
        border-radius: 12px !important;
    }
}

/* 统计卡容器：手机端自动多列（2列→3-4列） */
@media (max-width: 767px) {
    div[style*="repeat(auto-fill,minmax(140px,1fr))"],
    div[style*="repeat(auto-fit,minmax(140px,1fr))"],
    div[style*="repeat(auto-fill,minmax(150px,1fr))"],
    div[style*="repeat(auto-fit,minmax(150px,1fr))"] {
        grid-template-columns: repeat(4, 1fr) !important;
    }
    /* 统计卡 a 链接整体可点 */
    .stat-card a { display: flex; align-items: center; gap: 6px; justify-content: center; width: 100%; }
}

/* ═══ 手机端表格卡片：字体加大+行距拉宽（更好操作） ═══ */
@media (max-width: 767px) {
    table tr { padding: 14px 16px; }
    table td {
        font-size: 15px !important;
        padding: 8px 0 !important;
        min-height: 30px;
    }
    table td:before {
        font-size: 13px !important;
        margin-right: 12px;
    }
    table td strong { font-size: 16px; }
    table td .btn-xs, table td button.btn-xs {
        min-height: 34px; padding: 6px 12px; font-size: 13px;
    }
    table td small { font-size: 12px !important; }
}

/* ═══ 设计系统统一（ui-ux-pro-max + Anthropic 规范执行） ═══ */
:root {
    --radius-lg: 20px;          /* 修复：原 8px 错误，规范应为 20px */
    --radius-card: 14px;        /* 卡片标准圆角 */
    --radius-btn: 980px;        /* Apple 胶囊按钮 */
    --focus-ring: 0 0 0 3px rgba(0,113,227,0.15);  /* 焦点蓝光 */
    --card-border: 1px solid #eef0f3;
}

/* 卡片统一：圆角 14px + 细边框 + 轻阴影 */
.card {
    border-radius: var(--radius-card) !important;
    border: var(--card-border);
    box-shadow: var(--shadow-sm);
}
.card .card-header { border-radius: var(--radius-card) var(--radius-card) 0 0; }
.card .card-body { border-radius: 0 0 var(--radius-card) var(--radius-card); }

/* 按钮统一：胶囊 + hover 稳定 + active 微缩 */
.btn, button.btn {
    border-radius: var(--radius-btn);
    transition: background-color .15s, color .15s, box-shadow .15s, transform .1s;
}
.btn:active, button.btn:active { transform: scale(.97); }
.btn-xs { border-radius: var(--radius-btn); }

/* 表单焦点蓝光（Apple 规范） */
.form-control:focus, input:focus, select:focus, textarea:focus {
    outline: none;
    box-shadow: var(--focus-ring);
    border-color: var(--primary);
}

/* 所有可交互元素 cursor-pointer（Anthropic 规范） */
button, .btn, a, select, input[type="checkbox"], input[type="radio"],
[onclick], [role="button"], .clickable, tr[onclick] { cursor: pointer; }

/* 标题层级统一 */
h2 { font-size: 22px; font-weight: 700; letter-spacing: -0.02em; }
.page-header h2 { font-size: 22px; }

/* hover 统一：稳定颜色过渡（不位移） */
.btn-primary:hover { background: var(--primary-hover); }
a:hover { opacity: .85; }

/* ═══ Apple 排版精修（popular-web-designs apple.md 规范） ═══ */
body {
    letter-spacing: -0.2px;              /* Apple 负字距（正文 17px≈-0.374px 缩放） */
}
h1, h2, h3, .page-header h2 {
    letter-spacing: -0.3px;              /* 标题更紧 */
    line-height: 1.15;                   /* 标题紧凑行高 */
}
.card-header {
    letter-spacing: -0.15px;
    font-weight: 600;
}
/* 统计数字：大且紧（Apple 数字风格） */
.stat-card .value, .grad-card .f-2xl, .rb-stat div:first-child,
.dc-val, .f-2xl {
    letter-spacing: -0.5px;
    font-weight: 700;
    line-height: 1.1;
}
/* 卡片：去重边框（Apple 无边框哲学）——保留极浅分隔 */
.card {
    border-color: rgba(0,0,0,0.04) !important;
    box-shadow: 0 1px 8px rgba(0,0,0,0.04);
}
/* 间距：8px 基准节奏 */
.card { margin-bottom: 12px; }
.card-header { padding: 12px 16px; }
.card-body { padding: 12px 16px; }
/* 标签/徽章：紧凑圆角 */
.badge, [class*="badge"], span[style*="border-radius"] {
    letter-spacing: -0.1px;
}
/* 主色只用于交互（Apple 哲学）：按钮/链接/焦点 */
.btn-primary { background: var(--primary); border-color: var(--primary); }
a { color: #0066cc; }  /* Apple 链接蓝 */

/* ═══ 手机全屏菜单 + 底部 Tab ═══ */
.fm-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.fm-item {
    background: #fff; border-radius: 14px; padding: 12px 4px;
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    text-decoration: none; color: #1d1d1f; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.fm-ic {
    width: 40px; height: 40px; border-radius: 12px; background: #eef4ff; color: #0071e3;
    display: flex; align-items: center; justify-content: center; font-size: 16px;
}
.fm-lb { font-size: 11px; font-weight: 500; color: #3a3a3c; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 90%; }

.bottom-tab {
    display: none;
    position: fixed; bottom: 0; left: 0; right: 0; z-index: 1500;
    background: rgba(255,255,255,0.92); backdrop-filter: saturate(180%) blur(20px);
    border-top: 1px solid #f0f2f6;
    padding: 6px 4px calc(6px + env(safe-area-inset-bottom, 0px));
}
.bt-item {
    flex: 1; display: flex; flex-direction: column; align-items: center; gap: 2px;
    text-decoration: none; color: #86868b; font-size: 10px; padding: 4px 0;
}
.bt-item i { font-size: 18px; }
.bt-item.active { color: #0071e3; }
.bt-item.active i { color: #0071e3; }

@media (max-width: 767px) {
    .bottom-tab { display: flex; }
    body { padding-bottom: 64px; }
}
@media (min-width: 768px) {
    .bottom-tab { display: none !important; }
    #fullMenu { display: none !important; }
}

/* ═══ HarmonyOS Sans 字体（本地化，全字库 woff2） ═══ */
@font-face {
    font-family: 'HarmonyOS Sans';
    src: url('/static/fonts/HarmonyOS-SC-Regular.woff2') format('woff2');
    font-weight: 400; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'HarmonyOS Sans';
    src: url('/static/fonts/HarmonyOS-SC-Medium.woff2') format('woff2');
    font-weight: 500; font-style: normal; font-display: swap;
}
@font-face {
    font-family: 'HarmonyOS Sans';
    src: url('/static/fonts/HarmonyOS-SC-Bold.woff2') format('woff2');
    font-weight: 600 700; font-style: normal; font-display: swap;
}
:root { --font: 'HarmonyOS Sans', -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif; }

/* 数字等宽对齐（财务高级感） */
body, .stat-card .value, .cc-val, .rb-stat div, .dc-val, table td, .f-2xl {
    font-variant-numeric: tabular-nums;
}

/* ═══════════════════════════════════════════════
   ═ 全站手机端视觉重构（Apple 风格 · 高级感）
   ═ 功能不变 · 网页端不受影响
   ═══════════════════════════════════════════════ */
@media (max-width: 767px) {

    /* ── 页头：层级清晰 ── */
    .page-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 14px; }
    .page-header h2 { font-size: 20px; font-weight: 700; letter-spacing: -0.4px; line-height: 1.2; }
    .page-header .ph-sub, .page-header small, .page-header p { font-size: 12px; color: #86868b; margin-top: 2px; }
    .page-header .btn, .page-header a.btn { min-height: 36px; padding: 8px 14px; font-size: 13px; }

    /* ── 卡片：统一质感 ── */
    .card {
        border-radius: 16px !important;
        border: 1px solid rgba(0,0,0,0.05) !important;
        box-shadow: 0 2px 12px rgba(0,0,0,0.05) !important;
    }
    .card-header {
        font-size: 14px; font-weight: 600; padding: 13px 16px !important;
        background: linear-gradient(180deg, #fafbfc, #fff);
        border-bottom: 1px solid #f2f4f7 !important;
    }
    .card-header span { letter-spacing: -0.2px; }

    /* ── 表格卡片化：信息完整+呼吸感 ── */
    .table-wrap { margin: 0 !important; }
    table { width: 100% !important; min-width: 0 !important; }
    table tr {
        display: block; padding: 12px 14px !important;
        border-bottom: 1px solid #f4f5f7 !important;
        transition: background .15s;
    }
    table tr:active { background: #f7f9fc; }
    table td {
        display: flex; justify-content: space-between; align-items: center;
        font-size: 14px !important; padding: 6px 0 !important; gap: 16px;
        border: none !important; text-align: right !important;
    }
    table td:first-child { text-align: right !important; }
    table td:before {
        content: attr(data-label);
        font-size: 12px !important; color: #86868b; font-weight: 500;
        margin-right: auto; text-align: left; flex-shrink: 0;
    }
    table td[data-label=""]:before, table td.nolabel:before { content: none; }
    thead { display: none; }
    table td .btn, table td button { margin: 2px 0; }

    /* ── 按钮：胶囊+层级 ── */
    .btn { border-radius: 980px !important; font-weight: 500; }
    .btn-primary, .btn-success, .btn-danger, .btn-warning {
        box-shadow: 0 2px 8px rgba(0,113,227,0.25);
    }
    .btn-outline { border-color: #d8dce2 !important; color: #3a3a3c !important; background: #fff !important; }

    /* ── 表单：大触控+聚焦蓝光 ── */
    .form-group { margin-bottom: 14px; }
    .form-group label { font-size: 13px; font-weight: 600; color: #3a3a3c; margin-bottom: 6px; }
    .form-control, select.form-control, textarea.form-control {
        min-height: 44px !important; font-size: 15px !important;
        border-radius: 12px !important; border: 1px solid #e3e6ea !important;
        background: #fafbfc !important; padding: 10px 12px !important;
    }
    .form-control:focus, select:focus, textarea:focus {
        background: #fff !important; border-color: #0071e3 !important;
        box-shadow: 0 0 0 3px rgba(0,113,227,0.12) !important;
    }

    /* ── 弹窗：底部全屏+圆角 ── */
    .modal-overlay { align-items: flex-end !important; }
    .modal-box {
        max-width: 100% !important; width: 100% !important;
        border-radius: 20px 20px 0 0 !important;
        max-height: 90vh !important; overflow-y: auto;
        box-shadow: 0 -8px 40px rgba(0,0,0,0.15);
    }
    .modal-box .modal-header {
        position: sticky; top: 0; background: #fff; z-index: 5;
        border-bottom: 1px solid #f2f4f7; padding: 14px 16px;
        font-size: 15px; font-weight: 600;
    }
    .modal-box .modal-close, .modal-box button[onclick*="close"] {
        min-width: 32px; min-height: 32px; border-radius: 50% !important;
    }

    /* ── 标签/徽章：统一圆角语义色 ── */
    .badge, [class*="badge"] {
        border-radius: 8px !important; padding: 3px 8px !important;
        font-size: 11px !important; font-weight: 600 !important;
    }

    /* ── 折叠区块：计数+箭头 ── */
    .card-header[onclick] { display: flex; align-items: center; justify-content: space-between; }

    /* ── 空状态/加载 ── */
    .empty, p[style*="text-align:center"] {
        color: #aeaeb2 !important; font-size: 13px !important;
    }

    /* ── 搜索框 ── */
    input[type="search"], .search-input, input[placeholder*="搜索"], input[placeholder*="查"] {
        border-radius: 12px !important; min-height: 40px !important;
        background: #fff !important; border: 1px solid #e3e6ea !important;
    }

    /* ── 链接色 ── */
    a { color: #0071e3; text-decoration: none; }

    /* ── 桌面残留清理：grid 两列自动变单列 ── */
    div[style*="grid-template-columns:1fr 1fr"]:not(.fm-grid):not(.core-grid):not(.quick-grid):not(.qa-room-grid) {
        grid-template-columns: 1fr !important;
    }
}

/* ═══ 首页看板（Jinja 版，Apple 统一蓝色系） ═══ */
.home-wrap { max-width: 1200px; margin: 0 auto; padding: 16px 14px 40px; }
.home-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; }
.home-header h1 { font-size: 24px; font-weight: 700; letter-spacing: -0.4px; line-height: 1.2; }
.hd-sub { font-size: 13px; color: #86868b; margin-top: 4px; letter-spacing: -0.2px; }
.hd-date { background: #f0f6ff; color: #0071e3; font-weight: 700; font-size: 15px; padding: 8px 14px; border-radius: 980px; }
.core-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
.core-card { background: #fff; border-radius: 16px; padding: 14px; box-shadow: 0 1px 8px rgba(0,0,0,0.05); cursor: pointer; transition: box-shadow .15s; }
.core-card:active { box-shadow: 0 2px 12px rgba(0,113,227,0.12); }
.cc-top { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.cc-icon { font-size: 12px; width: 26px; height: 26px; border-radius: 8px; display: flex; align-items: center; justify-content: center; color: #0071e3; background: #eef4ff; }
.cc-label { font-size: 12px; color: #86868b; font-weight: 500; }
.cc-val { font-size: 28px; font-weight: 700; letter-spacing: -0.8px; line-height: 1.1; color: #1d1d1f; }
.cc-sub { font-size: 11px; color: #aeaeb2; margin-top: 4px; letter-spacing: -0.1px; }
.todo-strip { display: flex; gap: 8px; margin-bottom: 12px; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.todo-item { display: flex; align-items: center; gap: 6px; background: #fff; border: 1px solid #f0f2f6; border-radius: 12px; padding: 8px 12px; font-size: 12px; color: #3a3a3c; text-decoration: none; white-space: nowrap; }
.todo-dot { width: 6px; height: 6px; border-radius: 50%; background: #0071e3; flex-shrink: 0; }
.todo-item b { font-size: 14px; color: #0071e3; }
.quick-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 14px; }
.quick-item { background: #fff; border-radius: 14px; padding: 12px 6px; display: flex; flex-direction: column; align-items: center; gap: 6px; text-decoration: none; color: #1d1d1f; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.qi-icon { width: 38px; height: 38px; border-radius: 12px; background: #eef4ff; color: #0071e3; display: flex; align-items: center; justify-content: center; font-size: 16px; }
.qi-label { font-size: 12px; font-weight: 500; color: #3a3a3c; }
.panel { background: #fff; border-radius: 16px; padding: 14px 16px; margin-bottom: 12px; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.pn-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; letter-spacing: -0.2px; }
.bar-chart { display: flex; align-items: flex-end; gap: 6px; height: 110px; }
.bar-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; }
.bar { width: 60%; max-width: 26px; background: #0071e3; border-radius: 6px 6px 2px 2px; min-height: 4px; }
.bar-day { font-size: 10px; color: #aeaeb2; }
.tt-row { margin-bottom: 10px; }
.tt-head { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 4px; }
.tt-head b { font-weight: 600; }
.tt-bar { height: 8px; background: #f0f2f6; border-radius: 4px; overflow: hidden; }
.tt-fill { height: 100%; background: #0071e3; border-radius: 4px; }
@media (min-width: 768px) {
    .core-grid { grid-template-columns: repeat(4, 1fr); }
    .quick-grid { grid-template-columns: repeat(6, 1fr); }
    .home-wrap { padding: 24px 20px 60px; }
}

/* ═══════════════════════════════════════════════
   ═ 全站颜色收敛层（首页高级感标准：白底/浅蓝/单色点缀）
   ═══════════════════════════════════════════════ */
@media (max-width: 767px) {

    /* ── 统计卡全站统一：白底/浅蓝底 + 深色数字（收敛所有渐变变体） ── */
    .grad-card, .grad-blue, .grad-green, .grad-orange, .grad-red,
    .grad-purple, .grad-teal, .grad-amber, .stat-card, [class*="stat-"] {
        background: #ffffff !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        box-shadow: 0 2px 10px rgba(0,0,0,0.04) !important;
    }
    .grad-card .f-2xl, .grad-card div:first-child,
    .stat-card .value, [class*="stat-"] .value {
        color: #1d1d1f !important;
        font-weight: 700;
    }
    .grad-card .f-sm, .stat-card .label {
        color: #86868b !important;
        opacity: 1 !important;
    }

    /* ── 语义状态（保留但柔和：浅底+深字） ── */
    td span, td small {
        border-radius: 8px;
        padding: 2px 8px;
    }
    td span[style*="orange"], td small[style*="orange"],
    span[style*="warning"] { color: #b45309 !important; background: #fff7ed; }
    td span[style*="green"], td small[style*="green"],
    span[style*="success"] { color: #15803d !important; background: #f0fdf4; }
    td span[style*="red"], td small[style*="red"],
    span[style*="danger"] { color: #b91c1c !important; background: #fef2f2; }
    td span[style*="primary"], span[style*="blue"] { color: #0369a1 !important; background: #f0f9ff; }

    /* ── 标签/徽章：统一柔和 ── */
    .badge, [class*="badge"], [class*="tag"] {
        background: #f0f6ff !important;
        color: #0369a1 !important;
        border-radius: 8px !important;
        font-weight: 600 !important;
        padding: 3px 8px !important;
    }

    /* ── 内联彩色背景收敛（卡片/区块背景渐变化为纯白） ── */
    div[style*="linear-gradient"], div[style*="radial-gradient"] {
        background: #ffffff !important;
    }
}

/* ═══ 合作方卡手机端重排：3 列徽章网格 + 删除独立行 ═══ */
@media (max-width: 767px) {
    .partner-card .card-header { align-items: flex-start; }
    .partner-card .card-header > span:first-child {
        width: 100%; display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
    }
    .partner-card .card-header > span:last-child {
        display: grid !important;
        grid-template-columns: repeat(3, 1fr);
        gap: 5px;
        width: 100%;
        margin-top: 4px;
    }
    .partner-card .card-header > span:last-child > span,
    .partner-card .card-header > span:last-child form {
        display: flex; align-items: center; justify-content: center;
        text-align: center; margin: 0 !important;
        padding: 5px 4px !important; border-radius: 10px;
        font-size: 11px !important; font-weight: 600;
    }
    .partner-card .card-header > span:last-child form { grid-column: 1 / -1; }
    .partner-card .card-header > span:last-child form .btn {
        width: 100%; min-height: 32px; font-size: 12px;
    }
    /* 徽章统一柔和色 */
    .partner-card .card-header > span:last-child > span {
        background: #f0f6ff !important; color: #0369a1 !important;
    }
}

/* ═══ 合作方页手机端：筛选横滑 + 按钮主次 ═══ */
@media (max-width: 767px) {
    /* 筛选条：横向滑动不换行 */
    .partner-filter-scroll {
        display: flex; gap: 6px; align-items: center;
        overflow-x: auto; -webkit-overflow-scrolling: touch;
        white-space: nowrap; padding-bottom: 4px;
    }
    .partner-filter-scroll button {
        flex-shrink: 0; white-space: nowrap;
    }
    /* 页头操作：主按钮全宽 + 次级按钮两列 */
    .ph-actions {
        display: grid; grid-template-columns: 1fr 1fr 1fr;
        gap: 6px; width: 100%;
    }
    .ph-actions .btn { margin: 0 !important; padding: 8px 4px; font-size: 12px; }
    .ph-actions .btn-del { color: var(--danger) !important; border-color: var(--danger) !important; }
    /* 统计卡标签：加图标样式（与首页一致） */
    .grad-card .f-sm { font-weight: 500; }
}

/* ═══ overview 统计卡（deep-card）手机端收敛：白卡黑字蓝图标 ═══ */
@media (max-width: 767px) {
    .deep-card {
        background: #ffffff !important;
        color: #1d1d1f !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        box-shadow: 0 2px 10px rgba(0,0,0,0.04) !important;
        outline: none !important;
    }
    .deep-card .dc-icon {
        color: #0071e3 !important; opacity: 1 !important;
        background: #eef4ff !important; border-radius: 10px !important;
        padding: 7px !important; right: 12px !important; top: 12px !important;
        font-size: 14px !important;
    }
    .deep-card .dc-val { color: #1d1d1f !important; font-size: 24px; }
    .deep-card .dc-label { color: #86868b !important; opacity: 1 !important; }
    .deep-card .dc-sub { color: #aeaeb2 !important; opacity: 1 !important; }
    .deep-card .dc-badge { color: #0071e3 !important; background: #eef4ff !important; border-radius: 8px; padding: 2px 8px; }
}

/* ═══ 收费表单手机端：块级布局（修复 X5 flex 顺序错乱） ═══ */
@media (max-width: 767px) {
    #feeForm { display: block !important; }
    #feeForm > div {
        flex-basis: auto !important;
        width: 100% !important;
        max-width: 100% !important;
        margin-bottom: 12px;
    }
    /* ② 伙食住宿费警示框：柔和化（收敛黄色粗边框） */
    #feeForm div[style*="ffd54f"] {
        background: #f0f6ff !important;
        border: 1px solid #d6e4ff !important;
        border-radius: 12px !important;
    }
}

/* ═══ 收费表单重新设计：分步卡片（手机端） ═══ */
@media (max-width: 767px) {
    #feeForm .fee-step {
        background: #fff !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        padding: 14px !important;
        margin-bottom: 12px !important;
        box-shadow: 0 2px 8px rgba(0,0,0,0.04) !important;
        display: block !important;
    }
    #feeForm .fee-step-title {
        display: flex !important; align-items: center; gap: 8px;
        font-size: 14px !important; font-weight: 700 !important;
        color: #1d1d1f !important; width: 100% !important;
        margin-bottom: 10px !important; padding-bottom: 8px;
        border-bottom: 1px solid #f2f4f7;
    }
    #feeForm .fee-step-num {
        display: inline-flex !important; align-items: center; justify-content: center;
        width: 22px; height: 22px; border-radius: 50%;
        background: #0071e3 !important; color: #fff !important;
        font-size: 12px !important; font-style: normal !important; font-weight: 700 !important;
        flex-shrink: 0;
    }
    #feeForm .fee-step small { color: #86868b !important; font-size: 11px !important; font-weight: 400 !important; }
    #feeForm .fee-step .form-group { margin-bottom: 10px !important; }
    /* 字段 2 列网格 */
    #feeForm .fee-step > .form-group {
        width: 48% !important; display: inline-block !important; vertical-align: top;
        margin-right: 2% !important;
    }
    #feeForm .fee-step > .form-group:nth-child(even) { margin-right: 0 !important; }
    #feeForm .fee-step > .form-group:has(textarea),
    #feeForm .fee-step > div[style*="flex:0 0 100%"] { width: 100% !important; display: block !important; }
    /* 自动字段提示 */
    #feeForm label:has(+ input[readonly]), #feeForm label:has(+ select[disabled]) {
        color: #86868b !important;
    }
    /* 汇总数字（费用总计等） */
    #feeForm [id*="TotalShow"], #feeForm [id*="Show"] {
        font-size: 18px !important;
    }
    /* 操作按钮：固定底部 */
    #feeForm > div:last-child {
        position: fixed; bottom: 56px; left: 0; right: 0; z-index: 1400;
        background: rgba(255,255,255,0.95);
        backdrop-filter: saturate(180%) blur(16px);
        border-top: 1px solid #f0f2f6;
        padding: 10px 14px calc(10px + env(safe-area-inset-bottom, 0px));
        display: flex !important; gap: 8px;
        box-shadow: 0 -4px 16px rgba(0,0,0,0.06);
    }
    #feeForm > div:last-child .btn {
        flex: 1; margin: 0 !important; min-height: 44px;
    }
    /* 表单底部留白防遮挡 */
    #feeForm { padding-bottom: 90px !important; }
    /* 打包价说明弱化 */
    #feeForm small, #feeForm div[style*="font-size:11px"] { color: #86868b !important; }
}

/* ═══ 收费表单优化 2：警示框收敛 + 汇总突出 + 杂费折叠 ═══ */
@media (max-width: 767px) {
    /* 未来入学警告：柔和化 */
    #futureWarn {
        background: #fff8e1 !important;
        border: 1px solid #ffe9a8 !important;
        border-radius: 12px !important;
        color: #8a6d3b !important;
        font-weight: 500 !important;
    }
    /* 费用总计：大号突出 */
    #totalShow { font-size: 26px !important; color: #1d1d1f !important; font-weight: 800 !important; letter-spacing: -0.5px; }
    /* 已收/欠费 摘要 */
    #paidInput, #debtShow { font-weight: 600; }
    /* 杂费明细折叠按钮 */
    div[onclick*="toggleFeeDetail"], div[onclick*="杂费"] {
        background: #f0f6ff !important;
        border-radius: 10px !important;
        padding: 8px 10px !important;
        color: #0369a1 !important;
        font-weight: 600 !important;
        border: 1px solid #d6e4ff !important;
    }
    /* 步骤内提示文字弱化 */
    #feeForm .fee-step div[style*="font-size:11px"],
    #feeForm .fee-step div[style*="font-size:10px"] { color: #aeaeb2 !important; }
}

/* ═══ form-row 表单通用手机端修复：块级单列（收入/支出/报销等） ═══ */
@media (max-width: 767px) {
    form.form-row, .form-row {
        display: block !important;
    }
    form.form-row > .form-group, .form-row > .form-group {
        flex: 1 1 100% !important;
        min-width: 100% !important;
        width: 100% !important;
        max-width: 100% !important;
        margin-bottom: 12px !important;
    }
    /* 按钮组：两按钮并排 */
    form.form-row .form-group:last-child,
    .form-row .form-group:last-child {
        display: flex !important; gap: 8px;
    }
    form.form-row .form-group:last-child .btn,
    .form-row .form-group:last-child .btn { flex: 1; margin: 0 !important; min-height: 44px; }
    /* 表单内提示文字 */
    form.form-row small { color: #86868b !important; }
}

/* ═══ 内联渐变统计卡：数字/标签统一（收入/支出等页） ═══ */
@media (max-width: 767px) {
    div[style*="linear-gradient"] div[style*="font-size:20px"],
    div[style*="linear-gradient"] div[style*="font-size:22px"],
    div[style*="linear-gradient"] div[style*="font-size:24px"] {
        color: #1d1d1f !important;
    }
    div[style*="linear-gradient"] div[style*="font-size:11px"],
    div[style*="linear-gradient"] div[style*="font-size:12px"] {
        color: #86868b !important;
    }
}

/* 统计卡数字+图标 */
.sc-val-with-ic { display: flex; align-items: center; justify-content: center; gap: 8px; }
.sc-ic {
    font-size: 12px; width: 24px; height: 24px; border-radius: 8px;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
}
@media (max-width: 767px) {
    .sc-val-with-ic { justify-content: center; }
}


/* ═══ 支出/收入记录表：备注列精简（与付款方式/经办人/时间重复） ═══ */
@media (max-width: 767px) {
    table.hide-note td[data-label="备注"] { display: none !important; }
}

/* ═══ 应收明细卡手机端：block 布局（X5 稳定）+ 圆形勾选 ═══ */
@media (max-width: 767px) {
    table.ar-table tr {
        display: block !important;
        padding: 14px 14px 12px 42px !important;
        margin-bottom: 10px !important;
        background: #fff !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 16px !important;
        box-shadow: 0 2px 10px rgba(0,0,0,0.04) !important;
        position: relative !important;
        transition: border-color .15s, background .15s, box-shadow .15s;
        cursor: pointer;
    }
    table.ar-table td {
        display: flex !important;
        width: 100% !important;
        box-sizing: border-box;
        justify-content: space-between;
        align-items: center;
        font-size: 14px !important;
        padding: 3px 0 !important;
        border: none !important;
        text-align: left;
    }
    table.ar-table td:before {
        font-size: 12px !important;
        color: #a0a4ab !important;
        margin-right: 10px !important;
        flex-shrink: 0;
        content: attr(data-label) !important;
    }
    /* ── 勾选框：大号圆形（iOS 风） ── */
    table.ar-table .ar-cb {
        position: absolute !important;
        left: 12px; top: 14px;
        -webkit-appearance: none; appearance: none;
        width: 22px; height: 22px; border-radius: 50%;
        border: 1.5px solid #cbd5e1; background: #fff;
        cursor: pointer; flex-shrink: 0; margin: 0 !important;
        z-index: 3;
    }
    table.ar-table .ar-cb:checked {
        background: #0071e3; border-color: #0071e3;
    }
    table.ar-table .ar-cb:checked::after {
        content: ''; position: absolute; left: 7px; top: 2px;
        width: 6px; height: 11px;
        border: solid #fff; border-width: 0 2px 2px 0;
        transform: rotate(45deg);
    }
    /* 选中卡片态 */
    table.ar-table tr.ar-selected {
        border-color: #0071e3 !important;
        background: #f5faff !important;
        box-shadow: 0 0 0 1px #0071e3, 0 4px 14px rgba(0,113,227,0.15) !important;
    }
    /* ── 学员名：大字+分隔线 ── */
    table.ar-table td[data-label*="学员"] {
        font-size: 18px !important; font-weight: 700; color: #1d1d1f;
        padding-bottom: 8px !important;
        border-bottom: 1px solid #f2f4f7 !important;
        margin-bottom: 2px !important;
    }
    table.ar-table td[data-label*="学员"] strong { font-size: 18px; }
    /* ── 合作方：右上标签 ── */
    table.ar-table td[data-label*="合作方"] {
        position: absolute !important;
        right: 10px; top: 14px;
        width: auto !important;
        background: #eef4ff !important; color: #0369a1 !important;
        border-radius: 8px !important; padding: 4px 12px !important;
        font-size: 12px !important; font-weight: 600;
    }
    table.ar-table td[data-label*="合作方"]:before { content: none !important; }
    /* ── 日期行 ── */
    table.ar-table td[data-label*="入学"],
    table.ar-table td[data-label*="计费截止"] {
        font-size: 13px !important; color: #6b7280;
        justify-content: flex-start; gap: 6px;
    }
    /* ── 金额：全宽卡 ── */
    table.ar-table td[data-label*="实际已收"],
    table.ar-table td[data-label*="当前欠费"] {
        flex-direction: row !important;
        justify-content: space-between !important;
        align-items: center !important;
        background: #f8fafc !important;
        border-radius: 12px !important;
        padding: 8px 12px !important;
        min-height: 42px;
        margin-top: 4px;
        width: calc(100% - 0px) !important;
    }
    table.ar-table td[data-label*="实际已收"]:before,
    table.ar-table td[data-label*="当前欠费"]:before { margin-right: 0 !important; }
    table.ar-table td[data-label*="实际已收"] { color: #6b7280 !important; font-weight: 700; font-size: 16px !important; }
    table.ar-table td[data-label*="当前欠费"] { color: var(--danger) !important; font-weight: 800; font-size: 20px !important; background: #fef2f2 !important; }
    /* ── 操作：右对齐 ── */
    table.ar-table td[data-label*="操作"] {
        justify-content: flex-end !important;
        padding-top: 8px !important;
    }
    table.ar-table td[data-label*="操作"]:before { content: none !important; }
    table.ar-table td[data-label*="操作"] .btn {
        min-height: 34px; padding: 6px 18px; font-size: 12px;
        border-radius: 980px !important;
    }
    /* ── 隐藏次要字段 ── */
    table.ar-table td[data-label*="培训结束"],
    table.ar-table td[data-label*="月数"],
    table.ar-table td[data-label*="实际应计"],
    table.ar-table td[data-label*="实际未收"],
    table.ar-table td[data-label*="年应计"] {
        display: none !important;
    }
    table.ar-table thead { display: none; }
    table.ar-table td:first-child { display: none !important; }
}
/* ═══ 应收明细手机端精简：隐藏可推导/次要字段 ═══ */
@media (max-width: 767px) {
    table.ar-table td[data-label*="培训结束"],
    table.ar-table td[data-label*="月数"],
    table.ar-table td[data-label*="实际应计"],
    table.ar-table td[data-label*="实际未收"],
    table.ar-table td[data-label*="年应计"] {
        display: none !important;
    }
    /* 保留字段重新网格：已收+当前欠费 金额行突出 */
    table.ar-table td[data-label*="实际已收"],
    table.ar-table td[data-label*="当前欠费"] {
        font-size: 14px !important;
        padding: 7px 0 !important;
    }
    table.ar-table td[data-label*="当前欠费"] {
        color: var(--danger) !important; font-weight: 800; font-size: 15px !important;
    }
    /* 合作方改标签样式（和学员同行右对齐） */
    table.ar-table td[data-label*="合作方"] {
        position: absolute !important; right: 12px; top: 10px;
        width: auto !important; max-width: 40% !important;
        justify-content: flex-end !important;
    }
    table.ar-table td[data-label*="合作方"]:before { content: none !important; }
    table.ar-table td[data-label*="合作方"] {
        background: #eef4ff !important; color: #0369a1 !important;
        border-radius: 8px !important; padding: 2px 8px !important;
        font-size: 11px !important;
    }
    /* 学员行 padding 给合作方标签留位 */
    table.ar-table td[data-label*="学员"] {
        padding-right: 45% !important;
    }
    /* 入学/计费截止 紧凑 */
    table.ar-table td[data-label*="入学"],
    table.ar-table td[data-label*="计费截止"] {
        font-size: 12px !important;
    }
    table.ar-table tr { padding-top: 14px !important; }
}

/* ═══ 应收明细·手机专属卡片（全新模板，桌面表格不动） ═══ */
.ar-mobile-list { display: none; }
@media (max-width: 767px) {
    .ar-mobile-list { display: block; padding: 2px 0 12px; }
    #arTable, .table-wrap:has(#arTable) { display: none !important; }
    .ar-mc {
        position: relative;
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        padding: 14px; margin-bottom: 10px;
        box-shadow: 0 1px 6px rgba(0,0,0,0.04);
        transition: border-color .15s, box-shadow .15s;
    }
    .ar-mc.ar-selected {
        border-color: #0071e3;
        box-shadow: 0 0 0 1px #0071e3, 0 3px 10px rgba(0,113,227,0.12);
    }
    /* 勾选：小巧 20px 圆点 */
    .ar-mc .ar-cb {
        position: absolute; left: 10px; top: 12px; z-index: 2;
        -webkit-appearance: none; appearance: none;
        width: 20px; height: 20px; border-radius: 50%;
        border: 1.5px solid #cbd5e1; background: #fff; cursor: pointer; margin: 0;
    }
    .ar-mc .ar-cb:checked {
        background: #0071e3; border-color: #0071e3;
    }
    .ar-mc .ar-cb:checked::after {
        content: ''; position: absolute; left: 6px; top: 2px;
        width: 5px; height: 10px;
        border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
    }
    .ar-mc-check-done {
        position: absolute; left: 10px; top: 12px;
        width: 20px; height: 20px; border-radius: 50%;
        background: #eef2f6; border: 1.5px solid #d8dee6;
    }
    /* 标题行 */
    .ar-mc-top { display: flex; align-items: center; padding-left: 30px; margin-bottom: 6px; }
    .ar-mc-name { font-size: 17px; font-weight: 700; color: #1d1d1f; flex: 1; }
    .ar-mc-partner {
        background: #eef4ff; color: #0369a1;
        border-radius: 8px; padding: 3px 10px;
        font-size: 11px; font-weight: 600;
    }
    /* 日期行 */
    .ar-mc-meta { font-size: 12px; color: #9ca3af; padding-left: 30px; margin-bottom: 8px; }
    /* 金额行 */
    .ar-mc-amt {
        display: flex; justify-content: space-between; align-items: center;
        background: #f8fafc; border-radius: 10px;
        padding: 7px 12px; margin-top: 5px;
        font-size: 13px; color: #6b7280;
    }
    .ar-mc-amt b { font-size: 15px; font-weight: 700; }
    .ar-mc-debt { background: #fef2f2; }
    .ar-mc-debt b { color: var(--danger); font-size: 17px; font-weight: 800; }
    /* 操作 */
    .ar-mc-op { display: flex; justify-content: flex-end; padding-top: 9px; }
    .ar-mc-btn {
        background: #0071e3; color: #fff; text-decoration: none;
        border-radius: 980px; padding: 6px 18px; font-size: 13px; font-weight: 600;
    }
    .ar-mc-btn:active { opacity: .8; }
    .ar-mc-done { color: #16a34a; font-size: 12px; font-weight: 600; }
}

/* ═══ 应收卡片微调 2：已结清降噪+按压反馈+金额色微调 ═══ */
@media (max-width: 767px) {
    /* 按压反馈 */
    .ar-mc:active { transform: scale(0.985); }
    /* 已结清：整卡浅灰降噪（不用逐张细看） */
    .ar-mc:has(.ar-mc-done) {
        background: #fafbfc;
        box-shadow: none;
    }
    .ar-mc:has(.ar-mc-done) .ar-mc-name { color: #9ca3af; }
    .ar-mc:has(.ar-mc-done) .ar-mc-amt { background: #f2f4f6; }
    .ar-mc:has(.ar-mc-done) .ar-mc-amt b { color: #9ca3af; }
    .ar-mc-done {
        color: #16a34a !important;
        background: #f0fdf4; border-radius: 8px;
        padding: 4px 12px; font-size: 12px;
    }
    /* 欠费金额更高对比 */
    .ar-mc-debt b { letter-spacing: -0.3px; }
    /* 日期行加分隔点装饰 */
    .ar-mc-meta { letter-spacing: -0.1px; }
    /* 收费按钮宽度稳定 */
    .ar-mc-btn { min-width: 76px; text-align: center; }
}

/* ═══ 应收手机端：工具栏重排 + 卡片计数条 ═══ */
@media (max-width: 767px) {
    /* 搜索框全宽 */
    #arSearch { width: 100% !important; min-height: 38px; font-size: 14px !important; padding: 8px 12px !important; border-radius: 10px !important; }
    /* 工具栏：搜索一行 + 操作一行 */
    .card-header:has(#arSearch) { display: block !important; }
    .card-header:has(#arSearch) > span:last-child {
        display: flex !important; gap: 8px; margin-top: 8px;
    }
    .card-header:has(#arSearch) > span:last-child label {
        flex: 1; justify-content: center;
        border: 1px solid #d6e4ff; border-radius: 10px;
        padding: 8px 0; font-size: 13px !important; background: #f5faff;
    }
    .card-header:has(#arSearch) > span:last-child .btn {
        flex: 1; margin: 0 !important; min-height: 38px;
    }
    /* 全选 checkbox 也放大 */
    #selectAllAR { width: 18px; height: 18px; }
    /* 计数条 */
    .ar-count-bar {
        display: none; align-items: center; justify-content: space-between;
        background: #0071e3; color: #fff;
        border-radius: 12px; padding: 9px 14px;
        margin-bottom: 10px; font-size: 13px; font-weight: 600;
        position: sticky; top: 0; z-index: 100;
    }
    .ar-count-bar.show { display: flex; }
    .ar-count-bar .ar-clear {
        background: rgba(255,255,255,0.2); border: none; color: #fff;
        border-radius: 8px; padding: 4px 12px; font-size: 12px;
    }
    /* 已选卡片计数 */
    .ar-mc.selected-count { }
}

/* 逾期标签 */
.ar-mc-overdue {
    background: #fef2f2 !important; color: #dc2626 !important;
    border-radius: 6px; padding: 1px 6px;
    font-size: 10px; font-weight: 700; margin-left: 6px;
}

/* ═══ 应收统计卡：统一白卡深数字（唯一红=欠费） ═══ */
.ar-stats {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px; margin-bottom: 14px;
}
.ar-stat {
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 12px; text-align: center;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.as-label { font-size: 11px; color: #86868b; margin-bottom: 6px; letter-spacing: -0.1px; }
.as-val { font-size: 19px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
.as-sub { font-size: 10px; color: #aeaeb2; margin-top: 4px; }
.ar-stat.as-focus { border-color: #fecaca; background: #fff; }
.ar-stat.as-focus .as-label { color: #b91c1c; }
.ar-stat.as-focus .as-val { color: #dc2626; }
@media (min-width: 768px) {
    .ar-stats { grid-template-columns: repeat(5, 1fr); }
}
@media (max-width: 767px) {
    .ar-stats { grid-template-columns: repeat(2, 1fr); }
    .as-val { font-size: 18px; }
}

/* ═══ 应收：Tab 横滑 + 操作按钮 2 列 ═══ */
@media (max-width: 767px) {
    .ar-tabs { overflow-x: auto; -webkit-overflow-scrolling: touch; white-space: nowrap; }
    .ar-tabs .card-body { flex-wrap: nowrap !important; display: inline-flex !important; }
    .ar-tabs .ar-tab { flex-shrink: 0 !important; white-space: nowrap; }
    .ar-actions { display: grid !important; grid-template-columns: 1fr 1fr; gap: 8px !important; width: 100%; }
    .ar-actions a { margin: 0 !important; min-height: 40px; display: flex; align-items: center; justify-content: center; }
}

/* 合作方标签可点击样式 */
.ar-mc-partner { cursor: pointer; transition: opacity .15s; }
.ar-mc-partner:active { opacity: .6; }
/* 空状态 */
.ar-empty {
    text-align: center; color: #9ca3af;
    padding: 40px 0; font-size: 13px;
    background: #fff; border-radius: 14px;
    border: 1px dashed #e5e7eb; margin-bottom: 10px;
}

/* ═══ 催费提醒页统一：Tab 蓝色系 + 横滑 ═══ */
@media (max-width: 767px) {
    .fee-tab {
        background: #f5f7fa !important; color: #4b5563 !important;
        border: 1px solid #eef1f5 !important;
        border-radius: 980px !important;
        padding: 8px 16px !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        white-space: nowrap;
    }
    .fee-tab.active {
        background: #0071e3 !important; color: #fff !important;
        border-color: #0071e3 !important;
        box-shadow: 0 2px 8px rgba(0,113,227,0.25);
    }
    div:has(> .fee-tab) {
        overflow-x: auto !important;
        -webkit-overflow-scrolling: touch;
        white-space: nowrap;
        display: flex !important;
        flex-wrap: nowrap !important;
        gap: 6px !important;
        padding-bottom: 4px;
    }
    div:has(> .fee-tab) button { flex-shrink: 0 !important; }
    /* 卡片标题统一 */
    .card-header[style*="danger"], .card-header[style*="color:var(--danger)"] {
        color: #1d1d1f !important;
        font-weight: 700 !important;
        font-size: 15px !important;
    }
}

/* ═══ 催费提醒：手机专属卡片（应收同款） ═══ */
.rm-cards { display: none; }
@media (max-width: 767px) {
    .rm-cards { display: block; padding: 2px 0 12px; }
    /* 隐藏表格 */
    .rm-cards + .table-wrap { display: none; }
    #tab-overdue .table-wrap, #tab-upcoming .table-wrap,
    #tab-monthly .table-wrap, #tab-nodedl .table-wrap,
    #tab-new .table-wrap { display: none; }
    /* 催费卡无勾选：正常左内边距 */
    .rm-mc { padding-left: 14px !important; }
    .rm-mc .monthly-checkbox {
        position: absolute; left: 12px; top: 14px; z-index: 2;
        width: 20px; height: 20px; border-radius: 50%;
        -webkit-appearance: none; appearance: none;
        border: 1.5px solid #cbd5e1; background: #fff; cursor: pointer; margin: 0;
    }
    .rm-mc .monthly-checkbox:checked {
        background: #0071e3; border-color: #0071e3;
    }
    .rm-mc .monthly-checkbox:checked::after {
        content: ''; position: absolute; left: 6px; top: 2px;
        width: 5px; height: 10px;
        border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
    }
    /* 有 checkbox 的卡重新留位 */
    .rm-mc.has-cb { padding-left: 42px !important; }
}

/* ═══ 催费页：monthly 工具栏手机端重排 ═══ */
@media (max-width: 767px) {
    .monthly-tools { display: grid !important; grid-template-columns: 1fr 1fr; gap: 6px !important; width: 100%; }
    .monthly-tools select { width: 100% !important; min-height: 36px; font-size: 13px !important; padding: 4px 8px !important; }
    .monthly-tools label { width: 100%; justify-content: flex-start; }
    .monthly-tools .btn { grid-column: 1 / -1; margin: 0 !important; min-height: 38px; }
    .monthly-tools #selectAllMonthly { width: 18px; height: 18px; }
    /* 催费弹窗手机端 */
    #notifyModal .modal-dialog, #notifyModal [class*="modal-"] { width: 94% !important; }
    #notifyMsg { min-height: 140px !important; font-size: 14px !important; }
}

/* ═══ 未设截止工具栏手机端：大控件重排 ═══ */
@media (max-width: 767px) {
    #tab-nodedl .card-header > span:last-child {
        display: grid !important;
        grid-template-columns: 1fr 1fr;
        gap: 6px !important;
        width: 100%;
    }
    #tab-nodedl .card-header > span:last-child label {
        grid-column: 1 / -1;
        justify-content: center;
        border: 1px solid #e5e7eb; border-radius: 10px;
        padding: 8px 0; background: #fafbfc; font-size: 13px !important;
    }
    #tab-nodedl #batchDeadline {
        width: 100% !important;
        min-height: 38px; font-size: 13px !important;
        padding: 6px 10px !important;
        border-radius: 10px !important;
    }
    #tab-nodedl .btn {
        margin: 0 !important; min-height: 38px;
    }
    #tab-nodedl #selectAllNoDl { width: 18px; height: 18px; }
    /* 单卡点击设置：内联日期框加大 */
    .rm-mc .deadline-span input {
        width: 150px !important; min-height: 34px; font-size: 13px !important;
        border-radius: 8px !important; border: 1px solid #d6e4ff !important;
    }
}

/* ═══ 通用日历选择器 ═══ */
.yd-cal-mask {
    position: fixed; inset: 0; z-index: 3000;
    background: rgba(0,0,0,0.4);
    display: flex; align-items: flex-end; justify-content: center;
}
.yd-cal {
    background: #fff; border-radius: 18px 18px 0 0;
    width: 100%; max-width: 420px;
    padding: 14px 16px calc(18px + env(safe-area-inset-bottom, 0px));
    box-shadow: 0 -8px 30px rgba(0,0,0,0.15);
}
.yd-cal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 10px; }
.yd-cal-title { font-size: 16px; font-weight: 700; }
.yd-cal-nav {
    width: 34px; height: 34px; border-radius: 50%; border: none;
    background: #f0f2f6; font-size: 18px; color: #1d1d1f;
}
.yd-cal-close { border: none; background: none; font-size: 14px; color: #86868b; padding: 6px; }
.yd-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 4px; text-align: center; }
.yd-cal-grid > span { padding: 8px 0; font-size: 12px; color: #86868b; }
.yd-cal-day {
    color: #1d1d1f !important; font-size: 14px !important;
    border-radius: 10px; cursor: pointer;
}
.yd-cal-day:active { background: #0071e3; color: #fff !important; }
.yd-cal-today { background: #eef4ff; color: #0071e3 !important; font-weight: 700; }
@media (min-width: 768px) {
    .yd-cal-mask { align-items: center; }
    .yd-cal { border-radius: 18px; width: 340px; }
}

/* 日期选择 div 触发器（X5 兼容：div 点击 100% 触发） */
.dl-picker {
    display: flex; align-items: center; justify-content: space-between;
    width: 100% !important; min-height: 38px;
    background: #fff; border: 1px solid #d6e4ff; border-radius: 10px;
    padding: 6px 12px; font-size: 13px; color: #1d1d1f;
    cursor: pointer; box-sizing: border-box;
}
.dl-picker:active { background: #f0f6ff; }
.dl-picker-text { color: #9ca3af; }
.dl-picker .dl-has-val { color: #1d1d1f; }
.dl-picker-inline {
    display: inline-block; min-width: 140px;
    background: #fff; border: 1px solid #d6e4ff; border-radius: 8px;
    padding: 6px 12px; font-size: 13px; color: #1d1d1f;
    cursor: pointer;
}
.dl-picker-inline:active { background: #f0f6ff; }

.yd-cal-selected {
    background: #0071e3 !important; color: #fff !important; font-weight: 700;
    box-shadow: 0 2px 8px rgba(0,113,227,0.35);
}

/* ═══ 催费页全选按钮化 + 卡片整卡勾选态 ═══ */
@media (max-width: 767px) {
    /* 全选：整行浅灰按钮 + iOS 圆钮 */
    .monthly-tools label,
    #tab-nodedl .card-header > span:last-child label {
        display: flex !important;
        align-items: center; justify-content: center; gap: 8px;
        background: #f5f7fa !important;
        border: 1px solid #e5e7eb !important;
        border-radius: 10px !important;
        padding: 8px 0 !important;
        font-size: 13px !important;
        font-weight: 600 !important;
        color: #4b5563 !important;
        cursor: pointer;
    }
    /* iOS 圆形全选框 */
    .monthly-tools #selectAllMonthly,
    #tab-nodedl #selectAllNoDl,
    #tab-new selectAllNew {
        -webkit-appearance: none; appearance: none;
        width: 20px; height: 20px; border-radius: 50%;
        border: 1.5px solid #cbd5e1; background: #fff;
        cursor: pointer; margin: 0 !important; flex-shrink: 0;
    }
    .monthly-tools #selectAllMonthly:checked,
    #tab-nodedl #selectAllNoDl:checked {
        background: #0071e3; border-color: #0071e3;
    }
    .monthly-tools #selectAllMonthly:checked::after,
    #tab-nodedl #selectAllNoDl:checked::after {
        content: ''; position: absolute; left: 6px; top: 2px;
        width: 5px; height: 10px;
        border: solid #fff; border-width: 0 2px 2px 0; transform: rotate(45deg);
    }
    /* 全选点击后卡片选中态（与应收一致） */
    .ar-mc.ar-selected {
        border-color: #0071e3 !important;
        background: #f5faff !important;
        box-shadow: 0 0 0 1px #0071e3, 0 3px 10px rgba(0,113,227,0.12) !important;
    }
    /* 全选按钮的 checkbox 圆钮需要 position relative 才能显示对勾 */
    .monthly-tools #selectAllMonthly,
    #tab-nodedl #selectAllNoDl { position: relative; }
}

/* ═══ 月摊卡：进度条 + 月欠分级 ═══ */
.ar-mc-progress {
    display: flex; align-items: center; gap: 8px;
    margin-top: 6px;
}
.arp-bar {
    flex: 1; height: 6px; background: #f0f2f6; border-radius: 3px; overflow: hidden;
}
.arp-fill {
    height: 100%; background: #0071e3; border-radius: 3px;
    transition: width .3s;
}
.arp-label { font-size: 10px; color: #9ca3af; white-space: nowrap; }
/* 月欠分级 */
.ar-mc-debt.debt-big { background: #fee2e2 !important; }
.ar-mc-debt.debt-big b { color: #b91c1c !important; font-size: 19px !important; }
.ar-mc-debt.debt-mid { background: #ffedd5 !important; }
.ar-mc-debt.debt-mid b { color: #c2410c !important; }

/* ═══ 收入管理：手机专属卡片 ═══ */
.inc-mobile-list { display: none; }
@media (max-width: 767px) {
    .inc-mobile-list { display: block; padding: 2px 0 12px; }
    .inc-mobile-list + .table-wrap, .inc-mobile-list + div .table-wrap { display: none; }
    .inc-mc { padding: 14px !important; }
    .inc-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 6px; }
    .inc-amt { font-size: 22px; font-weight: 800; color: #16a34a; letter-spacing: -0.5px; }
    .inc-cat {
        background: #eef4ff; color: #0369a1;
        border-radius: 8px; padding: 3px 10px;
        font-size: 12px; font-weight: 600;
    }
    .inc-meta { font-size: 12px; color: #9ca3af; }
    .inc-remark {
        font-size: 12px; color: #6b7280;
        background: #f8fafc; border-radius: 8px;
        padding: 6px 10px; margin-top: 6px;
        overflow: hidden; text-overflow: ellipsis;
        display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
    }
    .inc-op { display: flex; justify-content: flex-end; padding-top: 8px; }
    .inc-tag {
        background: #f0f2f6; color: #86868b;
        border-radius: 8px; padding: 4px 12px; font-size: 12px;
    }
    .inc-del {
        background: none; border: 1px solid #fecaca; color: #dc2626;
        border-radius: 980px; padding: 5px 16px; font-size: 12px;
    }
}

@media (max-width: 767px) {
    .inc-table-wrap { display: none !important; }
}

/* ═══ 收入管理全新设计：统计卡 2×2 + 表单卡片化 ═══ */
.inc-stats {
    display: block !important;
    margin-bottom: 14px;
    font-size: 0;
}
.inc-stat {
    display: inline-block !important;
    vertical-align: top;
    box-sizing: border-box;
    width: calc(50% - 5px) !important;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    font-size: 14px;
    margin-bottom: 10px;
}
.inc-stat:nth-child(odd) { margin-right: 10px !important; }
.inc-stat:nth-child(even) { margin-right: 0 !important; }
.is-head { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; }
.is-ic {
    font-size: 12px; width: 26px; height: 26px; border-radius: 8px;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
}
.is-head span { font-size: 12px; color: #86868b; font-weight: 500; }
.is-val { font-size: 24px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.8px; }
@media (min-width: 768px) {
    .inc-stat { width: calc(25% - 8px) !important; }
    .inc-stat:nth-child(odd) { margin-right: 10px !important; }
    .inc-stat:nth-child(even) { margin-right: 10px !important; }
    .inc-stat:nth-child(4n) { margin-right: 0 !important; }
}
/* 表单手机端：字段卡片化 */
@media (max-width: 767px) {
    #incomeForm .form-group, form.form-row[action*="add_transaction"] .form-group {
        background: #f8fafc !important;
        border-radius: 12px !important;
        padding: 10px 12px !important;
        margin-bottom: 10px !important;
    }
    #incomeForm label, form.form-row[action*="add_transaction"] label {
        font-size: 13px !important; font-weight: 600 !important;
        color: #4b5563 !important; margin-bottom: 6px;
    }
    #incomeForm .form-control, form.form-row[action*="add_transaction"] .form-control {
        min-height: 42px !important; font-size: 15px !important;
        border-radius: 10px !important;
    }
    /* 提交按钮全宽 */
    #incomeForm .form-group:last-child, form.form-row[action*="add_transaction"] .form-group:last-child {
        background: none !important; padding: 4px 0 !important;
    }
    #incomeForm .form-group:last-child .btn, form.form-row[action*="add_transaction"] .form-group:last-child .btn {
        min-height: 46px !important; font-size: 15px !important;
        border-radius: 980px !important; width: 100%;
    }
}

.pm-badge {
    background: #f0f6ff; color: #0369a1;
    border-radius: 6px; padding: 2px 8px;
    font-size: 11px; font-weight: 600; white-space: nowrap;
}

/* ═══ 付款方式分布 ═══ */
.inc-panel {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; margin-bottom: 14px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ip-title { font-size: 14px; font-weight: 600; margin-bottom: 12px; color: #1d1d1f; }
.pm-row { margin-bottom: 10px; }
.pm-head { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 4px; }
.pm-name { font-weight: 600; color: #3a3a3c; }
.pm-num { font-size: 12px; color: #86868b; }
.pm-bar { height: 8px; background: #f0f2f6; border-radius: 4px; overflow: hidden; }
.pm-fill { height: 100%; background: #0071e3; border-radius: 4px; }

/* ═══ 收入科目筛选条（手机横滑） ═══ */
.inc-cat-scroll {
    display: none;
    overflow-x: auto; -webkit-overflow-scrolling: touch;
    white-space: nowrap; padding-bottom: 6px; margin-bottom: 8px;
    gap: 6px;
}
.icc-btn {
    display: inline-block;
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 6px 14px;
    font-size: 12px; white-space: nowrap; margin-right: 6px;
}
.icc-btn.active {
    background: #0071e3; color: #fff; border-color: #0071e3;
    box-shadow: 0 2px 8px rgba(0,113,227,0.25);
}
@media (max-width: 767px) { .inc-cat-scroll { display: block; } }
/* 分布选中态 */
.pm-row { cursor: pointer; }
.pm-row.pm-active .pm-name { color: #0071e3; }
.pm-row.pm-active .pm-fill { background: #0a84ff; }

/* ═══ 付款方式胶囊 + 日期分组 + 空状态 ═══ */
.pm-picker { display: flex; flex-wrap: wrap; gap: 6px; }
.pm-opt {
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 7px 14px;
    font-size: 13px; cursor: pointer;
}
.pm-opt.active {
    background: #0071e3; color: #fff; border-color: #0071e3;
    box-shadow: 0 2px 8px rgba(0,113,227,0.25);
}
/* 日期分组头 */
.inc-date-head {
    display: flex; align-items: center; gap: 8px;
    font-size: 13px; font-weight: 700; color: #6b7280;
    padding: 10px 2px 6px;
}
.inc-date-head:first-child { padding-top: 0; }
.inc-date-head::after {
    content: ''; flex: 1; height: 1px; background: #f0f2f6;
}
.inc-date-cnt { font-size: 11px; color: #9ca3af; font-weight: 400; }
/* 空状态 */
.inc-empty {
    text-align: center; color: #9ca3af;
    padding: 40px 0; font-size: 13px;
    background: #fff; border-radius: 14px;
    border: 1px dashed #e5e7eb; margin: 10px 0;
}

/* ═══ 收入页视觉细节精修 ═══ */
.inc-stat { padding: 16px 14px; }
.is-val { font-size: 26px; }
.is-head { margin-bottom: 10px; }
.is-head span { font-size: 13px; }
.inc-panel { padding: 16px; }
.ip-title { font-size: 15px; margin-bottom: 14px; }
.pm-row { margin-bottom: 12px; }
.pm-head { font-size: 14px; margin-bottom: 5px; }
.pm-num { font-size: 13px; }
@media (max-width: 767px) {
    /* 表单卡片化细节 */
    form.form-row[action*="add_transaction"] .form-group {
        padding: 12px 14px !important;
        margin-bottom: 12px !important;
    }
    form.form-row[action*="add_transaction"] label {
        font-size: 14px !important;
        margin-bottom: 8px;
    }
    form.form-row[action*="add_transaction"] .form-control {
        min-height: 44px !important;
        font-size: 15px !important;
    }
    /* 记录卡细节 */
    .inc-amt { font-size: 24px; }
    .inc-meta { font-size: 13px; margin-top: 2px; }
    .inc-mc { padding: 16px !important; margin-bottom: 12px; }
    /* 日期分组头 */
    .inc-date-head { font-size: 14px; padding: 12px 2px 8px; }
}

/* ═══ 科目弹窗新排版 ═══ */
.cat-modal {
    background: #fff; border-radius: 18px;
    width: 92%; max-width: 380px;
    max-height: 82vh; overflow-y: auto;
    padding: 18px 16px 14px;
    box-shadow: 0 12px 40px rgba(0,0,0,0.15);
}
.cm-head {
    font-size: 16px; font-weight: 700; color: #1d1d1f;
    display: flex; align-items: center; justify-content: space-between;
    padding-bottom: 12px; border-bottom: 1px solid #f0f2f6;
    margin-bottom: 6px;
}
.cm-count { font-size: 12px; color: #9ca3af; font-weight: 400; }
.cm-list { max-height: 52vh; overflow-y: auto; }
.cm-item {
    display: flex; align-items: center; gap: 8px;
    padding: 10px 4px; border-bottom: 1px solid #f7f8fa;
}
.cm-name { font-size: 14px; color: #1d1d1f; font-weight: 500; flex: 1; }
.cm-name.cm-off { color: #b0b4bb; text-decoration: line-through; }
.cm-off-tag {
    font-style: normal; font-size: 10px; color: #b91c1c;
    background: #fef2f2; border-radius: 6px; padding: 1px 6px;
    margin-left: 6px; text-decoration: none;
}
.cm-fix {
    font-size: 11px; padding: 2px 8px; border-radius: 6px;
    background: #f5f0ff; color: #7c3aed; cursor: pointer; flex-shrink: 0;
}
.cm-ops { display: flex; gap: 6px; flex-shrink: 0; }
.cm-btn {
    border: none; border-radius: 980px; padding: 5px 12px;
    font-size: 12px; cursor: pointer;
}
.cm-blue { background: #0071e3; color: #fff; }
.cm-grey { background: #f0f2f6; color: #6b7280; }
.cm-del { background: none; color: #dc2626; }
.cm-empty { text-align: center; color: #9ca3af; padding: 24px 0; font-size: 13px; }
.cm-add {
    display: flex; gap: 8px; margin-top: 12px;
    padding-top: 12px; border-top: 1px solid #f0f2f6;
}
.cm-add .form-control { min-height: 40px; font-size: 14px; border-radius: 10px; }
.cm-add-btn { min-height: 40px; border-radius: 980px; padding: 0 18px; flex-shrink: 0; }
.cm-foot { text-align: center; margin-top: 10px; }
.cm-done {
    border: none; background: #f0f6ff; color: #0071e3;
    border-radius: 980px; padding: 8px 32px; font-size: 13px; font-weight: 600;
}

/* ═══ 科目弹窗：手机端底部滑出面板 ═══ */
@media (max-width: 767px) {
      }
    @keyframes cm-slide {
        from { transform: translateY(40px); opacity: .6; }
        to { transform: translateY(0); opacity: 1; }
    }
    .cm-list { max-height: 48vh !important; }

.cm-list { max-height: 44vh !important; overflow-y: auto; }
.cm-add { position: sticky; bottom: 0; background: #fff; z-index: 5; }

.cm-add { position: static !important; padding: 4px 0 12px; border-bottom: 1px solid #f0f2f6; }

/* ═══ 新增收入折叠 + 快捷金额 ═══ */
.inc-form-fold { background: #fff; border: 1px solid #eef1f5; border-radius: 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.iff-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px; font-size: 15px; font-weight: 600; color: #1d1d1f;
    cursor: pointer; user-select: none;
}
.iff-arrow { width: 8px; height: 8px; border-right: 2px solid #9ca3af; border-bottom: 2px solid #9ca3af; transform: rotate(45deg); transition: transform .15s; margin-right: 4px; }
.iff-head.open .iff-arrow { transform: rotate(-135deg); }
.iff-body { padding: 0 16px 16px; border-top: 1px solid #f0f2f6; }
.amt-quick { display: flex; gap: 6px; margin-top: 8px; }
.aq-btn {
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 6px 14px; font-size: 13px; cursor: pointer;
}
.aq-btn:active { background: #0071e3; color: #fff; }

.inc-remark { cursor: pointer; }
.inc-remark:not(.open) { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.inc-remark.open { white-space: normal; }
.inc-more {
    text-align: center; padding: 14px; margin: 8px 0 16px;
    background: #f5f7fa; border-radius: 12px;
    color: #0071e3; font-size: 14px; font-weight: 500; cursor: pointer;
}
.inc-more:active { background: #e8f0fb; }

/* 今日收入摘要 */
.inc-today {
    display: flex; align-items: center; justify-content: space-between;
    background: linear-gradient(135deg, #0071e3, #0a84ff);
    border-radius: 16px; padding: 14px 16px; margin-bottom: 12px;
    color: #fff;
}
.it-label { font-size: 12px; opacity: .85; display: block; margin-bottom: 2px; }
.it-val { font-size: 26px; font-weight: 700; letter-spacing: -0.5px; }
.it-r { text-align: right; }
.it-cnt { font-size: 15px; font-weight: 600; display: block; }
.it-date { font-size: 12px; opacity: .8; }
/* 日期快捷 */
.date-quick { display: flex; gap: 6px; margin-top: 8px; }
.dq-btn {
    background: #f5f7fa; border: 1px solid #eef1f5; color: #4b5563;
    border-radius: 980px; padding: 6px 16px; font-size: 13px; cursor: pointer;
}
.dq-btn.dq-on { background: #0071e3; color: #fff; border-color: #0071e3; }

/* 筛选结果合计条 */
.inc-total {
    background: #eef4ff; color: #0071e3;
    border-radius: 10px; padding: 10px 14px;
    font-size: 14px; font-weight: 600;
    margin: 10px 0; text-align: center;
}

/* 本月收支结余条 */
.inc-balance {
    display: flex; align-items: stretch;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 12px 0; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ib-item { flex: 1; text-align: center; }
.ib-mid { border-left: 1px solid #f0f2f6; border-right: 1px solid #f0f2f6; }
.ib-label { display: block; font-size: 11px; color: #86868b; margin-bottom: 4px; }
.ib-num { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.ib-out { color: #6b7280; }
.ib-pos { color: #059669; }
.ib-neg { color: #dc2626; }
.ib-avg { color: #0071e3; }
.ib-refund { font-style: normal; font-size: 9px; color: #dc2626; margin-left: 2px; font-weight: 400; }

/* 支出页收支结余条 */
.exp-balance {
    display: flex; align-items: stretch;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 12px 0; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.eb-item { flex: 1; text-align: center; }
.eb-mid { border-left: 1px solid #f0f2f6; border-right: 1px solid #f0f2f6; }
.eb-label { display: block; font-size: 11px; color: #86868b; margin-bottom: 4px; }
.eb-num { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.eb-inc { color: #0071e3; }
.eb-out { color: #6b7280; }
.eb-pos { color: #059669; }
.eb-neg { color: #dc2626; }
.eb-refund { font-style: normal; font-size: 9px; color: #dc2626; margin-left: 2px; font-weight: 400; }

/* 支出页统计卡（白卡规范） */
.exp-stats { display: block; margin-bottom: 14px; font-size: 0; }
.exp-stat {
    display: inline-block; vertical-align: top;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; width: calc(50% - 10px); margin: 4px 5px; box-sizing: border-box;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.es-head { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; font-size: 12px; color: #86868b; }
.es-ic { width: 22px; height: 22px; background: #eef4ff; color: #0071e3; border-radius: 7px; display: flex; align-items: center; justify-content: center; font-size: 11px; }
.es-val { font-size: 22px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
@media (min-width: 768px) { .exp-stat { width: calc(25% - 10px); } }

/* 支出页手机卡片 */
.exp-mobile-list { display: none; }
@media (max-width: 767px) {
    .exp-mobile-list { display: block; }
}
.exp-amt { font-size: 22px; font-weight: 700; color: #dc2626; letter-spacing: -0.3px; }
.exp-mc { padding: 14px 16px !important; margin-bottom: 12px !important; }

@media (max-width: 767px) { .exp-main-wrap { display: none; } }

/* 折叠面板（成本结构+预算） */
.fold-panel { background: #fff; border: 1px solid #eef1f5; border-radius: 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.fp-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 14px 16px; font-size: 15px; font-weight: 600; color: #1d1d1f;
    cursor: pointer; user-select: none;
}
.fp-body { padding: 0 16px 14px; border-top: 1px solid #f0f2f6; }

/* 报表页分析面板 */
.rp-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.rp-card { margin: 0; }
@media (max-width: 767px) { .rp-grid { grid-template-columns: 1fr; } }

.exp-today { background: linear-gradient(135deg, #5856d6, #7c6cf0); }

/* 待支付报销 */
.pp-head .iff-arrow { margin-left: 6px; }
.pp-head.open .iff-arrow { transform: rotate(-135deg); }
.pp-body .table-wrap { max-height: 320px; overflow-y: auto; }

/* ═══ /* ═══ /* ═══ /* ═══ 科目弹窗 ✕ 关闭 */
.cm-head .cm-x {
    margin-left: auto; cursor: pointer; color: #86868b;
    font-size: 15px; padding: 4px 6px; border-radius: 8px;
}
.cm-head .cm-x:active { background: #f0f2f6; }

/* 弹窗隐藏（!important 全覆盖，X5 必生效） */
.cat-hidden { display: none !important; visibility: hidden !important; pointer-events: none !important; }

/* ═══ 考勤/通用快捷入口卡片美化（图标底+纯文字） ═══ */
.qc-emoji { background: #eef4ff; color: #0071e3; }
.qc-label { color: #1d1d1f; }
.quick-card { box-shadow: 0 1px 4px rgba(0,0,0,.05); }

/* 学员档案搜索条 */
.roster-search { display: flex; gap: 8px; margin-bottom: 12px; }
.roster-search .form-control { flex: 1; font-size: 15px; padding: 10px 14px; border-radius: 12px; }
.roster-search .btn { padding: 10px 22px; border-radius: 12px; font-size: 15px; white-space: nowrap; }
@media (max-width: 767px) {
    .roster-search .btn { padding: 10px 16px; }
}

/* 学员档案手机卡片 v2 */
.rm-name { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.rm-gender { font-size: 11px; color: #8b8b93; }
.rm-class { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 10px; }
.rm-dorm { background: #f5f5f7; color: #1d1d1f; font-size: 11px; font-weight: 500; padding: 1px 8px; border-radius: 10px; }
.rm-tag { font-size: 11px; font-weight: 600; padding: 1px 8px; border-radius: 10px; }
.rm-tag-green { background: #e8f7ee; color: #16a34a; }
.rm-tag-blue { background: #eef4ff; color: #0071e3; }
.rm-tag-red { background: #fdecec; color: #dc2626; }
.rm-tag-gray { background: #f5f5f5; color: #8b8b93; }
.rm-partner { font-size: 12px; color: #8b8b93; }
.rm-item { padding: 14px 16px; }
.rm-sub { gap: 8px; margin-top: 6px; }

/* 学员档案分页 */
.roster-pager { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 12px; }
.pg-btn { font-size: 13px; color: #0071e3; text-decoration: none; padding: 6px 16px; border: 1px solid #d9e4f5; border-radius: 980px; }
.pg-btn:active { background: #eef4ff; }
.pg-disabled { opacity: .35; pointer-events: none; }
.pg-info { font-size: 13px; color: #6e6e73; }

/* 学员卡片化（圆角白卡+间距） */
@media (max-width: 767px) {
    .roster-mobile { padding: 10px 12px; display: grid; gap: 10px; }
    .rm-item {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        padding: 14px 16px; box-shadow: 0 1px 5px rgba(0,0,0,.04);
    }
}

/* 统计卡被 a 包裹时：文字色继承（防链接蓝） */
.exp-stats a { color: inherit; }
.exp-stats a .es-head span, .exp-stats a .es-val { color: #1d1d1f; }
.exp-stats a .es-head .es-ic { color: #0071e3; }
.exp-stats a:active .exp-stat { background: #f5f8ff; }

/* 学员档案过滤行（横向滚动胶囊，防 X5 wrap 错乱） */
.rs-filter {
    display: block; white-space: nowrap; overflow-x: auto;
    -webkit-overflow-scrolling: touch; margin-bottom: 10px; padding: 2px 0 6px;
}
.rs-filter::-webkit-scrollbar { display: none; }
.rs-f-label { display: inline-block; font-size: 12px; color: #86868b; margin-right: 6px; }
.rs-pill {
    display: inline-block; font-size: 12px; text-decoration: none;
    padding: 4px 12px; border-radius: 15px; margin-right: 6px;
    background: #f0f0f0; color: #1d1d1f; white-space: nowrap;
}
.rs-pill-on { background: #0071e3; color: #fff; }
.rs-pill-red { background: #dc2626; color: #fff; }
.rs-pill:active { opacity: .8; }

/* ═══ 学员档案 v3（Apple 风格重排版） ═══ */
/* 卡片三分区 */
.rm-item { display: block; padding: 14px 16px; text-decoration: none; color: inherit; }
.rm-head { display: flex; align-items: center; }
.rm-name { font-size: 18px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.rm-gender { font-size: 11px; color: #8b8b93; margin-left: 6px; }
.rm-status { margin-left: auto; }
.rm-mid { margin-top: 7px; display: flex; gap: 6px; flex-wrap: wrap; }
.rm-foot { margin-top: 6px; display: flex; align-items: center; justify-content: space-between; }
.rm-partner { font-size: 12px; color: #8b8b93; }
.rm-debt { font-size: 12px; color: #dc2626; font-weight: 600; }
.rm-class { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-dorm { background: #f5f5f7; color: #3a3a3c; font-size: 11px; font-weight: 500; padding: 2px 9px; border-radius: 10px; }
.rm-dim { font-size: 11px; color: #c7c7cc; }
.rm-tag { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-tag-green { background: #e8f7ee; color: #16a34a; }
.rm-tag-blue { background: #eef4ff; color: #0071e3; }
.rm-tag-red { background: #fdecec; color: #dc2626; }
.rm-tag-gray { background: #f5f5f5; color: #8b8b93; }
@media (max-width: 767px) {
    .roster-mobile { padding: 10px 12px; display: grid; gap: 10px; }
    .rm-item { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 1px 5px rgba(0,0,0,.04); }
}
/* 统计卡数字加大 */
.exp-stat .es-val { font-size: 26px; font-weight: 700; letter-spacing: -0.5px; color: #1d1d1f; }
.es-ic { width: 30px; height: 30px; border-radius: 9px; background: #eef4ff; color: #0071e3; display: inline-flex; align-items: center; justify-content: center; font-size: 13px; }
/* 搜索条增强 */
.roster-search .form-control { border-radius: 12px; border: 1px solid #e3e6ea; background: #f8f9fb; font-size: 15px; }
.roster-search .form-control:focus { border-color: #0071e3; background: #fff; box-shadow: 0 0 0 3px rgba(0,113,227,.12); outline: none; }
/* 页头大标题 */
.page-header h2 { font-size: 24px; letter-spacing: -0.3px; }

/* ═══ 学员档案 v4：圆形首字头像卡片 ═══ */
.rm-item { display: flex; gap: 12px; padding: 14px 16px; text-decoration: none; color: inherit; border-left: 4px solid transparent; }
.rm-avatar {
    width: 46px; height: 46px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 19px; font-weight: 700; color: #fff;
    background: #8e8e93; letter-spacing: 0;
}
.rm-active .rm-avatar { background: #0071e3; }
.rm-active { border-left-color: #0071e3; }
.rm-checked_in .rm-avatar { background: #34c759; }
.rm-checked_in { border-left-color: #34c759; }
.rm-dep .rm-avatar { background: #8e8e93; }
.rm-reg .rm-avatar { background: #a78bfa; }
.rm-body { flex: 1; min-width: 0; }
.rm-row1 { display: flex; align-items: center; }
.rm-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.rm-gender { font-size: 11px; color: #8b8b93; margin-left: 5px; }
.rm-status { margin-left: auto; }
.rm-row2 { margin-top: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
.rm-row3 { margin-top: 5px; display: flex; align-items: center; justify-content: space-between; }
.rm-class { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-dorm { background: #f5f5f7; color: #3a3a3c; font-size: 11px; font-weight: 500; padding: 2px 9px; border-radius: 10px; }
.rm-dim { font-size: 11px; color: #c7c7cc; }
.rm-partner { font-size: 12px; color: #8b8b93; }
.rm-debt { font-size: 12px; color: #dc2626; font-weight: 600; }
.rm-tag { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.rm-tag-green { background: #e8f7ee; color: #16a34a; }
.rm-tag-blue { background: #eef4ff; color: #0071e3; }
.rm-tag-red { background: #fdecec; color: #dc2626; }
.rm-tag-gray { background: #f5f5f5; color: #8b8b93; }
@media (max-width: 767px) {
    .roster-mobile { padding: 10px 12px; display: grid; gap: 10px; }
    .rm-item { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 1px 5px rgba(0,0,0,.04); }
}

/* 归属多层级下拉 */
.rs-select { display: inline-block; width: auto; min-width: 160px; max-width: 100%; height: 34px; font-size: 13px; border-radius: 10px; border: 1px solid #e3e6ea; background: #fff; padding: 0 8px; color: #1d1d1f; }

/* 范围切换：iOS 分段控件 */
.rs-seg {
    display: block; text-align: center; white-space: nowrap; background: #f2f2f7;
    border-radius: 11px; padding: 3px; margin-bottom: 12px;
}
.rs-seg-item {
    display: inline-block; width: 96px; padding: 7px 0; font-size: 13px;
    color: #6e6e73; text-decoration: none; border-radius: 9px;
    transition: background .15s;
}
.rs-seg-item.on { background: #fff; color: #1d1d1f; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.rs-n { font-style: normal; font-size: 11px; font-weight: 700; margin-left: 3px; color: #0071e3; }
.rs-seg-item.on .rs-n { color: #0071e3; }

/* 登录页错误提示 */
.lg-alert {
    background: #fdecec; color: #dc2626; font-size: 13px;
    border-radius: 10px; padding: 10px 14px; margin-bottom: 12px;
    border: 1px solid #f5c6c6;
}

/* ═══════════════════════════════════════════════
   ═ 学员档案页重新设计（Apple 风 · 桌面+手机同语言）
   ═══════════════════════════════════════════════ */

/* ── 头像圈（桌面+手机共用） ── */
.av {
    display: inline-flex; align-items: center; justify-content: center;
    width: 32px; height: 32px; border-radius: 50%;
    background: linear-gradient(135deg, #0071e3, #4da3ff);
    color: #fff; font-size: 13px; font-weight: 600;
    flex-shrink: 0;
}
.av-f { background: linear-gradient(135deg, #ec4899, #f472b6); }
.av-m { background: linear-gradient(135deg, #0071e3, #4da3ff); }

/* ── 桌面表格精致化 ── */
.roster-desktop {
    border-collapse: separate !important;
    border-spacing: 0 !important;
    font-size: 13px;
}
.roster-desktop thead th {
    background: #f8fafc !important;
    color: #6b7280 !important;
    font-weight: 600 !important;
    font-size: 12px !important;
    padding: 12px 14px !important;
    border-bottom: 1px solid #eef1f5 !important;
    white-space: nowrap;
}
.roster-desktop thead th:first-child { border-radius: 12px 0 0 0; }
.roster-desktop thead th:last-child { border-radius: 0 12px 0 0; }
.roster-desktop tbody td {
    padding: 12px 14px !important;
    border-bottom: 1px solid #f4f5f7 !important;
    vertical-align: middle;
}
.roster-desktop tbody tr { transition: background .12s; }
.roster-desktop tbody tr:hover { background: #f5faff !important; }
.roster-desktop tbody tr:last-child td { border-bottom: none !important; }
.roster-desktop .col-name { white-space: nowrap; }
.roster-desktop .col-name .av { margin-right: 10px; vertical-align: middle; }
.roster-desktop .col-name strong { font-size: 14px; vertical-align: middle; }
.roster-desktop .col-name .gen {
    font-size: 11px; color: #9ca3af; margin-left: 4px; vertical-align: middle;
}

/* ── 手机端卡片升级（桌面设计移植） ── */
@media (max-width: 767px) {
    .roster-mobile { padding: 2px 0 12px; }
    .rm-item {
        display: flex !important; gap: 12px !important;
        background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
        padding: 14px; margin-bottom: 10px;
        box-shadow: 0 1px 6px rgba(0,0,0,0.04);
        text-decoration: none; color: inherit;
    }
    .rm-avatar {
        width: 40px; height: 40px; border-radius: 50%;
        background: linear-gradient(135deg, #0071e3, #4da3ff);
        color: #fff; font-size: 16px; font-weight: 700;
        display: flex; align-items: center; justify-content: center;
        flex-shrink: 0;
    }
    .rm-body { flex: 1; min-width: 0; }
    .rm-row1 { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }
    .rm-name { font-size: 17px; font-weight: 700; color: #1d1d1f; }
    .rm-gender {
        font-size: 11px; color: #86868b;
        background: #f5f7fa; border-radius: 6px; padding: 1px 7px;
    }
    .rm-status { margin-left: auto; }
    .rm-tag {
        font-size: 11px !important; font-weight: 600 !important;
        padding: 3px 10px !important; border-radius: 8px !important;
    }
    .rm-tag-green { background: #f0fdf4 !important; color: #15803d !important; }
    .rm-tag-blue { background: #eef4ff !important; color: #0369a1 !important; }
    .rm-tag-red { background: #fef2f2 !important; color: #b91c1c !important; }
    .rm-tag-gray { background: #f5f7fa !important; color: #6b7280 !important; }
    .rm-row2 { display: flex; gap: 6px; flex-wrap: wrap; margin-bottom: 4px; }
    .rm-class, .rm-dorm {
        font-size: 11px; color: #0369a1;
        background: #eef4ff; border-radius: 7px; padding: 2px 8px; font-weight: 500;
    }
    .rm-dorm { color: #6b7280; background: #f5f7fa; }
    .rm-row3 { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
    .rm-partner { font-size: 12px; color: #86868b; }
    .rm-debt {
        font-size: 12px !important; color: #dc2626 !important;
        background: #fef2f2 !important; border-radius: 7px !important;
        padding: 2px 8px !important; font-weight: 700 !important;
    }
    /* 金额行（已缴/欠费/考勤） */
    .rm-row4 {
        display: flex; align-items: center; gap: 8px;
        background: #f8fafc; border-radius: 10px;
        padding: 8px 12px; margin-bottom: 8px;
    }
    .rm-paid { font-size: 12px; color: #6b7280; }
    .rm-paid b { color: #15803d; font-size: 13px; }
    .rm-att {
        margin-left: auto; font-size: 12px; color: #6b7280;
        display: flex; align-items: center; gap: 4px;
    }
    .rm-att .att-bad { color: #dc2626; font-weight: 700; }
    .rm-row5 { display: flex; justify-content: flex-end; }
    .rm-btn {
        background: #0071e3; color: #fff !important; text-decoration: none;
        border-radius: 980px; padding: 6px 18px; font-size: 12px; font-weight: 600;
        display: inline-block;
    }
}

/* ═══ 学员档案：筛选工具栏（范围+状态合并，去重） ═══ */
.rs-toolbar {
    display: flex; gap: 10px; align-items: flex-start;
    margin-bottom: 12px; flex-wrap: wrap;
}
.rs-seg {
    display: inline-flex; background: #f0f2f6; border-radius: 12px; padding: 3px;
    gap: 2px; flex-wrap: wrap;
}
.rs-seg-item {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 7px 16px; border-radius: 10px;
    font-size: 13px; font-weight: 600; color: #4b5563; text-decoration: none;
    white-space: nowrap;
}
.rs-seg-item .rs-n {
    font-style: normal; font-size: 11px; font-weight: 700;
    background: rgba(0,0,0,0.06); border-radius: 6px; padding: 1px 6px;
}
.rs-seg-item.on { background: #fff; color: #0071e3; box-shadow: 0 1px 4px rgba(0,0,0,0.08); }
.rs-seg-item.on .rs-n { background: #eef4ff; }
.rs-status { display: inline-flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rs-st-item {
    display: inline-flex; align-items: center; gap: 4px;
    font-size: 12px; color: #6b7280; text-decoration: none;
    background: #fff; border: 1px solid #eef1f5; border-radius: 980px;
    padding: 6px 14px; font-weight: 500;
}
.rs-st-item em { font-style: normal; font-weight: 700; color: #0071e3; }
.rs-st-item.on { background: #eef4ff; border-color: #d6e4ff; color: #0369a1; }
/* 手机端：筛选工具栏 2 行 */
@media (max-width: 767px) {
    .rs-toolbar { flex-direction: column; gap: 8px; }
    .rs-seg { width: 100%; }
    .rs-seg-item { flex: 1; justify-content: center; padding: 8px 6px; font-size: 13px; }
    .rs-status { width: 100%; }
    .rs-st-item { flex: 1; justify-content: center; }
    .rs-filter { width: 100%; margin-top: 2px; }
}

/* ═══ 学员档案：范围切换 = 下划线 Tab ═══ */
.rs-tabs {
    display: flex; gap: 28px;
    border-bottom: 1px solid #eef1f5;
    margin-bottom: 12px; padding: 0 4px;
}
.rs-tab {
    position: relative;
    padding: 8px 2px 10px;
    font-size: 14px; font-weight: 600; color: #6b7280;
    text-decoration: none; white-space: nowrap;
}
.rs-tab em { font-style: normal; font-size: 11px; color: #9ca3af; margin-left: 4px; font-weight: 500; }
.rs-tab.on { color: #0071e3; }
.rs-tab.on::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -1px;
    height: 2.5px; border-radius: 2px; background: #0071e3;
}
.rs-tab.on em { color: #0071e3; font-weight: 700; }
.rs-tab:active { opacity: .7; }
@media (max-width: 767px) {
    .rs-tabs { gap: 0; justify-content: space-around; }
    .rs-tab { font-size: 14px; padding: 9px 0 11px; }
}

/* Tab 行右侧归属下拉 */
.rs-filter-inline { margin-left: auto; display: flex; align-items: center; }
.rs-filter-inline .rs-select {
    min-height: 32px; font-size: 12px;
    border: 1px solid #eef1f5; border-radius: 8px;
    padding: 3px 8px; background: #fff; color: #4b5563;
}
@media (max-width: 767px) {
    .rs-tabs { align-items: center; }
    .rs-filter-inline .rs-select { max-width: 110px; }
}

/* ═══ 学员档案：搜索框 + 表头吸顶 ═══ */
.roster-search { display: flex; gap: 8px; margin-bottom: 12px; }
.rs-s-wrap { position: relative; flex: 1; display: flex; align-items: center; }
.rs-s-input {
    width: 100%; min-height: 40px; font-size: 14px;
    border-radius: 12px !important; padding: 8px 36px 8px 14px !important;
    border: 1px solid #e5e7eb !important; background: #fff !important;
}
.rs-s-input:focus { box-shadow: 0 0 0 3px rgba(0,113,227,0.15) !important; border-color: #0071e3 !important; }
.rs-s-clear {
    position: absolute; right: 10px;
    width: 22px; height: 22px; border-radius: 50%;
    background: #f0f2f6; color: #6b7280;
    display: flex; align-items: center; justify-content: center;
    font-size: 11px; text-decoration: none;
}
.rs-s-btn { border-radius: 12px !important; min-height: 40px; padding: 0 22px !important; }
/* 表头吸顶（桌面） */
@media (min-width: 768px) {
    .roster-desktop thead th { position: sticky; top: 0; z-index: 5; }
}
@media (max-width: 767px) {
    .rs-s-input { min-height: 44px; }
}

/* ═══════════════════════════════════════════════
   ═ 学员档案详情页（Apple 风 · 头像圈+分组卡片） ═
   ═══════════════════════════════════════════════ */

/* ── Hero 卡：大号首字头像圈 + 姓名 + 状态徽章 ── */
.pf-hero { display: flex; align-items: center; padding: 20px; margin-bottom: 14px; }
.pf-avatar {
    width: 72px; height: 72px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 30px; font-weight: 700; color: #fff; letter-spacing: 0;
    box-shadow: 0 2px 10px rgba(0,113,227,.18);
}
.pf-avatar.av-f { background: linear-gradient(135deg, #ec4899, #f472b6); }
.pf-avatar.av-m { background: linear-gradient(135deg, #0071e3, #4da3ff); }
.pf-hero-info { margin-left: 16px; min-width: 0; flex: 1; }
.pf-hero-name-row { display: flex; align-items: center; flex-wrap: wrap; }
.pf-hero-name { font-size: 26px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.2; }
.pf-hero-gender {
    font-size: 12px; color: #86868b; background: #f5f7fa;
    border-radius: 6px; padding: 1px 8px; margin-left: 8px;
}
.pf-hero-meta { margin-top: 9px; display: flex; flex-wrap: wrap; align-items: center; }

/* ── 状态徽章（浅底深字胶囊） ── */
.pf-badge {
    display: inline-block; font-size: 12px; font-weight: 600;
    padding: 3px 12px; border-radius: 980px;
    margin-left: 10px; vertical-align: middle; white-space: nowrap;
}
.pf-badge-green { background: #e8f7ee; color: #15803d; }
.pf-badge-blue { background: #eef4ff; color: #0369a1; }
.pf-badge-orange { background: #fff4e5; color: #b45309; }
.pf-badge-red { background: #fdecec; color: #b91c1c; }
.pf-badge-gray { background: #f5f5f7; color: #6b7280; }
.pf-badge-purple { background: #f3e8ff; color: #7c3aed; }
.pf-badge-amber { background: #fff8e1; color: #b45309; border: 1px dashed #e6c25c; }

/* ── 信息胶囊 ── */
.pf-chip {
    display: inline-block; background: #f5f5f7; color: #3a3a3c;
    font-size: 12px; font-weight: 600; padding: 3px 11px; border-radius: 980px;
    margin: 0 8px 6px 0; vertical-align: middle;
}
.pf-chip-blue { background: #eef4ff; color: #0071e3; }
.pf-chip-green { background: #e8f7ee; color: #15803d; }
.pf-chip-red { background: #fdecec; color: #b91c1c; }
.pf-chip-orange { background: #fff4e5; color: #b45309; }
.pf-chip-row { display: flex; flex-wrap: wrap; margin-bottom: 4px; }

/* ── 提示横幅（离校/试学） ── */
.pf-banner {
    border-radius: 14px; padding: 11px 16px; margin-bottom: 14px;
    font-size: 13px; line-height: 1.7;
}
.pf-banner-red { background: #fdecec; border: 1px solid #f5c6c6; color: #b91c1c; }
.pf-banner-amber { background: #fff8e1; border: 1px dashed #e6c25c; color: #b45309; }

/* ── 入学流程进度条 ── */
.pf-flow-body { padding: 14px 16px 12px; }
.pf-flow-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; margin-bottom: 12px; }
.pf-flow-title { font-size: 15px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.pf-flow-cur { font-size: 12px; color: #86868b; }
.pf-flow-cur b { color: #0071e3; }
.pf-flow { display: flex; align-items: flex-start; overflow-x: auto; padding-bottom: 2px; }
.pf-flow::-webkit-scrollbar { display: none; }
.pf-step { flex: 1 1 0; min-width: 84px; text-align: center; }
.pf-step-dot {
    width: 26px; height: 26px; border-radius: 50%; margin: 0 auto 6px;
    display: flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; color: #86868b; background: #e9edf2;
}
.pf-step.done .pf-step-dot { background: #34c759; color: #fff; }
.pf-step.cur .pf-step-dot { background: #0071e3; color: #fff; box-shadow: 0 0 0 4px rgba(0,113,227,.15); }
.pf-step-name { display: block; font-size: 12px; font-weight: 600; color: #86868b; }
.pf-step.done .pf-step-name, .pf-step.cur .pf-step-name { color: #1d1d1f; }
.pf-step-sub { display: block; font-size: 10px; color: #aeaeb2; margin-top: 1px; }
/* 未到步骤显式灰色（更直观的未完成态） */
.pf-step:not(.done):not(.cur) .pf-step-dot {
    background: #e3e7ee; color: #b0b4bb;
}
.pf-step:not(.done):not(.cur) .pf-step-name {
    color: #b0b4bb; font-weight: 400;
}
.pf-step:not(.done):not(.cur) .pf-step-sub { color: #c8ccd4; }
.pf-flow-line { flex: 0 0 22px; height: 2px; background: #e9edf2; margin-top: 13px; border-radius: 1px; }
.pf-flow-line.done { background: #34c759; }

/* ── 费用摘要统计卡（白底深色数字，X5 安全 inline-block） ── */
.pf-money-row { display: block; margin: 0 -5px 14px; font-size: 0; }
.pf-money {
    display: inline-block; vertical-align: top; box-sizing: border-box;
    width: calc(50% - 10px); margin: 0 5px 10px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.pf-money-label { font-size: 12px; color: #86868b; margin-bottom: 4px; }
.pf-money-val { font-size: 24px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.1; }
.pf-money .pf-badge { margin: 8px 0 0; }
.pf-money-wide { width: 100% !important; }
@media (min-width: 768px) { .pf-money { width: calc(25% - 10px); } }

/* ── 信息分组卡片网格（flex-wrap，X5 安全；手机 block 单列） ── */
.pf-grid { display: flex; flex-wrap: wrap; margin: 0 -7px; }
.pf-grid > .card { flex: 1 1 330px; margin: 0 7px 14px; box-sizing: border-box; }
.pf-card-header {
    background: #fff !important;
    padding: 14px 16px; font-size: 15px; font-weight: 700;
    color: #1d1d1f; letter-spacing: -0.3px;
}
.pf-card-title { display: inline-flex; align-items: center; }
.pf-card-ic {
    width: 26px; height: 26px; border-radius: 8px; flex-shrink: 0;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; margin-right: 8px;
}

/* ── 信息字段网格 ── */
.pf-info-grid { display: flex; flex-wrap: wrap; margin: -2px -8px; }
.pf-field { flex: 1 1 30%; min-width: 130px; padding: 6px 8px; box-sizing: border-box; }
.pf-field.wide { flex: 1 1 100%; }
.pf-field-label { font-size: 11px; color: #86868b; margin-bottom: 2px; }
.pf-field-val { font-size: 14px; color: #1d1d1f; font-weight: 500; line-height: 1.45; word-break: break-all; }
.pf-num { font-size: 17px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.3px; }
.pf-ado-val { font-size: 20px; font-weight: 800; color: #1d1d1f; letter-spacing: -0.4px; line-height: 1.2; }

/* ── 表格金额强调（深色大字号） ── */
.pf-table { font-size: 13px; }
.td-amt { font-weight: 700; color: #1d1d1f; }

/* ── 折叠展开（交费记录） ── */
.pf-fold {
    display: flex; align-items: center;
    font-size: 13px; color: #0071e3; font-weight: 600; cursor: pointer;
    margin: 10px 0 4px; padding: 8px 12px;
    background: #f5f8ff; border-radius: 10px; user-select: none;
}
.pf-fold-ic { font-size: 10px; margin-right: 6px; transition: transform .15s; flex-shrink: 0; }
.pf-fold-hint { font-size: 11px; color: #86868b; font-weight: 400; margin-left: auto; }

/* ── 列表行（请假/分班/离校记录） ── */
.pf-list-row { padding: 9px 0; border-bottom: 1px dashed #eef0f3; font-size: 13px; }
.pf-list-row:last-child { border-bottom: none; }
.pf-row-flex { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; }
.pf-row-text { font-size: 13px; margin-right: 8px; }
.pf-row-sub { font-size: 11px; color: #86868b; margin-top: 3px; line-height: 1.5; }
.pf-list-row .pf-badge { margin-left: 8px; }
.pf-arrow { font-size: 11px; color: #0071e3; margin: 0 5px; vertical-align: middle; }

/* ── 辅助元素 ── */
.pf-sub-label { font-size: 12px; color: #86868b; margin: 10px 0 4px; }
.pf-empty { color: #86868b; font-size: 13px; padding: 4px 0; }
.pf-empty-center { text-align: center; padding: 18px 0; }
.pf-card-foot { margin-top: 10px; }

/* ── 手机端适配 ── */
@media (max-width: 767px) {
    .pf-hero { padding: 16px; margin-bottom: 12px; }
    .pf-avatar { width: 56px; height: 56px; font-size: 24px; }
    .pf-hero-name { font-size: 21px; }
    .pf-hero-info { margin-left: 13px; }
    .pf-hero-meta { margin-top: 7px; }
    .pf-grid { display: block; margin: 0; }
    .pf-grid > .card { margin: 0 0 12px; }
    .pf-money-row { margin: 0 -4px 12px; }
    .pf-money { width: calc(50% - 8px); margin: 0 4px 8px; padding: 12px 14px; }
    .pf-money-val { font-size: 21px; }
    .pf-card-header { padding: 12px 14px; font-size: 15px; }
    .pf-field { flex: 1 1 44%; min-width: 115px; }
    .pf-field-val { font-size: 14px; }
    .pf-ado-val { font-size: 18px; }
    .pf-step { min-width: 76px; }
    .pf-flow { -webkit-overflow-scrolling: touch; }
    .pf-banner { margin-bottom: 12px; }
    .pf-list-row { padding: 9px 0; }
    .pf-card .btn, .pf-card .btn-sm, .pf-card .btn-xs, .pf-hero .btn { min-height: 36px; }
}

/* ═══ 班级管理页（Apple 风重设计） ═══ */
/* 新增班级表单 */
.cls-add-form .form-control { min-height: 38px; border-radius: 10px; font-size: 14px; }
.cls-add-btn { flex: 0 0 auto; }
.cls-add-btn .btn { border-radius: 980px; padding: 8px 26px; min-height: 38px; }

/* 筛选栏（block + inline-block 横向滚动，防 X5 wrap 错乱） */
.cls-filter { display: block; padding: 12px 16px; white-space: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; }
.cls-filter::-webkit-scrollbar { display: none; }
.cls-filter-label { display: inline-block; font-size: 13px; font-weight: 600; color: #1d1d1f; margin-right: 8px; }
.cls-filter-select { display: inline-block; width: auto; min-width: 150px; font-size: 13px; border-radius: 980px; padding: 6px 16px; border: 1px solid #e5e7eb; background: #fff; color: #1d1d1f; }
.cls-filter-hint { display: inline-block; font-size: 11px; color: #86868b; margin-left: 12px; }

/* 班级卡片（inline-block 布局，X5 稳定，勿改 grid） */
.cls-grid { display: block; font-size: 0; margin: -5px; margin-bottom: 9px; }
.cls-card { display: inline-block; vertical-align: top; box-sizing: border-box; width: calc(33.333% - 10px); margin: 5px; background: #fff; border: 1px solid #eef1f5; border-radius: 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04); overflow: hidden; font-size: 14px; }
.cls-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 14px 16px 8px; }
.cls-title { display: flex; align-items: center; gap: 6px; min-width: 0; }
.cls-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cls-tag { flex: none; font-size: 10px; font-weight: 600; padding: 1px 8px; border-radius: 8px; }
.cls-tag-blue { background: var(--blue-light); color: var(--blue); }
.cls-tag-orange { background: var(--orange-light); color: var(--orange); }
.cls-tag-green { background: var(--green-light); color: var(--green); }
.cls-cap { flex: none; font-size: 12px; font-weight: 600; color: #6e6e73; white-space: nowrap; }
.cls-cap-full { color: #dc2626; font-weight: 700; }
.cls-progress { height: 4px; margin: 0 16px 2px; background: #f0f2f6; border-radius: 2px; overflow: hidden; }
.cls-progress-bar { display: block; height: 100%; background: #0071e3; border-radius: 2px; transition: width .3s; }
.cls-progress-bar.full { background: #dc2626; }
.cls-body { padding: 8px 16px 6px; max-height: 200px; overflow-y: auto; }
.cls-empty { text-align: center; color: #86868b; font-size: 12px; padding: 14px 0; }
.cls-body .member-row { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px dashed var(--border-light); font-size: 13px; }
.cls-body .member-row:last-child { border-bottom: none; }
.cls-body .member-av { flex: none; width: 26px; height: 26px; border-radius: 50%; background: linear-gradient(135deg, #0071e3, #4da3ff); color: #fff; font-size: 12px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; }
.cls-body .member-name { font-weight: 600; color: #1d1d1f; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.cls-body .member-org { flex: none; font-size: 10px; color: #86868b; }
.cls-body .member-out-form { margin-left: auto; flex: none; }
.cls-body .member-out-form .btn { border-radius: 980px; min-height: 26px; }
.cls-body .member-partner { display: block; font-size: 10px; font-weight: 700; color: #86868b; letter-spacing: .3px; padding: 8px 0 2px; }
.cls-actions { display: flex; gap: 8px; justify-content: flex-end; padding: 10px 16px 14px; border-top: 1px solid #f0f2f6; background: #fafbfc; }
.cls-actions .btn { min-height: 30px; border-radius: 980px; font-size: 12px; }
.cls-del-form { display: inline-block; }

/* 未分班学员 */
.unassigned-card .card-header { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.unassigned-head { cursor: pointer; user-select: none; color: #b45309; }
.unassigned-head::after { font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f107"; font-size: 13px; color: #b45309; transition: transform .2s; }
.unassigned-head.open::after { transform: rotate(180deg); }
.unassign-toolbar { display: block; padding: 12px 14px; border-bottom: 1px solid var(--border-light); background: #fafbfc; }
.unassign-search-wrap { display: block; margin-bottom: 8px; }
.unassign-search-wrap .form-control { width: 100%; border-radius: 980px; padding: 8px 16px; font-size: 13px; border: 1px solid #e5e7eb; min-height: 36px; }
.unassign-class { width: 100%; margin-bottom: 8px; border-radius: 980px; font-size: 13px; min-height: 36px; border: 1px solid #e5e7eb; }
.unassign-batch-btn { width: 100%; border-radius: 980px; min-height: 38px; font-size: 13px; opacity: .6; }
.unassign-tip { padding: 6px 2px 0; font-size: 11px; color: #86868b; }
.unassign-batch-head { display: flex; align-items: center; gap: 8px; padding: 9px 14px; border-top: 1px solid var(--border-light); cursor: pointer; user-select: none; }
.unassign-batch-head:first-child { border-top: none; }
.unassign-batch-icon { font-size: 11px; color: #86868b; }
.unassign-batch-icon::before { font-family: "Font Awesome 5 Free"; font-weight: 900; content: "\f054"; font-size: 10px; display: inline-block; transition: transform .2s; }
.unassign-batch-head.open .unassign-batch-icon::before { transform: rotate(90deg); }
.ub-tag { font-size: 10px; font-weight: 700; padding: 1px 8px; border-radius: 10px; color: #fff; }
.ub-tag-blue { background: var(--blue); }
.ub-tag-orange { background: var(--orange); }
.ub-tag-green { background: var(--green); }
.unassign-batch-count { font-size: 11px; color: #86868b; background: #f0f0f0; padding: 1px 8px; border-radius: 10px; }
.ub-all { margin-left: auto; font-size: 11px; }
.ub-all label { cursor: pointer; color: #0071e3; }
.ub-all input { accent-color: #0071e3; width: 15px; height: 15px; vertical-align: -2px; }
.unassign-row { display: flex; align-items: center; gap: 8px; padding: 8px 14px; border-bottom: 1px dashed var(--border-light); font-size: 13px; cursor: pointer; transition: background .15s; }
.unassign-row:active { background: #f5f9ff; }
.unassign-row input[type=checkbox] { accent-color: #0071e3; width: 16px; height: 16px; flex: none; }
.unassign-av { flex: none; width: 28px; height: 28px; border-radius: 50%; background: linear-gradient(135deg, #0071e3, #4da3ff); color: #fff; font-size: 13px; font-weight: 600; display: inline-flex; align-items: center; justify-content: center; }
.unassign-name { font-size: 14px; font-weight: 600; color: #1d1d1f; min-width: 64px; }
.unassign-tag { flex: none; font-size: 10px; font-weight: 600; padding: 0 6px; border-radius: 8px; }
.unassign-tag-blue { background: var(--blue-light); color: var(--blue); }
.unassign-tag-orange { background: var(--orange-light); color: var(--orange); }
.unassign-tag-green { background: var(--green-light); color: var(--green); }
.unassign-org { color: #86868b; font-size: 11px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.unassign-empty { display: none; padding: 16px; text-align: center; font-size: 12px; color: #86868b; }

/* 编辑班级弹窗：桌面居中卡片 / 手机全屏 */
.ce-overlay { padding: 20px; }
.ce-modal { box-sizing: border-box; background: #fff; border-radius: 18px; width: 92%; max-width: 400px; max-height: 90vh; display: flex; flex-direction: column; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.ce-head { display: flex; align-items: center; justify-content: space-between; padding: 18px 20px 0; }
.ce-head h3 { font-size: 17px; font-weight: 700; margin: 0; color: #1d1d1f; }
.ce-x { border: none; background: #f0f2f6; color: #6e6e73; width: 30px; height: 30px; border-radius: 50%; font-size: 13px; cursor: pointer; line-height: 1; flex: none; }
.ce-x:active { background: #e2e5ea; }
.ce-body { padding: 14px 20px 4px; }
.ce-body .form-group { margin-bottom: 14px; }
.ce-body .form-control { min-height: 40px; border-radius: 10px; font-size: 14px; }
.ce-note { font-size: 12px; color: #86868b; margin: 4px 0 6px; }
.ce-foot { display: flex; gap: 10px; justify-content: flex-end; padding: 12px 20px 18px; }
.ce-btn { min-height: 40px; border-radius: 980px; padding: 8px 24px; font-size: 14px; }

/* 手机端 */
@media (max-width: 767px) {
    .cls-add-form { display: block; }
    .cls-add-form .form-group { width: 100%; margin-bottom: 12px; }
    .cls-add-form .form-control { width: 100%; min-height: 42px; font-size: 14px; }
    .cls-add-btn .btn { width: 100%; min-height: 42px; font-size: 14px; }
    .cls-filter-select { min-height: 36px; }
    .cls-filter-hint { display: none; }
    .cls-card { width: 100%; margin: 5px 0; }
    .cls-name { font-size: 17px; }
    .cls-cap { font-size: 13px; }
    .cls-actions .btn { min-height: 36px; font-size: 13px; }
    .cls-body .member-row { font-size: 14px; padding: 7px 0; }
    .cls-body .member-name { font-size: 14px; }
    .cls-body .member-out-form .btn { min-height: 32px; }
    .unassign-search-wrap .form-control { min-height: 40px; font-size: 14px; }
    .unassign-class { min-height: 40px; font-size: 14px; }
    .unassign-batch-btn { min-height: 42px; font-size: 14px; }
    .unassign-row { font-size: 14px; padding: 9px 14px; }
    .unassign-name { font-size: 15px; }
    .unassign-av { width: 30px; height: 30px; font-size: 14px; }
    /* 编辑班级弹窗：全屏 + 大输入框（16px 防 iOS 聚焦缩放） */
    .ce-overlay { padding: 0; }
    .ce-modal { width: 100% !important; max-width: 100% !important; height: 100% !important; max-height: 100% !important; border-radius: 0 !important; }
    .ce-body { flex: 1; overflow-y: auto; }
    .ce-modal .form-control { min-height: 46px; font-size: 16px; border-radius: 12px; }
    .ce-modal .form-group label { font-size: 14px; }
    .ce-head { padding: 20px 20px 4px; }
    .ce-btn { flex: 1; min-height: 44px; font-size: 15px; }
}

/* ═══ 考勤：今日出勤率大数字 + 各班简报名单卡片化（Apple 白卡） ═══ */
.att-rate-big { text-align: right; }
.att-rate-big b { font-size: 24px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.1; }
.att-rate-big b small { font-size: 15px; font-weight: 700; color: #0071e3; margin-left: 1px; }
.att-rate-big i { display: block; font-style: normal; font-size: 11px; color: #86868b; margin-top: 2px; }

.att-brief-list { display: block; font-size: 0; }
.att-brief-item {
    display: inline-block; vertical-align: top; box-sizing: border-box;
    width: calc(50% - 10px); margin: 0 5px 10px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 12px 14px; box-shadow: 0 1px 5px rgba(0,0,0,.04);
}
.ab-row1 { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 9px; }
.ab-class { font-size: 15px; font-weight: 700; color: #1d1d1f; }
.ab-row2 { display: block; font-size: 0; }
.ab-stat {
    display: inline-block; width: 20%; box-sizing: border-box; text-align: center;
    border-right: 1px solid #f0f2f6;
}
.ab-stat:last-child { border-right: none; }
.ab-stat b { display: block; font-size: 16px; font-weight: 700; color: #1d1d1f; line-height: 1.25; }
.ab-stat b.ab-bad { color: #dc2626; }
.ab-stat i { display: block; font-style: normal; font-size: 10px; color: #86868b; margin-top: 2px; }

/* ═══ 考勤：柔和状态徽章（出勤绿/迟到橙/缺勤红/请假蓝/灰） ═══ */
.tk-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 10px; line-height: 1.5; white-space: nowrap;
}
.tk-badge-green { background: #e8f7ee; color: #16a34a; }
.tk-badge-red   { background: #fdecec; color: #dc2626; }
.tk-badge-orange{ background: #fff4e5; color: #d97706; }
.tk-badge-blue  { background: #eef4ff; color: #0071e3; }
.tk-badge-gray  { background: #f5f5f5; color: #8b8b93; }

/* ═══ 考勤：班级点名名单卡片化（姓名 17 + 分段状态钮 + 备注） ═══ */
.tk-card {
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 12px 14px; margin-bottom: 10px; box-shadow: 0 1px 5px rgba(0,0,0,.04);
}
.tk-card-absent { background: #fff7f6; border-color: #f6dedd; }
.tk-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 10px; }
.tk-name-wrap { min-width: 0; }
.tk-name { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.tk-dorm { font-size: 12px; color: #8b8b93; margin-left: 8px; }

/* 分段状态钮（iOS 分段控件样式，inline-block 防 X5 乱序） */
.tk-seg {
    display: block; font-size: 0;
    background: #f2f2f7; border-radius: 12px; padding: 3px; margin-bottom: 8px;
}
.tk-seg input { position: absolute; opacity: 0; pointer-events: none; }
.tk-opt {
    display: inline-block; width: 25%; box-sizing: border-box;
    font-size: 14px; text-align: center; padding: 7px 0; min-height: 34px; line-height: 1.4;
    border-radius: 9px; background: transparent; color: #4b5563;
    cursor: pointer; user-select: none; -webkit-user-select: none;
}
.tk-opt:active { opacity: .7; }
.tk-seg input:checked + .tk-opt-green  { background: #fff; color: #16a34a; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tk-seg input:checked + .tk-opt-red    { background: #fff; color: #dc2626; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tk-seg input:checked + .tk-opt-orange { background: #fff; color: #d97706; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.tk-seg input:checked + .tk-opt-blue   { background: #fff; color: #0071e3; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }

.tk-note {
    width: 100%; font-size: 14px; padding: 7px 10px; border-radius: 9px;
    border: 1px solid #e5e7eb; background: #fafafa; color: #3a3a3c;
    box-sizing: border-box;
}
.tk-note:focus { background: #fff; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }

.tk-submit { border-radius: 12px !important; min-height: 44px; }

@media (max-width: 767px) {
    .att-brief-item { display: block; width: auto; margin: 0 0 10px; }
    .att-rate-big b { font-size: 22px; }
    .tk-opt { min-height: 38px; font-size: 15px; padding: 9px 0; }
    .tk-card { padding: 12px; }
}

/* ═══ 统计卡图标：简洁版（浅蓝底 + 蓝图标） ═══ */
.exp-stat .es-head .es-ic {
    width: 28px; height: 28px;
    border-radius: 8px;
    background: #eef4ff;
    color: #0071e3;
    font-size: 12px;
    display: inline-flex; align-items: center; justify-content: center;
    flex-shrink: 0;
}
.exp-stat .es-head {
    display: flex; align-items: center; gap: 8px;
    font-size: 12px; color: #86868b; font-weight: 500;
    margin-bottom: 8px;
}
.exp-stat .es-val {
    font-size: 26px; font-weight: 700; color: #1d1d1f;
    letter-spacing: -0.5px; line-height: 1.15;
    padding-left: 2px;
}
@media (max-width: 767px) {
    .exp-stat .es-head .es-ic { width: 26px; height: 26px; font-size: 11px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 合作方管理 / 缺勤预警 / 考勤报表 — Apple 风统一层
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── 统计卡数值着色：警示红 / 正向绿 ── */
.es-val-danger { color: #dc2626 !important; }
.es-val-ok     { color: #16a34a !important; }

/* ── 3 张统计卡布局（桌面 1/3，手机 2+1；inline-block 防 X5 乱序） ── */
.exp-stats-3 .exp-stat { width: calc(50% - 10px); }
@media (min-width: 768px) {
    .exp-stats-3 .exp-stat { width: calc(33.333% - 10px); }
}

/* ── 合作方页：搜索框（Apple 圆角搜索条） ── */
.partner-search { margin-bottom: 12px; }
.ps-wrap {
    display: flex; align-items: center; gap: 6px;
    background: #f8f9fb; border: 1px solid #e3e6ea; border-radius: 12px;
    padding: 0 12px; box-sizing: border-box;
}
.ps-wrap:focus-within { border-color: #0071e3; background: #fff; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.ps-ic { color: #86868b; font-size: 13px; flex-shrink: 0; }
.ps-input {
    flex: 1; border: none !important; background: transparent !important;
    box-shadow: none !important; padding: 10px 0; font-size: 15px; min-height: 40px;
}
.ps-clear { color: #c7c7cc; font-size: 15px; cursor: pointer; flex-shrink: 0; display: none; padding: 4px; }
.ps-clear:active { color: #86868b; }

/* ── 全站 status-badge 补缺（此前有使用无定义：alerts/leave 页共用） ── */
.status-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 10px; line-height: 1.5; white-space: nowrap;
    background: #f5f5f5; color: #8b8b93;
}
.status-badge.overdue   { background: #fdecec; color: #dc2626; }
.status-badge.pending   { background: #fff4e5; color: #d97706; }
.status-badge.processing{ background: #eef4ff; color: #0071e3; }
.status-badge.completed { background: #e8f7ee; color: #16a34a; }

/* ── 缺勤预警：待处理名单卡片化（圆形首字 + 状态左色 + 柔和徽章） ── */
.al-list { display: block; }
.al-card {
    display: flex; gap: 12px; background: #fff; border: 1px solid #eef1f5;
    border-radius: 14px; padding: 12px 14px; margin-bottom: 10px;
    box-shadow: 0 1px 5px rgba(0,0,0,.04);
}
.al-avatar {
    width: 42px; height: 42px; border-radius: 50%; flex-shrink: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 17px; font-weight: 700;
    background: #fdecec; color: #dc2626;
}
.al-body { flex: 1; min-width: 0; }
.al-row1 { display: flex; align-items: center; gap: 6px; }
.al-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px; }
.al-tag { font-size: 11px; font-weight: 600; padding: 1px 9px; border-radius: 10px; margin-left: auto; flex-shrink: 0; }
.al-tag-red { background: #fdecec; color: #dc2626; }
.al-row2 { margin-top: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
.al-badge { font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 10px; }
.al-badge-blue { background: #eef4ff; color: #0071e3; }
.al-badge-gray { background: #f5f5f7; color: #3a3a3c; }
.al-row3 { margin-top: 6px; font-size: 12px; color: #86868b; }
.al-form { display: flex; gap: 8px; margin-top: 10px; }
.al-select {
    flex: 1; min-width: 0; font-size: 13px; padding: 8px 10px;
    border-radius: 10px; background: #f8f9fb; border: 1px solid #e3e6ea;
    min-height: 36px;
}
.al-select:focus { background: #fff; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.al-submit { min-height: 36px; border-radius: 10px; }

/* ── 考勤报表：筛选 + 结果头 + 出勤率 ── */
.rep-filter .form-group { min-width: 130px; }
.rep-placeholder { text-align: center; padding: 40px 16px; color: #86868b; }
.rep-ph-ic { font-size: 30px; color: #c7c7cc; display: block; margin-bottom: 8px; }
.rep-empty-ic { font-size: 30px; color: #c7c7cc; display: block; margin-bottom: 8px; }
.rep-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 14px 16px; border-bottom: 1px solid #f0f2f6;
}
.rep-title { font-size: 15px; font-weight: 600; color: #1d1d1f; }
.rep-sub { font-size: 12px; color: #86868b; margin-top: 2px; }
.rep-rate { text-align: right; flex-shrink: 0; margin-left: 12px; }
.rep-rate-num { display: block; font-size: 22px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.4px; line-height: 1.1; }
.rep-rate-lb { font-size: 11px; color: #86868b; }

/* ── 空状态 FA 图标（通用） ── */
.empty-state i.fas { font-size: 30px; color: #c7c7cc; display: block; margin-bottom: 8px; }

/* ── 手机端（<768px） ── */
@media (max-width: 767px) {
    /* 合作方页头按钮：补 min-height 36px（原有 .ph-actions 规则不动） */
    .ph-actions .btn { min-height: 36px; }
    /* 合作方搜索条 */
    .ps-wrap { padding: 0 10px; }
    .ps-input { font-size: 14px; min-height: 40px; }
    /* 缺勤预警：处理表单纵向排列，按钮全宽 */
    .al-form { display: block; }
    .al-select { width: 100%; margin-bottom: 8px; min-height: 40px; }
    .al-submit { width: 100%; min-height: 40px; }
    /* 考勤报表：筛选单列、结果头紧凑 */
    .rep-filter .form-group { min-width: 100%; }
    .rep-head { padding: 12px 14px; }
    .rep-rate-num { font-size: 19px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 录取管理 / 成绩分析 / 课表总览（Apple 风统一重设计 · 追加段）
   ═ 追加于 style.css 末尾；不删上方任何规则，不动后端
   ═══════════════════════════════════════════════════════════════ */

/* ── 统计卡强调色（白卡规范：白底 + 深色数字，仅图标/数值可着色） ── */
.es-val-green  { color: #34c759 !important; }
.es-val-red    { color: #ff3b30 !important; }
.es-val-orange { color: #d97706 !important; }
.es-ic-green  { background: #e8f7ee !important; color: #16a34a !important; }
.es-ic-red    { background: #fdecec !important; color: #dc2626 !important; }
.es-ic-orange { background: #fff4e5 !important; color: #d97706 !important; }
.es-ic-purple { background: #f3e8ff !important; color: #7c3aed !important; }
.es-val small { font-weight: 600; color: #86868b; }

/* ═══ 录取管理 ═══ */

/* 录入表单：flex-wrap 网格（X5 安全，勿用 grid 强排） */
.adm-form-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.adm-form-grid > .form-group { flex: 1 1 200px; min-width: 0; margin-bottom: 0; box-sizing: border-box; }
.adm-form-grid label { display: block; font-size: 12px; color: #86868b; margin-bottom: 4px; font-weight: 500; }
.adm-xk-rows { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 6px; }
.adm-xk-rows .xk-row { display: flex; gap: 6px; align-items: center; }
.adm-xk-rows .xk-row .form-control:nth-child(1) { flex: 1.2; min-width: 120px; }
.adm-xk-rows .xk-row .btn { border-radius: 980px; min-height: 30px; color: #dc2626; border-color: #f5c6c6; }
.adm-add-xk { background: #eef4ff; color: #0071e3; border-radius: 980px; min-height: 36px; font-weight: 600; }
.adm-add-xk i { font-size: 11px; margin-right: 3px; }
.adm-upload-row { display: flex; gap: 8px; align-items: center; }
.adm-upload-row .btn { border-radius: 980px; min-height: 36px; white-space: nowrap; }
.adm-foot { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-top: 14px; }
.adm-foot .btn { border-radius: 980px; min-height: 40px; padding: 8px 22px; }
.adm-foot .btn i { font-size: 12px; margin-right: 4px; }

/* 记录列表搜索条（胶囊） */
.adm-search-wrap { position: relative; flex: 1; min-width: 220px; max-width: 340px; }
.adm-search { width: 100%; min-height: 36px; border-radius: 980px !important; border: 1px solid #e5e7eb !important; background: #f8f9fb !important; padding: 6px 14px 6px 34px !important; font-size: 13px; }
.adm-search:focus { border-color: #0071e3 !important; background: #fff !important; box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important; }
.adm-search-ic { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); font-size: 12px; color: #86868b; pointer-events: none; }

/* 记录表（Apple 表格：头像圈 + 徽章 + 截图缩略） */
.adm-table tbody td { vertical-align: top; }
.adm-table .col-name { white-space: normal; }
.adm-table .col-name .av { margin-right: 8px; vertical-align: middle; }
.adm-table .col-name strong { font-size: 14px; vertical-align: middle; }
.adm-cls { font-size: 11px; color: #86868b; margin-top: 2px; }
.adm-lk { color: #0071e3; font-size: 15px; font-weight: 700; }
.adm-dim { color: #c7c7cc; font-size: 12px; }
.adm-xk-cell { max-width: 170px; }
.adm-xk-tag { font-size: 11px; color: #3a3a3c; background: #f5f7fa; border-radius: 8px; padding: 2px 8px; margin: 0 4px 4px 0; display: inline-block; }
.adm-xk-tag em { font-style: normal; font-weight: 700; margin-left: 4px; }
.adm-xk-tag .xk-pass { color: #16a34a; }
.adm-xk-tag .xk-fail { color: #dc2626; }
.adm-school b { color: #1d1d1f; font-size: 13px; }
.adm-major { display: block; font-size: 11px; color: #86868b; margin-top: 2px; }
.adm-batch { display: inline-block; font-size: 11px; font-weight: 600; padding: 3px 10px; border-radius: 980px; white-space: nowrap; }
.adm-batch-blue   { background: #eef4ff; color: #0369a1; }
.adm-batch-green  { background: #e8f7ee; color: #15803d; }
.adm-batch-purple { background: #f3e8ff; color: #7c3aed; }
.adm-batch-orange { background: #fff4e5; color: #b45309; }
.adm-batch-gray   { background: #f5f5f7; color: #6b7280; }
.adm-shot-link { display: inline-block; }
.adm-shot-thumb { width: 56px; height: 40px; object-fit: cover; border-radius: 8px; border: 1px solid #eef1f5; box-shadow: 0 1px 4px rgba(0,0,0,.06); display: block; }
.adm-shot-link:hover .adm-shot-thumb { border-color: #0071e3; }
.adm-ops { display: flex; gap: 6px; flex-wrap: wrap; }
.adm-ops .btn { border-radius: 980px; min-height: 30px; font-size: 12px; }
.adm-ops .btn i { font-size: 10px; margin-right: 3px; }
.adm-ops .adm-del { color: #dc2626 !important; border-color: #f5c6c6 !important; }

/* 录取管理：手机端表格转卡片（td data-label） */
@media (max-width: 767px) {
    .adm-table-wrap { overflow: visible !important; }
    table.adm-table { min-width: 0 !important; }
    table.adm-table thead { display: none; }
    table.adm-table, table.adm-table tbody, table.adm-table tr, table.adm-table td { display: block; width: 100% !important; box-sizing: border-box; }
    table.adm-table tbody tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04); padding: 2px 14px; margin-bottom: 10px;
    }
    table.adm-table td {
        display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
        padding: 9px 0 !important; border-bottom: 1px dashed #f0f2f6; text-align: right;
    }
    table.adm-table td:last-child { border-bottom: none; }
    table.adm-table td::before {
        content: attr(data-label); font-size: 12px; color: #86868b;
        flex-shrink: 0; text-align: left; font-weight: 500;
    }
    table.adm-table .col-name strong { font-size: 15px; }
    table.adm-table .adm-xk-cell { max-width: none; }
    table.adm-table .adm-ops { justify-content: flex-end; width: 100%; }
    table.adm-table .adm-ops .btn { min-height: 36px; padding: 6px 16px; font-size: 13px; }
    table.adm-table tr.adm-empty td { display: block; text-align: center; padding: 24px 0 !important; }
    table.adm-table tr.adm-empty td::before { display: none; }
    .adm-shot-thumb { width: 72px; height: 50px; }
    .adm-form-grid > .form-group { flex: 1 1 100%; }
    .adm-form-grid .form-control { min-height: 42px; font-size: 16px; }
    .adm-xk-rows .xk-row { flex-wrap: wrap; }
    .adm-xk-rows .xk-row .form-control { min-height: 40px; }
    .adm-xk-rows .xk-row .form-control:nth-child(1) { flex: 1 1 100%; }
    .adm-foot .btn { flex: 1; min-height: 42px; font-size: 14px; }
    .adm-upload-row .btn { min-height: 40px; }
    .adm-search-wrap { max-width: none; }
}

/* ═══ 成绩分析 ═══ */

/* 考试选择 */
.sa-exam-form select.form-control { min-height: 38px; border-radius: 10px; border: 1px solid #e5e7eb; background: #fff; font-size: 13px; padding: 6px 10px; color: #1d1d1f; }

/* 分布条（Apple 细圆条） */
.sa-bars { padding: 6px 16px 14px; }
.sa-bar { margin-bottom: 10px; }
.sa-bar:last-child { margin-bottom: 0; }
.sa-bar-head { display: flex; align-items: center; justify-content: space-between; font-size: 12px; color: #86868b; margin-bottom: 4px; }
.sa-bar-head b { color: #1d1d1f; font-weight: 700; }
.sa-bar-track { height: 10px; background: #f0f2f6; border-radius: 5px; overflow: hidden; }
.sa-bar-fill { height: 100%; border-radius: 5px; min-width: 2px; transition: width .4s; }
.sa-fill-blue   { background: linear-gradient(90deg, #0071e3, #4da3ff); }
.sa-fill-green  { background: linear-gradient(90deg, #34c759, #30d158); }
.sa-fill-red    { background: linear-gradient(90deg, #ff3b30, #ff6961); }
.sa-fill-orange { background: linear-gradient(90deg, #ff9500, #ffb340); }

/* 排名表 */
.sa-rank { font-weight: 700; }
.sa-rank-badge { display: inline-flex; align-items: center; justify-content: center; width: 26px; height: 26px; border-radius: 50%; color: #fff; font-size: 12px; font-weight: 700; }
.sa-rank-1 { background: linear-gradient(135deg, #f59e0b, #fbbf24); }
.sa-rank-2 { background: linear-gradient(135deg, #9ca3af, #cbd5e1); }
.sa-rank-3 { background: linear-gradient(135deg, #cd7f32, #d8a15a); }
.sa-delta { display: inline-flex; align-items: center; gap: 3px; font-size: 12px; font-weight: 700; border-radius: 980px; padding: 2px 9px; white-space: nowrap; }
.sa-delta i { font-size: 9px; }
.sa-delta-up   { background: #e8f7ee; color: #16a34a; }
.sa-delta-down { background: #fdecec; color: #dc2626; }
.sa-delta-flat { background: #f5f5f7; color: #8b8b93; }
.sa-trend-btn { border-radius: 980px !important; }
.sa-trend-btn i { font-size: 10px; margin-right: 3px; }

/* 成绩分析：手机端表格转卡片 */
@media (max-width: 767px) {
    .sa-table-wrap { overflow: visible !important; }
    table.sa-table { min-width: 0 !important; }
    table.sa-table thead { display: none; }
    table.sa-table, table.sa-table tbody, table.sa-table tr, table.sa-table td { display: block; width: 100% !important; box-sizing: border-box; }
    table.sa-table tbody tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04); padding: 2px 14px; margin-bottom: 10px;
    }
    table.sa-table td {
        display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap;
        padding: 9px 0 !important; border-bottom: 1px dashed #f0f2f6; text-align: right;
    }
    table.sa-table td:last-child { border-bottom: none; }
    table.sa-table td::before {
        content: attr(data-label); font-size: 12px; color: #86868b;
        flex-shrink: 0; text-align: left; font-weight: 500;
    }
    table.sa-table .sa-trend-btn { min-height: 36px; padding: 6px 16px; }
    table.sa-table tr.sa-empty td { display: block; text-align: center; padding: 24px 0 !important; }
    table.sa-table tr.sa-empty td::before { display: none; }
    .sa-exam-form select.form-control { min-height: 42px; font-size: 15px; }
}

/* ═══ 课表总览 ═══ */

/* 工具栏（flex-wrap，X5 安全） */
.vw-toolbar { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 8px; align-items: flex-end; }
.vw-toolbar .form-group { margin-bottom: 0; }
.vw-label { font-size: 12px; color: #86868b; font-weight: 500; }
.vw-select { min-height: 38px; border-radius: 10px !important; border: 1px solid #e5e7eb !important; background: #fff !important; font-size: 13px !important; padding: 6px 10px !important; color: #1d1d1f; }
.vw-info { font-size: 13px; color: #86868b; margin-bottom: 12px; }

/* 视图切换：iOS 分段控件 */
.vw-seg { display: inline-flex; gap: 2px; background: #f2f2f7; border: 1px solid #eef1f5; border-radius: 10px; padding: 2px; }
.vw-seg-btn { border: none; border-radius: 8px; background: transparent; color: #4b5563; font-size: 13px; padding: 6px 14px; min-height: 32px; white-space: nowrap; }
.vw-seg-btn.on { background: #fff; color: #0071e3; font-weight: 600; box-shadow: 0 1px 3px rgba(0,0,0,.08); }
.vw-seg-btn:active { opacity: .7; }

/* 课时统计折叠面板 */
.vw-stats-panel { border: 1px solid #eef1f5; border-radius: 14px; background: #fff; margin-bottom: 12px; overflow: hidden; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.vw-stats-head { padding: 12px 16px; background: #f8fafc; cursor: pointer; display: flex; align-items: center; justify-content: space-between; }
.vw-stats-head strong { font-size: 14px; font-weight: 600; color: #1d1d1f; }
.vw-stats-arrow { color: #8a94a6; font-size: 12px; }
.vw-month-title { font-size: 13px; color: #86868b; }
.vw-hol-btn { background: #eef4ff; color: #0071e3; font-weight: 600; border-radius: 980px; min-height: 32px; }

/* 课表网格：表头吸顶 + 今日高亮 + 课程块圆角 */
.cal-block { border-radius: 8px !important; padding: 4px 7px !important; box-shadow: 0 1px 3px rgba(0,0,0,.05) !important; }
.cal-block:active { box-shadow: 0 2px 6px rgba(0,0,0,.12); }
.cal-head-row { position: sticky; top: 0; z-index: 20; }
.cal-head-today { background: #eef7ff !important; }
.cal-period-label { background: #fafbfc; }
.vw-cls-card {
    border: 1px solid #eef1f5; border-radius: 14px; overflow-x: auto; overflow-y: hidden;
    -webkit-overflow-scrolling: touch; background: #fff; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.vw-cls-card > div[style*="grid-template-columns"] { min-width: 640px; }
.vw-month-grid { border: 1px solid #eef1f5; border-radius: 14px; overflow: hidden; background: #fff; box-shadow: 0 1px 6px rgba(0,0,0,.04); }

/* 课表总览：手机端 */
@media (max-width: 767px) {
    .vw-toolbar { align-items: stretch; }
    .vw-toolbar .form-group { flex: 1 1 46%; margin-bottom: 8px; }
    .vw-toolbar .form-group select { width: 100%; min-height: 40px; font-size: 15px; }
    .vw-seg { margin-left: 0 !important; flex: 1 1 100%; }
    .vw-seg-btn { flex: 1; min-height: 38px; font-size: 14px; }
    .vw-subrow .form-group { flex: 1 1 100%; }
    .vw-hol-btn { min-height: 38px; }
    .vw-stats-head { padding: 12px 14px; }
}

/* ══════════════════════════════════════════════════════════════════
   ═══ 学员管理三页 Apple 风重设计（入学登记 / 离校申请 / 招生查重）═══
   ═══ 追加于 style.css 末尾 · 不改动既有规则 · 手机端规则包在 @media ═══
   ══════════════════════════════════════════════════════════════════ */

/* ── 一、入学登记 enroll.html（前缀 en-） ───────────────── */

/* 录入方式 Tab：iOS 分段控件 */
.en-tabs {
    display: flex; gap: 2px; margin-bottom: 14px;
    background: #f2f2f7; border-radius: 12px; padding: 3px;
    width: fit-content;
}
.en-tab {
    border-radius: 980px !important;
    font-size: 13px !important; font-weight: 600;
    padding: 7px 18px !important; min-height: 34px;
    transition: background-color .15s, color .15s;
}
#tabSingleBtn[style*="background:var(--primary)"], #tabSingleBtn[style*="background: var(--primary)"],
#tabBatchBtn[style*="background:var(--primary)"], #tabBatchBtn[style*="background: var(--primary)"] { box-shadow: 0 1px 3px rgba(0,0,0,.15); }

/* 区块小标题（蓝色竖条） */
.en-sec-title {
    display: flex; align-items: center; gap: 7px;
    font-size: 13px !important; font-weight: 700 !important;
    color: #1d1d1f !important; margin-bottom: 10px !important;
    letter-spacing: -.1px;
}
.en-sec-title::before {
    content: ""; width: 3px; height: 14px; border-radius: 2px;
    background: #0071e3; flex: none;
}

/* 更多信息折叠链接 + 箭头 */
.en-more-link { font-weight: 500; }
#moreArrow, #pendingArrow, #activeArrow { display: inline-block !important; transition: transform .2s; }
#moreArrow::after {
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    content: "\f054"; font-size: 11px; color: #0071e3; margin-left: 2px;
}
#pendingArrow::after, #activeArrow::after {
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    content: "\f078"; font-size: 10px; margin-left: 2px;
}

/* 折叠卡片页头徽章（柔和浅底深字） */
.en-fold-warn, .en-fold-ok {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 5px 14px; border-radius: 980px;
    font-size: 13px !important; font-weight: 600 !important; letter-spacing: -.1px;
}
.en-fold-warn { background: #fff4e5; color: #b45309 !important; }
.en-fold-ok   { background: #e8f7ee; color: #16a34a !important; }

/* 表单：大输入框 + 清晰标签 + 聚焦蓝光 */
#singleForm .form-control, #batchForm .form-control {
    min-height: 40px !important; border-radius: 10px;
    font-size: 14px !important; padding: 9px 14px !important;
    background: #f7f8fa; border: 1px solid transparent;
    box-sizing: border-box;
}
#singleForm .form-control:focus, #batchForm .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
#singleForm .form-group label, #batchForm .form-group label {
    font-size: 12.5px; font-weight: 600; color: #6e6e73; margin-bottom: 6px;
}
#singleForm input[type=checkbox], #batchForm input[type=checkbox] { accent-color: #0071e3; width: 16px; height: 16px; }
#quickMode { width: 17px !important; height: 17px !important; }

/* 快速建档面板 */
#quickSection {
    background: #f5f9ff !important;
    border: 1px solid #cfe2ff !important;
    border-radius: 14px !important; padding: 14px !important;
}
#quickSection #quickRoomLabel {
    background: #fff !important; border: 1px solid #e3e6ea !important;
    cursor: pointer;
}

/* 提交按钮（胶囊） */
#singleForm button[type=submit] {
    border-radius: 980px !important; min-height: 40px;
    padding: 10px 28px !important; font-size: 14px !important;
    background: #0071e3 !important; border-color: #0071e3 !important;
    box-shadow: 0 2px 8px rgba(0,113,227,.25);
}
.en-submit-hint { font-size: 12px !important; color: #86868b !important; }
#batchForm button[type=submit] {
    border-radius: 980px !important; min-height: 40px; padding: 9px 24px !important;
}

/* 列表徽章柔和化（试学/培训类型/流程状态） */
#pendingFold td span[style*="border-radius"],
#activeFold td span[style*="border-radius"] {
    border-radius: 8px !important;
    padding: 2px 9px !important;
    font-size: 11px !important; font-weight: 600;
}

/* 表格操作按钮 */
#pendingFold .btn-xs, #activeFold .btn-xs {
    border-radius: 980px !important; min-height: 30px;
    padding: 5px 14px !important; font-size: 12px !important;
}

/* 在册学员搜索框 */
#activeSearch {
    border-radius: 980px !important;
    min-height: 34px; padding: 5px 14px !important;
    font-size: 13px !important; width: 150px !important;
}

/* 宿舍选择器：房间卡 X5 加固（flex-wrap 容器 → inline-block 子项） */
#dormPickerBody div[style*="flex-wrap"] { display: block; font-size: 0; }
#dormPickerBody div[style*="flex-wrap"] > div {
    display: inline-block !important; vertical-align: top;
    margin: 0 6px 8px 0 !important; font-size: 13px;
    box-sizing: border-box;
}

/* ── 二、离校申请 depart.html（前缀 dp-） ───────────────── */

/* 退费流程条：白卡化 + 柔和胶囊步骤 */
.dp-flow {
    display: flex !important; align-items: center; gap: 6px; flex-wrap: wrap;
    background: #fff !important; border: 1px solid #eef1f5 !important;
    border-radius: 14px !important; box-shadow: 0 1px 6px rgba(0,0,0,.04);
    padding: 10px 14px !important; margin-bottom: 12px !important;
}
.dp-flow-label { font-size: 12px !important; color: #6e6e73 !important; font-weight: 600; }
.dp-flow-step {
    border-radius: 980px !important;
    padding: 5px 12px !important; font-size: 12px !important; font-weight: 600;
    line-height: 1.5; white-space: nowrap;
}
.dp-flow-arrow { color: #c7c7cc !important; font-size: 12px !important; font-weight: 600; }

/* 离校申请表单 */
#departForm .form-control {
    min-height: 40px !important; border-radius: 10px;
    font-size: 14px !important; padding: 9px 14px !important;
    background: #f7f8fa; border: 1px solid transparent; box-sizing: border-box;
}
#departForm .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
#departForm .form-group label { font-size: 12.5px; font-weight: 600; color: #6e6e73; margin-bottom: 6px; }
#departForm textarea.form-control { min-height: 72px !important; }
#departForm button[type=submit] {
    border-radius: 980px !important; min-height: 42px;
    padding: 10px 28px !important; font-size: 14px !important;
    background: #0071e3 !important; border-color: #0071e3 !important;
    box-shadow: 0 2px 8px rgba(0,113,227,.25);
}

/* 学员搜索下拉 */
#stuSearch { border-radius: 12px !important; }
#stuList {
    border: 1px solid #eef1f5 !important;
    border-radius: 12px !important;
    box-shadow: 0 12px 32px rgba(0,0,0,.14) !important;
    overflow: hidden;
}
#stuList div { padding: 10px 14px !important; border-bottom: 1px solid #f0f2f6 !important; }
#stuList div:active { background: #f0f6ff !important; }
#stuList div:last-child { border-bottom: none !important; }

/* 离校记录表：状态徽章柔和胶囊 + 操作按钮 */
#dpTable td strong { color: #1d1d1f; }
#dpTable .badge {
    border-radius: 980px !important;
    padding: 3px 12px !important; font-size: 11px !important; font-weight: 600;
    line-height: 1.5;
}
#dpTable .btn-xs, #dpTable a.btn-xs {
    border-radius: 980px !important; min-height: 30px;
    padding: 5px 12px !important; font-size: 12px !important;
}

/* 退费/明细/宿管检查弹窗：flex 布局 + 头尾固定 */
#refundModal .modal-box, #detailModal .modal-box, #dormModal .modal-box {
    border-radius: 18px; max-height: 90vh;
    display: flex !important; flex-direction: column !important; overflow: hidden;
}
#refundModal .modal-box > div:first-child,
#detailModal .modal-box > div:first-child,
#dormModal .modal-box > div:first-child { flex: none; }
#refundModal .modal-box > div:nth-child(2) {
    flex: 1; min-height: 0; overflow-y: auto;
    max-height: none !important;
}
#refundModal .modal-box > div:last-child { flex: none; }
#detailModal #detailBody { flex: 1; min-height: 0; overflow-y: auto; }
#dormModal .modal-box form { flex: 1; min-height: 0; overflow-y: auto; }
#refundModal .modal-box .btn, #dormModal .modal-box .btn {
    border-radius: 980px !important; min-height: 40px; padding: 8px 22px !important;
}

/* 退费预览明细表 */
#refundPreviewBody table { font-size: 13px; }
#refundTotal { letter-spacing: -.5px; }

/* ── 三、招生查重 check.html（前缀 ck-） ───────────────── */

/* 查重搜索条 */
.ck-search { display: flex; gap: 8px; }
.ck-search .form-control {
    flex: 1; min-height: 44px; border-radius: 12px;
    font-size: 15px !important; padding: 10px 16px !important;
    background: #f7f8fa; border: 1px solid transparent; box-sizing: border-box;
}
.ck-search .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
.ck-search .btn {
    border-radius: 980px !important; min-height: 44px;
    padding: 10px 22px !important; font-size: 14px !important; white-space: nowrap;
}
.ck-result-info { font-size: 13px !important; color: #6e6e73 !important; }

/* 查重/录入表格 */
.ck-table td strong { color: #1d1d1f; }
.ck-table td[data-label="电话"] { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; letter-spacing: .2px; }
.ck-table .btn-xs { border-radius: 980px !important; min-height: 30px; padding: 5px 14px !important; }

/* 需协助柔和徽章 */
.ck-assist {
    display: inline-block; background: #fff4e5; color: #d97706;
    padding: 2px 10px; border-radius: 980px;
    font-size: 11px; font-weight: 600; line-height: 1.5;
}

/* 空结果状态 */
.ck-empty {
    background: #fafbfc; border: 1px dashed #e5e7eb;
    border-radius: 14px; padding: 30px 16px !important;
}
.ck-empty-ic::before {
    font-family: "Font Awesome 5 Free"; font-weight: 900;
    content: "\f002"; font-size: 34px; color: #c7c7cc;
}

/* 录入接触学员表单 */
#recruitForm .form-control {
    min-height: 40px !important; border-radius: 10px;
    font-size: 14px !important; padding: 9px 14px !important;
    background: #f7f8fa; border: 1px solid transparent; box-sizing: border-box;
}
#recruitForm .form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
#recruitForm .form-group label { font-size: 12.5px; font-weight: 600; color: #6e6e73; margin-bottom: 6px; }
#recruitForm input[type=checkbox] { accent-color: #0071e3; width: 16px; height: 16px; }
#recruitForm input[type=file].form-control { padding: 6px 10px !important; }
#recruitForm .btn { border-radius: 980px !important; min-height: 40px; padding: 9px 24px !important; }

/* 批量导入（页头内嵌） */
.ck-import-form input[type=file] {
    max-width: 150px; min-height: 30px; padding: 4px 10px;
    border-radius: 980px; font-size: 12px;
}
.ck-import-form .btn { border-radius: 980px !important; min-height: 30px; }

/* ── 四、手机端（≤767px）────────────────────────── */
@media (max-width: 767px) {

    /* 表格操作按钮加大（36px 触控） */
    #pendingFold .btn-xs, #activeFold .btn-xs,
    #dpTable .btn-xs, #dpTable a.btn-xs,
    .ck-table .btn-xs {
        min-height: 36px !important;
        padding: 8px 16px !important;
        font-size: 13px !important;
    }

    /* 录入 Tab 占满整行 */
    .en-tabs { width: 100% !important; }
    .en-tab { flex: 1; padding: 8px 10px !important; }

    /* 表单字段单列（block 布局，X5 稳定） */
    #singleForm .form-row, #batchForm .form-row,
    #batchForm form .form-row, #quickSection .form-row,
    #recruitForm, #departForm {
        display: block !important;
    }
    #singleForm .form-row .form-group, #batchForm .form-row .form-group,
    #quickSection .form-row .form-group,
    #recruitForm .form-group, #departForm .form-group {
        width: 100% !important; min-width: 100% !important;
        flex: none !important; margin-bottom: 12px !important;
    }

    /* 提交按钮全宽 */
    #singleForm button[type=submit], #batchForm button[type=submit] {
        width: 100%; min-height: 44px;
    }
    #singleForm .en-submit-row { display: block !important; }
    #singleForm .en-submit-row .en-submit-hint { display: block; margin-top: 8px; }
    #departForm button[type=submit] { width: 100%; min-height: 44px; }
    #departForm .form-group:last-child label { display: none; }
    #recruitForm .form-group:last-child { display: flex !important; gap: 8px; }
    #recruitForm .form-group:last-child .btn { flex: 1; min-height: 42px; }

    /* 在册学员搜索框全宽 */
    #activeSearch { width: 100% !important; min-height: 38px; }

    /* 批量导入（页头内嵌）窄屏收纳 */
    .ck-import-form input[type=file] { max-width: 110px; min-height: 34px; }

    /* 弹窗全屏化（入学宿舍选择 + 离校三弹窗） */
    #dormPickerModal.modal-overlay, #refundModal.modal-overlay,
    #detailModal.modal-overlay, #dormModal.modal-overlay {
        padding: 0 !important; align-items: stretch !important;
    }
    #dormPickerModal .modal-box,
    #refundModal .modal-box,
    #detailModal .modal-box,
    #dormModal .modal-box {
        height: 100% !important; max-height: 100% !important;
        width: 100% !important; border-radius: 0 !important;
    }
    #refundPreviewBody { padding: 12px 16px !important; }

    /* 流程条步骤换行更宽松 */
    .dp-flow { gap: 6px; padding: 12px 14px !important; }
    .dp-flow-step { white-space: normal; }
}

/* ═══ iOS 风格开关（考试课量排课） ═══ */
.yd-switch {
    width: 51px; height: 31px; border-radius: 16px;
    background: #e9e9ea;
    position: relative; display: inline-block;
    transition: background .2s; cursor: pointer;
    flex-shrink: 0;
}
.yd-switch::after {
    content: ''; position: absolute; top: 2px; left: 2px;
    width: 27px; height: 27px; border-radius: 50%;
    background: #fff;
    box-shadow: 0 1px 3px rgba(0,0,0,.25);
    transition: transform .2s;
}
.yd-switch.on { background: #34c759; }
.yd-switch.on::after { transform: translateX(20px); }
.yd-switch:active::after { width: 31px; }
@media (max-width: 767px) {
    #examHoursRow input[type=number] { font-size: 16px; }
}


/* ═══════════════════════════════════════════════════════════════
   ═ 学员总览(overview) / 报名表(apply) / 报名完成(apply_done) Apple 风重设计
   ═ 仅追加覆盖，不删除上方任何已有规则
   ═══════════════════════════════════════════════════════════════ */

/* ── 全局主色统一 #0071e3（白卡规范下的 Apple 蓝）── */
.btn-primary { background: #0071e3; }
.btn-primary:hover { background: #0077ed; box-shadow: 0 2px 8px rgba(0,113,227,.3); }
.btn-outline:hover { border-color: #0071e3; color: #0071e3; }
.form-control:focus { background: #fff; border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.15); }

/* ── 学员总览：顶部统计模块白卡化 ──
   弃深渐变卡；容器 block + 子项 inline-block（防 X5 grid/flex 倒序沉底）*/
#dashModuleGrid { display: block; font-size: 0; }
#dashModuleGrid .dash-top-item {
    display: inline-block; vertical-align: top;
    width: calc(50% - 10px); margin: 4px 5px; box-sizing: border-box;
    font-size: 14px; font-family: var(--font);
}
@media (min-width: 768px) { #dashModuleGrid .dash-top-item { width: calc(25% - 10px); } }
.ov-stat {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; min-height: 88px; box-sizing: border-box;
    box-shadow: 0 1px 6px rgba(0,0,0,.04); position: relative;
}
/* 后端下发的 dc-* 模块色：仅作用于图标底/色（0,2,0 覆盖旧渐变规则） */
.ov-stat.dc-blue, .ov-stat.dc-green, .ov-stat.dc-orange,
.ov-stat.dc-purple, .ov-stat.dc-red, .ov-stat.dc-teal {
    background: #fff; border: 1px solid #eef1f5;
    border-radius: 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.ov-ic {
    width: 30px; height: 30px; border-radius: 9px;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 13px;
}
.ov-stat.dc-blue .ov-ic { background: #eef4ff; color: #0071e3; }
.ov-stat.dc-green .ov-ic { background: #e8f7ee; color: #34c759; }
.ov-stat.dc-orange .ov-ic { background: #fff4e6; color: #ff9500; }
.ov-stat.dc-purple .ov-ic { background: #f3eefe; color: #af52de; }
.ov-stat.dc-red .ov-ic { background: #fdecec; color: #ff3b30; }
.ov-stat.dc-teal .ov-ic { background: #e6f7f7; color: #30b0c7; }
.ov-val {
    font-size: 26px; font-weight: 700; letter-spacing: -0.5px;
    color: #1d1d1f; line-height: 1.15; margin-top: 10px;
    font-variant-numeric: tabular-nums; white-space: nowrap;
}
.ov-label { font-size: 12px; color: #86868b; margin-top: 2px; }
/* 柱状图/进度条去渐变 → 纯色 Apple 蓝 */
.bar { background: #0071e3 !important; }
#dashBigCards .pbar-fill { background: #0071e3 !important; }
/* 编辑态：白卡上的拖拽柄/缩放手柄 + 虚线框 */
#dashModuleGrid .dash-grip { color: #c7c7cc; }
.dash-resize { color: #0071e3; }
body.dash-editing .ov-stat { outline: 1.5px dashed rgba(0,113,227,.55); outline-offset: 2px; }
/* 拖拽目标高亮：白卡保持白底、文字深色 */
#dashModuleGrid .dash-target { background: #fff !important; }
#dashModuleGrid .dash-target .ov-ic,
#dashModuleGrid .dash-target .ov-val,
#dashModuleGrid .dash-target .ov-label { color: #1d1d1f !important; }

/* ── 学员总览：内容卡手机端 block 堆叠（防 X5 flex 乱序）── */
@media (max-width: 767px) {
    #dashBigCards { display: block !important; }
    #dashBigCards > .dash-big-card { width: 100% !important; margin-bottom: 12px; }
    #dashBigCards table td { font-size: 12px; }
    #dashBigCards td .pbar { width: auto !important; flex: 1; min-width: 56px; margin-left: 8px; }
}
/* 行内小标签：手机卡片化时隐藏（td:before 已展示 data-label） */
.ov-rowlabel { display: none; }
@media (min-width: 768px) { .ov-rowlabel { display: inline; } }

/* ═══ 报名表 / 报名完成页（免登录分享页 · 独立挂接本样式表）═══ */
.ap-page {
    font-family: var(--font);
    background: #f5f5f7 !important;
    -webkit-font-smoothing: antialiased;
}
.ap-page .wrap { max-width: 520px; margin: 0 auto; }
.ap-page .logo { text-align: center; margin-bottom: 20px; }
.ap-page .badge {
    width: 56px; height: 56px; border-radius: 16px;
    background: linear-gradient(135deg, #0071e3, #0a84ff);
    display: flex; align-items: center; justify-content: center;
    font-size: 26px; color: #fff; margin: 0 auto 10px;
    box-shadow: 0 8px 24px rgba(0,113,227,.3);
}
.ap-page .logo h1 { font-size: 20px; font-weight: 700; color: #1d1d1f; }
.ap-page .logo p { font-size: 12px; color: #86868b; margin-top: 4px; }
.ap-page .card {
    background: #fff; border: 1px solid #eef1f5;
    border-radius: 16px; padding: 20px; margin-bottom: 16px;
    box-shadow: 0 4px 20px rgba(0,0,0,.06);
}
.ap-page .card h3 { font-size: 15px; font-weight: 700; color: #1d1d1f; margin-bottom: 14px; }
.ap-page .form-group { margin-bottom: 14px; }
.ap-page .form-group label {
    display: block; font-size: 13px; font-weight: 500;
    color: #515154; margin-bottom: 6px;
}
/* 大输入框：min-height 40px + 聚焦蓝光 */
.ap-page .form-group input,
.ap-page .form-group select {
    width: 100%; min-height: 40px; padding: 10px 12px;
    border: 1px solid #d2d2d7; border-radius: 12px;
    font-size: 14px; color: #1d1d1f; background: #fff;
    outline: none; -webkit-appearance: none; appearance: none;
    box-sizing: border-box;
}
.ap-page .form-group input:focus,
.ap-page .form-group select:focus {
    border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.15);
}
.ap-page select {
    background-image: url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238a93a3' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat; background-position: right 12px center; padding-right: 32px;
}
/* 两列行：桌面 flex 一行，手机 block 单列（禁 grid——X5 乱序） */
.ap-page .row { display: flex; gap: 10px; }
.ap-page .row .form-group { flex: 1; min-width: 0; }
@media (max-width: 767px) {
    .ap-page .row { display: block; }
    .ap-page .row .form-group { margin-bottom: 14px; }
}
/* 报名类型分段（正式报名） */
.ap-page .mode-tabs { display: flex; gap: 8px; margin-bottom: 14px; }
.ap-page .mode-tab {
    flex: 1; padding: 12px; border: 2px solid #0071e3;
    border-radius: 12px; text-align: center;
    background: #eef4ff; cursor: default;
}
.ap-page .mode-tab .t { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.ap-page .mode-tab .d { font-size: 11px; color: #86868b; margin-top: 2px; }
/* 提交按钮：全宽胶囊 */
.ap-page .btn {
    display: block; width: 100%; min-height: 48px;
    padding: 13px; border: none; border-radius: 980px;
    background: linear-gradient(135deg, #0071e3, #0a84ff);
    color: #fff; font-size: 16px; font-weight: 600;
    cursor: pointer; box-shadow: 0 4px 12px rgba(0,113,227,.25);
    text-decoration: none; text-align: center; line-height: 1.4;
    box-sizing: border-box; -webkit-appearance: none;
}
.ap-page .btn:active { transform: scale(.98); }
.ap-page .footer { text-align: center; font-size: 11px; color: #86868b; margin-top: 16px; }
/* 提示条（覆盖页面内联未定义 var 导致的透明背景） */
.ap-page .ap-flash {
    background: #e8f7ee !important; color: #16a34a !important;
    border-radius: 12px; padding: 12px 14px; font-size: 13px;
    margin-bottom: 14px; border: 1px solid #b7e3c5;
}
.ap-page .ap-flash-danger { background: #fdecec !important; color: #dc2626 !important; border-color: #f5c6c6; }
/* 报名完成页：居中白卡 + 绿色对勾 + 全宽胶囊按钮 */
.ap-page.ap-done .card {
    max-width: 380px; width: 100%; padding: 40px 32px;
    text-align: center; border-radius: 20px;
}
.ap-page.ap-done .icon {
    width: 72px; height: 72px; border-radius: 50%;
    background: #e8f7ee; color: #34c759;
    display: flex; align-items: center; justify-content: center;
    font-size: 32px; margin: 0 auto 16px;
}
.ap-page.ap-done h1 { font-size: 20px; font-weight: 700; color: #1d1d1f; margin-bottom: 8px; }
.ap-page.ap-done p { font-size: 13px; color: #86868b; line-height: 1.7; }
.ap-page.ap-done a.btn { display: block; margin: 20px auto 0; }

/* ── 手机端基础：按钮 min-height 36px、输入框 16px（防 iOS 聚焦缩放）── */
@media (max-width: 767px) {
    .main .btn { min-height: 36px; }
    .ap-page input, .ap-page select { font-size: 16px !important; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 排课管理 settings.html + 离校单 depart_slip.html — Apple 风统一层
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── 排课管理：主色收敛为 Apple 蓝（仅 .sd-page 作用域，不影响他页） ── */
.sd-page .btn-primary { background: #0071e3; }
.sd-page .btn-primary:hover { background: #0a66c9; box-shadow: 0 2px 8px rgba(0,113,227,.3); }
.sd-page .btn-success { background: #34c759; }
.sd-page .btn-success:hover { background: #28a745; box-shadow: 0 2px 8px rgba(52,199,89,.3); }

/* ── 卡片：白底 + 圆角 16px ── */
.sd-card { border-radius: 16px; border: 1px solid #eef1f5; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.sd-card-head { background: #fff; border-bottom: 1px solid #f0f2f6; padding: 14px 16px; }
.sd-card-head .sd-head-title {
    display: inline-flex; align-items: center; gap: 8px;
    font-weight: 600; font-size: 14px; color: #1d1d1f;
}
.sd-card-head .sd-head-title > i { color: #0071e3; font-size: 13px; }
.sd-card-body { padding: 14px 16px; }

/* ── 步骤徽标（圆形蓝点 / 灰色齿轮） ── */
.sd-badge {
    width: 22px; height: 22px; border-radius: 50%;
    background: #0071e3; color: #fff;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; font-weight: 700; flex-shrink: 0;
    box-shadow: 0 1px 4px rgba(0,113,227,.35);
}
.sd-badge-gray { background: #8e99ab; box-shadow: none; font-size: 11px; }

/* ── 表单行（flex 换行，X5 稳定） ── */
.sd-form-row { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.sd-fg { margin-bottom: 0; }
.sd-fg label { font-size: 12px; color: #86868b; }
.sd-inline { display: flex; gap: 6px; }
.sd-sel { min-height: 36px; }

/* ── 提示条 ── */
.sd-hint {
    display: flex; gap: 6px; align-items: flex-start;
    font-size: 12px; color: #86868b; line-height: 1.6; margin-top: 10px;
    background: #f7f9fc; border: 1px solid #eef1f5; border-radius: 10px;
    padding: 8px 10px;
}
.sd-hint i { color: #0071e3; margin-top: 2px; flex-shrink: 0; }

/* ── 班级配置卡网格（桌面 grid；手机 block 防 X5 乱序） ── */
@media (min-width: 768px) {
    .sd-cfg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; }
}
.cls-cfg-card {
    border-radius: 14px !important;
    box-shadow: 0 1px 4px rgba(0,0,0,.03);
    transition: box-shadow .2s, transform .2s, border-color .2s;
}
.cls-cfg-card:hover {
    box-shadow: 0 6px 18px rgba(0,0,0,.08);
    transform: translateY(-1px); border-color: #d8e2ef !important;
}
.cls-cfg-card select.form-control {
    border-radius: 8px; background: #f2f4f7; font-size: 13px;
    border: 1px solid transparent;
    padding-top: 7px !important; padding-bottom: 7px !important;
}
.cls-cfg-card select.form-control:focus {
    background: #fff; border-color: #0071e3;
    box-shadow: 0 0 0 3px rgba(0,113,227,.12);
}

/* ── 一键生成：分段胶囊按钮 ── */
.sd-seg { display: inline-flex; gap: 8px; margin-bottom: 12px; flex-wrap: wrap; }
.sd-seg-btn {
    border-radius: 999px !important;
    border: 1px solid #e8ebf1; background: #fff;
    padding: 6px 18px !important; font-size: 13px; font-weight: 500;
    transition: all .15s;
}
.sd-seg-btn:active { transform: scale(.97); }

/* ── 高级设置：胶囊 Tab ── */
.adv-tabs { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 14px; }
.adv-tab {
    border-radius: 999px !important;
    border: 1px solid #e8ebf1; background: #fff;
    padding: 6px 16px !important; font-size: 13px;
    transition: all .15s;
}
.adv-tab:active { transform: scale(.97); }
.sd-adv-head { user-select: none; }
.sd-adv-arrow {
    width: 24px; height: 24px; border-radius: 50%;
    background: #f2f4f7; color: #86868b;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 12px; flex-shrink: 0;
}

/* ── 高级设置：分区标题 / 表格容器 / 日历 ── */
.sd-sec-title {
    display: flex; align-items: center; gap: 6px;
    font-size: 13px; font-weight: 600; color: #1d1d1f; margin-bottom: 10px;
}
.sd-sec-title i { color: #0071e3; font-size: 12px; }
.sd-table { border: 1px solid #eef1f5; border-radius: 12px; overflow: hidden; margin-top: 10px; background: #fff; }
.sd-table table { margin: 0; }
.sd-cal { border: 1px solid #eef1f5; border-radius: 14px; overflow: hidden; background: #fff; box-shadow: 0 1px 4px rgba(0,0,0,.03); }
.sd-cal-head {
    display: flex; align-items: center; justify-content: space-between;
    padding: 8px 12px; background: #f8fafc; border-bottom: 1px solid #eef1f5;
}
.sd-cal-foot {
    padding: 6px 12px; font-size: 11px; color: #8a94a6;
    background: #fbfbfd; border-top: 1px solid #f0f2f7;
}

/* ── 老师课量网格（桌面 grid；手机 block） ── */
@media (min-width: 768px) {
    .sd-tl-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 8px; }
}

/* ── 排课管理：手机适配 ── */
@media (max-width: 767px) {
    .sd-page .btn { min-height: 36px; }
    .sd-card-head { padding: 12px 14px; }
    .sd-card-body { padding: 12px 14px; }
    .sd-form-row > .form-group { width: 100%; min-width: 100%; flex: none; }
    .sd-form-row > .form-group .sd-inline { width: 100%; }
    .sd-form-row > .form-group .sd-inline select { flex: 1; min-width: 0; }
    #cfgCards, .sd-tl-grid { display: block !important; }
    #cfgCards .cls-cfg-card { width: 100%; margin-bottom: 12px; }
    .sd-seg { width: 100%; }
    .sd-seg-btn { flex: 1; }
    .adv-tabs { gap: 6px; }
    .adv-tab { flex: 1; min-width: 68px; }
    .sd-hint { margin-top: 8px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 离校单 depart_slip.html — Apple 风打印页
   ═══════════════════════════════════════════════════════════════ */
.slip-page { max-width: 720px; margin: 0 auto; }
.slip-card {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,.04); overflow: hidden; margin-top: 4px;
}
.slip-head {
    background: linear-gradient(180deg, #f7f9fc, #fff);
    text-align: center; padding: 26px 20px 18px;
    border-bottom: 1px solid #f0f2f6; position: relative;
}
.slip-head::before {
    content: ''; position: absolute; top: 0; left: 0; right: 0; height: 4px;
    background: linear-gradient(90deg, #0071e3, #5ac8fa);
}
.slip-brand {
    width: 44px; height: 44px; border-radius: 12px;
    background: #eef4ff; color: #0071e3; font-size: 18px;
    display: inline-flex; align-items: center; justify-content: center;
    margin-bottom: 10px;
}
.slip-title { font-size: 21px; font-weight: 800; letter-spacing: 4px; color: #1d1d1f; margin: 0 0 10px; }
.slip-meta { display: flex; gap: 8px; justify-content: center; flex-wrap: wrap; }
.slip-pill {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 11px; color: #86868b; background: #f2f4f7;
    border: 1px solid #e8ebf1; border-radius: 999px; padding: 3px 10px;
}
.slip-pill i { color: #0071e3; font-size: 10px; }
.slip-body { padding: 18px 40px 26px; }
.slip-table { width: 100%; border-collapse: collapse; font-size: 14px; }
.slip-table tr:nth-child(even) { background: none; }
.slip-table td { padding: 9px 10px; vertical-align: top; border-bottom: 1px solid #f0f2f6; line-height: 1.7; }
.slip-table tr:last-child td { border-bottom: none; }
.slip-table .slip-lbl { width: 92px; color: #86868b; font-size: 13px; white-space: nowrap; }
.slip-name { font-size: 15px; }
.slip-badge {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 12px; font-weight: 600; border-radius: 999px; padding: 3px 10px;
    white-space: nowrap;
}
.slip-badge-danger { background: #ffebee; color: #dc2626; }
.slip-badge-ok { background: #ecfdf3; color: #16a34a; }
.slip-sub { font-size: 11px; color: #86868b; margin-left: 4px; }
.slip-note {
    display: flex; gap: 8px; align-items: center;
    margin-top: 16px; padding: 8px 12px;
    background: #f7f9fc; border: 1px solid #eef1f5; border-radius: 10px;
    font-size: 12px; color: #86868b;
}
.slip-note i { color: #0071e3; }
.slip-signs { display: flex; gap: 20px; margin-top: 34px; padding: 0 8px; }
.slip-sign { flex: 1; text-align: center; min-width: 0; }
.ss-head {
    height: 54px; display: flex; align-items: flex-end; justify-content: center; gap: 5px;
    font-size: 13px; color: #1d1d1f; font-weight: 600;
}
.ss-head i { color: #86868b; font-size: 12px; flex-shrink: 0; }
.ss-head span { color: #86868b; font-weight: 400; font-size: 12px; }
.ss-line { border-top: 1.5px solid #8a93a3; margin: 0 4px; }
.ss-role { font-size: 12px; color: #86868b; margin-top: 6px; }

/* ── 离校单：手机适配（表格转卡片：隐藏标签列 + data-label 成对显示） ── */
@media (max-width: 767px) {
    .slip-page .btn { min-height: 36px; }
    .slip-body { padding: 12px 14px 20px; }
    .slip-head { padding: 20px 14px 14px; }
    .slip-title { font-size: 18px; letter-spacing: 2px; }
    .slip-table td { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 8px 2px; }
    .slip-table .slip-lbl { display: none; }
    .slip-table td[colspan]::before {
        content: attr(data-label);
        font-weight: 500; color: #86868b; font-size: 12px; flex-shrink: 0; margin-right: 10px;
    }
    .slip-signs { flex-direction: column; gap: 22px; }
    .slip-note { align-items: flex-start; }
}


/* ════════════════════════════════════════════════════════════
   ═ 学员收费页（fee/manage.html）· Apple 风重设计（追加层）
   ═ 统计卡白卡 / 搜索筛选 / 列表手机卡片化 / 表格精致化
   ═ 4 步收费表单结构未动；本块全部为新增规则，勿删已有
   ════════════════════════════════════════════════════════════ */

/* ── ① 统计卡单位后缀（人/条） ── */
.fee-unit {
    font-style: normal; font-size: 13px; font-weight: 500;
    color: #86868b; margin-left: 4px; letter-spacing: 0;
}

/* ── ② 收费记录搜索框：复用 .rs-s-input/.rs-s-clear 圆角大框 ── */
.fee-search-wrap { width: 180px; flex: none; }
.fee-search-wrap .rs-s-input {
    min-height: 36px; font-size: 13px;
    padding: 6px 34px 6px 12px !important;
}
@media (max-width: 767px) {
    .fee-search-wrap { width: 100%; }
    .fee-search-wrap .rs-s-input { min-height: 44px; font-size: 16px; }
}

/* ── ③ 班级标签（浅蓝胶囊，手机卡片 + 表格通用） ── */
.fee-cls-tag {
    display: inline-block;
    background: #eef4ff; color: #0071e3;
    font-size: 11px; font-weight: 600;
    padding: 1px 10px; border-radius: 980px;
    line-height: 1.6; white-space: nowrap;
}

/* ── ④ 状态徽章（柔和） ── */
.fee-badge {
    display: inline-block;
    font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 980px;
    line-height: 1.5; white-space: nowrap;
}
.fee-badge-blue { background: #eef4ff; color: #0071e3; }
.fee-badge-gray { background: #f5f5f5; color: #8b8b93; }

/* ── ⑤ 收费表格：表头浅灰 + 行 hover + 金额深色大字号 ── */
.fee-table { border-collapse: separate !important; border-spacing: 0 !important; }
.fee-table thead th {
    background: #f8fafc !important; color: #6b7280 !important;
    font-weight: 600 !important; font-size: 12px !important;
    padding: 12px 14px !important;
    border-bottom: 1px solid #eef1f5 !important;
    white-space: nowrap; text-transform: none; letter-spacing: 0;
}
.fee-table thead th:first-child { border-radius: 12px 0 0 0; }
.fee-table thead th:last-child  { border-radius: 0 12px 0 0; }
.fee-table tbody td {
    padding: 12px 14px !important;
    border-bottom: 1px solid #f4f5f7 !important;
    vertical-align: middle;
}
.fee-table tbody tr { transition: background .12s; }
.fee-table tbody tr:nth-child(even) { background: transparent; }
.fee-table tbody tr:hover { background: #f5faff !important; }
.fee-table tbody tr:last-child td { border-bottom: none !important; }
/* 表头吸顶（桌面） */
@media (min-width: 768px) {
    .fee-table thead th { position: sticky; top: 0; z-index: 5; }
}
/* 金额列：深色大字号（欠费红 / 已收绿 仅语义色） */
#feeTable thead th { text-align: right; }
#feeTable thead th:first-child, #feeTable thead th:last-child { text-align: left; }
#feeTable td[data-label="姓名"] { font-weight: 600; }
#feeTable td[data-label="姓名"] .editable-name {
    font-size: 14px; font-weight: 700; color: #1d1d1f;
    cursor: text; letter-spacing: -0.2px;
}
#feeTable td[data-label="学费"],
#feeTable td[data-label="伙食住宿"],
#feeTable td[data-label="其他"] { color: #4b5563; }
#feeTable td[data-label="合计"] strong { font-size: 15px; color: #1d1d1f; letter-spacing: -0.2px; }
#feeTable td[data-label="已收"] { color: #16a34a; font-weight: 600; }
#feeTable td[data-label="欠费"] { font-size: 14px; font-weight: 600; }
#feeTable td[data-label="优惠"] { font-size: 12px; }

/* ── ⑥ 手机端：表格转卡片（td data-label + td:before，inline-block/flex 防 X5 乱序） ── */
@media (max-width: 767px) {
    .fee-table-wrap { overflow: visible !important; }
    .fee-table tbody { display: block; padding: 10px 12px; }
    .fee-table tbody tr {
        display: block; background: #fff !important;
        border: 1px solid #eef1f5; border-radius: 16px;
        box-shadow: 0 1px 6px rgba(0,0,0,.04);
        padding: 12px 14px; margin-bottom: 10px;
    }
    .fee-table tbody tr:last-child { border-bottom: 1px solid #eef1f5; }
    .fee-table tbody tr:nth-child(even) { background: #fff !important; }
    .fee-table tbody td {
        display: flex !important; justify-content: space-between; align-items: center;
        padding: 6px 0 !important; border-bottom: none !important;
        font-size: 14px !important; min-height: 30px; text-align: right !important;
    }
    .fee-table tbody td:before {
        content: attr(data-label);
        font-size: 12px !important; color: #86868b; font-weight: 500;
        margin-right: auto; text-align: left; flex-shrink: 0;
    }
    .fee-table tbody td[data-label=""]:before,
    .fee-table tbody td.nolabel:before { content: none; }
    /* 姓名：17px 粗 + 班级标签 + 详情（左对齐折行） */
    .fee-table tbody td[data-label="姓名"] {
        justify-content: flex-start; flex-wrap: wrap; gap: 4px 8px;
    }
    .fee-table tbody td[data-label="姓名"]:before { display: none; }
    .fee-table tbody td[data-label="姓名"] .editable-name,
    .fee-table tbody td[data-label="姓名"] strong {
        font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.3px;
    }
    .fee-table tbody td[data-label="姓名"] br { display: none; }
    .fee-table tbody td[data-label="姓名"] a {
        font-size: 12px !important; margin-left: 6px;
    }
    /* 欠费：红字大号 + 浅红底（仅真正欠费行） */
    .fee-table tbody td[data-label="欠费"][style*="--danger"] {
        color: #dc2626 !important; font-weight: 800; font-size: 19px !important;
        background: #fef2f2; border-radius: 10px;
        padding: 6px 10px !important; margin-top: 2px;
    }
    .fee-table tbody td[data-label="欠费"]:not([style*="--danger"]) {
        font-size: 16px !important; font-weight: 700;
    }
    .fee-table tbody td[data-label="已收"] { color: #16a34a !important; font-size: 16px !important; }
    /* 操作按钮：胶囊 + min-height 36px */
    .fee-table tbody td.nolabel { justify-content: flex-end; padding-top: 8px !important; }
    .fee-table tbody td .btn {
        min-height: 36px; border-radius: 980px !important;
        padding: 6px 18px !important; font-size: 13px !important; margin: 0 !important;
    }
    /* 批量欠费名单：勾选框行 */
    .fee-table tbody td[data-label=""] { justify-content: flex-start; }
    .fee-table tbody td[data-label=""] input { width: 20px; height: 20px; }
}

/* 课量区灰化（开关关闭时：灰色+不可操作） */
.tl-disabled { opacity: .45; filter: grayscale(1); pointer-events: none; user-select: none; transition: opacity .25s; }

/* ═══ 我的课表（my.html）Apple 风 ═══ */
.my-toolbar {
    display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap;
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    padding: 14px 16px; margin-bottom: 14px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.my-fg { margin-bottom: 0; }
.my-fg label { font-size: 12px; color: #86868b; margin-bottom: 4px; display: block; }
.my-select {
    min-height: 38px; border-radius: 10px !important; border: 1px solid #e5e7eb !important;
    font-size: 13px !important; padding: 4px 10px !important; background: #fff !important;
}
.my-select:focus { box-shadow: 0 0 0 3px rgba(0,113,227,0.15) !important; border-color: #0071e3 !important; }
.my-week-wrap { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; padding: 12px; overflow-x: auto; box-shadow: 0 1px 6px rgba(0,0,0,0.04); }
.my-week { width: 100%; border-collapse: separate; border-spacing: 6px; min-width: 720px; }
.my-week thead th { font-size: 12px; color: #6b7280; font-weight: 600; padding: 8px 4px; text-align: center; white-space: nowrap; }
.my-dow { display: block; }
.my-day-head { background: #f8fafc; border-radius: 8px 8px 0 0; }
.my-today-head { background: #eef4ff !important; border-radius: 8px 8px 0 0; }
.my-today-pill {
    display: inline-block; background: #0071e3; color: #fff;
    font-size: 10px; font-weight: 700; border-radius: 980px; padding: 1px 8px; margin-left: 4px;
}
.my-day-cell {
    background: #fafbfc; border-radius: 0 0 8px 8px; vertical-align: top;
    padding: 6px 4px !important; min-height: 90px;
}
.my-today-cell { background: #f5f9ff !important; }
.my-weekend { background: #f6f6f7 !important; }
.my-block {
    display: block; background: #fff; border: 1px solid #eef1f5;
    border-left: 3px solid #0071e3; border-radius: 8px;
    padding: 6px 8px; margin-bottom: 6px; font-size: 11px;
}
.my-block[data-p="下午"] { border-left-color: #34c759; }
.my-block[data-p="晚上"] { border-left-color: #6366f1; }
.my-block.my-mine { background: #eef4ff; border-color: #cfe0ff; }
.my-block-top { display: flex; align-items: center; justify-content: space-between; margin-bottom: 3px; }
.my-period { font-size: 10px; color: #0071e3; font-weight: 700; }
.my-block.my-mine .my-period { color: #0369a1; }
.my-mine-tag {
    background: #0071e3; color: #fff; font-size: 9px; font-weight: 700;
    border-radius: 980px; padding: 1px 7px;
}
.my-cls { font-size: 12px; font-weight: 600; color: #1d1d1f; }
.my-tch { font-size: 10px; color: #86868b; margin-top: 2px; }
.my-empty { font-size: 11px; color: #c0c4cc; text-align: center; padding: 12px 0; }
.my-empty-week {
    background: #fff; border: 1.5px dashed #d8dce3; border-radius: 14px;
    padding: 32px; text-align: center; color: #9ca3af; font-size: 13px; margin-bottom: 14px;
}
.my-info { font-size: 12px; color: #86868b; margin: 8px 0 4px; }
@media (max-width: 767px) {
    .my-week-wrap { padding: 8px; }
    .my-toolbar { padding: 12px; }
}

/* ═══ 学员名单（students.html）折叠卡 + 表格 ═══ */
.yd-details {
    background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
    margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.yd-summary {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 16px; cursor: pointer; font-size: 14px; font-weight: 600;
    list-style: none; color: #1d1d1f;
}
.yd-summary::-webkit-details-marker { display: none; }
.yd-s-ic {
    width: 30px; height: 30px; border-radius: 9px;
    background: #eef4ff; color: #0071e3; font-size: 13px;
    display: inline-flex; align-items: center; justify-content: center;
}
.yd-s-arrow { margin-left: auto; color: #9ca3af; font-size: 12px; transition: transform .2s; }
.yd-details[open] .yd-s-arrow { transform: rotate(180deg); }
.yd-body { padding: 4px 16px 16px; border-top: 1px solid #f4f5f7; padding-top: 12px; }
.yd-body .form-group { margin-bottom: 8px; }
.yd-body input, .yd-body select { min-height: 40px; }
.yd-body button[type=submit] { min-height: 40px; border-radius: 10px !important; }
.st-del-btn {
    background: #fef2f2 !important; color: #dc2626 !important;
    border: 1px solid #fecaca !important; border-radius: 980px !important;
    padding: 6px 14px !important; font-size: 12px !important; font-weight: 600 !important;
    min-height: 32px;
}
.st-del-btn:active { transform: scale(.96); }

/* ═══════════════════════════════════════════════════════════
   优惠审批 / 合作方收费 / 合作方打款 · Apple 风重设计（追加）
   ═══════════════════════════════════════════════════════════ */
.da-page, .pf-page, .pp-page { font-variant-numeric: tabular-nums; }

/* ── 通用：金额右对齐 / 弱化文字 / 胶囊按钮 ── */
.da-page .t-right, .pf-page .t-right, .pp-page .t-right { text-align: right; }
.col-muted { font-size: 12px; color: #86868b; }
.btn-capsule { border-radius: 980px !important; font-weight: 600; white-space: nowrap; }

/* ── 优惠审批 · 流程条 ── */
.da-flow {
    display: flex; align-items: center; flex-wrap: wrap; gap: 6px 10px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 12px 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.da-flow-step { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; color: #6e6e73; white-space: nowrap; }
.da-flow-step .dfs-ic {
    width: 26px; height: 26px; border-radius: 50%; background: #f5f5f7; color: #86868b;
    display: inline-flex; align-items: center; justify-content: center; font-size: 11px;
}
.da-flow-step.on { color: #1d1d1f; font-weight: 600; }
.da-flow-step.on .dfs-ic { background: #eef4ff; color: #0071e3; }
.da-flow-step .dfs-ic.ok { background: #e8f7ee; color: #16a34a; }
.da-flow-step .dfs-ic.no { background: #fdecec; color: #dc2626; }
.da-flow-arrow { color: #c7c7cc; font-size: 10px; }
.da-flow-alt { font-size: 10px; color: #aeaeb2; }
@media (max-width: 767px) {
    .da-flow { padding: 10px 12px; gap: 6px 8px; }
    .da-flow-step { font-size: 11px; }
}

/* ── 优惠审批 · 状态徽章（柔和） ── */
.da-badge { display: inline-block; font-size: 10px; font-weight: 600; padding: 2px 8px; border-radius: 980px; margin-left: 6px; vertical-align: 2px; }
.da-badge-warn { background: #fff3e0; color: #e65100; }
.da-badge-ok { background: #e8f7ee; color: #16a34a; }
.da-badge-no { background: #fdecec; color: #dc2626; }

/* ── 优惠审批 · 待审批卡（橙色强调） ── */
.da-pending-card { border: 1px solid #ffe0b2; box-shadow: 0 1px 8px rgba(255,149,0,.10); }
.da-pending-card .card-header { background: #fffaf3; color: #b45309; font-size: 14px; }
.da-pending-dot { width: 8px; height: 8px; border-radius: 50%; background: #ff9500; display: inline-block; margin-right: 6px; }

/* ── 优惠审批 · 表格美化 ── */
.da-av {
    width: 32px; height: 32px; border-radius: 50%; background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-weight: 700; font-size: 14px; flex-shrink: 0;
}
.da-name-cell { display: flex; align-items: center; gap: 8px; }
.da-name-w { display: inline-flex; align-items: center; gap: 4px; }
.da-name { font-size: 15px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.2px; }
.da-money-down { color: #dc2626; font-weight: 700; font-size: 15px; }
.da-money-ok { color: #16a34a; font-weight: 600; }
.da-reason { font-size: 12px; color: #6e6e73; }
.da-time { font-size: 12px; color: #86868b; white-space: nowrap; }
.da-actions { display: inline-flex; gap: 6px; }
.da-actions form { display: inline; margin: 0; }
.da-ok-btn { background: #34c759 !important; }
.da-ok-btn:hover { background: #28a745 !important; box-shadow: 0 2px 8px rgba(52,199,89,.3); }
.da-no-btn { background: #fff !important; color: #dc2626 !important; border: 1px solid #fecaca !important; }
.da-no-btn:hover { background: #fdecec !important; box-shadow: none !important; }

/* ── 优惠审批 · 已通过/已驳回 双栏 ── */
.da-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
@media (max-width: 767px) { .da-cols { grid-template-columns: 1fr; } }
.da-sub-card .card-header { background: #fff; font-size: 14px; }
.da-sub-ok .card-header { color: #16a34a; }
.da-sub-no .card-header { color: #dc2626; }
@media (min-width: 768px) {
    .da-page .table-wrap table { min-width: 900px; }
}

/* ── 合作方收费 · 合作方卡片头 ── */
.pf-partner-head { cursor: pointer; user-select: none; background: #fff; }
.pf-partner-head:hover { background: #fafbfc; }
.pc-arrow { transition: transform .25s; font-size: 12px; color: #c7c7cc; margin-right: 8px; }
.pf-head-left { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.pf-pname { font-size: 16px; color: #1d1d1f; letter-spacing: -0.2px; }
.pf-count-pill { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 980px; white-space: nowrap; }
.pf-head-actions { display: inline-flex; gap: 6px; }

/* ── 合作方收费 · 状态徽章（柔和） ── */
.pf-badge { display: inline-block; font-size: 11px; font-weight: 600; padding: 2px 9px; border-radius: 980px; }
.pf-badge-ok { background: #e8f7ee; color: #16a34a; }
.pf-badge-warn { background: #fff3e0; color: #e65100; }
.pf-badge-no { background: #fdecec; color: #dc2626; }

/* ── 合作方收费 · 表格美化 ── */
.pf-sname { font-size: 14px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.2px; }
.pf-amount { font-size: 15px; font-weight: 700; color: #1d1d1f; }
.pf-feeitems { font-size: 12px; color: #6e6e73; }
.pf-feeitems.dim { color: #c7c7cc; }

/* ── 合作方收费 · 底部批量条 ── */
.pf-batch-bar {
    padding: 8px 14px; border-top: 1px solid #f0f2f6; display: flex; gap: 8px;
    align-items: center; flex-wrap: wrap; font-size: 12px; background: #fafbfc;
    border-radius: 0 0 14px 14px;
}
.pf-batch-bar .btn { margin: 0; }
@media (min-width: 768px) {
    .pf-page .table-wrap table { min-width: 920px; }
}

/* ── 合作方收费 · 弹窗苹果化 ── */
.pf-modal .modal { border-radius: 16px !important; }
.pf-modal .modal-header {
    background: #fff !important; border-bottom: 1px solid #f0f2f6 !important;
    border-radius: 16px 16px 0 0 !important; padding: 14px 16px !important;
    font-size: 15px !important;
}
.pf-modal .modal-body { padding: 16px !important; }
.pf-modal .modal-body .form-control { min-height: 38px; }
.pf-modal .modal-body .btn { min-height: 36px; }

/* ── 合作方打款 · 汇总条（浅蓝） ── */
.pp-sum-bar {
    display: flex; gap: 8px; align-items: center; flex-wrap: wrap;
    padding: 10px 14px; background: #f5f9ff; border-bottom: 1px solid #e8eef8;
}
.pp-sum-bar label { font-size: 12px; font-weight: 600; color: #6e6e73; }
.pp-sum-bar input { min-height: 36px; border-radius: 8px; }
.pp-sum-label { font-size: 12px; color: #6e6e73; }
.pp-pay-amount { font-size: 16px; font-weight: 700; color: #16a34a; }
.pp-benefit { font-size: 14px; font-weight: 700; color: #0071e3; }

/* ── 合作方打款 · 分配表 ── */
.pp-bal { color: #dc2626; font-weight: 700; }
.pp-after { font-weight: 700; color: #1d1d1f; }
.pp-sname { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.pp-alloc-input {
    width: 100px; font-size: 14px !important; text-align: right; border-radius: 8px !important;
    border: 1px solid #d9dee4 !important; background: #fff !important; padding: 6px 8px !important;
    display: inline-block;
}
.pp-alloc-input:focus { border-color: #0071e3 !important; box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important; }

/* ── 合作方打款 · 底部操作条 ── */
.pp-foot-bar {
    display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 8px;
    padding: 12px 14px; border-top: 1px solid #f0f2f6;
}
.pp-foot-bar .btn { margin: 0; }
.pp-select-card .form-group label { font-size: 12px; font-weight: 600; color: #6e6e73; }
.pp-select-card .form-control { min-height: 40px; }

/* ── 三页通用：移动端表格转独立卡片（覆盖全局列表式，block 布局防 X5 乱序） ── */
@media (max-width: 767px) {
    .da-page .table-wrap table tr,
    .pf-page .table-wrap table tr,
    .pp-page .table-wrap table tr {
        display: block; background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04); margin-bottom: 10px; padding: 12px 14px;
    }
    .da-page .table-wrap table td,
    .pf-page .table-wrap table td,
    .pp-page .table-wrap table td { font-size: 13px; padding: 5px 0; }
    .da-page .t-right, .pf-page .t-right, .pp-page .t-right { text-align: left; }
    .da-name-cell { justify-content: flex-start; }
    /* 触控规范：按钮 min-height 36px、输入框 16px */
    .da-page .btn, .pf-page .btn, .pp-page .btn { min-height: 36px; font-size: 14px; }
    .da-page .btn-xs, .pf-page .btn-xs, .pp-page .btn-xs { min-height: 32px; font-size: 12px; }
    .da-page .form-control, .pf-page .form-control, .pp-page .form-control { font-size: 16px; }
    .pp-alloc-input { width: 100%; font-size: 16px !important; min-height: 36px; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 财务三页（收入/支出/报表）Apple 风统一层 v2
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── 今日收支摘要：渐变横幅 → 白卡（浅蓝底蓝图标 + 深色数字） ── */
.inc-today {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    color: #1d1d1f;
}
.exp-today { background: #fff; }
.it-l { display: flex; align-items: center; }
.it-ic {
    width: 40px; height: 40px; border-radius: 12px; flex-shrink: 0;
    background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 16px; margin-right: 10px;
}
.it-wrap { display: block; min-width: 0; }
.it-label { font-size: 12px; color: #86868b; font-weight: 600; }
.it-val { font-size: 26px; color: #1d1d1f; }
.it-cnt { font-size: 15px; color: #0071e3; }
.it-date { font-size: 12px; color: #9ca3af; }
@media (max-width: 767px) {
    .it-ic { width: 36px; height: 36px; border-radius: 10px; font-size: 15px; }
    .it-val { font-size: 23px; }
}

/* ── 收入统计卡：图标升 28px / 补 .is-sub 环比（此前无样式） ── */
.inc-stat .is-ic { width: 28px; height: 28px; border-radius: 8px; font-size: 12px; }
.is-sub { font-size: 11px; color: #86868b; margin-top: 6px; font-weight: 500; }
.is-up { color: #16a34a; font-weight: 600; }
.is-down { color: #dc2626; font-weight: 600; }
.is-net { font-style: normal; font-size: 10px; color: #dc2626; font-weight: 600; margin-left: 4px; }

/* ── 待支付报销统计卡（expense 页 pp-stat 此前无样式） ── */
.pp-stat {
    display: flex; align-items: center; justify-content: space-between;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04); cursor: pointer;
}
.pp-stat:active { background: #f5f8ff; }
.pps-label { display: block; font-size: 11px; color: #86868b; margin-bottom: 4px; font-weight: 500; }
.pps-val { font-size: 24px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
.pps-cnt { display: block; font-size: 13px; font-weight: 600; color: #d97706; text-align: right; }
.pps-tip { font-size: 11px; color: #9ca3af; }

/* ── 表格精致化：表头浅灰圆角 + 行 hover 蓝 tint + 轻斑马纹 ── */
.fin-t { border-collapse: separate; border-spacing: 0; }
.fin-t thead th {
    background: #f8fafc; color: #6e6e73;
    font-size: 12px; font-weight: 600; text-transform: none; letter-spacing: 0;
    padding: 10px 12px; border-bottom: 1px solid #eceef1;
}
.fin-t thead th:first-child { border-radius: 12px 0 0 0; }
.fin-t thead th:last-child { border-radius: 0 12px 0 0; }
.fin-t tbody tr:nth-child(even) { background: #fafbfc; }
.fin-t tbody tr:hover { background: #f5f9ff; }
.fin-t tbody td { border-bottom: 1px solid #f2f4f6; padding: 9px 12px; }
.fin-t tbody tr:last-child td { border-bottom: none; }
.fin-t tbody tr:last-child td:first-child { border-radius: 0 0 0 12px; }
.fin-t tbody tr:last-child td:last-child { border-radius: 0 0 12px 0; }

/* ── 筛选区统一：胶囊搜索框 + 记录数弱化 ── */
.fin-search {
    width: 170px;
    border-radius: 980px !important;
    background: #f5f7fa !important;
    border: 1px solid transparent !important;
    box-shadow: none !important;
    padding: 7px 14px !important;
    font-size: 13px !important;
    min-height: 34px;
}
.fin-search:focus {
    background: #fff !important; border-color: #0071e3 !important;
    box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important;
}
.fin-note { font-size: 12px; color: #9ca3af; white-space: nowrap; }
@media (max-width: 767px) { .fin-note { display: none; } }

/* ── 支出页：Tab 胶囊（仅形状，JS 控制背景/文字色，勿加 !important） ── */
#expTabBtn, #refTabBtn { border-radius: 980px !important; padding: 7px 18px !important; font-weight: 500; }
@media (max-width: 767px) {
    #expTabBtn, #refTabBtn { min-height: 36px; }
}

/* ── 支出页：导出工具条 ── */
.fin-exlabel { font-size: 12px; color: #86868b; }
.fin-date {
    border: 1px solid #e3e6ea !important; border-radius: 8px !important;
    padding: 5px 8px !important; font-size: 12px !important;
    background: #fff !important; min-height: 30px;
}
.fin-exbtn {
    border-radius: 980px !important;
    background: #fff !important; border: 1px solid #0071e3 !important; color: #0071e3 !important;
    padding: 5px 16px !important; font-size: 12px !important;
}
@media (max-width: 767px) {
    .fin-search { width: 140px; }
    .fin-date { font-size: 16px !important; min-height: 36px !important; }
    .fin-exbtn { min-height: 36px; }
}

/* ── 状态徽章（柔和浅底深字）+ 支出科目徽章 ── */
.fin-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 10px; border-radius: 980px; line-height: 1.5;
    white-space: nowrap; vertical-align: 2px; margin-left: 6px;
}
.fin-badge-orange { background: #fff4e5; color: #d97706; }
.fin-badge-blue   { background: #eef4ff; color: #0071e3; }
.fin-badge-green  { background: #e8f7ee; color: #16a34a; }
.fin-badge-red    { background: #fdecec; color: #dc2626; }
.badge.badge-danger { background: #fdecec; color: #dc2626; border-radius: 980px; }

/* 表格操作按钮触控高度 */
.fin-ops-btn { min-height: 30px; }
@media (max-width: 767px) { .fin-ops-btn { min-height: 36px !important; } }

/* ── 报表页：全年盈利预测白卡（flex 强排，禁 grid） ── */
.profit-grid { display: flex; flex-wrap: wrap; gap: 10px; }
.pf-stat {
    flex: 1 1 150px; min-width: 150px; max-width: 240px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    box-sizing: border-box;
}
.pf-s-ic {
    width: 30px; height: 30px; border-radius: 8px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 13px; margin-bottom: 8px;
}
.pf-s-blue   { background: #eef4ff; color: #0071e3; }
.pf-s-orange { background: #fff4e5; color: #d97706; }
.pf-s-amber  { background: #fef3c7; color: #b45309; }
.pf-s-green  { background: #e8f7ee; color: #16a34a; }
.pf-s-red    { background: #fdecec; color: #dc2626; }
.pf-label { font-size: 11px; color: #86868b; margin-bottom: 4px; font-weight: 500; }
.pf-val { font-size: 20px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
.pf-sub { font-size: 11px; color: #16a34a; margin-top: 4px; font-weight: 600; }
.pf-sub-red { color: #dc2626; }
.pf-tips { margin-top: 12px; }
.pf-tips > div { margin-bottom: 6px; }
@media (max-width: 767px) {
    .pf-stat { flex: 1 1 44%; min-width: 44%; max-width: none; }
    .pf-val { font-size: 18px; }
}

/* ── 报表页：本月分析面板 grid → flex（X5 不乱序） ── */
.rp-grid { display: flex; flex-wrap: wrap; gap: 12px; margin-bottom: 16px; }
.rp-card { width: calc(50% - 6px); box-sizing: border-box; margin: 0; }
@media (max-width: 767px) { .rp-card { width: 100%; } }

/* ── 报表页：JS 动态汇总白卡（总收入/总支出/结余） ── */
.fin-sum-grid { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 14px; }
.fin-sum-card {
    flex: 1 1 140px; min-width: 140px; max-width: 260px;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px; box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    box-sizing: border-box;
}
.fsc-head { display: flex; align-items: center; gap: 6px; font-size: 11px; color: #86868b; font-weight: 600; margin-bottom: 6px; }
.fsc-ic {
    width: 22px; height: 22px; border-radius: 7px;
    display: inline-flex; align-items: center; justify-content: center;
    font-size: 10px; flex-shrink: 0;
}
.fsc-ic-green { background: #e8f7ee; color: #16a34a; }
.fsc-ic-red   { background: #fdecec; color: #dc2626; }
.fsc-ic-blue  { background: #eef4ff; color: #0071e3; }
.fsc-val { font-size: 20px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; }
@media (max-width: 767px) {
    .fin-sum-card { flex: 1 1 44%; min-width: 44%; max-width: none; }
}

/* ── 报表页：支出分类/支出结构 two-col grid → flex（仅 #reportContent 作用域） ── */
#reportContent .two-col { display: flex; flex-wrap: wrap; gap: 12px; }
#reportContent .two-col > .card { flex: 1 1 340px; min-width: 280px; box-sizing: border-box; margin: 0; }
@media (max-width: 767px) {
    #reportContent .two-col > .card { flex: 1 1 100%; min-width: 100%; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 收费管理四页 — Apple 风统一层（annual_stats / ar_monthly / batch_charge / fee/settings）
   （追加于文件末尾，勿删已有规则；本块全部为新增/补缺）
   ═══════════════════════════════════════════════════════════════ */

/* ── ① 统计卡：5 张布局（annual_stats 年度汇总；inline-block 防 X5 乱序） ── */
.exp-stats-5 .exp-stat { width: calc(50% - 10px); }
@media (min-width: 768px) {
    .exp-stats-5 .exp-stat { width: calc(20% - 10px); }
}
.es-val small { font-size: 12px; font-weight: 600; color: #86868b; margin-left: 2px; letter-spacing: 0; }

/* ── ② annual_stats：表单/搜索控件白卡化 ── */
.as-card .form-control {
    min-height: 38px; border-radius: 10px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 14px;
}
.as-card .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.as-year-form .form-control {
    min-height: 34px; border-radius: 9px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 12px;
}
.as-search {
    width: 170px; min-height: 36px; border-radius: 10px !important;
    border: 1px solid #e5e7eb !important; background: #fff !important;
    font-size: 13px !important; padding: 6px 12px !important;
}
.as-search:focus { border-color: #0071e3 !important; box-shadow: 0 0 0 3px rgba(0,113,227,.12) !important; }

/* ── ③ 回收率胶囊（annual_stats 按合作方汇总） ── */
.fee-rate-pill { display: inline-block; padding: 2px 10px; border-radius: 980px; font-size: 12px; font-weight: 600; }
.r-ok   { background: #e8f7ee; color: #16a34a; }
.r-warn { background: #fff4e5; color: #d97706; }
.r-bad  { background: #fdecec; color: #dc2626; }

/* ── ④ annual_stats 明细表：序号列手机隐藏 + 桌面最小宽 ── */
@media (max-width: 767px) {
    .col-idx { display: none !important; }
}
@media (min-width: 768px) {
    .as-sum-table { min-width: 720px; }
    #asTable { min-width: 900px; }
}

/* ── ⑤ ar_monthly：宏观统计卡 + 合作方卡片白卡化 ── */
.am-partner-card { border-radius: 16px; box-shadow: 0 1px 8px rgba(0,0,0,.05); }
.am-partner-head {
    background: #fff !important; border-bottom: 1px solid #f0f2f6;
    padding: 13px 16px; border-radius: 16px 16px 0 0;
}
.am-sub   { color: #86868b; font-size: 12px; font-weight: 400; margin-left: 6px; }
.am-total { font-size: 14px; font-weight: 700; color: #dc2626; }
.am-tiles { display: flex; flex-wrap: wrap; gap: 8px; }
.am-tile {
    flex: 1 1 calc(50% - 8px); min-width: 0; box-sizing: border-box;
    background: #fff; border: 1px solid #eef1f5; border-radius: 12px;
    padding: 11px 10px; text-align: center;
}
@media (min-width: 768px) { .am-tile { flex: 1 1 calc(25% - 8px); } }
.am-tl { font-size: 11px; color: #86868b; margin-bottom: 4px; }
.am-tv { font-size: 18px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; }
.am-tv-red    { color: #dc2626; }
.am-tv-green  { color: #16a34a; }
.am-tv-orange { color: #d97706; }
.am-tn  { font-size: 10px; color: #86868b; margin-top: 2px; }
.am-progress { margin-top: 12px; }
.am-p-head { display: flex; justify-content: space-between; font-size: 11px; color: #86868b; margin-bottom: 5px; }
.am-p-track { background: #f0f2f5; border-radius: 6px; height: 8px; overflow: hidden; }
.am-p-fill { background: linear-gradient(90deg, #34c759, #00e676); height: 100%; border-radius: 6px; transition: width .5s; }
.am-empty-ic { font-size: 44px; color: #c9cdd4; margin-bottom: 10px; }

/* ── ⑥ batch_charge：顶部表单工具条（白卡） ── */
.bc-toolbar {
    display: flex; gap: 12px; flex-wrap: wrap; align-items: flex-end;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 14px 16px; margin-bottom: 14px; box-shadow: 0 1px 6px rgba(0,0,0,.04);
}
.bc-toolbar .form-group { margin-bottom: 0; }
.bc-toolbar .form-group label { font-size: 12px; color: #86868b; font-weight: 500; margin-bottom: 5px; display: block; }
.bc-toolbar .form-control {
    min-height: 42px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 15px; padding: 9px 14px;
}
.bc-toolbar .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.bc-toolbar .btn { min-height: 42px; border-radius: 980px; padding: 0 24px; font-size: 14px; }
.bc-count { font-size: 13px; color: #86868b; margin-left: 8px; }

/* ── ⑦ batch_charge：分段式 Tab（浅灰底 + 白色激活胶囊） ── */
.bc-tabs {
    display: flex; gap: 4px; background: #f0f2f5; border-radius: 12px;
    padding: 4px; margin-bottom: 14px; border: none;
}
.bc-tabs .settings-tab {
    flex: 1; border: none !important; background: transparent;
    border-radius: 9px; padding: 10px 0; font-size: 14px; font-weight: 500;
    color: #3a4350; text-align: center; transition: all .15s;
    border-bottom-color: transparent !important;
}
.bc-tabs .settings-tab.active {
    background: #fff; color: #0071e3; font-weight: 600;
    box-shadow: 0 1px 4px rgba(0,0,0,.08);
}

/* ── ⑧ batch_charge：合作方勾选列表（块级堆叠，防 X5 grid 乱序） ── */
.bc-tenant-list { display: block; }
.bc-tenant-list > .card { margin: 0 0 12px; border-radius: 12px; }
.bc-tenant-list > .card:last-child { margin-bottom: 0; }
.bc-tc-head {
    font-size: 13px; padding: 9px 12px;
    background: #fafbfc; border-radius: 12px 12px 0 0;
}
.bc-checkall {
    font-size: 12px; color: #3a4350; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px; min-height: 32px;
}
.bc-cb { width: 19px; height: 19px; accent-color: #0071e3; flex-shrink: 0; }
.bc-checkrow {
    display: flex; align-items: center; gap: 8px; padding: 9px 8px;
    font-size: 14px; cursor: pointer; border-radius: 9px; min-height: 38px;
    transition: background .12s;
}
.bc-checkrow:hover { background: #f5f8ff; }
.bc-checkrow small { color: #86868b; font-size: 12px; }
.bc-tenant-empty { font-size: 12px; color: #86868b; }
.bc-cb-cell { text-align: center; }

/* ── ⑨ fee/settings：设置项大控件化 ── */
.fee-settings .card { border-radius: 16px; }
.fee-settings .card-header {
    background: #fff; border-bottom: 1px solid #f0f2f6; padding: 14px 18px;
}
.fee-settings .form-control {
    min-height: 42px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 15px; padding: 9px 14px;
}
.fee-settings .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); background: #fff; }
.fee-settings .btn { min-height: 36px; border-radius: 980px; }
.fee-settings .btn-xs { min-height: 30px; padding: 3px 14px; font-size: 12px; }
.fs-row {
    display: flex; align-items: center; justify-content: space-between;
    gap: 10px; flex-wrap: wrap; padding: 12px 2px;
    border-bottom: 1px solid #f0f2f6;
}
.fs-row:last-child { border-bottom: none; }
.fs-name { font-size: 14px; color: #1d1d1f; font-weight: 500; flex: 1; min-width: 120px; }
.fs-remark {
    width: 170px !important; min-height: 34px !important;
    font-size: 12px !important; padding: 5px 10px !important; border-radius: 9px !important;
}
.fs-pills { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 8px; }
.fs-pill { display: inline-flex; align-items: center; gap: 4px; padding: 5px 13px; border-radius: 980px; font-size: 13px; font-weight: 500; }

/* ── ⑩ 手机端微调（<768px） ── */
@media (max-width: 767px) {
    .bc-toolbar { padding: 12px; }
    .bc-toolbar .form-control, .fee-settings .form-control, .as-card .form-control { font-size: 16px; }
    .bc-toolbar .btn, .fee-settings .btn { min-height: 40px; }
    .bc-submit { flex: 1 1 100%; }
    .bc-submit .btn { flex: 1; }
    .fs-remark { width: 100% !important; }
    .bc-checkrow { font-size: 15px; }
    .as-search { width: 100%; min-height: 40px; font-size: 16px !important; }
    .bc-cb-cell { justify-content: flex-start !important; }
}

/* 合作方卡片容器（Apple 白卡） */
.pf-partner-card {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04); margin-bottom: 12px; overflow: hidden;
}
.pf-partner-card .pf-partner-head { padding: 14px 16px; cursor: pointer; }
.pf-partner-card .pf-feeitems { border-top: 1px solid #f4f5f7; }

/* ═══════════════════════════════════════════════════════════════════
   ═ 财务六页 Apple 风重设计（2026-08）
   ═ 页面：报销管理 / 部门预算 / 通知中心 / 成本核算(2) / 数据管理 / 微信通知
   ═ 类名前缀：app- 通用表格 · rb- 报销 · bd- 预算 · nt- 通知 · cs- 成本 · dm- 数据 · wx- 微信
   ═ 纯追加规则，不修改/删除任何已有样式
   ═══════════════════════════════════════════════════════════════════ */

/* ── 通用：Apple 精致表格（表头浅灰圆角 + 行 hover + 手机卡片化） ── */
@media (min-width: 768px) {
    .app-table { border-collapse: separate; border-spacing: 0; }
    .app-table thead th {
        background: #f5f6f8; color: #6e6e73; font-size: 11.5px; font-weight: 600;
        letter-spacing: .02em; text-transform: uppercase;
        border-bottom: 1px solid #eef0f3; padding: 11px 12px;
    }
    .app-table thead th:first-child { border-top-left-radius: 12px; }
    .app-table thead th:last-child  { border-top-right-radius: 12px; }
    .app-table tbody tr { transition: background .12s; }
    .app-table tbody tr:hover { background: #f0f6fc; }
    .app-table tbody tr:nth-child(even) { background: #fafbfc; }
    .app-table tbody tr:nth-child(even):hover { background: #f0f6fc; }
    .app-table tbody tr:last-child td { border-bottom: none; }
}
@media (max-width: 767px) {
    .app-table tr {
        display: block; background: #fff; border: 1px solid #eef1f5;
        border-radius: 14px; margin: 0 2px 10px; padding: 12px 14px;
        box-shadow: 0 1px 5px rgba(0,0,0,.04);
    }
    .app-table tr:last-child { margin-bottom: 0; }
    .app-table td { border-bottom: 1px dashed #f0f2f6; }
    .app-table td:last-child { border-bottom: none; }
    .app-table tbody tr.nt-unread,
    .app-table tbody tr.nt-unread:nth-child(even),
    .app-table tbody tr.nt-unread:hover { background: #eef4ff !important; }
}

/* ── 报销状态徽章（柔和胶囊） ── */
.rb-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 3px 10px; border-radius: 980px; white-space: nowrap; line-height: 1.5;
}
.rb-badge-pending  { background: #fff4e5; color: #d97706; }
.rb-badge-dept     { background: #eef4ff; color: #0071e3; }
.rb-badge-approved { background: #eef4ff; color: #0066cc; }
.rb-badge-paid     { background: #e8f7ee; color: #16a34a; }
.rb-badge-rejected { background: #fdecec; color: #dc2626; }
.rb-step { display: inline-block; font-size: 10px; margin-top: 3px; }
.rb-step-blue   { color: #0071e3; }
.rb-step-red    { color: #dc2626; }
.rb-step-green  { color: #16a34a; }
.rb-step-orange { color: #d97706; }
.rb-sub { color: #86868b; font-size: 10px; }

/* ── 报销页：统计卡白卡（可点击筛选，active 由 JS 置蓝） ── */
.rb-stat { box-shadow: 0 1px 6px rgba(0,0,0,.04); transition: transform .1s, box-shadow .15s; }
.rb-stat:active { transform: scale(.97); }
.rb-stat .es-head { font-weight: 500; letter-spacing: 0; line-height: 1.2; }
.rb-stat .es-val { font-size: 26px; }
@media (max-width: 767px) {
    .rb-stat { padding: 12px 8px; }
    .rb-stat .es-head { font-size: 11px; }
    .rb-stat .es-val { font-size: 22px; }
}

/* ── 部门预算：进度条 + 行内编辑输入框 ── */
.bd-bar {
    background: #f0f2f5; border-radius: 6px; height: 8px;
    width: 100px; position: relative; overflow: hidden;
}
.bd-fill { height: 100%; border-radius: 6px; }
.bd-fill-used    { background: #0071e3; }
.bd-fill-pending { background: #ff9f0a; position: absolute; top: 0; opacity: .55; }
.bd-pct { font-size: 10px; color: #86868b; margin-top: 3px; }
.bd-inp {
    min-height: 32px; padding: 3px 8px; font-size: 12px;
    border: 1px solid #e5e7eb; border-radius: 9px; background: #fff;
}
.bd-inp:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); outline: none; }
@media (max-width: 767px) {
    .bd-inp { width: 72px !important; min-height: 38px; font-size: 14px !important; }
    .bd-bar { width: 100%; max-width: 160px; }
}

/* ── 通知中心：类型图标 + 未读行 ── */
.nt-row { transition: background .12s; }
.nt-ic {
    width: 30px; height: 30px; border-radius: 9px;
    display: inline-flex; align-items: center; justify-content: center; font-size: 13px;
}
.nt-ic-orange { background: #fff4e5; color: #d97706; }
.nt-ic-blue   { background: #eef4ff; color: #0071e3; }
.nt-ic-gray   { background: #f2f2f7; color: #8e8e93; }
.nt-unread,
.app-table tbody tr.nt-unread,
.app-table tbody tr.nt-unread:nth-child(even) { background: #eef4ff !important; }
.app-table tbody tr.nt-unread:hover { background: #e2edff !important; }
.nt-unread td { font-weight: 600; }

/* ── 成本核算：筛选区 + 分类明细 + 明细表 ── */
.cost-filter { display: flex; gap: 10px; flex-wrap: wrap; align-items: flex-end; }
.cost-filter .form-group { margin-bottom: 0; }
.cost-filter label { font-size: 12px; color: #86868b; font-weight: 500; margin-bottom: 5px; }
.cost-filter .form-control {
    min-height: 40px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 14px;
}
.cost-filter .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
@media (max-width: 767px) {
    .cost-filter .form-group { flex: 1 1 100%; min-width: 100% !important; }
    .cost-filter .form-control { min-height: 44px; font-size: 16px; }
}
.cb-row {
    display: flex; justify-content: space-between; align-items: center;
    padding: 10px 2px; border-bottom: 1px solid #f0f2f6; font-size: 13px;
}
.cb-row:last-child { border-bottom: none; }
.cb-name { font-weight: 600; color: #1d1d1f; }
.cb-val  { font-weight: 600; }
.cb-pct  { color: #86868b; font-weight: 400; margin-left: 4px; }
.cb-badge {
    display: inline-block; font-size: 11px; font-weight: 600;
    padding: 2px 9px; border-radius: 980px; background: #eef4ff; color: #0071e3;
}
.cs-map { max-width: 220px; min-height: 34px; border-radius: 9px; }
.cs-save { margin-top: 12px; min-height: 40px; }
.cs-tip { background: #fff !important; border-left: 3px solid #0071e3; }
.cs-tip-body { color: #515154; font-size: 13px; line-height: 1.8; }
.cs-tip-title { font-weight: 700; color: #1d1d1f; margin-bottom: 6px; font-size: 14px; }
.cs-tip-title i { color: #0071e3; margin-right: 4px; }
.cs-tip-body strong { color: #1d1d1f; }
@media (max-width: 767px) {
    .cs-map { max-width: 100%; min-height: 44px; font-size: 16px !important; }
}

/* ── 数据管理：统计卡 + 模块勾选分组 + 表单 ── */
.dm-groups { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.dm-group {
    border: 1px solid #eef1f5; border-radius: 12px; padding: 10px 12px;
    background: #fff; min-width: 150px; box-shadow: 0 1px 3px rgba(0,0,0,.03);
}
.dm-group > div:first-child { font-weight: 600; font-size: 12px; color: #1d1d1f; margin-bottom: 5px; }
.dm-group label {
    display: flex; align-items: center; gap: 6px; cursor: pointer;
    padding: 2px 0; font-size: 12px; color: #515154;
}
.dm-group input[type="checkbox"] { width: 17px; height: 17px; accent-color: #0071e3; flex-shrink: 0; }
.dm-label { font-weight: 600; font-size: 13px; margin-bottom: 8px; color: #1d1d1f; }
.dm-label i { color: #0071e3; margin-right: 4px; }
.dm-label-inline { font-size: 12px; color: #515154; }
.dm-sep { font-size: 11px; color: #86868b; }
.dm-toolbar { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.dm-toolbar .form-group { margin-bottom: 0; }
.dm-date {
    min-height: 34px; border-radius: 9px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 12px; padding: 4px 8px;
}
.dm-file {
    max-width: 220px; min-height: 38px; font-size: 13px;
    border: 1px solid #e5e7eb; border-radius: 11px; background: #fff;
    padding: 8px 12px;
}
.dm-import { border-top: 1px solid #f0f2f6; padding-top: 12px; }
@media (max-width: 767px) {
    .dm-group { min-width: 100%; box-sizing: border-box; }
    .dm-group label { font-size: 14px; padding: 6px 0; }
    .dm-group input[type="checkbox"] { width: 20px; height: 20px; }
    .dm-date { min-height: 40px; font-size: 16px !important; flex: 1 1 100%; }
    .dm-file { max-width: 100%; min-height: 42px; font-size: 16px !important; flex: 1 1 100%; }
    .dm-toolbar .btn { min-height: 40px; }
}

/* ── 微信通知：双栏卡片网格（手机端单列 block，防 X5 grid 乱序） ── */
.wx-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
@media (max-width: 767px) {
    .wx-grid { display: block; }
    .wx-grid > .card { margin-bottom: 12px; }
}
.wx-grid .card { margin: 0; }
.wx-grid .form-control {
    min-height: 42px; border-radius: 11px;
    border: 1px solid #e5e7eb; background: #fff; font-size: 15px; padding: 9px 14px;
}
.wx-grid .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); background: #fff; }
.wx-grid .btn { min-height: 36px; border-radius: 980px; }
.pp-item {
    display: flex; align-items: center; gap: 8px;
    padding: 8px 10px; margin: 4px 0;
    background: #f7f8fa; border: 1px solid #f0f2f5; border-radius: 10px;
}
.pp-name  { font-weight: 600; font-size: 13px; min-width: 70px; }
.pp-token { font-size: 12px; color: #86868b; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
@media (max-width: 767px) {
    .wx-grid .form-control { min-height: 44px; font-size: 16px !important; }
    .pp-item { flex-wrap: wrap; }
    .pp-token { min-width: 100%; order: 3; }
}

/* ═══════════════════════════════════════════════════════════
   请假销假模块 · Apple 风重设计（lv- 前缀，仅追加不改旧规则）
   页面：总览/我要请假/请假管理/通知设置/我的请假
   ═══════════════════════════════════════════════════════════ */

/* ── 统计卡：白底 + 深色数字 + 浅蓝图标（复用 .exp-stat 家族，勿彩色渐变） ── */
.lv-page .exp-stats { margin-bottom: 16px; }
.lv-page .exp-stat { border-radius: 16px; padding: 16px; }
.lv-page .es-val { font-size: 26px; font-weight: 700; letter-spacing: -0.5px; color: #1d1d1f; }
.lv-page .es-ic { width: 30px; height: 30px; border-radius: 9px; background: #eef4ff; color: #0071e3; }

/* ── 快捷入口卡 ── */
.lv-page .quick-card { border-radius: 16px; }
.lv-page .qc-emoji { width: 46px; height: 46px; border-radius: 13px; background: #eef4ff; color: #0071e3; font-size: 18px; }

/* ── 卡片与头部 ── */
.lv-page .card { border-radius: 16px; border: 1px solid #eef1f5; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.lv-page .card-header {
    display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 6px;
    font-size: 15px; font-weight: 600; color: #1d1d1f;
    background: #fff; border-bottom: 1px solid #f0f2f6; padding: 14px 18px;
}
.lv-page .card-header i { color: #0071e3; margin-right: 6px; font-size: 14px; }
.lv-note { font-size: 12px; color: #86868b; font-weight: 400; }
.lv-count { background: #f5f5f7; color: #6e6e73; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 980px; }

/* ── 状态徽章：待审批橙 / 已批准绿 / 已驳回红 / 已销假蓝 ── */
.lv-badge {
    display: inline-flex; align-items: center; gap: 4px;
    padding: 3px 12px; border-radius: 980px;
    font-size: 12px; font-weight: 600; white-space: nowrap; flex-shrink: 0;
}
.lv-badge-pending  { background: #fff4e5; color: #d97706; }
.lv-badge-approved { background: #e8f7ee; color: #16a34a; }
.lv-badge-rejected { background: #fdecec; color: #dc2626; }
.lv-badge-returned { background: #eef4ff; color: #0071e3; }
.lv-badge-sms      { background: #fff4e5; color: #d97706; }
.lv-badge-sm { font-size: 11px; padding: 2px 10px; }

/* ── 类型胶囊（请假类型） ── */
.lv-type {
    display: inline-flex; align-items: center;
    padding: 2px 10px; border-radius: 980px;
    background: #f5f5f7; color: #3a3a3c; font-size: 11px; font-weight: 600; white-space: nowrap;
}

/* ── 角色胶囊（通知目标人） ── */
.lv-role { display: inline-flex; align-items: center; padding: 2px 11px; border-radius: 980px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.lv-role-dorm    { background: #fff4e5; color: #d97706; }
.lv-role-admin   { background: #eef4ff; color: #0071e3; }
.lv-role-teacher { background: #e8f7ee; color: #16a34a; }

/* ── 头像（姓名首字） ── */
.lv-av {
    width: 40px; height: 40px; border-radius: 50%; flex-shrink: 0;
    background: #eef4ff; color: #0071e3;
    font-size: 16px; font-weight: 700;
    display: flex; align-items: center; justify-content: center;
}

/* ── 请假条目卡片（学员/教师名大字 + 类型标签 + 时间 + 徽章 + 操作） ── */
.lv-item { padding: 14px 16px; border-bottom: 1px solid #f0f2f6; }
.lv-item:last-child { border-bottom: none; }
.lv-item-top { display: flex; align-items: center; gap: 12px; }
.lv-main { flex: 1; min-width: 0; }
.lv-name {
    font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.2px;
    display: flex; align-items: center; gap: 8px; flex-wrap: wrap;
}
.lv-meta { font-size: 12px; color: #86868b; margin-top: 2px; }
.lv-reason { font-size: 13px; color: #3a3a3c; margin-top: 8px; line-height: 1.5; }
.lv-time { font-size: 12px; color: #86868b; margin-top: 6px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.lv-time i { color: #b0b0b8; width: 14px; text-align: center; }
.lv-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.lv-reject {
    margin-top: 8px; font-size: 12px; color: #dc2626;
    background: #fdf2f2; border-radius: 8px; padding: 6px 10px; line-height: 1.5;
}

/* ── 操作胶囊按钮 ── */
.lv-btn { border-radius: 980px !important; min-height: 36px; padding: 6px 20px !important; font-size: 13px !important; font-weight: 600; }
.lv-page .btn-outline.lv-btn-danger { color: #dc2626; border-color: #f0c4c4; }
.lv-page .btn-outline.lv-btn-danger:active { background: #fdecec; }
.lv-page .btn-xs.lv-xs-btn { border-radius: 980px; min-height: 30px; padding: 4px 14px; font-size: 12px; }

/* ── 动态流（请假动态） ── */
.lv-feed-item { display: flex; align-items: flex-start; gap: 10px; padding: 10px 18px; border-bottom: 1px solid #f0f2f6; font-size: 13px; }
.lv-feed-item:last-child { border-bottom: none; }
.lv-feed-time { color: #86868b; font-size: 11px; white-space: nowrap; padding-top: 2px; }
.lv-feed-role { background: #eef4ff; color: #0071e3; font-size: 11px; font-weight: 600; padding: 1px 9px; border-radius: 980px; white-space: nowrap; }
.lv-feed-msg { color: #1d1d1f; line-height: 1.5; }

/* ── 短信条目 ── */
.lv-phone { background: #f5f5f7; color: #3a3a3c; font-size: 12px; font-weight: 600; padding: 2px 10px; border-radius: 980px; }
.lv-sms-content { font-size: 13px; color: #6e6e73; margin-top: 8px; line-height: 1.5; background: #f8f9fb; border-radius: 10px; padding: 8px 12px; }
.lv-hint { padding: 10px 18px; font-size: 12px; color: #86868b; background: #f8f9fb; border-top: 1px solid #f0f2f6; }
.lv-hint i { color: #0071e3; margin-right: 4px; }

/* ── 表格（请假页专用：白表头 + 名字带头像） ── */
.lv-table thead th { background: #fafbfc; color: #86868b; font-weight: 600; border-bottom: 1px solid #eef1f5; }
.lv-name-cell { display: flex; align-items: center; gap: 8px; }
.lv-name-cell .lv-av { width: 30px; height: 30px; font-size: 13px; }
.lv-cell-time { font-size: 12px; white-space: nowrap; }
.lv-cell-reason { max-width: 100px; }

/* ── 请假表单（我要请假） ── */
.lv-apply-card { max-width: 620px; margin: 0 auto; }
.lv-page .form-control {
    background: #fff; border: 1px solid #e3e6ea; border-radius: 11px;
    min-height: 42px; font-size: 15px; padding: 9px 14px;
}
.lv-page .form-control:focus { border-color: #0071e3; box-shadow: 0 0 0 3px rgba(0,113,227,.12); background: #fff; outline: none; }
.lv-page .form-group label { font-size: 13px; font-weight: 600; color: #1d1d1f; }
.lv-label-ic { color: #0071e3; margin-right: 3px; }
.lv-select { -webkit-appearance: none; appearance: none; background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23868e96' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: right 14px center; padding-right: 32px; }
.lv-grid2 { display: flex; gap: 10px; flex-wrap: wrap; }
.lv-grid2 .form-group { flex: 1 1 200px; min-width: 0; }
.lv-time-row { display: flex; gap: 8px; flex-wrap: wrap; }
.lv-time-row input[type="date"] { flex: 2 1 180px; }
.lv-time-row select { flex: 1 1 80px; }
.lv-divider { border-top: 1px solid #f0f2f6; margin: 14px 0; }
.lv-submit { min-height: 48px !important; border-radius: 980px !important; font-size: 16px !important; font-weight: 600; margin-top: 10px; }
.lv-submit i { margin-right: 6px; }
.lv-add-student summary {
    cursor: pointer; font-size: 14px; color: #0071e3; font-weight: 500;
    padding: 8px 0; list-style: none; display: flex; align-items: center; gap: 6px;
}
.lv-add-student summary::-webkit-details-marker { display: none; }
.lv-add-student summary i { font-size: 13px; }

/* ── 手机端（<768px）：输入 16px / 按钮 36px / 卡片条目适配 ── */
@media (max-width: 767px) {
    .lv-page .form-control, .lv-page select.form-control, .lv-page textarea.form-control { font-size: 16px; }
    .lv-page .btn { min-height: 36px; }
    .lv-item-top { flex-wrap: wrap; }
    .lv-av { width: 38px; height: 38px; font-size: 15px; }
    .lv-name { font-size: 16px; }
    .lv-actions .btn { flex: 1 1 auto; }
    .lv-actions form { flex: 1 1 auto; }
    .lv-actions form .btn { width: 100%; }
    .lv-cell-reason { max-width: none; }
    .lv-table td { font-size: 14px; }
    .lv-time-row input[type="date"], .lv-time-row select { flex: 1 1 100%; }
    .lv-feed-item { flex-wrap: wrap; gap: 4px 10px; }
    .lv-feed-time { width: 100%; }
}

/* ═══════════════════════════════════════════════════════════════
   ═ 维修工单模块 — Apple 风统一层（dashboard / submit / manage / worker / stats）
   （追加于文件末尾，勿删已有规则；本块全部为新增，mt- 前缀防冲突）
   ═══════════════════════════════════════════════════════════════ */

/* ── ① 统计卡：白底 + 深色数字 + 浅蓝底蓝图标（inline-block 防 X5 乱序） ── */
.mt-stats { display: block; margin-bottom: 14px; font-size: 0; }
.mt-stat {
    display: inline-block; vertical-align: top; box-sizing: border-box;
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 13px 14px 12px; margin: 4px 5px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    width: calc(50% - 10px);
}
.mt-ic {
    width: 30px; height: 30px; border-radius: 9px; background: #eef4ff; color: #0071e3;
    display: inline-flex; align-items: center; justify-content: center; font-size: 13px;
}
.mt-lb { font-size: 12px; color: #86868b; margin-top: 9px; }
.mt-val { font-size: 26px; font-weight: 700; color: #1d1d1f; letter-spacing: -0.5px; line-height: 1.15; }
.mt-sub { font-size: 11px; color: #a1a1a6; margin-top: 1px; }
.mt-sub-warn { color: #e0372d !important; font-weight: 600; }
.mt-lb-gold { color: #b8860b; }
.mt-lb-green { color: #1a7f4e; }
.mt-lb-blue { color: #1a56c9; }
.mt-lb-orange { color: #e37400; }
.mt-lb-red { color: #e0372d; }
@media (min-width: 768px) {
    .mt-stats-4 .mt-stat { width: calc(25% - 10px); }
    .mt-stats-5 .mt-stat { width: calc(20% - 10px); }
    .mt-stats-6 .mt-stat { width: calc(16.666% - 10px); }
}

/* ── ② 工具栏 / 搜索条 / 筛选胶囊 ── */
.mt-toolbar { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin-bottom: 12px; }
.mt-search-wrap { position: relative; flex: 1; min-width: 180px; }
.mt-search-wrap > .fas {
    position: absolute; left: 13px; top: 50%; transform: translateY(-50%);
    color: #a1a1a6; font-size: 13px; pointer-events: none;
}
.mt-search { width: 100%; min-height: 38px; border-radius: 10px; padding-left: 34px !important; }
.mt-tabs { display: flex; gap: 6px; flex-wrap: wrap; padding: 10px 14px 2px; }
.mt-tab {
    display: inline-flex; align-items: center; gap: 5px; min-height: 30px;
    padding: 4px 14px; border-radius: 980px; border: 1px solid #e5e7eb;
    background: #fff; color: #3a3a3c; font-size: 12px; font-weight: 500;
    cursor: pointer; transition: background .15s, color .15s, border-color .15s;
}
.mt-tab:hover { background: #f5f5f7; }
.mt-tab.on { background: #0071e3; border-color: #0071e3; color: #fff; font-weight: 600; }
.mt-tab.on:hover { background: #0077ed; }

/* ── ③ 工单卡片列表 ── */
.mt-list { padding: 8px 10px 12px; }
.mt-item {
    background: #fff; border: 1px solid #eef1f5; border-radius: 16px;
    padding: 13px 16px; margin: 0 0 10px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    cursor: pointer; transition: box-shadow .15s, transform .1s;
}
.mt-item:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.09); }
.mt-item:active { transform: scale(.995); }
.mt-item.mt-overdue { background: #fffafa; border-color: #fde0e0; }
.mt-item-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.mt-item-main { flex: 1; min-width: 0; }
.mt-item-title { font-size: 15px; font-weight: 600; color: #1d1d1f; line-height: 1.45; }
.mt-item-meta {
    display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px;
    margin-top: 6px; font-size: 12px; color: #86868b;
}
.mt-wno { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: 11px; color: #a1a1a6; }
.mt-loc {
    display: inline-flex; align-items: center; gap: 4px; background: #eef4ff; color: #1a56c9;
    font-weight: 600; padding: 1px 9px; border-radius: 980px; font-size: 11px; white-space: nowrap;
}
.mt-dead { font-weight: 500; }
.mt-dead-over { color: #e0372d; font-weight: 700; }
.mt-item-side { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; flex-shrink: 0; }
.mt-item .flow-bar { margin: 8px 0 0; }
.mt-card-note { font-size: 12px; color: #86868b; font-weight: 400; }

/* ── ④ 状态 / 优先级徽章（柔和） ── */
.mt-badge {
    display: inline-flex; align-items: center; gap: 5px;
    padding: 3px 10px; border-radius: 980px; font-size: 12px; font-weight: 600;
    white-space: nowrap;
}
.mt-badge::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: currentColor; flex-shrink: 0; }
.mt-badge-wait { background: #fef3e0; color: #e37400; }   /* 待分派/待接单 橙 */
.mt-badge-work { background: #e8f0fe; color: #1a56c9; }   /* 维修中 蓝 */
.mt-badge-ext { background: #f3e8fd; color: #8b5cf6; }    /* 外修中 紫 */
.mt-badge-done { background: #e6f7ee; color: #1a9d5c; }   /* 已完成 绿 */
.mt-badge-over { background: #fde8e8; color: #e0372d; }   /* 超时 红 */
.mt-badge-reject { background: #fde8e8; color: #e0372d; } /* 已驳回/取消 红 */
.mt-badge-major { background: #fde8e8; color: #e0372d; }  /* 重大 红 */
.mt-pri { font-size: 11px; font-weight: 600; padding: 1px 9px; border-radius: 980px; white-space: nowrap; }
.mt-pri-urgent { background: #fde8e8; color: #e0372d; }
.mt-pri-hard { background: #fef3e0; color: #e37400; }
.mt-pri-norm { background: #eef4ff; color: #1a56c9; }
.mt-pri-easy { background: #e6f7ee; color: #1a9d5c; }

/* ── ⑤ 弹窗（Apple 白卡） ── */
.mt-modal { position: fixed; inset: 0; background: rgba(15,23,42,.45); z-index: 9999; display: none; align-items: center; justify-content: center; padding: 20px; }
.mt-modal.show { display: flex; }
.mt-modal-box {
    background: #fff; border-radius: 18px; width: 100%; max-width: 400px;
    max-height: 85vh; overflow-y: auto; box-shadow: 0 20px 60px rgba(15,23,42,.3);
}
.mt-modal-head {
    padding: 15px 18px; font-size: 16px; font-weight: 700; color: #1d1d1f;
    border-bottom: 1px solid #f0f2f6; display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.mt-modal-body { padding: 14px 18px; }
.mt-modal-foot { padding: 10px 18px; border-top: 1px solid #f0f2f6; }
.mt-modal-x { border: none; background: #f2f3f5; color: #86868b; width: 26px; height: 26px; border-radius: 50%; font-size: 12px; cursor: pointer; flex-shrink: 0; }

/* 工单详情行 / 日志 */
.mt-dl { display: flex; justify-content: space-between; gap: 12px; padding: 7px 0; font-size: 13px; border-bottom: 1px dashed #f0f2f6; }
.mt-dl:last-child { border-bottom: none; }
.mt-dl .k { color: #86868b; flex-shrink: 0; }
.mt-dl .v { font-weight: 600; color: #1d1d1f; text-align: right; }
.mt-log { display: flex; gap: 10px; padding: 8px 0; border-bottom: 1px dashed #eef1f5; font-size: 13px; }
.mt-log:last-child { border-bottom: none; }
.mt-log .act { min-width: 52px; font-weight: 600; color: #0071e3; flex-shrink: 0; }
.mt-log .note { flex: 1; color: #1d1d1f; line-height: 1.5; }
.mt-log .meta { color: #a1a1a6; font-size: 12px; white-space: nowrap; }

/* 分派人员选项 */
.mt-wk-opt {
    display: flex; align-items: center; gap: 8px; padding: 10px 12px;
    border: 1px solid #e5e7eb; border-radius: 12px; margin-bottom: 6px;
    cursor: pointer; background: #fff; transition: border-color .15s, background .15s;
}
.mt-wk-opt:hover { border-color: #b9cdf2; }
.mt-wk-opt.on { border-color: #0071e3; background: #eef4ff; }
.mt-wk-opt input { accent-color: #0071e3; }
.mt-wk-opt input:checked ~ span { color: #1a56c9; }

/* ── ⑥ 提交页：识别区 / 难度选择 / 时限 ── */
.mt-parse-card { border: 1.5px dashed #9ec5fe; background: #f7faff; }
.mt-parse-head { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 600; color: #1d1d1f; }
.mt-parse-head .mt-ic { width: 26px; height: 26px; border-radius: 8px; font-size: 12px; }
.mt-result { background: #eef4ff; border-radius: 12px; padding: 10px 14px; font-size: 13px; line-height: 1.9; }
.mt-result-tag { display: inline-block; background: #fff; border: 1px solid #dbe7ff; border-radius: 980px; padding: 2px 11px; margin: 2px 6px 2px 0; font-size: 12px; }
.mt-diff { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-diff label {
    flex: 1 1 calc(25% - 8px); min-width: 88px; box-sizing: border-box; text-align: center;
    padding: 10px 6px; border: 1px solid #e5e7eb; border-radius: 14px;
    cursor: pointer; background: #fff; transition: all .15s;
}
.mt-diff label:hover { border-color: #b9cdf2; }
.mt-diff label.active { border-color: #0071e3; background: #eef4ff; box-shadow: 0 0 0 3px rgba(0,113,227,.12); }
.mt-diff label.active .dl-name { color: #1a56c9; }
.mt-diff .dl-name { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.mt-diff .dl-time { font-size: 11px; color: #86868b; margin-top: 2px; }
.mt-diff input { position: absolute; opacity: 0; pointer-events: none; }
.mt-limit { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-limit-item {
    flex: 1 1 130px; min-width: 110px; box-sizing: border-box; padding: 10px 12px; border-radius: 14px;
    background: #f8f9fb; text-align: center; font-size: 12px; color: #86868b;
}
.mt-limit-item b { display: block; font-size: 13px; color: #1d1d1f; margin-bottom: 2px; }
.mt-limit-item.hot { background: #fdeeea; }
.mt-limit-item.hot b { color: #e0372d; }

/* ── ⑦ 完工弹窗选项 ── */
.mt-opt { display: flex; align-items: center; gap: 6px; padding: 9px 12px; border: 1px solid #e5e7eb; border-radius: 12px; font-size: 13px; background: #fff; cursor: pointer; transition: all .15s; }
.mt-opt:hover { border-color: #b9cdf2; }
.mt-opt.on { border-color: #0071e3; background: #eef4ff; color: #1a56c9; font-weight: 600; }
.mt-opt input { accent-color: #0071e3; }
.mt-opt-grid { display: flex; flex-wrap: wrap; gap: 6px; }
.mt-opt-grid .mt-opt { flex: 1 1 calc(50% - 6px); box-sizing: border-box; }

/* ── ⑧ 评分星级 ── */
.mt-stars { display: flex; gap: 8px; }
.mt-star {
    width: 42px; height: 42px; border-radius: 12px; background: #f2f3f5; color: #8a94a6;
    display: inline-flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 17px; transition: all .12s;
}

/* ── ⑨ 统计页：排行表 / 评级 / 明细 ── */
@media (min-width: 768px) {
    .mt-page table tr { background: #fff !important; }
    .mt-page table tbody tr:hover { background: #f5f8ff !important; }
    .mt-page table td { padding: 11px 12px; border-bottom: 1px solid #f0f2f6; vertical-align: middle; }
    .mt-page table thead th { background: #f8f9fb; font-size: 12px; color: #86868b; font-weight: 600; padding: 10px 12px; border-bottom: 1px solid #eef1f5; }
}
.mt-rank { display: inline-flex; width: 26px; height: 26px; border-radius: 50%; align-items: center; justify-content: center; font-weight: 700; color: #fff; font-size: 13px; }
.mt-rank-1 { background: #f0b429; }
.mt-rank-2 { background: #9aa7b5; }
.mt-rank-3 { background: #cd7f3d; }
.mt-grade { display: inline-flex; align-items: center; padding: 3px 12px; border-radius: 980px; font-size: 12px; font-weight: 600; white-space: nowrap; }
.mt-grade-gold { background: #fff7e0; color: #b8860b; }
.mt-grade-green { background: #e6f7ed; color: #1a7f4e; }
.mt-grade-blue { background: #e8f0fe; color: #1a56c9; }
.mt-grade-orange { background: #fef3e0; color: #e37400; }
.mt-grade-red { background: #fde8e8; color: #e0372d; }
.mt-rate { color: #f0a020; font-weight: 700; }
.mt-grads { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-grad { flex: 1 1 140px; min-width: 120px; box-sizing: border-box; padding: 12px; border-radius: 14px; text-align: center; font-size: 13px; }
.mt-fault { display: flex; flex-wrap: wrap; gap: 8px; }
.mt-fault-item { flex: 1 1 120px; min-width: 100px; box-sizing: border-box; padding: 12px; border-radius: 14px; background: #f8f9fb; text-align: center; }
.mt-fault-item .n { font-size: 22px; font-weight: 700; color: #1d1d1f; }
.mt-fault-item .n.danger { color: #e0372d; }
.mt-fault-item .l { font-size: 12px; color: #86868b; margin-bottom: 4px; }
.mt-other-note { margin-top: 10px; font-size: 12px; color: #86868b; line-height: 1.8; }

/* ── ⑩ 维修人员页：选择卡 / 任务分组 / 已完成 ── */
.mt-worker-sel { display: flex; align-items: flex-end; gap: 10px; flex-wrap: wrap; }
.mt-worker-sel .form-group { flex: 1; min-width: 200px; margin: 0; }
.mt-worker-sel label { display: block; font-size: 12px; color: #86868b; margin-bottom: 5px; }
.mt-grp-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 9px 16px; background: #f8f9fb; border-bottom: 1px solid #eef1f5;
    cursor: pointer; font-size: 13px; font-weight: 700; color: #1d1d1f;
}
.mt-grp-cnt { font-size: 12px; color: #0071e3; background: #eef4ff; border-radius: 980px; padding: 2px 10px; font-weight: 600; }
.mt-done-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 12px 16px; background: #f8f9fb; cursor: pointer;
    font-weight: 600; font-size: 13px; color: #3a3a3c; border-bottom: 1px solid #eef1f5;
}
.mt-done-item { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 10px 16px; border-bottom: 1px solid #f5f5f7; }

/* ── ⑪ 手机端适配（<768px） ── */
@media (max-width: 767px) {
    .mt-page .form-control, .mt-page select, .mt-page textarea { font-size: 16px; }
    .mt-page .btn, .mt-page button.btn { min-height: 40px; }
    .mt-page .btn-xs, .mt-page button.btn-xs { min-height: 36px; padding: 6px 14px; font-size: 13px; }
    .mt-item { padding: 14px; }
    .mt-item-top { flex-direction: column; }
    .mt-item-side { flex-direction: row; align-items: center; justify-content: flex-start; width: 100%; flex-wrap: wrap; }
    .mt-diff label { flex: 1 1 calc(50% - 8px); }
    .mt-opt-grid .mt-opt { flex: 1 1 100%; }
    .mt-parse-card { padding: 4px; }
    .mt-modal-box { max-width: 92%; }
}

/* 支出页下划线 Tab（复用 rs-tabs，button 版适配 + 计数徽章） */
.ex-tabs { margin: 10px 0 4px; }
.ex-tab {
    background: none; border: none; cursor: pointer;
    font-family: inherit; font-size: 14px; font-weight: 600; color: #6b7280;
    padding: 8px 2px 10px; position: relative; white-space: nowrap;
}
.ex-tab.on { color: #0071e3; }
.ex-tab.on::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: -1px;
    height: 2.5px; border-radius: 2px; background: #0071e3;
}
.ex-tab-badge {
    font-style: normal; display: inline-block; background: #ff9500; color: #fff;
    border-radius: 980px; padding: 0 7px; font-size: 10px; font-weight: 700; margin-left: 4px;
    vertical-align: 1px;
}
.ex-tab.on .ex-tab-badge { background: #0071e3; }

/* ═══ 首页桌面端增强（>768px 完整仪表盘布局） ═══ */
@media (min-width: 768px) {
    .home-wrap { padding: 24px 28px 48px; }
    .home-header h1 { font-size: 28px; letter-spacing: -0.5px; }
    .hd-sub { font-size: 14px; margin-top: 6px; }
    .hd-date { font-size: 16px; padding: 10px 18px; }
    .core-grid { gap: 14px; }
    .core-card { padding: 20px 22px; border-radius: 18px; }
    .cc-icon { width: 30px; height: 30px; font-size: 13px; border-radius: 9px; }
    .cc-label { font-size: 13px; }
    .cc-val { font-size: 34px; }
    .cc-sub { font-size: 12px; margin-top: 6px; }
    .todo-item { padding: 10px 16px; font-size: 13px; }
    .quick-grid { grid-template-columns: repeat(6, 1fr); gap: 12px; }
    .quick-item { padding: 18px 8px; border-radius: 16px; }
    .qi-icon { width: 46px; height: 46px; border-radius: 14px; font-size: 18px; }
    .qi-label { font-size: 13px; margin-top: 6px; }
    .chart-row { display: flex; gap: 14px; }
    .chart-row .panel { flex: 1; min-width: 0; }
    .panel { border-radius: 18px; padding: 18px 20px; }
    .pn-title { font-size: 15px; }
    .bar-chart { height: 150px; gap: 10px; }
    .tt-row { margin-bottom: 12px; }
}

/* ═══ 离校退费明细弹窗（重设计） ═══ */
.dm-head {
    padding: 16px 20px; border-bottom: 1px solid #eef1f5;
    display: flex; justify-content: space-between; align-items: center;
}
.dm-title { font-size: 17px; font-weight: 700; color: #1d1d1f; }
.dm-title #detailName { color: #0071e3; }
.dm-close {
    cursor: pointer; width: 28px; height: 28px; border-radius: 50%;
    background: #f0f2f6; color: #6b7280; font-size: 13px;
    display: inline-flex; align-items: center; justify-content: center;
}
.dm-close:active { transform: scale(.92); }
.rd-table { width: 100%; border-collapse: collapse; }
.rd-table thead th {
    background: #f8fafc; color: #6b7280; font-size: 11px; font-weight: 600;
    padding: 8px 10px; border-bottom: 1px solid #eef1f5;
}
.rd-table thead th:first-child { border-radius: 8px 0 0 0; text-align: left; }
.rd-table thead th:last-child { border-radius: 0 8px 0 0; }
.rd-table td {
    padding: 9px 10px; font-size: 13px; border-bottom: 1px solid #f4f5f7;
    color: #4b5563;
}
.rd-table td:first-child { text-align: left; font-weight: 500; }
.rd-table tr:last-child td { border-bottom: none; }
.rd-table td.refund { color: #dc2626; font-weight: 700; }
.rd-table tbody tr:active { background: #f9fafb; }
.rd-total {
    display: flex; justify-content: space-between; align-items: center;
    margin-top: 12px; padding: 12px 14px;
    background: #f0f6ff; border-radius: 10px;
}
.rd-total span { font-size: 12px; color: #6b7280; font-weight: 500; }
.rd-total b { font-size: 20px; color: #0071e3; font-weight: 700; letter-spacing: -0.5px; }
@media (max-width: 767px) {
    .rd-table thead { display: none; }
    .rd-table, .rd-table tbody, .rd-table tr, .rd-table td { display: block; width: 100%; }
    .rd-table tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 12px;
        padding: 8px 12px; margin-bottom: 8px;
    }
    .rd-table td {
        display: flex; justify-content: space-between; align-items: center;
        padding: 5px 0; border: none; font-size: 14px;
    }
    .rd-table td::before { content: attr(data-label); color: #9ca3af; font-size: 12px; }
    .rd-table td.refund { font-size: 16px; }
}

/* ═══ 离校记录表格（重设计） ═══ */
.dp-table { border-collapse: separate !important; border-spacing: 0 !important; }
.dp-table thead th {
    background: #f8fafc !important; color: #6b7280 !important;
    font-size: 12px !important; font-weight: 600 !important;
    padding: 12px 14px !important; border-bottom: 1px solid #eef1f5 !important;
    white-space: nowrap;
}
.dp-table thead th:first-child { border-radius: 12px 0 0 0; }
.dp-table thead th:last-child { border-radius: 0 12px 0 0; }
.dp-table tbody td {
    padding: 12px 14px !important; border-bottom: 1px solid #f4f5f7 !important;
    vertical-align: middle; font-size: 13px;
}
.dp-table tbody tr { transition: background .12s; }
.dp-table tbody tr:hover { background: #f5faff !important; }
.dp-table tbody tr:last-child td { border-bottom: none !important; }
.dp-name { white-space: nowrap; }
.dp-name .av { margin-right: 10px; vertical-align: middle; }
.dp-name-box { display: inline-block; vertical-align: middle; }
.dp-name-box strong { font-size: 14px; display: block; }
.dp-sub { font-size: 10px; color: #9ca3af; }
/* 手机端卡片化 */
@media (max-width: 767px) {
    .dp-table thead { display: none; }
    .dp-table, .dp-table tbody, .dp-table tr, .dp-table td { display: block; width: 100%; }
    .dp-table tr {
        background: #fff; border: 1px solid #eef1f5; border-radius: 14px;
        padding: 10px 14px; margin-bottom: 10px;
        box-shadow: 0 1px 6px rgba(0,0,0,0.04);
    }
    .dp-table td {
        display: flex; justify-content: space-between; align-items: center;
        padding: 6px 0 !important; border: none !important; font-size: 14px;
    }
    .dp-table td::before { content: attr(data-label); color: #9ca3af; font-size: 12px; }
    .dp-table td.dp-name { justify-content: flex-start; }
    .dp-table td.dp-name::before { display: none; }
}

/* ═══ 首页自定义展示数据卡 ═══ */
.hd-cfg {
    background: #f0f6ff; color: #0071e3; border: none; border-radius: 980px;
    padding: 8px 14px; font-size: 12px; font-weight: 600; cursor: pointer;
    display: inline-flex; align-items: center; gap: 6px;
}
.hd-cfg:active { transform: scale(.96); }
.widget-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px;
}
.widget-card {
    background: #fff; border-radius: 16px; padding: 14px;
    box-shadow: 0 1px 8px rgba(0,0,0,0.05); text-decoration: none !important;
    display: block; transition: box-shadow .15s;
}
.widget-card:active { box-shadow: 0 2px 12px rgba(0,113,227,0.12); }
.wc-top { display: flex; align-items: center; gap: 6px; margin-bottom: 8px; }
.wc-icon {
    font-size: 12px; width: 26px; height: 26px; border-radius: 8px;
    display: flex; align-items: center; justify-content: center;
    color: #0071e3; background: #eef4ff;
}
.wc-label { font-size: 12px; color: #86868b; font-weight: 500; }
.wc-val { font-size: 24px; font-weight: 700; letter-spacing: -0.6px; line-height: 1.1; color: #1d1d1f; }
.wc-sub { font-size: 11px; color: #aeaeb2; margin-top: 4px; }
/* 勾选弹窗 */
.wm-box { max-width: 420px; border-radius: 16px; box-shadow: 0 20px 60px rgba(0,0,0,.25); }
.wm-head {
    padding: 16px 20px; border-bottom: 1px solid #eef1f5;
    display: flex; justify-content: space-between; align-items: center;
}
.wm-title { font-size: 17px; font-weight: 700; }
.wm-close {
    cursor: pointer; width: 28px; height: 28px; border-radius: 50%;
    background: #f0f2f6; color: #6b7280; font-size: 13px;
    display: inline-flex; align-items: center; justify-content: center;
}
.wm-body { padding: 14px 20px; max-height: 60vh; overflow-y: auto; }
.wm-tip { font-size: 12px; color: #9ca3af; margin-bottom: 10px; }
.wm-list { display: flex; flex-direction: column; gap: 4px; }
.wm-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 12px; border-radius: 10px; cursor: pointer;
    border: 1px solid #eef1f5; font-size: 13px; font-weight: 500;
}
.wm-item.on { border-color: #0071e3; background: #f0f6ff; }
.wm-ic {
    width: 28px; height: 28px; border-radius: 8px;
    background: #eef4ff; color: #0071e3; font-size: 12px;
    display: inline-flex; align-items: center; justify-content: center;
}
.wm-name { flex: 1; }
.wm-cb {
    width: 18px; height: 18px; border-radius: 50%;
    border: 2px solid #d1d5db; display: inline-block; position: relative;
}
.wm-item.on .wm-cb { border-color: #0071e3; background: #0071e3; }
.wm-item.on .wm-cb::after {
    content: ''; position: absolute; left: 5px; top: 2px;
    width: 4px; height: 8px; border: solid #fff; border-width: 0 2px 2px 0;
    transform: rotate(45deg);
}
.wm-foot {
    padding: 12px 20px; border-top: 1px solid #eef1f5;
    display: flex; justify-content: flex-end; gap: 10px;
}
@media (min-width: 768px) {
    .widget-grid { grid-template-columns: repeat(4, 1fr); gap: 12px; }
    .widget-card { padding: 18px 20px; border-radius: 18px; }
    .wc-val { font-size: 28px; }
}

/* ═══ 首页最新动态板块 ═══ */
.feed-panel {
    background: #fff; border-radius: 16px; padding: 14px 16px; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.feed-head {
    display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px;
}
.feed-title { font-size: 14px; font-weight: 700; display: inline-flex; align-items: center; gap: 6px; }
.feed-ic { color: #0071e3; font-size: 12px; }
.feed-more { font-size: 10px; color: #9ca3af; background: #f0f2f6; border-radius: 980px; padding: 2px 8px; }
.feed-list { display: flex; flex-direction: column; }
.feed-item {
    display: flex; align-items: center; gap: 10px;
    padding: 8px 0; border-bottom: 1px solid #f4f5f7;
}
.feed-item:last-child { border-bottom: none; }
.feed-tag {
    flex-shrink: 0; width: 40px; text-align: center;
    font-size: 11px; font-weight: 600; border-radius: 8px; padding: 4px 0;
}
.ft-缴费 { background: #eef4ff; color: #0071e3; }
.ft-入住 { background: #ecfdf5; color: #059669; }
.ft-离校 { background: #fef2f2; color: #dc2626; }
.ft-报名 { background: #f5f3ff; color: #7c3aed; }
.ft-报修 { background: #fff7ed; color: #ea580c; }
.ft-请假 { background: #f0f9ff; color: #0284c7; }
.feed-main { flex: 1; min-width: 0; }
.feed-title2 { font-size: 13px; font-weight: 600; color: #1d1d1f; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.feed-sub { font-size: 11px; color: #9ca3af; margin-top: 1px; }
.feed-ts { font-size: 10px; color: #c0c4cc; flex-shrink: 0; }
@media (min-width: 768px) {
    .feed-panel { border-radius: 18px; padding: 18px 20px; }
    .feed-item { padding: 10px 0; }
}


/* ═══ 营业额分析卡片 ═══ */
.sa-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.sa-unit { font-size: 10px; color: #9ca3af; font-weight: 400; margin-left: 4px; }
.sa-tabs { display: flex; background: #f0f2f6; border-radius: 980px; padding: 2px; }
.sa-tab {
    border: none; background: none; cursor: pointer;
    font-size: 11px; font-weight: 600; color: #6b7280;
    padding: 4px 14px; border-radius: 980px; font-family: inherit;
}
.sa-tab.on { background: #fff; color: #0071e3; box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.sa-chart { height: 190px; width: 100%; margin-bottom: 4px; }
.sa-svg { display: none; }
.sa-svg { width: 100%; height: auto; display: block; }
.sa-axis {
    display: flex; justify-content: space-between;
    font-size: 9px; color: #b0b4bb; padding: 0 4px; margin-top: 2px;
}
.sa-sum {
    margin-top: 8px; padding-top: 8px; border-top: 1px dashed #eef1f5;
    font-size: 12px; color: #6b7280;
}
.sa-sum b { font-size: 16px; color: #0071e3; font-weight: 700; margin-left: 4px; }
.sa-div { color: #d1d5db; margin: 0 8px; }

/* ═══ 财务报表经营分析图形 ═══ */
.rp-analytics { margin-bottom: 16px; }
.ra-head { display: flex; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.ra-title { font-size: 16px; font-weight: 700; }
.ra-sub { font-size: 12px; color: #9ca3af; }
.ra-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 12px; }
.ra-stat {
    background: #fff; border-radius: 14px; padding: 14px 16px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ras-lb { font-size: 12px; color: #86868b; margin-bottom: 6px; }
.ras-val { font-size: 22px; font-weight: 700; letter-spacing: -0.5px; }
.ra-panel {
    background: #fff; border-radius: 14px; padding: 14px 16px; margin-bottom: 12px;
    box-shadow: 0 1px 6px rgba(0,0,0,0.04);
}
.ra-panel-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.ra-panel-title { font-size: 14px; font-weight: 700; margin-bottom: 8px; }
.ra-panel-title small { font-size: 11px; color: #9ca3af; font-weight: 400; }
.ra-seg { display: flex; background: #f0f2f6; border-radius: 980px; padding: 2px; }
.ra-seg-btn {
    border: none; background: none; cursor: pointer;
    font-size: 11px; font-weight: 600; color: #6b7280;
    padding: 4px 14px; border-radius: 980px; font-family: inherit;
}
.ra-seg-btn.on { background: #fff; color: #7c3aed; box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.ra-svg { width: 100%; height: auto; display: block; }
.ra-axis {
    display: flex; justify-content: space-between;
    font-size: 9px; color: #b0b4bb; padding: 0 4px; margin-top: 2px;
}
.ra-legend { font-size: 11px; color: #6b7280; margin-top: 8px; display: flex; align-items: center; gap: 6px; }
.rl-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; }
.rl-inc { background: #7c3aed; }
.rl-exp { background: #f97316; }
.rl-sum { margin-left: auto; font-size: 11px; color: #9ca3af; }
.ra-grid2 { display: grid; grid-template-columns: 1fr; gap: 12px; }
.ra-ring-wrap { display: flex; justify-content: center; padding: 6px 0; }
.ra-ring { width: 170px; height: auto; }
.ra-ring-legend { display: flex; flex-direction: column; gap: 4px; margin-top: 6px; }
.rr-item { display: flex; align-items: center; gap: 8px; font-size: 12px; padding: 3px 0; }
.rr-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.rr-name { flex: 1; color: #4b5563; }
.rr-val { font-weight: 600; color: #1d1d1f; }
.rr-pct { color: #9ca3af; width: 38px; text-align: right; }
.ra-bars { display: flex; flex-direction: column; gap: 8px; }
.rb-row { display: flex; align-items: center; gap: 8px; }
.rb-name { width: 76px; font-size: 11px; color: #4b5563; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.rb-track { flex: 1; height: 14px; background: #f4f5f7; border-radius: 980px; overflow: hidden; }
.rb-fill { height: 100%; background: #f97316; border-radius: 980px; }
.rb-val { font-size: 11px; font-weight: 600; color: #1d1d1f; width: 86px; text-align: right; }
.ra-mbars { display: flex; align-items: flex-end; gap: 10px; height: 120px; padding: 4px 0; }
.rmb-col { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 4px; height: 100%; }
.rmb-bars { flex: 1; display: flex; align-items: flex-end; gap: 3px; width: 100%; justify-content: center; }
.rmb-bar { width: 14px; border-radius: 4px 4px 0 0; min-height: 2px; }
.rmb-inc { background: #7c3aed; }
.rmb-exp { background: #f97316; }
.rmb-lb { font-size: 10px; color: #9ca3af; }
.ra-empty { font-size: 12px; color: #b0b4bb; text-align: center; padding: 18px 0; }
@media (min-width: 768px) {
    .ra-stats { grid-template-columns: repeat(4, 1fr); }
    .ra-grid2 { grid-template-columns: 1fr 1fr; }
    .ras-val { font-size: 26px; }
}

/* ═══ 图表精致化（v2） ═══ */
/* 环形图中心白底遮罩（扇区分隔感） */
.ra-ring-wrap svg { overflow: visible; }
/* 条形图百分比 */
.rb-pct {
    font-size: 10px; color: #9ca3af; width: 34px; text-align: right;
    font-weight: 600;
}
/* 月度柱状图：y 轴刻度 + 网格 */
.ra-mbars { position: relative; padding-left: 40px; }
.rmb-scale {
    position: absolute; left: 0; top: 0; bottom: 18px; width: 38px;
    display: flex; flex-direction: column; justify-content: space-between;
    font-size: 9px; color: #b0b4bb; text-align: right; pointer-events: none;
}
.rmb-scale span { transform: translateY(3px); }
.ra-mbars::before {
    content: ''; position: absolute; left: 40px; right: 0; top: 0; bottom: 18px;
    background: repeating-linear-gradient(to top, transparent 0, transparent calc(25% - 1px), #f0f2f6 calc(25% - 1px), #f0f2f6 25%);
    pointer-events: none;
}
.rmb-col { position: relative; z-index: 1; }

.pf-paid-tip {
    display: inline-flex; align-items: center; gap: 6px;
    font-size: 12px; color: #16a34a; font-weight: 500;
}
.pf-paid-tip i { font-size: 13px; }

.pf-flow-ver {
    display: inline-block; background: #eef4ff; color: #0071e3;
    font-size: 9px; font-weight: 700; border-radius: 980px;
    padding: 1px 6px; margin-left: 6px; vertical-align: 2px;
}

/* 学员路径手机端：6 步网格全显示（不靠滑动） */
@media (max-width: 767px) {
    .pf-flow {
        display: grid; grid-template-columns: repeat(3, 1fr);
        gap: 16px 6px; overflow: visible; padding-bottom: 0;
    }
    .pf-flow .pf-flow-line { display: none; }
    .pf-step { min-width: 0; position: relative; }
    .pf-step-dot { width: 30px; height: 30px; }
    .pf-flow-body { padding: 14px 12px !important; }
    /* 行内连线：1→2、2→3、4→5、5→6（用显式类，全内核兼容） */
    .pf-step:not(.turn):not(.last)::after {
        content: ''; position: absolute; top: 14px; right: -7px;
        width: 10px; height: 2px; background: #e3e7ee; border-radius: 2px;
    }
    .pf-step.done:not(.turn):not(.last)::after,
    .pf-step.cur:not(.turn):not(.last)::after { background: #34c759; }
    /* 跨行连线 3→4：第3步（turn）下方竖线 */
    .pf-step.turn::before {
        content: ''; position: absolute; bottom: -17px; left: 50%;
        width: 2px; height: 17px; background: #e3e7ee; margin-left: -1px;
    }
}

/* ═══ 经营分析动画（X5 兼容：纯 CSS） ═══ */
/* 卡片入场：淡入上浮 */
.ra-stat, .ra-panel {
    animation: raIn .5s ease both;
}
.ra-stat:nth-child(1) { animation-delay: .05s; }
.ra-stat:nth-child(2) { animation-delay: .12s; }
.ra-stat:nth-child(3) { animation-delay: .19s; }
.ra-stat:nth-child(4) { animation-delay: .26s; }
.ra-grid2 .ra-panel:first-child { animation-delay: .35s; }
.ra-grid2 .ra-panel:last-child { animation-delay: .42s; }
.ra-panel:last-child { animation-delay: .5s; }
@keyframes raIn {
    from { opacity: 0; transform: translateY(10px); }
    to { opacity: 1; transform: translateY(0); }
}
/* 月度柱状生长（scaleY 0→1） */
.rmb-bar {
    transform-origin: bottom;
    animation: raGrow .6s cubic-bezier(.34,1.4,.44,1) both;
}
.rmb-col:nth-child(1) .rmb-bar { animation-delay: .4s; }
.rmb-col:nth-child(2) .rmb-bar { animation-delay: .47s; }
.rmb-col:nth-child(3) .rmb-bar { animation-delay: .54s; }
.rmb-col:nth-child(4) .rmb-bar { animation-delay: .61s; }
.rmb-col:nth-child(5) .rmb-bar { animation-delay: .68s; }
.rmb-col:nth-child(6) .rmb-bar { animation-delay: .75s; }
@keyframes raGrow { from { transform: scaleY(0); } to { transform: scaleY(1); } }
/* 成本条形展开（scaleX 0→1） */
.rb-fill {
    transform-origin: left;
    animation: raSX .7s cubic-bezier(.34,1.3,.44,1) both;
}
.rb-row:nth-child(1) .rb-fill { animation-delay: .45s; }
.rb-row:nth-child(2) .rb-fill { animation-delay: .52s; }
.rb-row:nth-child(3) .rb-fill { animation-delay: .59s; }
.rb-row:nth-child(4) .rb-fill { animation-delay: .66s; }
.rb-row:nth-child(5) .rb-fill { animation-delay: .73s; }
.rb-row:nth-child(6) .rb-fill { animation-delay: .8s; }
.rb-row:nth-child(7) .rb-fill { animation-delay: .87s; }
.rb-row:nth-child(8) .rb-fill { animation-delay: .94s; }
@keyframes raSX { from { transform: scaleX(0); } to { transform: scaleX(1); } }
/* 环形淡入旋转 */
.ra-ring { animation: raRing .8s ease .3s both; }
@keyframes raRing {
    from { opacity: 0; transform: scale(.92); }
    to { opacity: 1; transform: scale(1); }
}
/* 图例/轴淡入 */
.ra-axis, .ra-legend, .ra-ring-legend, .ra-mbars .rmb-lb {
    animation: raFade .6s ease .5s both;
}



/* ═══ 左侧导航深色版（指令结构）· 无动画无 hover ═══ */
.sidebar {
    background: #1d2327 !important;
    color: #a6b0c0 !important;
    border-right: 1px solid #2c343c;
    box-shadow: 2px 0 10px rgba(0,0,0,.28);
    width: 264px;
}
.sidebar .close-btn { background: #2c343c; color: #a6b0c0; }
.sidebar .brand { border-bottom: 1px solid #2c343c !important; color: #f2f5f8 !important; }
.sidebar .brand small { color: #8a94a6 !important; }
.main-content { background: #f4f7fb; }
/* 一级菜单：52px 高、灰蓝字、无动画无 hover */
.nav-group-header {
    font-size: 14px !important;
    font-weight: 500 !important;
    letter-spacing: 0 !important;
    color: #a6b0c0 !important;
    min-height: 52px;
    padding: 0 14px !important;
    border-left: 3px solid transparent;
    border-radius: 0 !important;
    margin: 0 !important;
    transition: none !important;
    background: transparent !important;
}
.nav-group-header:hover { background: transparent !important; color: #a6b0c0 !important; }
/* 展开的一级菜单：深蓝底 + 亮蓝字（静态） */
.nav-group.expanded > .nav-group-header {
    background: #243549 !important;
    color: #5aa8ff !important;
    font-weight: 600 !important;
}
.nav-group.expanded > .nav-group-header .arrow { color: #5aa8ff; opacity: 1; }
.nav-group-header .nav-icon { color: #8a94a6; font-size: 15px; width: 24px; text-align: center; }
.nav-group.expanded > .nav-group-header .nav-icon { color: #5aa8ff; }
/* 独立项（首页/审批中心） */
.sidebar nav > .nav-drag-item > .nav-group > a.nav-group-header {
    color: #a6b0c0 !important;
    min-height: 52px;
    font-weight: 500 !important;
    margin: 0 !important;
    border-radius: 0 !important;
    border-left: 3px solid transparent;
    background: transparent !important;
    transition: none !important;
}
.sidebar nav > .nav-drag-item > .nav-group > a.nav-group-header:hover { background: transparent !important; }
/* 二级菜单：竖直连接线 + 选中蓝线，无 hover */
.nav-group-body a {
    margin: 0 0 0 18px !important;
    padding: 9px 14px !important;
    border-radius: 0 !important;
    border-left: 2px solid #33414f !important;
    color: #a6b0c0 !important;
    font-size: 13px !important;
    background: transparent !important;
    transition: none !important;
}
.nav-group-body a:hover { color: #a6b0c0 !important; background: transparent !important; }
.nav-group-body a.active {
    color: #5aa8ff !important;
    background: transparent !important;
    border-left-color: #5aa8ff !important;
    font-weight: 600 !important;
}
/* 展开收起：直接切换，无动画 */
.nav-group-body { transition: none !important; }
.nav-group .arrow, .nav-group .arrow i { transition: none !important; }
.nav-group.expanded .nav-group-header .arrow { transform: none !important; }
/* 底部 footer */
.sidebar-footer { border-top: 1px solid #2c343c !important; background: #171c20; }
.sidebar-footer a, .sidebar .footer-link { color: #a6b0c0 !important; }
.sidebar nav::-webkit-scrollbar-thumb { background: rgba(150,170,200,.25); }

/* ═══ 深色导航：彻底去除 hover 与动画（补漏覆盖） ═══ */
.sidebar nav > a:hover,
.sidebar nav > a.nav-link:hover,
.sidebar nav > a:focus,
.sidebar nav > a.nav-link:focus {
    background: transparent !important;
    color: #a6b0c0 !important;
}
.sidebar .footer-link:hover,
.sidebar .footer-link:focus {
    background: transparent !important;
    color: #a6b0c0 !important;
}
.sidebar .footer-link:hover i { color: #a6b0c0; }
.nav-group-body a:hover i { color: #a6b0c0; }
.nav-drag-item[draggable=true]:hover,
.nav-drag-item[draggable=true]:active {
    background: transparent !important;
    border-color: transparent !important;
}
.nav-group-header .arrow,
.nav-group-header .arrow i,
.yd-s-arrow,
.pc-arrow {
    transition: none !important;
}
.nav-group-header:active,
.nav-group-body a:active,
.sidebar nav > a:active {
    background: transparent !important;
}
.sidebar nav::-webkit-scrollbar-thumb:hover { background: rgba(150,170,200,.25); }

/* ═══ 趋势图 chart-card 风格（参考学校后勤仪表盘） ═══ */
.ra-panel.chart-card {
    padding: 0;
    overflow: hidden;
}
.ra-panel.chart-card .card-head {
    display: flex; justify-content: space-between; align-items: center;
    padding: 16px 20px 8px;
    flex-wrap: wrap; gap: 8px;
}
.ra-panel.chart-card .card-title {
    font-size: 15px; font-weight: 700; margin: 0;
}
.ra-panel.chart-card .card-title small { font-size: 11px; color: #9ca3af; font-weight: 400; }
.ra-panel.chart-card .card-subtitle {
    font-size: 11px; color: #9ca3af; margin: 4px 0 0;
}
.ra-panel.chart-card .periods {
    display: flex; background: #f0f2f6; border-radius: 980px; padding: 2px;
}
.ra-panel.chart-card .period {
    border: none; background: none; cursor: pointer;
    font-size: 11px; font-weight: 600; color: #6b7280;
    padding: 5px 14px; border-radius: 980px; font-family: inherit;
}
.ra-panel.chart-card .period.active {
    background: #fff; color: #7c3aed; box-shadow: 0 1px 4px rgba(0,0,0,.1);
}
.ra-panel.chart-card .chart-wrap {
    position: relative; padding: 4px 12px 10px;
}
.ra-panel.chart-card .chart-wrap .ra-svg { position: relative; z-index: 1; }
.ra-panel.chart-card .tooltip { position: absolute; z-index: 10; pointer-events: none; }
.ra-panel.chart-card .ra-axis { padding: 0 6px; }
.ra-panel.chart-card .ra-legend { padding: 0 8px 10px; }

/* ═══ 趋势纯数字表格版 ═══ */
.ra-table-wrap { padding: 4px 16px 14px; }
.ra-table {
    width: 100%; border-collapse: collapse; font-size: 13px;
}
.ra-table thead th {
    text-align: left; font-size: 11px; color: #9ca3af; font-weight: 600;
    padding: 8px 10px; border-bottom: 1px solid #f0f2f6;
}
.ra-table tbody td {
    padding: 9px 10px; border-bottom: 1px solid #f5f6f8; color: #3a4556;
}
.ra-table tbody tr:hover { background: #fafbff; }
.ra-table tfoot td {
    padding: 10px; font-weight: 700; color: #1d1d1f;
    background: #f8f9fb; border-radius: 0 0 8px 8px;
}
.rt-inc { color: #8c3ee8; font-weight: 600; }
.rt-exp { color: #f97316; font-weight: 600; }
.rp-up { color: #16a34a; font-weight: 600; }
.rp-down { color: #dc2626; font-weight: 600; }
.rp-flat { color: #b0b4bb; }

/* ═══ card-head 动画特效（移植自学校后勤仪表盘参考页） ═══ */
.ra-panel.chart-card .card-head {
    display: flex; align-items: center; justify-content: space-between; gap: 16px;
    padding: 20px 22px 10px;
}
.ra-panel.chart-card .card-title {
    margin: 0; color: #2b3a4e; font-size: 16px; font-weight: 750;
}
.ra-panel.chart-card .card-subtitle { margin: 5px 0 0; color: #9aa6b5; font-size: 12px; }
.ra-panel.chart-card .periods {
    display: inline-flex; border: 1px solid #e8ebf1; border-radius: 7px;
    overflow: hidden; background: #ffffff;
}
.ra-panel.chart-card .period {
    min-width: 47px; min-height: 31px; padding: 0 9px;
    border: none; border-left: 1px solid #e8ebf1;
    background: #ffffff; color: #7e8c9c; cursor: pointer;
    font-size: 12px; font-family: inherit;
    transition: background 150ms, color 150ms;
}
.ra-panel.chart-card .period:first-child { border-left: 0; }
.ra-panel.chart-card .period:hover { color: #8c3ee8; background: #fbf8ff; }
.ra-panel.chart-card .period.active { color: #ffffff; background: #8c3ee8; }
@media (max-width: 760px) {
    .ra-panel.chart-card .card-head { align-items: flex-start; flex-direction: column; }
}
/* ═══ 趋势图 ECharts 级视觉（紫 #8c3ee8/渐变面积/高亮/竖线/环比tooltip） ═══ */
.ra-panel.chart-card .period.active {
    background: #8c3ee8 !important; color: #fff !important;
    box-shadow: 0 2px 8px rgba(140,62,232,.35);
}
/* 渲染动画：描边 800ms + 点淡入（不循环） */
.ra-svg path.ra-line {
    stroke-dasharray: 2000;
    stroke-dashoffset: 2000;
    animation: raDraw .8s cubic-bezier(.4,0,.2,1) .1s forwards;
}
.ra-svg path.ra-area {
    opacity: 0;
    animation: raFade .6s ease .7s forwards;
}
.ra-svg circle.ra-dot {
    transform-box: fill-box; transform-origin: center;
    transform: scale(0);
    animation: raPop .22s ease forwards;
    cursor: pointer;
}
.ra-svg circle.ra-dot:hover { transform: scale(2) !important; }
.ra-svg circle.ra-dot:nth-of-type(1) { animation-delay: .8s; }
.ra-svg circle.ra-dot:nth-of-type(2) { animation-delay: .85s; }
.ra-svg circle.ra-dot:nth-of-type(3) { animation-delay: .9s; }
.ra-svg circle.ra-dot:nth-of-type(4) { animation-delay: .95s; }
.ra-svg circle.ra-dot:nth-of-type(5) { animation-delay: 1.0s; }
.ra-svg circle.ra-dot:nth-of-type(6) { animation-delay: 1.05s; }
.ra-svg circle.ra-dot:nth-of-type(7) { animation-delay: 1.1s; }
.ra-svg circle.ra-dot:nth-of-type(8) { animation-delay: 1.15s; }
.ra-svg circle.ra-dot:nth-of-type(9) { animation-delay: 1.2s; }
.ra-svg circle.ra-dot:nth-of-type(10) { animation-delay: 1.25s; }
.ra-svg circle.ra-dot:nth-of-type(n+11) { animation-delay: 1.3s; }
/* Tab 切换淡入 */
@keyframes raTabIn { from { opacity: 0; transform: translateY(4px); } to { opacity: 1; transform: none; } }
/* tooltip 淡入缩放 */
@keyframes raTipIn { from { opacity: 0; transform: scale(.92); } to { opacity: 1; transform: scale(1); } }
/* 环比标签 */
.rt-pct { border-top: 1px solid rgba(255,255,255,.14); margin-top: 4px; padding-top: 5px; }
.rp-tag {
    font-size: 10px; font-weight: 700; border-radius: 980px; padding: 1px 7px;
    margin-right: 6px;
}
.rp-tag.up { background: rgba(52,199,89,.22); color: #6ee7a0; }
.rp-tag.down { background: rgba(255,59,48,.22); color: #ff8a80; }
.rp-tag.flat { background: rgba(255,255,255,.14); color: #c8c8c8; }
/* 状态条 */
.ra-hint {
    margin: 0 14px 10px; padding: 9px 14px; border-radius: 8px;
    background: #f3ecfd; color: #6b21a8; font-size: 12px;
    border: 1px solid #e4d3f8;
}
.ra-hint b { color: #8c3ee8; }

/* 趋势图点击数据提示 */
.ra-tip {
    position: fixed; z-index: 999; min-width: 150px;
    background: #1a1a1a; color: #fff; border-radius: 10px;
    padding: 10px 12px; font-size: 12px;
    box-shadow: 0 8px 24px rgba(0,0,0,.35);
    pointer-events: none;
    animation: raIn .15s ease;
}
.rt-d { font-weight: 700; font-size: 12px; margin-bottom: 6px; color: #e5e7eb; }
.rt-row { display: flex; align-items: center; gap: 6px; padding: 2px 0; font-size: 11px; color: #c8c8c8; }
.rt-row b { margin-left: auto; color: #fff; }
.rt-bal { border-top: 1px solid rgba(255,255,255,.15); margin-top: 4px; padding-top: 6px; }

/* ═══ 学校后勤仪表盘指令改造 ═══ */
/* 收入构成：分类列表 + 进度条 */
.ic-list { display: flex; flex-direction: column; gap: 12px; padding: 4px 0 8px; }
.ic-head { display: flex; align-items: center; gap: 8px; font-size: 12px; margin-bottom: 5px; }
.ic-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.ic-name { flex: 1; color: #1e2938; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ic-val { font-weight: 600; color: #1e2938; }
.ic-pct { color: #8290a2; width: 42px; text-align: right; font-size: 11px; }
.ic-track { height: 8px; background: #f0f2f6; border-radius: 980px; overflow: hidden; }
.ic-fill {
    height: 100%; border-radius: 980px;
    transform-origin: left;
    animation: icGrow .7s cubic-bezier(.34,1.3,.44,1) both;
}
.ic-row:nth-child(1) .ic-fill { animation-delay: .3s; }
.ic-row:nth-child(2) .ic-fill { animation-delay: .38s; }
.ic-row:nth-child(3) .ic-fill { animation-delay: .46s; }
.ic-row:nth-child(4) .ic-fill { animation-delay: .54s; }
.ic-row:nth-child(5) .ic-fill { animation-delay: .62s; }
@keyframes icGrow { from { transform: scaleX(0); } to { transform: scaleX(1); } }
.ic-note {
    font-size: 10.5px; color: #8290a2; background: #f7f8fa;
    border-radius: 8px; padding: 8px 10px; margin-top: 10px; line-height: 1.5;
}
/* 成本构成：橙色横向条形 + 行 hover */
.cb-list { display: flex; flex-direction: column; gap: 10px; padding: 4px 0 8px; }
.cb-row {
    border-radius: 8px; padding: 7px 8px; cursor: default;
    transition: background 160ms;
}
.cb-row:hover { background: #f7f4f0; }
.cb-head { display: flex; align-items: center; gap: 8px; font-size: 12px; margin-bottom: 5px; }
.cb-name { flex: 1; color: #1e2938; }
.cb-val { font-weight: 600; color: #1e2938; }
.cb-pct { color: #8290a2; width: 42px; text-align: right; font-size: 11px; }
.cb-track { height: 10px; background: #f5f0ea; border-radius: 980px; overflow: hidden; }
.cb-fill {
    height: 100%; border-radius: 980px; background: #ec7d29;
    transform-origin: left;
    animation: icGrow .7s cubic-bezier(.34,1.3,.44,1) both;
}
.cb-row:nth-child(1) .cb-fill { animation-delay: .35s; }
.cb-row:nth-child(2) .cb-fill { animation-delay: .43s; }
.cb-row:nth-child(3) .cb-fill { animation-delay: .51s; }
.cb-row:nth-child(4) .cb-fill { animation-delay: .59s; }
.cb-row:nth-child(5) .cb-fill { animation-delay: .67s; }
.cb-row:nth-child(6) .cb-fill { animation-delay: .75s; }
.cb-row:nth-child(7) .cb-fill { animation-delay: .83s; }
.cb-row:nth-child(8) .cb-fill { animation-delay: .91s; }
/* 指标卡 hover 上移 2-3px（160-200ms） */
.ra-stat {
    transition: transform 180ms ease, box-shadow 180ms ease;
}
.ra-stat:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(30,41,56,.10);
}
/* 成本色统一 #ec7d29（覆盖旧 #f97316） */
.ra-svg path.ra-line[stroke="#f97316"], .rl-exp { background: #ec7d29 !important; }
/* 减少动态效果支持 */
@media (prefers-reduced-motion: reduce) {
    .ra-stat, .ra-panel, .ra-svg path, .ra-svg circle, .ra-ring,
    .rmb-bar, .rb-fill, .ic-fill, .cb-fill, .ra-tip, .ra-hint, .period {
        animation: none !important;
        transition: none !important;
    }
    .ra-stat:hover { transform: none; box-shadow: none; }
}
/* ═══ 参考页细节对齐 ═══ */
.ic-sub { font-size: 12px; color: #8290a2; margin: -2px 0 10px; }
.legend-row {
    display: flex; align-items: center; gap: 8px;
    font-size: 12px; padding: 3px 0; color: #1e2938;
}
.legend-row strong { margin-left: auto; font-weight: 600; }
.legend-dot { width: 10px; height: 10px; border-radius: 3px; flex-shrink: 0; }
.ds-block {
    margin-top: 12px; border-top: 1px dashed #e8edf3; padding-top: 10px;
}
.ds-title { font-size: 13px; font-weight: 700; color: #1e2938; }
.ds-sub { font-size: 11px; color: #8290a2; margin: 3px 0 6px; }
.ras-meta { font-size: 11px; color: #8290a2; margin-top: 5px; }
/* ECharts 趋势图容器 */
.ra-echart { width: 100%; height: 300px; padding: 4px 8px 6px; position: relative; }
@media (max-width: 768px) { .ra-echart { height: 240px; } }
/* ECharts tooltip 淡入缩放动画 */
@keyframes raTipIn {
    from { opacity: 0; transform: scale(.92); }
    to { opacity: 1; transform: scale(1); }
}
/* ═══ ECharts 趋势图可访问性 ═══ */
.ra-empty-tip {
    text-align: center; color: #8290a2; font-size: 12px;
    padding: 6px 0 2px;
}
.ra-panel.chart-card .period:focus-visible {
    outline: 2px solid #8c3ee8; outline-offset: -2px;
    background: #fbf8ff;
}
.ra-panel.chart-card .period:active {
    transform: scale(.97);
}
.ra-panel.chart-card .period[disabled] {
    opacity: .5; cursor: not-allowed;
}
@media (prefers-reduced-motion: reduce) {
    .ra-echart canvas { animation: none !important; }
    .ra-panel.chart-card .period:active { transform: none; }
}
/* 行 hover：完整金额占比徽标（绝对定位不改变布局——图表保持不动） */
.ic-row, .cb-row { position: relative; }
.ic-full, .cb-full {
    display: none;
    position: absolute; right: 6px; top: 50%; transform: translateY(-50%);
    font-size: 10.5px; font-weight: 700; line-height: 1;
    padding: 4px 8px; border-radius: 980px;
    z-index: 2; white-space: nowrap;
}
.ic-full { background: #f3ecfd; color: #7c3aed; }
.cb-full { background: #fdeee2; color: #c2570f; }
.ic-row:hover .ic-full, .cb-row:hover .cb-full { display: inline-block; }
/* hover 背景轻微变化（加深） */
.cb-row:hover { background: #f3ede5; }
.ic-row:hover { background: #f7f3fc; border-radius: 8px; }
@media (prefers-reduced-motion: reduce) {
    .ic-full, .cb-full { transition: none; }
}

/* ═══ 大屏自适应 v2（2026-08-22）：舒适上限 1440px 居中 ═══
   桌面端内容列上限 1440px；窗口 ≥1720px 时在内容区（侧边栏右侧）居中，两侧留白；
   <1720px 保持自适应填满；手机端维持原 960px 上限不变。
   （登录/注册页由 body.auth-page .main 规则覆盖，不受影响） */
@media (min-width: 768px) {
    .main { max-width: 1440px; }
}
@media (min-width: 1720px) {
    .main { margin-left: calc(280px + (100vw - 280px - 1440px) / 2); }
}
/* v2 修复（2026-08-22）：覆盖既有 ≥1500px 规则
   （旧规则 max-width:1200 + margin:auto + padding-left:calc(280px+24px)
    会把盒子居中压到侧边栏下、内容挤到 1112px 右偏，并导致图表反复 resize 闪烁）
   —— 1500-1719px：margin 恢复侧边栏偏移、padding 恢复 24px；
      ≥1720px：只修 padding，居中由上面的 .main calc 规则接管 */
@media (min-width: 1500px) and (max-width: 1719px) {
    main, .main {
        margin-left: 280px;
        padding-left: 24px;
        padding-right: 24px;
    }
}
@media (min-width: 1720px) {
    main, .main {
        padding-left: 24px;
        padding-right: 24px;
    }
}

/* ═══ 统计卡（复制自财务经营分析 React 版，2026-08-22）═══
   用法：<div class="metrics [metrics-5]"> + <article class="metric purple|orange|red|teal">
   图标 = 行内 SVG（stroke 风格，右上角，随 tone 变色）；hover 上浮+阴影 */
.metrics {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 16px;
}
.metrics-5 { grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); }
@media (max-width: 767px) {
    .metrics { grid-template-columns: repeat(2, 1fr); gap: 10px; }
    .metrics-5 { grid-template-columns: repeat(2, 1fr); }
}
.metric {
    background: #fff; border: 1px solid #e8edf3; border-radius: 8px;
    padding: 18px 18px 16px;
    transition: transform 180ms ease, box-shadow 180ms ease;
}
.metric:hover { transform: translateY(-3px); box-shadow: 0 10px 24px rgba(30,41,56,.08); }
.metric-label {
    display: flex; align-items: center; justify-content: space-between;
    font-size: 13px; color: #5b6b7f; gap: 8px;
}
.metric-label .is-net { font-style: normal; color: #d7596d; font-size: 11px; font-weight: 500; }
.metric-icon { color: #b9c4d1; flex: none; display: inline-flex; }
.metric-icon svg { width: 20px; height: 20px; }
.metric.purple .metric-icon { color: #8c3ee8; }
.metric.orange .metric-icon { color: #ec7d29; }
.metric.red .metric-icon { color: #d7596d; }
.metric.teal .metric-icon { color: #2aab9f; }
.metric-value {
    font-size: 24px; font-weight: 750; color: #1e2938;
    margin: 10px 0 6px; letter-spacing: -.5px;
}
.metric-value.negative { color: #d7596d; }
.metric-meta { font-size: 11px; color: #8290a2; line-height: 1.5; }

/* ═══ 财务经营分析图表防抖隔离（2026-08-22）═══
   图表容器与内容彻底隔离：杜绝尺寸反馈回路 / 兄弟元素重绘引起的闪烁 */
.rp-root .chart-box, .rp-root .bar-box { contain: size layout paint; }
.rp-root .chart-box svg, .rp-root .bar-box svg { display: block; max-width: none !important; }

/* ═══ 报表风格统计卡（rp-metric——财务报表 metric 同款，试验页） ═══ */
.rp-metrics {
    display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-bottom: 16px;
}
@media (max-width: 900px) { .rp-metrics { grid-template-columns: repeat(2, 1fr); gap: 10px; } }
.rp-metric {
    background: #fff; border: 1px solid #e8edf3; border-radius: 8px;
    padding: 16px 16px 14px; min-width: 0;
    transition: transform 180ms ease, box-shadow 180ms ease;
}
.rp-metric:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(30,41,56,.08);
}
.rm-label {
    display: flex; align-items: center; justify-content: space-between;
    font-size: 13px; color: #5b6b7f;
}
.rm-icon { display: flex; }
.rm-icon svg { width: 20px; height: 20px; }
.rm-value {
    font-size: 24px; font-weight: 750; color: #1e2938;
    margin: 10px 0 6px; letter-spacing: -.5px;
}
.rm-meta { font-size: 11px; color: #8290a2; }
@media (prefers-reduced-motion: reduce) {
    .rp-metric { transition: none; }
    .rp-metric:hover { transform: none; box-shadow: none; }
}

/* ═══ 全网统计卡统一为财务报表风格（rp-metric 同款，覆盖 exp-stat 家族） ═══ */
.exp-stat {
    background: #fff !important;
    border: 1px solid #e8edf3 !important;
    border-radius: 8px !important;
    padding: 16px 16px 14px !important;
    box-shadow: 0 1px 2px rgba(30,41,56,.03);
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease;
    min-width: 0;
}
.exp-stat:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(30,41,56,.08);
    border-color: #e0e6ee;
}
.exp-stats a .exp-stat:hover { border-color: #e0e6ee; }
.exp-stat .es-head {
    font-size: 13px !important;
    color: #5b6b7f !important;
    font-weight: 500 !important;
}
.exp-stat .es-val {
    font-size: 24px !important;
    font-weight: 750 !important;
    color: #1e2938 !important;
    letter-spacing: -.5px !important;
    line-height: 1.2 !important;
}
/* 图标：线性化（far 描边） + 去底色块 + 报表色系 */
.exp-stat .es-head .es-ic {
    width: 20px !important;
    height: 20px !important;
    font-size: 15px !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #8c3ee8 !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
/* 统计卡说明行（有 meta 时） */
.exp-stat .es-meta { font-size: 11px !important; color: #8290a2 !important; margin-top: 4px; }
@media (max-width: 900px) {
    .exp-stats .exp-stat { width: calc(50% - 10px) !important; }
}
@media (prefers-reduced-motion: reduce) {
    .exp-stat { transition: none !important; }
    .exp-stat:hover { transform: none; box-shadow: none; }
}

/* ═══ 首页核心卡统一为财务报表风格（core-card） ═══ */
.core-card {
    background: #fff !important;
    border: 1px solid #e8edf3 !important;
    border-radius: 8px !important;
    box-shadow: 0 1px 2px rgba(30,41,56,.03) !important;
    padding: 16px 16px 14px !important;
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease !important;
}
.core-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(30,41,56,.08) !important;
    border-color: #e0e6ee;
}
.core-card:active {
    transform: translateY(-1px);
    box-shadow: 0 4px 12px rgba(30,41,56,.08) !important;
}
.core-card .cc-icon {
    width: 20px !important;
    height: 20px !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #8c3ee8 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
}
.core-card .cc-icon svg { width: 20px; height: 20px; }
.core-card .cc-label {
    font-size: 13px !important;
    color: #5b6b7f !important;
    font-weight: 500 !important;
}
.core-card .cc-val {
    font-size: 24px !important;
    font-weight: 750 !important;
    color: #1e2938 !important;
    letter-spacing: -.5px !important;
}
.core-card .cc-sub {
    font-size: 11px !important;
    color: #8290a2 !important;
}
@media (prefers-reduced-motion: reduce) {
    .core-card { transition: none !important; }
    .core-card:hover { transform: none; box-shadow: none !important; }
}

/* ═══ 首页自定义展示卡统一报表风格（widget-card） ═══ */
.widget-card {
    background: #fff !important;
    border: 1px solid #e8edf3 !important;
    border-radius: 8px !important;
    box-shadow: 0 1px 2px rgba(30,41,56,.03) !important;
    padding: 16px !important;
    transition: transform 180ms ease, box-shadow 180ms ease !important;
}
.widget-card:hover {
    transform: translateY(-3px);
    box-shadow: 0 10px 24px rgba(30,41,56,.08) !important;
}
.widget-card .wc-icon {
    width: 20px !important;
    height: 20px !important;
    font-size: 14px !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #8c3ee8 !important;
}
.widget-card .wc-val {
    font-size: 24px !important;
    font-weight: 750 !important;
    color: #1e2938 !important;
}
.widget-card .wc-label {
    font-size: 13px !important;
    color: #5b6b7f !important;
}
.widget-card .wc-sub {
    font-size: 11px !important;
    color: #8290a2 !important;
}
@media (prefers-reduced-motion: reduce) {
    .widget-card { transition: none !important; }
    .widget-card:hover { transform: none; box-shadow: none !important; }
}

/* ═══ 宿舍统计卡统一报表风格（stat-card） ═══ */
.stat-card {
    background: #fff !important;
    border: 1px solid #e8edf3 !important;
    border-radius: 8px !important;
    box-shadow: 0 1px 2px rgba(30,41,56,.03) !important;
    padding: 16px 16px 14px !important;
    transition: transform 180ms ease, box-shadow 180ms ease, border-color 180ms ease !important;
}
.stat-card:hover {
    transform: translateY(-3px) !important;
    box-shadow: 0 10px 24px rgba(30,41,56,.08) !important;
    border-color: #e0e6ee;
}
.stat-card .label {
    font-size: 13px !important;
    color: #5b6b7f !important;
    font-weight: 500 !important;
}
.stat-card .value {
    font-size: 24px !important;
    font-weight: 750 !important;
    color: #1e2938 !important;
    letter-spacing: -.5px !important;
    margin-top: 8px !important;
    display: block !important;
}
.stat-card .value.blue { color: #8c3ee8 !important; }
.stat-card .value.green { color: #2aab9f !important; }
.stat-card .value.orange, .stat-card .value.amber { color: #ec7d29 !important; }
.stat-card .value.red { color: #d7596d !important; }
@media (prefers-reduced-motion: reduce) {
    .stat-card { transition: none !important; }
    .stat-card:hover { transform: none !important; box-shadow: none !important; }
}

/* ═══ 宿舍统计卡图标（复用收入管理 es-ic 风格） ═══ */
.stat-card .label {
    display: flex !important;
    align-items: center;
    gap: 8px;
}
.stat-card .label .es-ic {
    width: 20px !important;
    height: 20px !important;
    font-size: 14px !important;
    border-radius: 0 !important;
    background: transparent !important;
    color: #8c3ee8 !important;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
}

/* ═══ 班级管理 v2（2026-08-23 重构：紧凑统计条 + 响应式网格 + 悬浮新增 + hover 移出） ═══ */
/* 顶部紧凑统计条 */
.cls-summary { display: block; background: #fff; border: 1px solid #eef1f5; border-radius: 16px; box-shadow: 0 1px 6px rgba(0,0,0,.04); padding: 12px 18px; margin-bottom: 14px; font-size: 0; }
.cls-summary-stats { display: inline-block; vertical-align: middle; white-space: nowrap; }
.cs-item { display: inline-block; vertical-align: middle; }
.cs-label { display: inline-block; font-size: 13px; color: #6e6e73; margin-right: 6px; vertical-align: middle; }
.cs-val { display: inline-block; font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; vertical-align: middle; }
.cs-val-warn { color: #d97706; }
.cs-sep { display: inline-block; vertical-align: middle; font-size: 14px; color: #d4d9e1; margin: 0 14px; }
.cls-summary-right { display: inline-block; vertical-align: middle; margin-left: 18px; }
.cls-summary-right .cls-filter-select { display: inline-block; width: auto; min-width: 130px; font-size: 13px; border-radius: 980px; padding: 6px 14px; border: 1px solid #e5e7eb; background: #fff; color: #1d1d1f; vertical-align: middle; }
.cls-detail-link { display: inline-block; font-size: 13px; font-weight: 600; color: #0071e3; margin: 0 16px 0 12px; vertical-align: middle; text-decoration: none; }
.cls-detail-link:active { color: #005bbd; }
.cls-add-fab { border-radius: 980px; padding: 8px 20px; min-height: 34px; font-size: 13px; vertical-align: middle; box-shadow: 0 2px 8px rgba(0,113,227,.28); }

/* 响应式网格：宽屏 4 列 / 常规 3 列（默认）/ 小屏 2 列 */
.cls-grid { margin-bottom: 14px; }
.cls-card { width: calc(33.333% - 10px); }
@media (min-width: 1400px) {
    .cls-card { width: calc(25% - 10px); }
}

/* 空班级：虚线边框 + 居中「去分班」引导 */
.cls-card-empty { border: 1.5px dashed #c3cddb; box-shadow: none; background: #fcfdff; }
.cls-card-empty .cls-progress { opacity: .35; }
.cls-empty { display: block; text-align: center; padding: 18px 8px; font-size: 13px; font-weight: 600; color: #0071e3; text-decoration: none; }
.cls-empty:active { color: #005bbd; }

/* 移出按钮：桌面 hover 才显示（触屏常显，无 hover 概念） */
@media (min-width: 768px) {
    .cls-body .member-out-form { opacity: 0; transition: opacity .15s; }
    .cls-body .member-row:hover .member-out-form,
    .cls-body .member-row:focus-within .member-out-form { opacity: 1; }
    .cls-body .member-row:hover { background: #f8fafc; }
}

/* 小屏 2 列 + 紧凑（手机 ≤767px） */
@media (max-width: 767px) {
    .cls-summary { padding: 10px 12px; }
    .cls-summary-stats { display: block; white-space: normal; text-align: center; margin-bottom: 10px; }
    .cls-summary-stats .cs-item { margin: 2px 0; }
    .cls-summary-stats .cs-sep { margin: 0 7px; }
    .cls-summary-stats .cs-label { font-size: 12px; }
    .cls-summary-stats .cs-val { font-size: 15px; }
    .cls-summary-right { display: block; margin-left: 0; text-align: center; }
    .cls-summary-right .cls-filter-select { min-height: 34px; }
    .cls-detail-link { margin: 0 10px; }
    .cls-add-fab { padding: 7px 16px; font-size: 13px; }
    .cls-card { width: calc(50% - 10px); margin: 5px; }
    .cls-head { padding: 10px 10px 6px; }
    .cls-name { font-size: 15px; }
    .cls-cap { font-size: 11px; }
    .cls-body { padding: 6px 10px 4px; }
    .cls-body .member-row { gap: 6px; padding: 5px 0; }
    .cls-body .member-av { width: 22px; height: 22px; font-size: 11px; }
    .cls-body .member-name { font-size: 12px; }
    .cls-body .member-out-form .btn { min-height: 26px; font-size: 11px; padding: 2px 8px; }
    .cls-actions { padding: 8px 10px 10px; }
    .cls-actions .btn { font-size: 11px; padding: 4px 10px; }
}

/* ═══ 班级管理 v2.1（2026-08-23：搜索 + 整卡筛选 + 成员统计 + 折叠 + 排序 + 满班禁选） ═══ */
.cls-search { display: inline-block; width: 130px; font-size: 13px; border-radius: 980px; padding: 6px 14px; border: 1px solid #e5e7eb; background: #fff; color: #1d1d1f; vertical-align: middle; margin-right: 8px; min-height: 32px; }
.cls-cap-wrap { flex: none; text-align: right; }
.cls-partner-stats { display: block; font-size: 10px; color: #86868b; margin-top: 2px; max-width: 130px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.member-hidden { display: none; }
.cls-more { display: block; width: 100%; margin: 8px 0 2px; padding: 6px 0; border: none; background: #f5f8ff; color: #0071e3; font-size: 12px; font-weight: 600; border-radius: 8px; cursor: pointer; }
.cls-more:active { background: #e8f0ff; }
.cls-actions .cls-move { color: #6e6e73; }
@media (max-width: 767px) {
    .cls-search { width: 100px; margin-right: 6px; }
    .cls-partner-stats { max-width: 90px; }
    .cls-actions { flex-wrap: wrap; }
    .cls-actions .btn { padding: 4px 8px; }
}

/* ═══ 合作方管理 v2（2026-08-23 Ant Design 风：统计条 / 筛选标签 / 卡片网格 / 三按钮） ═══ */
/* 顶部三按钮 */
.pt-header .ph-actions { gap: 10px; }
button.pt-btn-primary { background: #0066FF; border: 1px solid #0066FF; color: #fff; border-radius: 8px; padding: 7px 18px; font-size: 13px; min-height: 34px; }
button.pt-btn-primary:active { background: #0052cc; }
button.pt-btn-blue { background: #fff; border: 1px solid #0066FF; color: #0066FF; border-radius: 8px; padding: 7px 18px; font-size: 13px; min-height: 34px; }
button.pt-btn-blue:active { background: #eef4ff; }
button.pt-btn-red { background: #fff; border: 1px solid #ff3b30; color: #ff3b30; border-radius: 8px; padding: 7px 18px; font-size: 13px; min-height: 34px; }
button.pt-btn-red:active { background: #fff5f5; }

/* 统计条：浅灰底横向一行（inline-block 防 X5 乱序） */
.pt-stats { display: block; background: #f5f6f8; border-radius: 12px; padding: 12px 18px; margin-bottom: 14px; font-size: 0; text-align: center; }
.pt-stat { display: inline-block; vertical-align: middle; margin: 0 6px; }
.pt-stat-label { display: inline-block; font-size: 13px; color: #6e6e73; margin-right: 8px; vertical-align: middle; }
.pt-stat-val { display: inline-block; font-size: 18px; font-weight: 700; color: #1d1d1f; vertical-align: middle; letter-spacing: -.3px; }
.pt-stat-sep { display: inline-block; vertical-align: middle; color: #d4d9e1; margin: 0 4px; font-size: 14px; }

/* 筛选标签：圆角胶囊（横向滚动，防 X5 wrap 错乱） */
.pt-filter { display: block; white-space: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; margin-bottom: 14px; padding: 2px 0; }
.pt-filter::-webkit-scrollbar { display: none; }
.pt-pill { display: inline-block; background: #f0f2f5; border: none; border-radius: 14px; padding: 5px 14px; font-size: 13px; color: #333; margin-right: 8px; cursor: pointer; vertical-align: middle; }
.pt-pill.active { background: #0066FF; color: #fff; font-weight: 600; }
.pt-pill-cnt { font-size: 11px; opacity: .75; margin-left: 4px; }

/* 卡片网格：宽屏4列 / 常规3列 / 平板2列 / 手机1列 */
.pt-grid { display: block; font-size: 0; margin: -6px; margin-bottom: 10px; }
.pt-card { display: inline-block; vertical-align: top; box-sizing: border-box; width: calc(33.333% - 12px); margin: 6px; background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 2px 10px rgba(17,24,39,.05); overflow: hidden; font-size: 14px; }
.pt-card-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 8px; padding: 14px 16px 8px; cursor: pointer; user-select: none; }
.pt-card-title { min-width: 0; }
.pt-name { font-size: 17px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; }
.pt-contact { font-size: 12px; color: #86868b; margin-left: 8px; }
.pt-card-ops { flex: none; }
.pt-op { border: none; background: none; color: #0066FF; font-size: 12px; font-weight: 600; cursor: pointer; padding: 2px 6px; }
.pt-op-red { color: #ff3b30; }
.pt-card-body { padding: 4px 16px 12px; cursor: pointer; user-select: none; }
.pt-row1 { display: block; font-size: 0; margin-bottom: 8px; }
.pt-row1 .pt-tag, .pt-gender { display: inline-block; vertical-align: middle; }
.pt-gender { font-size: 12px; color: #86868b; margin-left: 10px; }
.pt-row2 { display: block; font-size: 0; margin-bottom: 10px; }
.pt-row2 .pt-tag { display: inline-block; vertical-align: middle; margin: 0 8px 6px 0; }
.pt-tag { font-size: 11px; font-weight: 600; padding: 2px 10px; border-radius: 10px; }
.pt-tag-green { background: #e8f9ef; color: #1a9d49; }
.pt-tag-orange { background: #fff3e8; color: #e8790c; }
.pt-tag-gray { background: #f0f2f5; color: #6e6e73; }
.pt-expand-hint { font-size: 12px; color: #0066FF; text-align: center; padding-top: 8px; border-top: 1px dashed #eef1f5; }
.pt-card.open .pt-expand-hint { color: #0052cc; }
.pt-body { padding: 0; }
.pt-body .table-wrap { border-top: 1px solid #f0f2f6; }

@media (min-width: 1400px) {
    .pt-card { width: calc(25% - 12px); }
}
@media (min-width: 768px) and (max-width: 1024px) {
    .pt-card { width: calc(50% - 12px); }
}
@media (max-width: 767px) {
    .pt-stats { padding: 10px 6px; }
    .pt-stat-label { font-size: 12px; margin-right: 5px; }
    .pt-stat-val { font-size: 15px; }
    .pt-card { width: calc(100% - 12px); }
    .pt-card-head { padding: 12px 14px 6px; }
    .pt-card-body { padding: 4px 14px 10px; }
    button.pt-btn-primary, button.pt-btn-blue, button.pt-btn-red { padding: 6px 12px; font-size: 12px; }
}

/* ═══ 合作方管理 v2.1（2026-08-23：展开整行明细 + 空态 + 卡片排序 + 新增弹窗权限） ═══ */
/* 展开学员明细时卡片独占整行（表格全宽，解决明细看不清） */
.pt-card.open { width: calc(100% - 12px); }
/* 搜索/筛选无结果空态 */
.pt-empty { text-align: center; padding: 32px 16px; color: #86868b; font-size: 13px; background: #fff; border: 1.5px dashed #d4d9e1; border-radius: 14px; margin-bottom: 10px; }
/* 手机端明细表格卡片化微调（data-label 全局规则生效后） */
@media (max-width: 767px) {
    .pt-body table td { padding: 10px 12px; }
    .pt-body table tr { margin-bottom: 8px; }
}

/* ═══ 月考成绩与自动分班 v2（2026-08-23 五 Tab 重构：考试卡片 / 成绩录入 / 分栏预览 / 时间轴） ═══ */
/* Tab 导航：下划线式（用户定案风格） */
.ex-tabs { display: block; white-space: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; border-bottom: 1px solid #eef1f5; margin-bottom: 16px; padding: 0 2px; }
.ex-tabs::-webkit-scrollbar { display: none; }
.ex-tab { position: relative; display: inline-block; padding: 9px 14px 11px; font-size: 14px; font-weight: 600; color: #6b7280; background: none; border: none; cursor: pointer; white-space: nowrap; }
.ex-tab.on { color: #0066FF; }
.ex-tab.on::after { content: ''; position: absolute; left: 10px; right: 10px; bottom: -1px; height: 2.5px; border-radius: 2px; background: #0066FF; }
.ex-panel { display: none; }
.ex-panel.on { display: block; }

/* Tab1 考试卡片网格 */
.ex-exam-grid { display: block; font-size: 0; margin: -6px; }
.ex-exam-card { display: inline-block; vertical-align: top; box-sizing: border-box; width: calc(33.333% - 12px); margin: 6px; background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 2px 10px rgba(17,24,39,.05); padding: 14px 16px; font-size: 14px; }
.ex-exam-card-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.ex-exam-name { font-size: 16px; font-weight: 700; color: #1d1d1f; letter-spacing: -.3px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ex-exam-date { font-size: 12px; color: #86868b; flex: none; }
.ex-exam-stats { display: block; font-size: 0; margin-bottom: 12px; }
.ex-exam-stat { display: inline-block; font-size: 12px; color: #6e6e73; background: #f5f6f8; border-radius: 10px; padding: 2px 10px; margin-right: 8px; }
.ex-exam-actions { display: block; font-size: 0; }
.ex-exam-actions .btn { margin: 0 6px 6px 0; }
.ex-new-exam { border: 1.5px dashed #c3cddb !important; box-shadow: none !important; background: #fcfdff !important; text-align: center; cursor: pointer; padding: 34px 10px; }
.ex-new-exam span { color: #0066FF; font-weight: 600; font-size: 14px; }

/* Tab2 成绩录入 */
.ex-scores-bar { display: block; background: #fff; border: 1px solid #eef1f5; border-radius: 14px; padding: 10px 14px; margin-bottom: 12px; font-size: 0; box-shadow: 0 1px 6px rgba(0,0,0,.04); }
.ex-scores-bar select, .ex-scores-bar input { display: inline-block; vertical-align: middle; font-size: 13px; border-radius: 980px; border: 1px solid #e5e7eb; padding: 6px 14px; background: #fff; color: #1d1d1f; margin-right: 8px; min-height: 32px; }
.ex-scores-actions { display: inline-block; vertical-align: middle; float: right; font-size: 0; }
.ex-scores-actions .btn { margin-left: 6px; }

/* Tab3 自动分班：左配置右预览 */
.ex-auto-wrap { display: block; font-size: 0; margin: -6px; }
.ex-auto-left, .ex-auto-right { display: inline-block; vertical-align: top; box-sizing: border-box; width: calc(40% - 12px); margin: 6px; font-size: 14px; }
.ex-auto-right { width: calc(60% - 12px); }
.ex-auto-config { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 2px 10px rgba(17,24,39,.05); padding: 16px; }
.ex-auto-config .form-group { margin-bottom: 14px; }
.ex-auto-config .form-group label { display: block; font-size: 13px; font-weight: 600; color: #1d1d1f; margin-bottom: 6px; }
.ex-mode-radio { display: block; font-size: 13px; color: #1d1d1f; padding: 8px 12px; border: 1px solid #eef1f5; border-radius: 10px; margin-bottom: 8px; cursor: pointer; }
.ex-mode-radio.on { border-color: #0066FF; background: #f0f6ff; }
.ex-mode-radio input { margin-right: 8px; accent-color: #0066FF; }
.ex-preview-box { background: #fff; border: 1px solid #eef1f5; border-radius: 14px; box-shadow: 0 2px 10px rgba(17,24,39,.05); padding: 16px; min-height: 220px; box-sizing: border-box; }
.ex-preview-title { font-size: 14px; font-weight: 700; color: #1d1d1f; margin-bottom: 12px; }
.ex-preview-title span { font-size: 12px; color: #86868b; font-weight: 400; margin-left: 8px; }
.ex-preview-cards { display: block; font-size: 0; margin: -4px; }
.ex-pv-card { display: inline-block; vertical-align: top; box-sizing: border-box; width: calc(25% - 8px); margin: 4px; border: 1px solid #eef1f5; border-radius: 12px; padding: 12px 8px; text-align: center; background: #fff; }
.ex-pv-name { font-size: 13px; font-weight: 700; color: #0066FF; margin-bottom: 4px; }
.ex-pv-count { font-size: 18px; font-weight: 700; color: #1d1d1f; }
.ex-pv-range { font-size: 11px; color: #86868b; margin-top: 2px; }
.ex-preview-hint { text-align: center; color: #86868b; font-size: 13px; padding: 60px 10px; }
.ex-auto-foot { display: block; text-align: right; margin-top: 14px; font-size: 0; }
.ex-auto-foot .btn { margin-left: 10px; }

/* Tab4 分班结果 */
.ex-partner-item { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; background: #fff; border: 1px solid #eef1f5; border-radius: 12px; padding: 10px 14px; margin-bottom: 8px; cursor: pointer; }
.ex-partner-item.open { border-color: #0066FF; }
.ex-partner-tag { font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: 10px; background: #e8f9ef; color: #1a9d49; }
.ex-partner-total { font-size: 12px; color: #86868b; }
.ex-partner-summary { font-size: 12px; color: #86868b; background: #f5f6f8; border-radius: 10px; padding: 2px 10px; }
.ex-partner-arrow { font-size: 12px; color: #0066FF; font-weight: 600; margin-left: auto; }
.ex-partner-detail { display: none; }
.ex-partner-detail.open { display: block; }
.ex-partner-detail { background: #fafbfc; border: 1px solid #eef1f5; border-top: none; border-radius: 0 0 12px 12px; padding: 10px 14px; margin: -8px 0 8px; }
.ex-partner-classes { display: block; font-size: 0; text-align: left; }
.ex-cls-pill { display: inline-block; font-size: 11px; background: #f0f2f5; color: #6e6e73; border-radius: 10px; padding: 2px 10px; margin: 2px 0 2px 6px; }
.ex-manual { margin-top: 14px; }

/* 分班结果 v2：考试筛选 + 班级折叠列表 + 学员明细 */
.ex-result-toolbar select { width: 220px; font-size: 13px; border-radius: 980px; border: 1px solid #e5e7eb; padding: 6px 14px; background: #fff; color: #1d1d1f; min-height: 34px; }
.ex-rs-title { font-size: 13px; font-weight: 700; color: #1d1d1f; margin: 12px 0 8px; }
.ex-rs-item { display: flex; align-items: center; gap: 10px; background: #fff; border: 1px solid #eef1f5; border-radius: 12px; padding: 10px 14px; margin-bottom: 8px; cursor: pointer; }
.ex-rs-item.open { border-color: #0066FF; }
.ex-rs-name { font-size: 14px; font-weight: 700; color: #1d1d1f; }
.ex-rs-count { font-size: 12px; color: #6e6e73; background: #f5f6f8; border-radius: 10px; padding: 2px 10px; }
.ex-rs-range { font-size: 11px; color: #e8790c; background: #fff3e8; border-radius: 10px; padding: 2px 10px; }
.ex-rs-arrow { font-size: 12px; color: #0066FF; font-weight: 600; margin-left: auto; }
.ex-rs-detail { display: none; }
.ex-rs-detail.open { display: block; }
.ex-rs-detail { background: #fafbfc; border: 1px solid #eef1f5; border-top: none; border-radius: 0 0 12px 12px; padding: 10px 14px; margin: -8px 0 8px; max-height: 320px; overflow-y: auto; }
.ex-rs-row { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 5px 0; border-bottom: 1px dashed #eef1f5; font-size: 13px; }
.ex-rs-row:last-child { border-bottom: none; }
.ex-rs-score { font-size: 11px; color: #86868b; }
.ex-rs-empty { text-align: center; color: #86868b; font-size: 13px; padding: 30px 10px; }

/* Tab5 历史时间轴 */
.ex-timeline { position: relative; padding-left: 22px; }
.ex-timeline::before { content: ''; position: absolute; left: 6px; top: 6px; bottom: 6px; width: 2px; background: #eef1f5; border-radius: 1px; }
.ex-his-item { position: relative; margin-bottom: 12px; }
.ex-his-dot { position: absolute; left: -20px; top: 16px; width: 10px; height: 10px; border-radius: 50%; background: #0066FF; border: 2px solid #fff; box-shadow: 0 0 0 2px #0066FF; }
.ex-his-card { background: #fff; border: 1px solid #eef1f5; border-radius: 12px; box-shadow: 0 1px 6px rgba(0,0,0,.04); overflow: hidden; }
.ex-his-head { display: flex; align-items: center; gap: 10px; padding: 10px 14px; cursor: pointer; flex-wrap: wrap; }
.ex-his-time { font-size: 12px; color: #86868b; font-weight: 600; }
.ex-his-basis { flex: 1; font-size: 13px; color: #1d1d1f; font-weight: 600; }
.ex-his-by { font-size: 11px; color: #86868b; }
.ex-his-cnt { font-size: 11px; background: #eef4ff; color: #0066FF; border-radius: 10px; padding: 1px 8px; font-weight: 600; }
.ex-his-detail { display: none; border-top: 1px solid #f0f2f6; padding: 6px 14px; max-height: 300px; overflow-y: auto; }
.ex-his-detail.open { display: block; }
.ex-his-row { display: flex; gap: 8px; align-items: center; padding: 5px 0; border-bottom: 1px dashed #f0f2f6; font-size: 12px; }
.ex-his-row:last-child { border-bottom: none; }
.ex-his-old { color: #86868b; }
.ex-his-new { color: #0066FF; font-weight: 600; }

@media (min-width: 1400px) {
    .ex-exam-card { width: calc(25% - 12px); }
}
@media (max-width: 767px) {
    .ex-exam-card { width: calc(100% - 12px); }
    .ex-auto-left, .ex-auto-right { width: calc(100% - 12px); }
    .ex-pv-card { width: calc(50% - 8px); }
    .ex-scores-actions { float: none; display: block; margin-top: 8px; }
    .ex-scores-actions .btn { margin: 0 6px 6px 0; }
    .ex-scores-bar select, .ex-scores-bar input { width: 100%; margin: 0 0 6px; box-sizing: border-box; }
    .ex-tab { font-size: 13px; padding: 8px 10px 10px; }
    .ex-partner-classes { text-align: left; }
    .ex-his-head { gap: 6px; }
    .ex-his-basis { flex: 1 1 100%; order: 3; }
}
