*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
html,body{height:100%;background:#faf3eb;overflow-x:hidden}
body{font-family:-apple-system,BlinkMacSystemFont,'PingFang SC','Helvetica Neue',Helvetica,Arial,sans-serif;color:#5c4033;font-size:14px}

/* === LAYOUT === */
.admin-wrap{display:flex;flex-direction:column;height:100dvh;max-width:1200px;margin:0 auto}

/* === TOPBAR === */
.topbar{background:#fff;border-bottom:1px solid #e8d5c4;padding:12px 20px;display:flex;align-items:center;justify-content:space-between;flex-shrink:0}
.topbar-brand{display:flex;align-items:center;gap:10px}
.topbar-logo{width:36px;height:36px;background:transparent;border-radius:8px;display:flex;align-items:center;justify-content:center;overflow:hidden;padding:0}
.topbar-logo img{width:36px;height:36px;display:block;border-radius:8px;object-fit:cover}
.topbar-title{font-size:16px;font-weight:700;color:#5c4033}
.topbar-sub{font-size:11px;color:#9ca3af}
.topbar-right{display:flex;align-items:center;gap:12px}
.user-info{display:flex;align-items:center;gap:8px}
.user-avatar{width:32px;height:32px;background:#e8d5c4;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;color:#8b6347}
.user-name{font-size:14px;font-weight:600;color:#5c4033}
.user-role{font-size:11px;color:#9ca3af}
.btn-logout{padding:6px 14px;border:1px solid #e8d5c4;border-radius:6px;background:#fff;color:#8b6347;font-size:13px;cursor:pointer}

/* === A 阶段: 权限概览 chip === */
.perm-chips{display:flex;align-items:center;gap:6px;padding:4px 8px;border-radius:8px;background:#faf3eb;border:1px solid #f0e4d2}
.perm-chip{font-size:12px;padding:2px 8px;border-radius:6px;font-weight:600;display:inline-flex;align-items:center;gap:3px;line-height:1.4}
.perm-chip b{font-size:13px;font-weight:700}
.perm-chip-w{background:#d1fae5;color:#065f46}
.perm-chip-r{background:#dbeafe;color:#1e40af}
.perm-chip-n{background:#fee2e2;color:#991b1b}
@media(max-width:540px){.perm-chips{padding:3px 5px;gap:3px}.perm-chip{padding:1px 5px;font-size:11px}.perm-chip b{font-size:12px}}

/* === A 阶段: 按钮级权限感知 === */
.perm-disabled{opacity:.35;cursor:not-allowed !important;filter:grayscale(.8)}
.perm-disabled:hover{background:inherit !important}
.perm-readonly{opacity:.6;cursor:not-allowed !important;border-style:dashed !important}
.perm-readonly::after{content:" 👁";font-size:11px}

/* === MAIN BODY === */
.admin-body{display:flex;flex:1;overflow:hidden}

/* === SIDEBAR === */
/* v2026-06-12 侧边栏重做: 暖米白卡片化, 参考权限页改版风格 */
.sidebar{width:220px;background:linear-gradient(180deg,#fdf8f0 0%,#faf3eb 100%);border-right:1px solid #f0e6dc;padding:18px 12px;flex-shrink:0;overflow-y:auto;box-shadow:1px 0 8px rgba(139,99,71,.04)}
.sidebar-section{margin-bottom:14px;background:rgba(255,255,255,.55);border-radius:14px;padding:8px 6px;border:1px solid rgba(240,230,220,.7)}
.sidebar-section-title{padding:8px 12px 6px;font-size:11px;color:#b08968;font-weight:700;text-transform:uppercase;letter-spacing:.8px;display:flex;align-items:center;gap:6px}
.sidebar-section-title::before{content:'';display:inline-block;width:3px;height:11px;background:linear-gradient(180deg,#c4956a,#8b6347);border-radius:2px}
.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;margin:2px 0;font-size:13.5px;color:#5c4033;cursor:pointer;border-radius:10px;transition:all .18s ease;text-decoration:none;position:relative;border-left:3px solid transparent}
.nav-item:hover{background:rgba(255,255,255,.85);color:#3d2b1f;transform:translateX(2px);box-shadow:0 2px 6px rgba(139,99,71,.06)}
.nav-item .icon{font-size:16px;width:22px;text-align:center;flex-shrink:0}
.nav-item.active{background:linear-gradient(135deg,#c4956a 0%,#8b6347 100%);color:#fff;font-weight:600;box-shadow:0 4px 12px rgba(139,99,71,.25);transform:translateX(2px);border-left-color:transparent}
.nav-item.active::after{content:'';position:absolute;right:8px;top:50%;transform:translateY(-50%);width:6px;height:6px;background:#fff;border-radius:50%;opacity:.85}
.nav-item.active:hover{background:linear-gradient(135deg,#b8855a 0%,#7a5338 100%);color:#fff}

/* === MAIN CONTENT === */
.main-content{flex:1;overflow-y:auto;overflow-x:hidden;padding:24px}

/* === CARDS === */
.card{background:#fff;border:1px solid #e8d5c4;border-radius:12px;padding:20px;margin-bottom:16px}
.card-title{font-size:15px;font-weight:700;color:#5c4033;margin-bottom:16px;display:flex;align-items:center;gap:8px}
.card-title .icon{font-size:18px}
.card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:14px}
.stat-card{background:#faf3eb;border:1px solid #e8d5c4;border-radius:10px;padding:16px;cursor:pointer;transition:all .15s}
.stat-card:hover{border-color:#8b6347;transform:translateY(-1px)}
.stat-card .stat-num{font-size:28px;font-weight:800;color:#8b6347}
.stat-card .stat-label{font-size:13px;color:#9ca3af;margin-top:4px}
.stat-card .stat-icon{font-size:24px;margin-bottom:8px}

/* === QUICK ACTIONS === */
.action-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:12px}
.action-item{display:flex;align-items:center;gap:12px;padding:14px 16px;background:#faf3eb;border:1px solid #e8d5c4;border-radius:10px;cursor:pointer;transition:all .15s;text-decoration:none;color:#5c4033}
.action-item:hover{border-color:#8b6347;background:#fff}
.action-item .action-icon{font-size:22px}
.action-item .action-name{font-size:14px;font-weight:600}
.action-item .action-desc{font-size:11px;color:#9ca3af}

/* === LOGS TABLE === */
.log-table{width:100%;border-collapse:collapse}
.log-table th{text-align:left;padding:8px 12px;font-size:12px;color:#9ca3af;font-weight:600;border-bottom:1px solid #e8d5c4}
.log-table td{padding:10px 12px;font-size:13px;color:#5c4033;border-bottom:1px solid #f3f4f6}
.log-table tr:hover td{background:#faf3eb}
.badge{display:inline-flex;align-items:center;padding:2px 8px;border-radius:20px;font-size:11px;font-weight:500}
.badge-blue{background:#eff6ff;color:#2563eb}
.badge-green{background:#f0fdf4;color:#16a34a}
.badge-gray{background:#f9fafb;color:#6b7280}
.badge-orange{background:#fff7ed;color:#c2410c}

/* === MODAL === */
.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);display:none;align-items:center;justify-content:center;z-index:1000;padding:20px}
.modal-overlay.show{display:flex}
.modal{background:#fff;border-radius:14px;width:100%;max-width:420px;max-height:90dvh;overflow-y:auto;padding:24px}
.modal-title{font-size:16px;font-weight:700;color:#5c4033;margin-bottom:16px}
.form-group{margin-bottom:14px}
.form-group label{display:block;font-size:12px;color:#9ca3af;margin-bottom:5px}
.form-group input,.form-group select,.form-group textarea{width:100%;padding:9px 11px;border:1px solid #d4b896;border-radius:8px;font-size:14px;background:#faf3eb;color:#5c4033}
.form-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center;padding-right:30px}
.modal-actions{display:flex;gap:10px;margin-top:20px;justify-content:flex-end}
.btn{flex:1;padding:10px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;border:none;transition:all .15s}
/* trap-645 (2026-07-16)：弹窗底部按钮主次分明 —— 取消米色描边 / 主按钮棕色实心
   复用 #roleEditModal 那套样式（#roleEditModal .modal-actions 仍在 L1525-1529，权重更高） */
.modal-actions .btn-cancel{background:#faf3eb;color:#8b6347;border:1px solid #e8d5c4;padding:8px 20px;height:36px;box-sizing:border-box;min-width:80px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s}
.modal-actions .btn-cancel:hover{background:#f0e6dc;border-color:#8b6347}
.modal-actions .btn-primary{background:#8b6347;color:#fff;border:1px solid #8b6347;padding:8px 24px;height:36px;box-sizing:border-box;min-width:100px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;box-shadow:0 2px 6px rgba(139,99,71,.18);flex:none}
.modal-actions .btn-primary:hover{background:#6b4a38;border-color:#6b4a38}
.modal-actions .btn-primary:active{background:#5a3d2e}
.btn-primary{background:#8b6347;color:#fff;box-shadow:0 2px 6px rgba(139,99,71,.18)}
.btn-primary:hover{background:#6b4a38}
.btn-primary:active{background:#5a3d2e;box-shadow:0 1px 3px rgba(139,99,71,.2)}
.btn-secondary{background:#faf3eb;color:#8b6347;border:1px solid #e8d5c4}
.btn-secondary:hover{background:#f0e6dc}
.btn-link{background:none;border:none;color:#8b6347;cursor:pointer;font-size:13px;padding:2px 6px;text-decoration:underline;text-decoration-color:transparent;transition:all .15s}
.btn-link:hover{color:#6b4a38;text-decoration-color:#6b4a38}
.btn-danger{color:#dc2626}
.btn-danger:hover{color:#b91c1c}
.btn-ghost{background:#faf3eb;color:#8b6347;border:1px solid #e8d5c4}
.btn:disabled{opacity:.5;cursor:not-allowed}
.tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:10px;font-weight:500}
.tag-green{background:#dcfce7;color:#16a34a}
.tag-red{background:#fee2e2;color:#dc2626}
.tag-gray{background:#f3f4f6;color:#6b7280}
.btn-tab{padding:6px 14px;border-radius:20px;border:1px solid #e8d5c4;background:#fff;color:#8b6347;cursor:pointer;font-size:13px;transition:all .15s}
.btn-tab.active{background:#8b6347;color:#fff;border-color:#8b6347}

/* === TOAST === */
.toast{position:fixed;bottom:24px;left:50%;transform:translateX(-50%) translateY(80px);background:#333;color:#fff;padding:10px 20px;border-radius:8px;font-size:14px;z-index:2000;transition:transform .3s}
.toast.show{transform:translateX(-50%) translateY(0)}
.toast.error{background:#dc2626}
.toast.success{background:#16a34a}

/* === SECTION TITLES === */
.section-title{font-size:18px;font-weight:700;color:#5c4033;margin-bottom:16px}

/* ======= ROLE MAPPING STYLES ======= */
.role-mapping-table{width:100%;border-collapse:collapse}
.role-mapping-table th{text-align:left;padding:8px 12px;font-size:12px;color:#9ca3af;font-weight:600;background:#faf3eb;border-bottom:1px solid #e8d5c4}
.role-mapping-table td{padding:8px 12px;font-size:13px;color:#5c4033;border-bottom:1px solid #f3f4f6;vertical-align:middle}
.role-mapping-table tr:hover td{background:#faf8f5}
.role-mapping-table .lcf-tag{display:inline-block;font-size:11px;padding:2px 8px;border-radius:10px;background:#f3e8ff;color:#7c3aed;margin:2px}

/* ======= DATA TABLE (shared for all admin tables) ======= */
.data-table{width:100%;border-collapse:collapse}
.data-table th{text-align:left;padding:8px 14px;font-size:12px;color:#9ca3af;font-weight:600;background:#faf3eb;border-bottom:1px solid #e8d5c4;white-space:nowrap}
.data-table td{padding:8px 14px;font-size:13px;color:#5c4033;border-bottom:1px solid #f3f4f6;vertical-align:middle}
.data-table tr:hover td{background:#faf8f5}
.data-table{font-size:13px}

/* ======= PERMISSION ADMIN STYLES ======= */
.perm-table-wrap{background:#fff;border:1px solid #e8d5c4;border-radius:12px;overflow:hidden}
.perm-table{width:100%;border-collapse:collapse}
.perm-table th{text-align:left;padding:10px 14px;font-size:12px;color:#9ca3af;font-weight:600;background:#faf3eb;border-bottom:1px solid #e8d5c4}
.perm-table td{padding:8px 14px;font-size:13px;color:#5c4033;border-bottom:1px solid #f3f4f6;vertical-align:middle}
.perm-table tr:last-child td{border-bottom:none}
.perm-table tr:hover td{background:#faf8f5}
.page-name-cell{display:flex;align-items:center;gap:8px}
.page-name-cell .page-name{font-weight:600;font-size:14px}
.page-name-cell .page-key{font-size:11px;color:#9ca3af;font-family:monospace}
select.sel-perm, select.sel-scope{
  padding:5px 26px 5px 10px;border:1px solid #d4b896;border-radius:6px;background:#faf3eb;
  color:#5c4033;font-size:13px;cursor:pointer;-webkit-appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 8px center;
  transition:border-color .15s;
}
select.sel-perm:focus, select.sel-scope:focus{border-color:#8b6347;outline:none}
select.sel-perm.writable{border-color:#16a34a;background:#f0fdf4}
select.sel-perm.readonly{border-color:#2563eb;background:#eff6ff}
select.sel-perm.none{border-color:#dc2626;background:#fef2f2}
select.sel-scope.own{border-color:#f59e0b;background:#fffbeb}
select.sel-scope.area{border-color:#8b5cf6;background:#f5f3ff}
select.sel-scope.headquarters{border-color:#059669;background:#ecfdf5}
/* v4 (2026-06-11): 极简卡片化布局 - 每个一级菜单一个独立卡片 */
.perm-card{background:#fff;border:1px solid #e8d5c4;border-radius:10px;margin-bottom:14px;overflow:hidden;transition:box-shadow .2s}
.perm-card:hover{box-shadow:0 2px 8px rgba(139,99,71,.08)}
.perm-card-header{font-size:14px;font-weight:700;color:#5c4033;padding:12px 16px;background:linear-gradient(90deg,#faf3eb 0%,#fff 100%);border-bottom:1px solid #e8d5c4;display:flex;align-items:center;gap:10px}
.perm-card-count{font-size:11px;font-weight:400;color:#9ca3af;background:#f3f4f6;padding:1px 8px;border-radius:10px}
.perm-card-body{padding:6px 0}
.perm-row{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;transition:background .15s}
.perm-row:hover{background:#faf8f5}
.perm-row.changed-row{background:#fffbeb}
.perm-row.changed-row:hover{background:#fef3c7}
.perm-row-name{font-size:14px;font-weight:500;color:#5c4033;flex:1}
.perm-row .sel-perm{min-width:90px}
/* v2026-06-12: group 标题后缀 — 灰色小字 (简洁, 不抢眼) */
.perm-card-scope{color:#9ca3af;font-size:12px;font-weight:400;margin-left:4px}
.page-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px;flex-wrap:wrap;gap:12px}
.page-title{font-size:18px;font-weight:700;color:#5c4033}
.page-actions{display:flex;gap:10px;align-items:center}
.btn-p{adding:8px 16px;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;border:none;transition:all .15s}
.btn-p.btn-p-primary{background:#8b6347;color:#fff}
.btn-p.btn-p-primary:hover{background:#6b4a38}
.btn-p.btn-p-primary:disabled{background:#ccc;cursor:not-allowed}
.btn-p.btn-p-ghost{background:#faf3eb;color:#8b6347;border:1px solid #e8d5c4}
.stat-bar{display:flex;gap:16px;align-items:center;margin-bottom:16px;font-size:13px;color:#9ca3af}
.stat-bar strong{color:#5c4033}
.changed-row td{background:#fffbeb !important}
.filter-bar{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}
.filter-tab{padding:6px 16px;border-radius:20px;border:1px solid #e8d5c4;background:#fff;color:#5c4033;font-size:13px;cursor:pointer;transition:all .15s}
.filter-tab:hover{border-color:#8b6347}
.filter-tab.active{background:#8b6347;color:#fff;border-color:#8b6347}

/* ======= FLOW ADMIN STYLES ======= */
.flow-header{background:#fff;border:1px solid #e8d5c4;border-radius:12px;padding:16px 20px;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.flow-header-left{display:flex;align-items:center;gap:12px}
.flow-header-icon{font-size:28px}
.flow-header-info .flow-title{font-size:16px;font-weight:700;color:#5c4033}
.flow-header-info .flow-desc{font-size:12px;color:#9ca3af;margin-top:2px}
.flow-header-actions{display:flex;gap:8px;align-items:center}
.chain-visual{background:#fff;border:1px solid #e8d5c4;border-radius:12px;padding:20px;margin-bottom:16px}
.chain-visual-title{font-size:14px;font-weight:700;color:#5c4033;margin-bottom:16px}
.chain-nodes{display:flex;align-items:center;gap:0;overflow-x:auto;padding-bottom:8px}
.chain-node{flex-shrink:0;display:flex;flex-direction:column;align-items:center;gap:6px}
.chain-node-box{width:72px;height:72px;border:2px solid #e8d5c4;border-radius:12px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;background:#fff;transition:all .15s;cursor:pointer}
.chain-node-box:hover{border-color:#8b6347;transform:translateY(-2px);box-shadow:0 4px 12px rgba(139,99,71,.15)}
.chain-node-box.active{border-color:#8b6347;background:#faf3eb}
.chain-node-box .node-order{width:18px;height:18px;border-radius:50%;background:#e8d5c4;color:#5c4033;font-size:11px;font-weight:700;display:flex;align-items:center;justify-content:center}
.chain-node-box .node-icon{font-size:18px}
.chain-node-box .node-label{font-size:11px;color:#5c4033;font-weight:600;text-align:center;line-height:1.2}
.chain-node-box .node-type{font-size:10px;color:#9ca3af}
.chain-arrow{flex-shrink:0;color:#d4b896;font-size:20px;margin:0 4px}
.chain-empty{text-align:center;padding:40px;color:#9ca3af}
.node-editor{background:#fff;border:1px solid #e8d5c4;border-radius:12px;padding:20px;margin-bottom:16px}
.node-editor-title{font-size:14px;font-weight:700;color:#5c4033;margin-bottom:16px;display:flex;align-items:center;justify-content:space-between}
.node-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.node-form{flex:1}
.node-form-group{margin-bottom:12px}
.node-form-group label{display:block;font-size:12px;color:#9ca3af;margin-bottom:4px}
.node-form-group input,.node-form-group select,.node-form-group textarea{
  width:100%;padding:8px 10px;border:1px solid #d4b896;border-radius:8px;font-size:13px;background:#faf3eb;color:#5c4033;font-family:inherit
}
.node-form-group select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 24 24' fill='none' stroke='%239ca3af' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center;padding-right:26px;-webkit-appearance:none}
.node-form-group input:focus,.node-form-group select:focus,.node-form-group textarea:focus{outline:none;border-color:#8b6347}
.node-form-group textarea{resize:vertical;min-height:60px}
.skip-toggle{display:flex;gap:12px;align-items:center;margin-top:8px}
.skip-toggle label{font-size:12px;color:#9ca3af;cursor:pointer}
.skip-toggle input[type=radio]{accent-color:#8b6347}
.condition-hint{font-size:11px;color:#9ca3af;margin-top:4px}
.node-list{margin-top:16px;border-top:1px solid #f3f4f6;padding-top:16px}
.node-list-title{font-size:13px;font-weight:600;color:#5c4033;margin-bottom:10px}
.node-list-item{display:flex;align-items:center;gap:10px;padding:10px 12px;border:1px solid #e8d5c4;border-radius:8px;margin-bottom:8px;background:#faf3eb;transition:all .15s}
.node-list-item:hover{border-color:#8b6347}
.node-list-item.active{border-color:#8b6347;background:#faf3eb}
.node-list-item .nl-order{width:22px;height:22px;border-radius:50%;background:#8b6347;color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.node-list-item .nl-info{flex:1;min-width:0}
.node-list-item .nl-name{font-size:13px;font-weight:600;color:#5c4033}
.node-list-item .nl-meta{font-size:11px;color:#9ca3af;margin-top:2px}
.node-list-item .nl-type{font-size:10px;padding:1px 6px;border-radius:10px;margin-left:auto;flex-shrink:0}
.node-list-item .nl-type.role{background:#eff6ff;color:#2563eb}
.node-list-item .nl-type.person{background:#f5f3ff;color:#7c3aed}
.node-list-item .nl-type.condition{background:#fff7ed;color:#c2410c}
.node-list-item .nl-type.auto_pass{background:#f0fdf4;color:#16a34a}
.nl-actions{display:flex;gap:4px;margin-left:8px}
.nl-actions button{padding:4px 8px;border:none;border-radius:4px;cursor:pointer;font-size:12px;transition:all .15s}
.nl-actions .btn-edit{background:#eff6ff;color:#2563eb}
.nl-actions .btn-edit:hover{background:#dbeafe}
.nl-actions .btn-del{background:#fef2f2;color:#dc2626}
.nl-actions .btn-del:hover{background:#fee2e2}
.add-node-bar{display:flex;gap:8px;margin-top:16px;flex-wrap:wrap}
.add-node-btn{padding:7px 14px;border:1px dashed #d4b896;border-radius:8px;background:#faf3eb;color:#8b6347;font-size:13px;cursor:pointer;transition:all .15s;display:flex;align-items:center;gap:6px}
.add-node-btn:hover{border-color:#8b6347;color:#8b6347;background:#faf3eb}
.add-node-btn .icon{font-size:14px}

/* ======= EXAM 工具栏（trap-644 2026-07-16）=======
   统一 3 tab（题库/考试安排/MBTI）的工具栏：
   - 米色背景块跟 tab 行分开
   - 按钮统一尺寸（OA 风格） */
#exam-toolbar{display:flex;align-items:center;gap:10px;margin-top:16px;margin-bottom:16px;padding:10px 14px;background:#faf3eb;border:1px solid #f0e6dc;border-radius:8px}
#exam-toolbar .exam-toolbar-left{display:flex;gap:8px;align-items:center}
#exam-toolbar .exam-toolbar-right{margin-left:auto;font-size:12px;color:#9ca3af}
#exam-toolbar .exam-toolbar-hint{font-size:12px;color:#9ca3af}
#exam-toolbar button{padding:8px 16px;font-size:13px;font-weight:600;border-radius:8px;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:4px;height:36px;box-sizing:border-box}
#exam-toolbar .btn-primary{background:#8b6347;color:#fff;border:1px solid #8b6347;box-shadow:0 2px 6px rgba(139,99,71,.18)}
#exam-toolbar .btn-primary:hover{background:#6b4a38;border-color:#6b4a38}
#exam-toolbar .btn-primary:active{background:#5a3d2e}
#exam-toolbar .btn-secondary{background:#fff;color:#8b6347;border:1px solid #e8d5c4}
#exam-toolbar .btn-secondary:hover{background:#faf3eb;border-color:#8b6347}
.toggle-wrap{display:flex;align-items:center;gap:10px}
.toggle-switch{position:relative;width:40px;height:22px;cursor:pointer}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;inset:0;background:#ccc;border-radius:11px;transition:.2s}
.toggle-slider:before{content:'';position:absolute;width:16px;height:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s}
.toggle-switch input:checked + .toggle-slider{background:#16a34a}
.toggle-switch input:checked + .toggle-slider:before{transform:translateX(18px)}
.toggle-label{font-size:13px;color:#5c4033}
.btn-p.btn-p-green{background:#16a34a;color:#fff}
.btn-p.btn-p-green:hover{background:#15803d}
.btn-p.btn-p-red{background:#fff;color:#dc2626;border:1px solid #dc2626}
.btn-p.btn-p-red:hover{background:#fef2f2}

/* ======= LOADING ======= */
.loading-wrap{text-align:center;padding:60px;color:#9ca3af}
.spinner{display:inline-block;width:32px;height:32px;border:3px solid #e8d5c4;border-top-color:#8b6347;border-radius:50%;animation:spin .8s linear infinite;margin-bottom:12px}
@keyframes spin{to{transform:rotate(360deg)}}

/* ======= RESPONSIVE ======= */
/* === SIDEBAR TOGGLE (mobile) === */
.sidebar-toggle{
  display:none;background:none;border:none;padding:8px;cursor:pointer;border-radius:8px
}
.sidebar-toggle:hover{background:#faf3eb}
.sidebar-toggle span{display:block;width:22px;height:2px;background:#8b6347;border-radius:1px;margin:4px 0}

/* === MOBILE OVERLAY === */
.sidebar-overlay{
  display:none;position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:998;
  opacity:0;transition:opacity .25s
}
.sidebar-overlay.open{display:block;opacity:1}

/* === RESPONSIVE === */
@media(max-width:768px){
  .sidebar{width:160px}
  .main-content{padding:16px}
  .card-grid{grid-template-columns:1fr 1fr}
  .node-form-grid{grid-template-columns:1fr}
  .chain-node-box{width:60px;height:60px}
  .chain-arrow{font-size:16px}
}
@media(max-width:540px){
  /* v2026-06-10 P1 fix: topbar 拥挤, 标题换行, 3色chip 挤掉空间 */
  /* ① topbar: 减少 padding + 强制元素不收缩, 标题不换行 */
  .topbar{padding:8px 10px;gap:6px;min-height:48px}
  .topbar-brand{gap:6px;min-width:0;flex:1;overflow:hidden}
  .topbar-logo{width:30px;height:30px;flex-shrink:0}
  .topbar-logo img{width:30px;height:30px}
  .topbar-brand > div:last-child{min-width:0;overflow:hidden}
  .topbar-title{font-size:14px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;line-height:1.2}
  .topbar-sub{display:none}
  /* ② perm-chips: mobile 紧凑 (emoji+数字 紧凑 padding) */
  .topbar-right{gap:6px;flex-shrink:0}
  .perm-chips{padding:2px 4px;gap:3px}
  .perm-chip{padding:1px 5px;font-size:10px;line-height:1.4}
  .perm-chip b{font-size:11px;font-weight:700}
  /* ③ user-info + 退出按钮: 紧凑 */
  .user-info{gap:4px;flex-shrink:0}
  .user-avatar{width:26px;height:26px;font-size:11px}
  .user-name{font-size:12px;max-width:50px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;line-height:1.2}
  .user-role{display:none}
  .btn-logout{padding:5px 8px;font-size:11px;line-height:1.2;flex-shrink:0}

  /* ④ main-content: top padding 让出 topbar (48px), bottom 已留 80px 给 tab bar */
  .main-content{padding:12px 12px calc(80px + env(safe-area-inset-bottom,0))}

  /* ⑤ perm-role-card-simple: 长名字/长标识不能撑开 */
  .perm-role-card-simple{min-width:0;overflow:hidden}
  .perm-role-card-simple .prn-name{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .perm-role-card-simple .prn-cnt{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .perm-role-card-simple .prn-row1{gap:6px}

  /* ⑥ mobile-tab-btn: 图标文字间距统一 (避免'权限角色'偏小) */
  .mobile-tab-btn{gap:3px;padding:8px 0 6px}
  .mobile-tab-icon{font-size:20px;line-height:1}

  /* hamburger visible */
  .sidebar-toggle{display:block}

  /* admin layout: sidebar hidden → drawer */
  .admin-wrap{max-width:100%}
  .admin-body{position:relative}
  .sidebar{
    position:fixed;top:0;left:0;height:100dvh;width:200px;
    z-index:999;transform:translateX(-100%);transition:transform .25s ease;
    box-shadow:4px 0 20px rgba(0,0,0,.15);padding-top:60px;
    border-right:1px solid #e8d5c4;
    border-top:none;
    max-height:100vh;
  }
  .sidebar.open{transform:translateX(0)}
  .sidebar-section-title{font-size:10px;padding:6px 14px}
  .nav-item{padding:10px 14px;font-size:14px}
  .sidebar .nav-item.active{border-left-color:#8b6347}

  /* main content: no left padding on mobile, slight right padding for visual balance */
  .main-content{padding:14px 12px 24px}

  /* card grid → single column */
  .card-grid{grid-template-columns:1fr}
  .card{padding:16px;margin-bottom:12px;border-radius:10px}

  /* stat cards: full width, stacked vertically in a row */
  .stat-card .stat-num{font-size:26px}
  .stat-card .stat-icon{font-size:20px}

  /* action grid → single column */
  .action-grid{grid-template-columns:1fr}

  /* log table: horizontal scroll wrapper */
  .table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .table-scroll .log-table{min-width:600px}

  /* ⑦ v2026-06-10 P2 fix: perm-table 真实撑开根因 - 表格转卡片布局 */
  /* 根因: select.sel-perm/sel-scope 没有 max-width:100% → inline-block select min-width 撑爆容器 */
  /* 解决: mobile 下 table/thead/tbody/tr/td 全转 block,th 用 data-label 伪元素显示 */
  .perm-table,
  .perm-table thead,
  .perm-table tbody,
  .perm-table tr,
  .perm-table th,
  .perm-table td{display:block;width:100%}
  .perm-table thead{display:none}
  .perm-table-wrap{padding:0;border:0;background:transparent;overflow:visible}
  .perm-table{border:0}
  .perm-table tr{
    display:block;background:#fff;border:1px solid #e8d5c4;border-radius:10px;
    margin-bottom:10px;padding:10px 12px;box-shadow:0 1px 3px rgba(0,0,0,.04)
  }
  .perm-table td{
    display:flex;align-items:flex-start;gap:8px;padding:5px 0;border:0;
    font-size:13px;min-height:32px
  }
  .perm-table td + td{padding-top:6px;border-top:1px dashed #f3f4f6;margin-top:6px}
  .perm-table td:before{
    content:attr(data-label);flex-shrink:0;width:48px;padding-top:1px;
    font-size:11px;color:#9ca3af;font-weight:600;line-height:1.4
  }
  /* 页面列 v2026-06-10 P2 改: chip+page_key 合并到一行(轻量 meta), 标题单独一行, 提示单独一行
     改前: chip+标题(行1) / page_key(行2) / 提示(行3) → 标题被 chip 挤换行, 整列 62px
     改后: chip+page_key(行1) / 标题(行2) / 提示(行3,可选) → 标题独立展示, 整列 ≈48px
     跟 select 列 41px 接近, 视觉节奏更对齐, 标题区横向空间更宽 */
  .perm-table td[data-label="页面"]{align-items:flex-start}
  .perm-table td[data-label="页面"] .page-name-cell{
    flex:1;min-width:0;flex-direction:column;align-items:flex-start;gap:4px
  }
  .perm-table td[data-label="页面"] .page-name{
    font-size:14px;font-weight:600;word-break:break-all;line-height:1.35;
    color:#1f2937;flex:0 1 auto;min-width:0
  }
  /* chip 跟 page_key 同行展示: 视觉上是一行轻量 meta, 不占独立行高 */
  .perm-table td[data-label="页面"] .page-name-cell > .page-name-line{
    display:flex;align-items:center;gap:6px;flex-wrap:wrap;line-height:1.2;
    justify-content:flex-start
  }
  /* v2026-06-10 v3: type-hint-inline 跟 page-name 同行右对齐, 省 1 行高度 */
  .perm-table td[data-label="页面"] .type-hint-inline{
    flex:1;min-width:0;font-size:10px;color:#9ca3af;line-height:1.2;
    text-align:right;word-break:keep-all;white-space:nowrap;overflow:hidden;text-overflow:ellipsis
  }
  .perm-table td[data-label="页面"] .page-key{
    font-size:10px;word-break:break-all;color:#9ca3af;font-family:monospace;
    line-height:1.2
  }
  .perm-table td[data-label="页面"] > div:not(.page-name-cell){
    font-size:10px;word-break:break-all;max-width:100%;color:#9ca3af;line-height:1.3
  }
  /* 页面类型 chip: 展示(view)蓝 / 操作(action)黄 */
  .perm-table td[data-label="页面"] .type-badge{
    display:inline-block;padding:1px 6px;border-radius:4px;font-size:10px;
    font-weight:600;line-height:1.2;flex-shrink:0
  }
  .perm-table td[data-label="页面"] .type-badge.view{background:#dbeafe;color:#1e40af}
  .perm-table td[data-label="页面"] .type-badge.action{background:#fef3c7;color:#92400e}
  .perm-table td select.sel-perm,
  .perm-table td select.sel-scope{
    flex:1;min-width:0;max-width:calc(100% - 56px);font-size:12px;padding:5px 22px 5px 8px;height:30px
  }
  .perm-table td[data-label="权限级别"]{align-items:center}
  .perm-table td[data-label="店铺维度"]{align-items:center}
  .perm-table td[data-label="权限级别"] select.sel-perm{background-position:right 6px center}
  .perm-table td[data-label="店铺维度"] select.sel-scope{background-position:right 6px center}
  .perm-table tr.changed-row{background:#fffbeb !important;border-color:#f59e0b}

  /* topbar brand: hide env tag text, keep logo */
  .topbar-brand > div:last-child{min-width:0}

  /* ===== v2026-06-09 批次 A.1：mobile-first 底部 tab bar ===== */
  .mobile-tab-bar{
    display:flex;
    position:fixed;left:0;right:0;bottom:0;z-index:900;
    background:linear-gradient(180deg,#fdf8f0 0%,#faf3eb 100%);
    border-top:1px solid #e8d5c4;
    box-shadow:0 -2px 12px rgba(92,64,51,.08);
    padding-bottom:env(safe-area-inset-bottom,0);
    height:calc(60px + env(safe-area-inset-bottom,0));
    min-height:60px;
  }
  .mobile-tab-btn{
    flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
    background:transparent;border:none;cursor:pointer;
    color:#a08060;font-size:11px;letter-spacing:.3px;
    padding:6px 0;
    transition:all .15s;
  }
  .mobile-tab-btn .mobile-tab-icon{font-size:20px;line-height:1;filter:grayscale(0.4)}
  .mobile-tab-btn:active{background:#faf3eb}
  .mobile-tab-btn.active{color:#8b6347;font-weight:700}
  .mobile-tab-btn.active .mobile-tab-icon{filter:none;transform:scale(1.1)}
  .mobile-tab-btn.mobile-tab-more{
    border-left:1px solid #e8d5c4;
    background:#faf3eb;
  }
  .mobile-tab-btn.mobile-tab-more.active{background:#8b6347;color:#fff}
  .mobile-tab-btn.mobile-tab-more.active .mobile-tab-icon{filter:brightness(0) invert(1)}
  /* mobile main padding: 给底部 tab bar 留 60+env(safe) 空间 */
  .main-content{padding-bottom:calc(80px + env(safe-area-inset-bottom,0))}

  /* ===== v2026-06-09 批次 A.1：mobile 更多 sheet ===== */
  .mobile-more-overlay{
    display:none;position:fixed;inset:0;z-index:1100;
    background:rgba(40,28,20,0.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
    justify-content:flex-end;align-items:flex-end;
  }
  .mobile-more-sheet{
    position:fixed;left:0;right:0;bottom:0;max-width:540px;margin:0 auto;
    background:linear-gradient(180deg,#fdf8f0 0%,#faf3eb 100%);
    border-radius:20px 20px 0 0;
    box-shadow:0 -8px 32px rgba(92,64,51,.25);
    transform:translateY(100%);
    transition:transform .35s cubic-bezier(0.16,1,0.3,1);
    max-height:calc(100dvh - 80px);
    display:flex;flex-direction:column;
  }
  .mobile-more-sheet.open{transform:translateY(0)}
  .mobile-more-content{
    flex:1 1 auto;min-height:0;overflow-y:auto;
    padding:4px 16px 24px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
  }
  .mobile-more-card{
    background:#fff;border-radius:14px;padding:14px 12px;
    border:1px solid #f0e6dc;cursor:pointer;transition:all .2s;
    box-shadow:0 1px 3px rgba(92,64,51,.04);
    display:flex;flex-direction:column;align-items:flex-start;
    min-height:92px;
  }
  .mobile-more-card:active{
    transform:scale(0.97);background:#faf3eb;
  }
  .mobile-more-icon{
    width:36px;height:36px;border-radius:9px;
    display:flex;align-items:center;justify-content:center;
    font-size:18px;margin-bottom:8px;
    box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
  }
  .mobile-more-title{font-size:14px;font-weight:600;color:#3d2b1f;letter-spacing:.2px;margin-bottom:2px}
  .mobile-more-desc{font-size:11px;color:#a08060;line-height:1.4;letter-spacing:.2px}

  /* ===== v2026-06-09 批次 B：数据表格 + 弹窗 mobile 适配 ===== */

  /* view-header：竖排，按钮全宽 */
  .view-header{flex-direction:column;align-items:stretch !important;gap:10px !important}
  .view-header > .view-title{font-size:18px;margin-bottom:4px}
  .view-header > .btn-primary,
  .view-header > .btn-secondary{width:100%;padding:11px 12px;font-size:14px;justify-content:center}

  /* data-table 容器加水平滚动（爆款管理 / 课程 / 考试 / 角色） */
  .data-table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border-radius:8px}
  .data-table-wrap .data-table{min-width:680px}
  .data-table th{padding:8px 10px !important;font-size:11px !important}
  .data-table td{padding:8px 10px !important;font-size:12px !important}
  .data-table img{max-width:50px;max-height:50px;width:auto;height:auto;border-radius:4px}

  /* modal：去掉硬编码 min-width，按屏宽自适应 */
  .modal{min-width:0 !important;width:calc(100vw - 24px) !important;max-width:none !important;max-height:92dvh;padding:18px 16px !important;border-radius:14px 14px 0 0;align-self:flex-end}
  .modal-title{font-size:17px !important;margin-bottom:12px !important}
  .modal .form-row{flex-direction:column;align-items:stretch !important;gap:6px}
  .modal .form-row > label{width:auto !important;text-align:left}
  .modal .modal-actions{flex-direction:column-reverse;gap:8px}
  .modal .modal-actions > button{width:100%}

  /* 弹窗内的 filter settings → 卡片化 (v2026-07-10) */
  .fs-card{background:#fff;border:1px solid #e8d5c4;border-radius:10px;padding:14px 16px;margin-bottom:12px}
  .fs-card-title{font-size:15px;font-weight:700;color:#5c4a3a;margin-bottom:4px}
  .fs-card-desc{font-size:11px;color:#9ca3af;margin-bottom:10px}
  .fs-card-yrse{font-size:12px;margin-bottom:8px;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
  .fs-card-yrse label{cursor:pointer;margin-right:4px}
  .fs-card-yrse input[type=checkbox]{margin-right:2px}
  .fs-card-rows{display:flex;flex-direction:column;gap:6px}
  .fs-row{display:flex;align-items:center;gap:6px;padding:6px 10px;background:#faf8f5;border-radius:6px;font-size:13px;color:#333}
  .fs-brand{display:inline-block;min-width:32px;font-weight:700;color:#8b6347}
  .fs-estimate{color:#9ca3af;font-size:11px;margin-left:auto}
  .fs-card input[type=number]{padding:3px 4px !important;border:1px solid #d4c5b2 !important;border-radius:4px !important;text-align:center;font-size:13px !important;width:auto !important;min-width:0 !important;box-sizing:border-box !important}

  /* 弹窗内的双图对比：原图 / AI 图 改成竖排 */
  .img-compare-row{flex-direction:column !important;gap:12px !important}
  .img-compare-row > div{width:100% !important}
  .img-compare-row img{width:100% !important;height:auto !important;max-height:50vh;object-fit:contain}

  /* 弹窗内的 hot-product form：输入框全宽 */
  .form-grid{grid-template-columns:1fr !important;gap:10px}
}

/* ===== 爆款筛选条件设置 — 桌面端卡片样式 (v2026-07-11) ===== */
.fs-card {
  background: #fff;
  border: 1px solid #e8d5c4;
  border-radius: 12px;
  padding: 18px 20px;
  margin-bottom: 16px;
}
.fs-card-title {
  font-size: 16px;
  font-weight: 700;
  color: #5c4a3a;
  margin-bottom: 6px;
}
.fs-card-desc {
  font-size: 12px;
  color: #9ca3af;
  margin-bottom: 14px;
  line-height: 1.5;
}
.fs-card-yrse {
  display: flex;
  align-items: center;
  gap: 8px;
  flex-wrap: wrap;
  padding: 10px 14px;
  background: #faf8f5;
  border-radius: 8px;
  margin-bottom: 14px;
  font-size: 13px;
  color: #5c4a3a;
}
.fs-card-yrse > b {
  font-weight: 600;
  min-width: 34px;
}
.fs-card-yrse label {
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  gap: 3px;
  padding: 2px 6px;
  border-radius: 4px;
  transition: background 0.15s;
  font-size: 13px;
  user-select: none;
}
.fs-card-yrse label:hover { background: #f0e6dc; }
.fs-card-yrse input[type=checkbox] {
  margin: 0;
  accent-color: #8b6347;
  width: 14px;
  height: 14px;
}
.fs-card-rows {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.fs-row {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: #faf8f5;
  border-radius: 8px;
  font-size: 13px;
  color: #333;
  flex-wrap: wrap;
}
.fs-brand {
  display: inline-block;
  min-width: 52px;
  font-weight: 700;
  color: #8b6347;
  font-size: 14px;
}
.fs-estimate {
  color: #9ca3af;
  font-size: 12px;
  margin-left: auto;
  white-space: nowrap;
}
.fs-card input[type=number] {
  padding: 4px 6px;
  border: 1px solid #d4c5b2;
  border-radius: 5px;
  text-align: center;
  font-size: 13px;
  width: auto;
  min-width: 0;
  box-sizing: border-box;
}
.fs-card input[type=number]:focus {
  outline: none;
  border-color: #8b6347;
  box-shadow: 0 0 0 2px rgba(139,99,71,.15);
}

/* ===== v2026-06-09 批次 A.2：mobile 优先 + 桌面覆盖（外层/默认样式） ===== */
.desktop-only{display:none !important}
.mobile-only{display:block !important}
.mobile-card-list{display:flex;flex-direction:column;gap:10px}
.mobile-data-card{
  background:#fff;border:1px solid #f0e6dc;border-radius:12px;
  padding:12px 14px;box-shadow:0 1px 3px rgba(92,64,51,.04);
}
.mobile-data-card .mdc-row{
  display:flex;align-items:center;justify-content:space-between;
  padding:5px 0;font-size:13px;
}
.mobile-data-card .mdc-row + .mdc-row{border-top:1px solid #faf3eb}
.mobile-data-card .mdc-head{
  border-bottom:1px solid #faf3eb;padding-bottom:8px;margin-bottom:4px;
}
.mobile-data-card .mdc-title{
  font-size:14px;font-weight:700;color:#3d2b1f;letter-spacing:.2px;
  flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.mobile-data-card .mdc-key{color:#a08060;font-size:12px;flex-shrink:0;margin-right:8px}
.mobile-data-card .mdc-val{
  color:#3d2b1f;font-weight:500;text-align:right;
  min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.mobile-data-card code.mdc-val{
  background:#faf3eb;padding:2px 8px;border-radius:4px;font-size:11px;
  color:#8b6347;
}

/* ===== v2026-06-09 反馈批次：爆款管理 AI 图状态 + 角色 tab 卡片化 + 概况页交互优化 ===== */

/* ===== v2026-06-15 重构：爆款管理页简洁设计 ===== */

/* 1. 顶部操作栏 */
.hot-toolbar{
  display:flex;align-items:center;gap:10px;margin-bottom:12px;
}
.hot-toolbar .hot-title{
  font-size:16px;font-weight:700;color:#5c4033;flex-shrink:0;display:flex;align-items:center;gap:6px;
}
.hot-search{
  flex:1;max-width:280px;position:relative;
}
.hot-search input{
  width:100%;padding:7px 12px 7px 32px;font-size:13px;
  border:1px solid #e8d5c4;border-radius:6px;background:#fff;color:#5c4033;
  outline:none;transition:border-color .15s;box-sizing:border-box;
}
.hot-search input:focus{border-color:#8b6347}
.hot-search::before{
  content:'🔍';position:absolute;left:10px;top:50%;transform:translateY(-50%);
  font-size:12px;opacity:.5;
}
.hot-toolbar-right{display:flex;align-items:center;gap:6px;margin-left:auto}

/* 2. AI 进度条(精简) */
.hot-progress{
  display:flex;align-items:center;gap:12px;
  background:#fff;border:1px solid #e8d5c4;border-radius:8px;
  padding:10px 14px;margin-bottom:12px;
}
.hot-progress .hp-text{font-size:13px;color:#8b6347;white-space:nowrap}
.hot-progress .hp-num{font-weight:700;color:#5c4033}
.hot-progress .hp-num-done{color:#52c41a}
.hot-progress .hp-bar{
  flex:1;height:6px;background:#f5ebe0;border-radius:3px;overflow:hidden;min-width:80px;
}
.hot-progress .hp-fill{
  height:100%;background:#52c41a;border-radius:3px;transition:width .4s;
}
.hot-progress.is-complete .hp-fill{background:linear-gradient(90deg,#52c41a,#95de64)}
.hot-progress .hp-btn{
  padding:5px 12px;font-size:12px;font-weight:600;
  background:#8b6347;color:#fff;border:none;border-radius:6px;cursor:pointer;
  white-space:nowrap;
}
.hot-progress .hp-btn:hover{background:#6e4e36}
.hot-progress .hp-btn:disabled{opacity:.4;cursor:not-allowed}
.hot-progress .hp-btn-secondary{background:#fff;color:#8b6347;border:1px solid #e8d5c4}
.hot-progress .hp-btn-secondary:hover{background:#faf3eb;border-color:#8b6347}

/* 3. 类型 pill(扁平一行) */
.hot-pills{
  display:flex;align-items:center;gap:6px;margin-bottom:10px;flex-wrap:wrap;
}
.hot-pill{
  padding:6px 14px;font-size:13px;font-weight:500;
  background:#fff;border:1px solid #e8d5c4;border-radius:18px;
  color:#a08060;cursor:pointer;transition:all .15s;
  display:inline-flex;align-items:center;gap:5px;
}
.hot-pill:hover{border-color:#8b6347;color:#8b6347}
.hot-pill.active{background:#8b6347;color:#fff;border-color:#8b6347}
.hot-pill .pill-num{
  font-size:11px;padding:0 5px;border-radius:8px;
  background:rgba(0,0,0,.06);
}
.hot-pill.active .pill-num{background:rgba(255,255,255,.2)}

/* 4. 状态筛选(下拉 + 已选 chip) */
.hot-status-row{
  display:flex;align-items:center;gap:10px;margin-bottom:10px;font-size:12px;
}
.hot-status-row label{color:#9ca3af}
.hot-status-select{
  padding:4px 8px;font-size:12px;border:1px solid #e8d5c4;border-radius:4px;
  background:#fff;color:#5c4033;cursor:pointer;outline:none;
}

/* 5. 表格(精简列) */
.hot-table-wrap{background:#fff;border:1px solid #e8d5c4;border-radius:8px;overflow:hidden}
.hot-table{width:100%;border-collapse:collapse}
.hot-table th{
  text-align:left;padding:9px 12px;font-size:12px;font-weight:600;color:#9ca3af;
  background:#faf3eb;border-bottom:1px solid #e8d5c4;white-space:nowrap;
}
.hot-table td{
  padding:9px 12px;font-size:13px;color:#5c4033;
  border-bottom:1px solid #f3f4f6;vertical-align:middle;
}
.hot-table tbody tr{cursor:pointer;transition:background .1s}
.hot-table tbody tr:hover td{background:#faf8f5}
.hot-table tbody tr.hot-row-selected td{background:#fff7e6}
.hot-table tbody tr:last-child td{border-bottom:none}
.hot-table .col-check{width:36px}
.hot-table .col-name{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.hot-table .col-code{width:100px;color:#a08060;font-size:12px}
.hot-table .col-type{width:80px}
.hot-table .col-brand{width:70px}
.hot-table .col-priority{width:80px}
.hot-table .col-img{width:70px}
.hot-table .col-status{width:80px}
.hot-table .col-op{width:130px}
.hot-table .col-script{width:60px;text-align:center;color:#a08060}

/* 类型/品牌 badge(扁平同色系) */
.tag-qm{background:#f5ebe0;color:#8b6347}
.tag-he{background:#fff2e8;color:#d46b08}
.tag-today{background:#e6f7ff;color:#1890ff}
.tag-week7{background:#f9f0ff;color:#722ed1}
.tag-season{background:#fff7e6;color:#d46b08}
.tag-sellout{background:#fff1f0;color:#cf1322}
.tag-badge{
  display:inline-block;padding:1px 8px;font-size:11px;font-weight:600;
  border-radius:8px;white-space:nowrap;
}

/* 状态 badge (可点) */
.hot-status-badge{
  display:inline-block;padding:2px 10px;font-size:11px;font-weight:600;
  border-radius:10px;cursor:pointer;transition:opacity .15s;
  user-select:none;
}
.hot-status-badge:hover{opacity:.7}
.hot-status-active{background:#f6ffed;color:#389e0d;border:1px solid #b7eb8f}
.hot-status-inactive{background:#f5f5f5;color:#8c8c8c;border:1px solid #d9d9d9}

/* 优先级(双击编辑) */
.hot-priority{
  display:inline-block;padding:2px 10px;font-size:12px;font-weight:600;
  background:#f5ebe0;color:#8b6347;border-radius:10px;cursor:text;min-width:30px;
  text-align:center;
}
.hot-priority:hover{background:#e8d5c4}
.hot-priority[contenteditable=true]{background:#fff;outline:1px solid #8b6347}

/* AI 图单元(扁平化) */
.hot-ai-cell{position:relative;display:inline-block;line-height:0}
.hot-ai-cell img{
  width:48px;height:48px;object-fit:cover;border-radius:4px;display:block;
}
.hot-ai-cell.has-ai img{border:1.5px solid #52c41a}
.hot-ai-cell.no-ai{
  width:48px;height:48px;border:1.5px dashed #d9d9d9;border-radius:4px;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  cursor:pointer;background:#fafafa;font-size:10px;color:#a08060;
  transition:all .15s;
}
.hot-ai-cell.no-ai:hover{border-color:#8b6347;color:#8b6347;background:#faf3eb}

/* 操作按钮(极简) */
.hot-op-btn{
  width:28px;height:28px;border:1px solid #e8d5c4;border-radius:5px;
  background:#fff;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;
  font-size:13px;color:#5c4033;padding:0;margin-right:2px;
  transition:all .12s;
}
.hot-op-btn:hover{border-color:#8b6347;color:#8b6347;background:#faf3eb}
.hot-op-btn.op-danger:hover{border-color:#cf1322;color:#cf1322;background:#fff1f0}
.hot-more-wrap{position:relative;display:inline-block}
.hot-more-menu{
  position:absolute;top:100%;right:0;z-index:100;
  background:#fff;border:1px solid #e8d5c4;border-radius:6px;
  box-shadow:0 4px 12px rgba(0,0,0,.08);
  min-width:120px;display:none;padding:4px 0;
}
.hot-more-menu.open{display:block}
.hot-more-item{
  padding:7px 12px;font-size:13px;color:#5c4033;cursor:pointer;
  display:flex;align-items:center;gap:6px;
}
.hot-more-item:hover{background:#faf3eb}
.hot-more-item.danger{color:#cf1322}
.hot-more-item.danger:hover{background:#fff1f0}

/* 6. 批量工具栏(选中才出现) */
.hot-bulkbar{
  display:none;align-items:center;gap:8px;
  background:#faf3eb;border:1px solid #e8d5c4;border-radius:6px;
  padding:8px 12px;margin-bottom:10px;font-size:13px;
}
.hot-bulkbar.show{display:flex}
.hot-bulkbar .bulk-count{color:#8b6347;font-weight:600}
.hot-bulkbar button{
  padding:4px 10px;font-size:12px;border-radius:4px;border:none;cursor:pointer;
}
.hot-bulkbar .bulk-cancel{margin-left:auto;background:transparent;color:#9ca3af}
.hot-bulkbar .bulk-cancel:hover{color:#5c4033}
.hot-bulkbar .bulk-do{background:#8b6347;color:#fff;font-weight:600}
.hot-bulkbar .bulk-do:hover{background:#6e4e36}
.hot-bulkbar .bulk-warn{background:#fff;color:#8b6347;border:1px solid #e8d5c4}
.hot-bulkbar .bulk-warn:hover{border-color:#8b6347}

/* 7. 空状态 */
.hot-empty{
  text-align:center;padding:60px 20px;color:#a08060;font-size:13px;
}
.hot-empty .empty-icon{font-size:32px;margin-bottom:8px;opacity:.4}

/* 8. 响应式(小屏) */
@media (max-width: 768px) {
  .hot-toolbar{flex-wrap:wrap}
  .hot-search{max-width:100%;order:3;width:100%}
  .hot-pills{font-size:12px}
  .hot-pill{padding:5px 10px}
  .hot-table{font-size:12px}
  .hot-table th,.hot-table td{padding:7px 8px}
}


/* 爆款管理：AI 图单元格(已生成 vs 待生成) */
.ai-img-cell{position:relative;display:inline-block;line-height:0}
.ai-img-cell.has-ai a{position:relative;display:inline-block}
.ai-badge{
  position:absolute;top:-4px;right:-4px;
  width:18px;height:18px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  font-size:11px;font-weight:700;color:#fff;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
}
.ai-badge-done{background:#52c41a}
.ai-img-cell.no-ai{
  width:60px;height:60px;
  border:2px dashed #d9d9d9;border-radius:6px;
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;transition:all .15s;
  background:#fafafa;
}
.ai-img-cell.no-ai:hover{
  border-color:#1890ff;background:#e6f7ff;
  transform:scale(1.05);
}
.ai-placeholder{text-align:center;line-height:1}
.ai-placeholder-icon{font-size:18px;line-height:1;margin-bottom:2px}
.ai-placeholder-text{font-size:10px;color:#8c8c8c;letter-spacing:.3px}

/* 爆款管理：操作列图标按钮组 */
.op-group{display:inline-flex;align-items:center;gap:4px;flex-wrap:nowrap}
.op-icon{
  width:30px;height:30px;border:1px solid #e8d5c4;border-radius:6px;
  background:#fff;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:14px;line-height:1;padding:0;
  transition:all .15s;
}
.op-icon:hover{transform:translateY(-1px);box-shadow:0 2px 6px rgba(0,0,0,.08)}
.op-icon:active{transform:translateY(0)}
.op-icon-default{color:#595959}
.op-icon-default:hover{border-color:#8b6347;color:#8b6347;background:#faf3eb}
.op-icon-blue{color:#1890ff;border-color:#91d5ff}
.op-icon-blue:hover{border-color:#1890ff;background:#e6f7ff}
.op-icon-orange{color:#fa8c16;border-color:#ffd591}
.op-icon-orange:hover{border-color:#fa8c16;background:#fff7e6}
.op-icon-red{color:#ff4d4f;border-color:#ffccc7}
.op-icon-red:hover{border-color:#ff4d4f;background:#fff1f0}

/* 角色 tab 卡片化(v2026-06-09 反馈批次:加图标+3段进度条+3统计) */
#permRoleNav{
  display:grid !important;
  grid-template-columns:repeat(auto-fill,minmax(150px,1fr));
  gap:10px;
  background:transparent !important;
  margin-bottom:16px;
}
.perm-role-card{
  display:flex !important;flex-direction:column;
  padding:12px 14px !important;
  background:#fff;border:1px solid #f0e6dc !important;border-radius:10px;
  cursor:pointer;transition:all .2s;
  font-size:13px;color:#3d2b1f;
  margin:0 !important;min-height:78px;
  position:relative;overflow:hidden;
}
.perm-role-card:hover{
  border-color:#8b6347 !important;background:#faf3eb;
  transform:translateY(-2px);box-shadow:0 4px 12px rgba(139,99,71,.10);
}
.perm-role-card.active{
  background:linear-gradient(135deg,#8b6347 0%,#a67c52 100%) !important;
  border-color:#8b6347 !important;color:#fff !important;
  box-shadow:0 4px 12px rgba(139,99,71,.25);
}
.perm-role-card.active .prc-stats{color:rgba(255,255,255,.92)}
.perm-role-card .prc-head{
  display:flex;align-items:center;gap:6px;margin-bottom:8px;
}
.perm-role-card .prc-icon{font-size:16px;line-height:1;flex-shrink:0}
.perm-role-card .prc-name{
  font-weight:600;font-size:13px;flex:1;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.perm-role-card .prc-progress{
  display:flex;height:4px;background:rgba(0,0,0,.06);
  border-radius:2px;overflow:hidden;margin-bottom:6px;
}
.perm-role-card.active .prc-progress{background:rgba(255,255,255,.18)}
.perm-role-card .prc-seg{height:100%;transition:width .3s}
.perm-role-card .prc-seg-w{background:#52c41a}
.perm-role-card .prc-seg-r{background:#1890ff}
.perm-role-card.active .prc-seg-w{background:#fff;opacity:.9}
.perm-role-card.active .prc-seg-r{background:#fff;opacity:.6}
.perm-role-card .prc-stats{
  display:flex;gap:8px;font-size:11px;color:#8b6347;
  font-variant-numeric:tabular-nums;
}
.perm-role-card .prc-stat{display:inline-flex;align-items:center;gap:2px}
.perm-role-card .prc-stat-w{color:#52c41a}
.perm-role-card .prc-stat-r{color:#1890ff}
.perm-role-card .prc-stat-n{color:#9ca3af;opacity:.7}
#permRoleNav .nav-item.active .count{background:rgba(255,255,255,.25) !important}

/* v2026-06-10 A 方向:极简角色卡 — 替换原有图标+进度条+3数字结构 */
.perm-role-nav-simple{
  display:flex !important;
  flex-direction:column;
  gap:8px !important;
  background:transparent !important;
}
.perm-role-card-simple{
  display:flex !important;
  flex-direction:column;
  padding:12px 14px !important;
  background:#fff;
  border:1.5px solid #f0e6dc !important;
  border-left:1.5px solid #f0e6dc !important;
  border-radius:10px !important;
  cursor:pointer;
  transition:all .15s;
  font-size:14px;
  color:#3d2b1f;
  margin:0 !important;
  min-height:auto !important;
  position:relative;
  box-shadow:none !important;
}
.perm-role-card-simple:hover{
  border-color:#d4b896 !important;
  background:#fdf9f3;
}
/* v2026-06-10 用户反馈：选中态用整张底色变化，去掉左竖条
   已配置角色 active = 浅米色背景 + 棕色边框
   未配置角色 active = 浅米色背景 + 灰色边框（区分） */
.perm-role-card-simple.active{
  background:linear-gradient(135deg,#faf3eb 0%,#f5e9d8 100%) !important;
  color:#3d2b1f !important;
  box-shadow:inset 0 0 0 1.5px #8b6347 !important;
}
.perm-role-card-simple.active.cat-empty{
  background:linear-gradient(135deg,#f5f5f4 0%,#e7e5e4 100%) !important;
  box-shadow:inset 0 0 0 1.5px #a8a29e !important;
}
.perm-role-card-simple .prn-row1{
  display:flex;
  align-items:center;
  gap:8px;
  margin-bottom:2px;
}
.perm-role-card-simple .prn-dot{
  width:8px;height:8px;
  border-radius:50%;
  flex-shrink:0;
}
.perm-role-card-simple .prn-dot-configured{background:#10b981}
.perm-role-card-simple .prn-dot-empty{background:#d1d5db}
.perm-role-card-simple .prn-name{
  font-weight:600;
  font-size:14px;
  flex:1;
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.perm-role-card-simple .prn-cnt{
  font-size:13px;
  color:#6b5b48;
  font-variant-numeric:tabular-nums;
  font-weight:500;
}
.perm-role-card-simple .prn-row2{
  font-size:12px;
  color:#9ca3af;
  padding-left:16px;
  line-height:1.4;
}
/* 移动端单列 */
@media(max-width:540px){
  .perm-role-nav-simple{gap:6px !important}
  .perm-role-card-simple{padding:10px 12px !important}
}

/* 角色 tab 搜索框(插在 .filter-bar 后面) */
.perm-role-search{
  width:100%;padding:8px 12px 8px 32px;
  border:1px solid #e8d5c4;border-radius:8px;
  font-size:13px;color:#3d2b1f;
  background:#fff url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238b6347' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'><circle cx='11' cy='11' r='8'/><line x1='21' y1='21' x2='16.65' y2='16.65'/></svg>") no-repeat 10px center;
  background-size:14px;
  margin-bottom:8px;outline:none;transition:all .15s;
}
.perm-role-search:focus{
  border-color:#8b6347;box-shadow:0 0 0 3px rgba(139,99,71,.1);
}

/* 概况页：统计卡片可点击 + 快速操作扩到 6+ */
.stat-card{cursor:pointer;transition:all .2s;position:relative}
.stat-card:hover{
  transform:translateY(-2px);
  box-shadow:0 4px 16px rgba(139,99,71,.12);
  border-color:#8b6347;
}
.stat-card::after{
  content:'›';position:absolute;top:50%;right:14px;
  transform:translateY(-50%) translateX(-4px);
  font-size:18px;color:#8b6347;font-weight:700;
  opacity:0;transition:all .2s;
}
.stat-card:hover::after{opacity:1;transform:translateY(-50%) translateX(0)}

.action-item{cursor:pointer;transition:all .2s}
.action-item:hover{
  transform:translateY(-1px);
  background:#faf3eb;border-color:#8b6347;
  box-shadow:0 4px 12px rgba(139,99,71,.10);
}
/* v2026-06-09 二次反馈批次:删除冗余进度条 + 全部不显示角标 + 模块边界用不同浅色背景 + 紧凑间距 */
.stat-card{padding:14px 16px !important}
.stat-card .stat-icon{margin-bottom:4px !important}
.stat-card .stat-label{margin-top:2px !important}
/* 极简风：action-badge 永远不显示（如需启用需改 JS 删除 display:none） */
.action-item .action-badge{display:none !important}
.action-item .action-icon{
  width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;
  font-size:18px;flex-shrink:0;box-shadow:inset 0 1px 0 rgba(255,255,255,.5);
}
/* 模块边界用不同浅色背景区分 — 4 stat-card 区 = 暖白(#fff), 快速操作区 = 暖米(#faf3eb),
   审批流一览 = 暖白(#fff), 角色映射 = 暖米(#faf3eb), 整体视觉交替 */
.mod-warm-white{background:#fff}
.mod-warm-beige{background:#faf3eb;border:1px solid #f0e6dc}
/* 紧凑间距：dashboard 各模块之间 16px（原 28px → 16px） */
.dash-section{margin-top:16px}
.dash-section-first{margin-top:20px}
/* section-title 紧凑 */
.section-title{margin-bottom:10px !important;font-size:15px !important}
.action-item:active{transform:scale(0.98)}

/* ===== v2026-06-09 二次反馈:权限管理页 6 大决策 ===== */
/* ① 浮动快速切换按钮 (FAB) - 右下角,sheet 弹出所有角色 */
.perm-fab{
  position:fixed;right:20px;bottom:20px;z-index:800;
  width:52px;height:52px;border-radius:50%;border:none;cursor:pointer;
  background:linear-gradient(135deg,#8b6347 0%,#a67c52 100%);
  color:#fff;font-size:20px;font-weight:700;
  box-shadow:0 4px 16px rgba(139,99,71,.30);
  display:flex;align-items:center;justify-content:center;
  transition:all .2s;
}
.perm-fab:hover{transform:scale(1.08);box-shadow:0 6px 22px rgba(139,99,71,.40)}
.perm-fab:active{transform:scale(0.95)}
.perm-fab .perm-fab-label{font-size:11px;margin-left:4px;font-weight:600}
/* sheet 弹层 (复用 sheet-popup 模式) */
.perm-sheet-overlay{
  display:none;position:fixed;inset:0;z-index:1100;
  background:rgba(40,28,20,0.55);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);
}
.perm-sheet-overlay[style*="display: flex"]{display:flex !important}
.perm-sheet{
  position:fixed;left:0;right:0;bottom:0;max-width:540px;margin:0 auto;
  background:linear-gradient(180deg,#fdf8f0 0%,#faf3eb 100%);
  border-radius:20px 20px 0 0;
  box-shadow:0 -8px 32px rgba(92,64,51,.25);
  transform:translateY(100%);transition:transform .35s cubic-bezier(0.16,1,0.3,1);
  max-height:75dvh;display:flex;flex-direction:column;
}
.perm-sheet.open{transform:translateY(0)}
.perm-sheet-head{padding:12px 20px 8px;border-bottom:1px solid #f0e6dc;flex-shrink:0;display:flex;align-items:center;justify-content:space-between}
.perm-sheet-title{font-size:16px;font-weight:700;color:#3d2b1f}
.perm-sheet-close{width:32px;height:32px;background:#f0e6dc;border:none;border-radius:50%;font-size:16px;color:#8b6347;cursor:pointer;display:flex;align-items:center;justify-content:center}
.perm-sheet-body{flex:1;overflow-y:auto;padding:12px 20px 24px;-webkit-overflow-scrolling:touch}
.perm-sheet-search{width:100%;padding:8px 12px;border:1px solid #e8d5c4;border-radius:8px;font-size:13px;color:#3d2b1f;background:#fff;outline:none;margin-bottom:10px}
.perm-sheet-search:focus{border-color:#8b6347;box-shadow:0 0 0 3px rgba(139,99,71,.1)}
.perm-sheet-cats{display:flex;gap:6px;margin-bottom:12px;flex-wrap:wrap}
.perm-sheet-cat{
  padding:4px 12px;font-size:12px;border-radius:14px;border:1px solid #e8d5c4;
  background:#fff;color:#8b6347;cursor:pointer;transition:all .15s;
}
.perm-sheet-cat.active{background:linear-gradient(135deg,#8b6347,#a67c52);color:#fff;border-color:#8b6347}
.perm-sheet-item{
  display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;cursor:pointer;
  border:1px solid transparent;margin-bottom:4px;transition:all .15s;
}
.perm-sheet-item:hover{background:#fff;border-color:#e8d5c4}
.perm-sheet-item.active{background:linear-gradient(135deg,#8b6347,#a67c52);color:#fff}
.perm-sheet-item-icon{font-size:18px;width:28px;text-align:center;flex-shrink:0}
.perm-sheet-item-name{font-size:14px;font-weight:600;flex:1}
.perm-sheet-item-stats{font-size:11px;color:#a08060;display:flex;gap:6px}
.perm-sheet-item.active .perm-sheet-item-stats{color:rgba(255,255,255,.85)}

/* ② tooltip 浮动小卡片 - hover 数字显示完整含义 */
.perm-tooltip-wrap{position:relative;display:inline-block}
.perm-tooltip-wrap .perm-tooltip{
  position:absolute;bottom:calc(100% + 8px);left:50%;transform:translateX(-50%);
  background:#3d2b1f;color:#fff;font-size:11px;padding:6px 10px;border-radius:6px;
  white-space:nowrap;opacity:0;pointer-events:none;transition:opacity .2s;z-index:50;
  box-shadow:0 4px 12px rgba(0,0,0,.20);
}
.perm-tooltip-wrap .perm-tooltip::after{
  content:'';position:absolute;top:100%;left:50%;transform:translateX(-50%);
  border:5px solid transparent;border-top-color:#3d2b1f;
}
.perm-tooltip-wrap:hover .perm-tooltip{opacity:1}
.perm-tooltip-wrap:hover{cursor:help}

/* ③ 图标风格按区域分组 - 动作区彩色,标识区线性 */
.perm-action-colored{
  background:linear-gradient(135deg,#dbeafe,#bfdbfe);
  color:#1d4ed8;border-radius:8px;
}
.perm-action-colored.perm-act-perm{background:linear-gradient(135deg,#dbeafe,#bfdbfe);color:#1d4ed8}
.perm-action-colored.perm-act-flow{background:linear-gradient(135deg,#d1fae5,#a7f3d0);color:#047857}
.perm-action-colored.perm-act-role{background:linear-gradient(135deg,#fef3c7,#fde68a);color:#b45309}
/* 标识区线性图标 (单色边框 + emoji) */
.perm-icon-linear{
  width:32px;height:32px;border:1.5px solid #c8b09c;border-radius:8px;
  display:flex;align-items:center;justify-content:center;
  font-size:16px;color:#8b6347;background:#fff;
}
/* ④ 主区顶部按钮同级别 - 添加角色按钮放次要位置 */
.perm-topbar-addrole{
  font-size:12px;padding:5px 14px;
  border:1px solid #e8d5c4;background:#fff;color:#8b6347;
  border-radius:6px;cursor:pointer;
}
.perm-topbar-addrole:hover{border-color:#8b6347;background:#faf3eb}

/* ⑤ perm-role-card 状态色块提示 + tooltip 容器 */
.perm-role-card .prc-stat{cursor:help}
.perm-role-card .perm-mini-tip{
  position:absolute;top:50%;right:8px;transform:translateY(-50%);
  font-size:10px;color:#fff;background:rgba(139,99,71,.85);padding:2px 6px;border-radius:4px;
  opacity:0;transition:opacity .2s;pointer-events:none;
}
.perm-role-card:hover .perm-mini-tip{opacity:1}

/* ⑥ 分类 chips (主区顶部,跟在搜索框后) */
.perm-role-cats{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap}
.perm-role-cat-chip{
  padding:3px 10px;font-size:12px;border-radius:12px;cursor:pointer;
  border:1px solid #e8d5c4;background:#fff;color:#8b6347;transition:all .15s;
  display:inline-flex;align-items:center;gap:5px;
}
.perm-role-cat-chip.active{background:linear-gradient(135deg,#8b6347,#a67c52);color:#fff;border-color:#8b6347}
/* v2026-06-10 v2:分类 chip 角标 — 显示该分类下的角色数 */
.perm-role-cat-count{
  display:inline-flex;align-items:center;justify-content:center;
  min-width:18px;height:16px;padding:0 5px;
  background:#f0e6dc;color:#8b6347;
  border-radius:8px;font-size:10px;font-weight:700;
  line-height:1;font-variant-numeric:tabular-nums;
}
.perm-role-cat-chip.active .perm-role-cat-count{
  background:rgba(255,255,255,.22);color:#fff;
}

/* ===== v2026-06-09 二次反馈:爆款管理页 5 大决策 ===== */
/* ① 进度条满 100% 流光动画 + 全完成状态切换 */
.hot-progress-bar.is-complete .hpb-bar-fill{
  background:linear-gradient(90deg,#52c41a,#95de64,#52c41a,#95de64) !important;
  background-size:200% 100% !important;
  animation:hp-shimmer 2.5s linear infinite !important;
}
@keyframes hp-shimmer{0%{background-position:200% 0}100%{background-position:-200% 0}}
.hot-progress-bar.is-complete .hpb-bar::after{
  content:'✓ 全部完成';position:absolute;top:50%;right:8px;transform:translateY(-50%);
  font-size:11px;font-weight:700;color:#fff;text-shadow:0 1px 2px rgba(0,0,0,.15);
  pointer-events:none;letter-spacing:.3px;
}
.hpb-bar{position:relative}
/* 生成中转圈 - 加在按钮内 */
.hpb-btn.is-loading::before{
  content:'';display:inline-block;width:11px;height:11px;
  border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;
  animation:hp-spin .8s linear infinite;margin-right:5px;vertical-align:-2px;
}
@keyframes hp-spin{to{transform:rotate(360deg)}}
.hpb-btn:disabled{opacity:.5;cursor:not-allowed}

/* ② 操作列精简:多选批量工具栏 */
.hot-bulk-bar{
  display:none;align-items:center;gap:10px;
  background:linear-gradient(135deg,#fff7e6 0%,#fff1d6 100%);
  border:1px solid #ffd591;border-radius:10px;
  padding:10px 14px;margin-bottom:12px;
  box-shadow:0 1px 4px rgba(250,140,22,.08);
}
.hot-bulk-bar.active{display:flex}
.hot-bulk-count{font-size:13px;font-weight:700;color:#d46b08}
.hot-bulk-bar button{
  font-size:12px;padding:5px 12px;border-radius:6px;border:none;cursor:pointer;
}
.hot-bulk-btn-primary{background:#fa8c16;color:#fff;font-weight:600}
.hot-bulk-btn-primary:hover{background:#d46b08}
.hot-bulk-btn-secondary{background:#fff;color:#8b6347;border:1px solid #e8d5c4 !important}
.hot-bulk-btn-secondary:hover{border-color:#8b6347 !important}
/* 行 checkbox 选中态 */
.hot-row-check{width:14px;height:14px;cursor:pointer;accent-color:#fa8c16}
tr.hot-row-selected{background:#fff7e6 !important}

/* ③ 顶部 tab 切换 + chip 组合 */
.hot-tabs{display:flex;gap:4px;margin-bottom:10px;border-bottom:1px solid #f0e6dc;flex-wrap:wrap}
.hot-tab{
  padding:7px 14px;font-size:13px;color:#a08060;cursor:pointer;
  border-bottom:2px solid transparent;transition:all .15s;font-weight:500;
}
.hot-tab:hover{color:#8b6347}
.hot-tab.active{color:#8b6347;border-bottom-color:#8b6347;font-weight:700}
.hot-tab .hot-tab-count{
  display:inline-block;background:#f0e6dc;color:#8b6347;font-size:10px;font-weight:700;
  padding:1px 6px;border-radius:8px;margin-left:5px;
}
.hot-tab.active .hot-tab-count{background:#8b6347;color:#fff}
.hot-chips{display:flex;gap:6px;margin-bottom:10px;flex-wrap:wrap;align-items:center}
.hot-chip{
  padding:3px 10px;font-size:12px;border-radius:12px;cursor:pointer;
  border:1px solid #e8d5c4;background:#fff;color:#8b6347;transition:all .15s;
}
.hot-chip.active{background:linear-gradient(135deg,#fa8c16,#d46b08);color:#fff;border-color:#fa8c16}
.hot-chip-clear{background:#faf3eb;border-color:#f0e6dc;color:#a08060}

/* ④ AI 图放大弹层 */
.ai-lightbox-overlay{
  display:none;position:fixed;inset:0;z-index:1200;
  background:rgba(0,0,0,0.85);justify-content:center;align-items:center;
  -webkit-tap-highlight-color:transparent;
}
.ai-lightbox-overlay[style*="display: flex"]{display:flex !important}
.ai-lightbox-overlay img{
  max-width:90vw;max-height:85vh;object-fit:contain;
  border-radius:8px;box-shadow:0 8px 40px rgba(0,0,0,.5);
}
.ai-lightbox-close{
  position:fixed;top:20px;right:20px;width:40px;height:40px;border-radius:50%;
  background:rgba(255,255,255,.15);color:#fff;border:none;font-size:20px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;backdrop-filter:blur(10px);
}
.ai-lightbox-close:hover{background:rgba(255,255,255,.25)}
.ai-lightbox-info{
  position:fixed;bottom:24px;left:50%;transform:translateX(-50%);
  background:rgba(0,0,0,.6);color:#fff;padding:8px 16px;border-radius:20px;
  font-size:12px;backdrop-filter:blur(10px);max-width:80vw;text-align:center;
}

/* ⑤ AI 图状态进度数字角标 + 已生成绿色 ✓ + 未生成虚线 */
.ai-img-cell .ai-progress-tag{
  position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);
  background:rgba(82,196,26,.95);color:#fff;font-size:9px;font-weight:700;
  padding:1px 5px;border-radius:6px;white-space:nowrap;letter-spacing:.2px;
  box-shadow:0 1px 3px rgba(0,0,0,.2);
}
.ai-img-cell.no-ai .ai-progress-tag{background:rgba(160,128,96,.95)}

/* 操作列精简为 2 个核心按钮 + 1 个 ⋯ 折叠菜单 */
.op-group{display:inline-flex;gap:3px;align-items:center}
.op-icon-mini{
  width:22px;height:22px;border-radius:5px;border:1px solid #e8d5c4;background:#fff;
  display:inline-flex;align-items:center;justify-content:center;font-size:12px;
  cursor:pointer;transition:all .15s;color:#8b6347;
}
.op-icon-mini:hover{background:#faf3eb;border-color:#8b6347;transform:translateY(-1px)}
.op-icon-mini.op-mini-orange{background:linear-gradient(135deg,#fff7e6,#ffe7ba);border-color:#ffd591;color:#d46b08}
.op-icon-mini.op-mini-blue{background:linear-gradient(135deg,#dbeafe,#bfdbfe);border-color:#bfdbfe;color:#1d4ed8}
.op-icon-mini.op-mini-red{background:linear-gradient(135deg,#fee2e2,#fecaca);border-color:#fecaca;color:#b91c1c}
.op-more-wrap{position:relative;display:inline-block}
.op-more-menu{
  display:none;position:absolute;right:0;top:100%;z-index:50;
  background:#fff;border:1px solid #e8d5c4;border-radius:8px;padding:4px;
  box-shadow:0 4px 16px rgba(92,64,51,.15);min-width:120px;margin-top:4px;
}
.op-more-menu.open{display:block}
.op-more-item{
  display:flex;align-items:center;gap:8px;padding:7px 10px;font-size:12px;
  color:#5c4033;cursor:pointer;border-radius:5px;transition:background .15s;
}
.op-more-item:hover{background:#faf3eb}
.op-more-item.op-more-danger{color:#b91c1c}
.op-more-item.op-more-danger:hover{background:#fee2e2}

/* ===== 审批流卡片网格 ===== */
.flow-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;margin-top:16px}
.flow-card-item{background:#fff;border:1px solid #e8d5c4;border-radius:12px;padding:18px;cursor:pointer;transition:all .2s}
.flow-card-item:hover{box-shadow:0 4px 16px rgba(139,99,71,.12);border-color:#c4a88c}
.flow-card-item .fci-top{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.flow-card-item .fci-icon{width:42px;height:42px;border-radius:10px;background:#faf3eb;display:flex;align-items:center;justify-content:center;font-size:22px}
.flow-card-item .fci-name{font-size:14px;font-weight:700;color:#3d2b1f}
.flow-card-item .fci-key{font-size:11px;color:#9ca3af}
.flow-card-item .fci-status{font-size:11px;padding:2px 10px;border-radius:10px;font-weight:600;margin-left:auto}
.flow-card-item .fci-status.on{background:#dcfce7;color:#16a34a}
.flow-card-item .fci-status.off{background:#f3f4f6;color:#9ca3af}
.flow-card-item .fci-nodes{font-size:12px;color:#8b6347;padding-top:6px;border-top:1px solid #f0e8df}
.fci-chain{display:flex;align-items:center;gap:4px;flex-wrap:wrap;padding-top:8px;border-top:1px solid #f0e8df}
.fci-node{font-size:11px;padding:2px 7px;border-radius:5px;background:#faf3eb;color:#8b6347;font-weight:600}
.fci-arrow{color:#c4a88c;font-size:12px}
.flow-card-add{border:2px dashed #e8d5c4;display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:100px}
.flow-card-add:hover{background:#faf8f5;border-color:#c4a88c}
.flow-card-add .fci-add-icon{font-size:32px;color:#c4a88c}
.flow-card-add .fci-add-text{font-size:13px;color:#b0a090;font-weight:600;margin-top:6px}

/* ===== 全部审批单表格 ===== */
.admin-ap-table{width:100%;background:#fff;border-radius:12px;overflow-x:auto;border:1px solid #e8d5c4}
.admin-ap-table table{table-layout:fixed;width:100%;border-collapse:collapse}
.admin-ap-table th{background:#faf3eb;padding:8px 8px;font-size:11px;font-weight:700;color:#8b6347;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.admin-ap-table td{padding:8px 8px;font-size:12px;border-top:1px solid #f0e8df;vertical-align:middle;overflow:hidden;text-overflow:ellipsis}
.admin-ap-table tr:hover td{background:#faf8f5}
.admin-ap-filter{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:14px}
.admin-ap-chip{padding:5px 12px;border-radius:16px;font-size:11px;font-weight:600;border:1px solid #e8d5c4;background:#fff;color:#8b6347;cursor:pointer}
.admin-ap-chip.active{background:#8b6347;color:#fff;border-color:#8b6347}
.admin-ap-search{padding:6px 12px;border-radius:8px;border:1px solid #e8d5c4;font-size:12px;width:180px}
.admin-ap-select{padding:6px 10px;border-radius:8px;border:1px solid #e8d5c4;font-size:11px;font-weight:600;color:#5c4033;background:#fff;cursor:pointer}
.admin-ap-pagination{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 0}
.admin-ap-page-info{font-size:11px;color:#9ca3af}
.admin-ap-page-btns{display:flex;gap:4px;align-items:center}
.admin-ap-pbtn{padding:4px 10px;border-radius:6px;font-size:11px;border:1px solid #e8d5c4;background:#fff;color:#8b6347;cursor:pointer;font-weight:600;user-select:none}
.admin-ap-pbtn:hover{background:#faf3eb}
.admin-ap-pbtn.active{background:#8b6347;color:#fff;border-color:#8b6347}
.admin-ap-sort{margin-left:auto;padding:6px 10px;border-radius:8px;border:1px solid #e8d5c4;font-size:11px;color:#5c4033;background:#fff}
.admin-action-link{font-size:11px;font-weight:600;cursor:pointer;margin-right:8px;text-decoration:none;white-space:nowrap;display:inline-block}
.admin-action-link:last-child{margin-right:0}
.admin-action-link.view{color:#8b6347}
.admin-action-link.transfer{color:#2563eb}
.admin-action-link.revoke{color:#d97706}
.admin-action-link.delete{color:#dc2626}

/* ===== 审批详情弹窗 ===== */
.ap-detail-dialog{max-width:480px !important;max-height:85vh !important}
.ap-detail-body{padding:0 18px 12px !important}
.ap-card{background:#fff;border-radius:10px;padding:14px 16px;margin-bottom:10px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.ap-card-row{display:flex;align-items:center;padding:7px 0;border-bottom:1px solid #f5f0ea;font-size:13px}
.ap-card-row:last-child{border-bottom:0}
.ap-label{color:#a09080;min-width:56px;font-weight:600;flex-shrink:0}
.ap-val{color:#3c2a1e;flex:1;word-break:break-all}
.ap-card-row .ap-val{display:flex;align-items:center;gap:8px}
.ap-chain-title{font-size:13px;font-weight:600;color:#8c6b4a;margin:10px 0 6px}
.ap-chain{background:#fff;border-radius:10px;padding:8px 14px;box-shadow:0 1px 4px rgba(0,0,0,.06)}
.ap-action-bar{gap:10px !important;padding:12px 18px !important}
.ap-action-bar .fv3-modal-btn{flex:1;font-size:14px}
.admin-back-btn{font-size:13px;font-weight:600;color:#8b6347;cursor:pointer;padding:6px 12px;border:1px solid #e8d5c4;border-radius:8px;background:#fff;margin-bottom:12px;display:inline-block}
.admin-back-btn:hover{background:#faf3eb}

/* 概况页：审批流表格行可点击(行 hover 高亮 + 右侧箭头) */
.dashboard-flow-row{cursor:pointer;transition:background .15s}
.dashboard-flow-row:hover{background:#faf3eb !important}

/* ===== 桌面覆盖（@media 块）：恢复 4列、桌面字号、表格显示 ===== */
@media(min-width:541px){
  .desktop-only{display:block !important}
  .mobile-only{display:none !important}
  .card-grid{grid-template-columns:repeat(4,1fr);gap:16px}
  .stat-card{padding:16px}
  .stat-card .stat-num{font-size:28px}
  .stat-card .stat-label{font-size:13px}
  .stat-card .stat-icon{font-size:24px;margin-bottom:8px}
  .action-grid{grid-template-columns:1fr 1fr;gap:12px}
  .action-item{padding:14px 16px}
  .section-title{font-size:17px;margin-bottom:14px}
  .topbar{padding:12px 20px;height:63px}
  .topbar-title{font-size:17px}
  .topbar-logo{width:40px;height:40px}
  .topbar-logo img{width:40px;height:40px}
  .user-avatar{width:36px;height:36px;font-size:14px;line-height:36px}
  .user-name{max-width:120px;font-size:14px}
  .btn-logout{padding:7px 12px;font-size:13px}
  .topbar-right{gap:12px}
  .main-content{padding:24px 32px 60px}
}

/* ===== v2026-06-09 批次 A.1 + A.2 合并：桌面覆盖（hide tab bar + show table） ===== */
@media(min-width:541px){
  .mobile-tab-bar{display:none !important}
  .mobile-more-overlay{display:none !important}
  .main-content{padding-bottom:60px !important}
}

/* ======= 角色配置侧边栏（与主表格风格统一 v1.1）======= */
.role-config-wrap{padding:12px 0 8px;border-bottom:1px solid #e8d5c4;flex-shrink:0}
.role-config-header{display:flex;align-items:center;justify-content:space-between;padding:0 14px 10px}
.role-config-title{display:flex;align-items:center;gap:6px;font-size:12px;font-weight:600;color:#5c4033;letter-spacing:.3px}
.role-config-title .icon{font-size:14px}
.btn-add-role{
  padding:5px 12px;background:#8b6347;color:#fff;border:none;border-radius:7px;
  font-size:12px;font-weight:600;cursor:pointer;transition:all .15s;
  display:inline-flex;align-items:center;gap:3px;line-height:1.2;
}
.btn-add-role:hover{background:#6f4e37;transform:translateY(-1px);box-shadow:0 2px 6px rgba(139,99,71,.25)}
.btn-add-role:active{transform:translateY(0)}
.role-rc-list{padding:0 10px;display:flex;flex-direction:column;gap:4px}
.role-rc-item{
  display:flex;align-items:center;padding:7px 10px;border-radius:8px;cursor:pointer;
  border:1px solid #f0e4d2;background:#fff;transition:all .15s;
  font-size:13px;gap:5px;line-height:1.3;
}
.role-rc-item:hover{background:#faf3eb;border-color:#e8d5c4}
.role-rc-item.active{background:#8b6347;border-color:#8b6347;color:#fff}
.role-rc-item.active .rc-arrow,.role-rc-item.active .rc-name{color:rgba(255,255,255,.7)}
.role-rc-item .rc-key{flex:1;font-weight:600;color:#5c4033;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-rc-item.active .rc-key{color:#fff}
.role-rc-item .rc-arrow{color:#9ca3af;font-size:11px;flex-shrink:0}
.role-rc-item .rc-name{flex:1;font-size:12px;color:#9ca3af;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.role-rc-item .rc-lcf{
  font-size:10px;color:#8b6347;background:#faf3eb;
  padding:1px 6px;border-radius:4px;
  flex-shrink:0;margin-left:4px;font-family:ui-monospace,monospace;
  border:1px solid #f0e4d2;
}
.role-rc-item.active .rc-lcf{background:rgba(255,255,255,.15);color:#fff;border-color:rgba(255,255,255,.2)}
.role-rc-item .rc-edit{opacity:0;font-size:12px;flex-shrink:0;transition:opacity .1s;color:#8b6347}
.role-rc-item:hover .rc-edit{opacity:1}
.role-rc-item.active .rc-edit{color:#fff;opacity:.8}
.role-rc-empty{text-align:center;padding:14px 12px;color:#9ca3af;font-size:12px}
#roleEditModal .modal-title{font-size:16px;font-weight:700;color:#5c4033;margin-bottom:16px}
#roleEditModal .form-group{margin-bottom:14px}
#roleEditModal .form-group label{display:block;font-size:12px;color:#9ca3af;margin-bottom:5px}
#roleEditModal .form-group input{width:100%;padding:9px 11px;border:1px solid #d4b896;border-radius:8px;font-size:14px;background:#faf3eb;color:#5c4033}
#roleEditModal .form-group input:focus{outline:none;border-color:#8b6347}
#roleEditModal .hint{font-size:11px;color:#9ca3af;margin-top:4px}
#roleEditModal .modal-actions{display:flex;gap:10px;margin-top:20px}
#roleEditModal .modal-actions .btn{flex:1;padding:10px;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;border:none;transition:all .15s}
#roleEditModal .modal-actions .btn-cancel{background:#faf3eb;color:#8b6347;border:1px solid #e8d5c4}
#roleEditModal .modal-actions .btn-save{background:#8b6347;color:#fff}
#roleEditModal .modal-actions .btn-delete{background:#fef2f2;color:#dc2626;border:1px solid #dc2626}
#roleEditModal #localRoleCheckboxes{border:1px solid #d4b896;border-radius:8px;padding:8px 10px;background:#faf3eb;display:flex;flex-wrap:wrap;gap:6px 10px;max-height:160px;overflow-y:auto}
#roleEditModal #localRoleCheckboxes label{cursor:pointer;min-width:110px;font-size:13px;color:#5c4033}
#roleEditModal #localRoleCheckboxes input[type="checkbox"]{accent-color:#8b6347;cursor:pointer}
#roleEditModal #localRoleCheckboxes label:hover{color:#8b6347}

/* ======= 角色管理 v3 (Tab 横排 + 嵌入权限矩阵) ======= */
.rp3-topbar{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff;border-radius:10px;padding:12px 18px;margin-bottom:12px;box-shadow:0 1px 3px rgba(139,99,71,.05);flex-wrap:wrap}
.rp3-topbar-left{display:flex;align-items:center;gap:8px;min-width:0}
.rp3-topbar-title{font-size:17px;font-weight:700;color:#5c4033;display:flex;align-items:center;gap:6px}
.rp3-topbar-title .icon{font-size:18px}
.rp3-topbar-current{font-size:12.5px;color:#8b6347;background:#faf3eb;padding:3px 10px;border-radius:10px;border:1px solid #f0e4d2;font-weight:600;display:inline-flex;align-items:center;gap:5px;min-width:0;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rp3-topbar-current .badge{background:#8b6347;color:#fff;font-size:10px;padding:1px 6px;border-radius:8px;font-weight:600;margin-left:2px}
.rp3-topbar-right{display:flex;align-items:center;gap:8px}
.rp3-btn{background:#8b6347;color:#fff;border:none;border-radius:7px;padding:6px 14px;font-size:12.5px;font-weight:600;cursor:pointer;transition:all .15s;display:inline-flex;align-items:center;gap:5px;font-family:inherit}
.rp3-btn:hover{background:#6f4e37;transform:translateY(-1px);box-shadow:0 2px 6px rgba(139,99,71,.25)}
.rp3-btn:disabled{background:#d4b896;cursor:not-allowed;transform:none;box-shadow:none;opacity:.7}
.rp3-btn-ghost{background:#faf3eb;color:#8b6347;border:1px solid #e8d5c4}
.rp3-btn-ghost:hover{background:#f0e4d2;border-color:#c4956a;color:#5c4033}
.rp3-btn-warn{background:#fef2f2;color:#dc2626;border:1px solid #fecaca}
.rp3-btn-warn:hover{background:#fee2e2;border-color:#dc2626}

.rp3-dirty-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#fff7ed;border:1px solid #fed7aa;color:#9a3412;padding:8px 14px;border-radius:8px;margin-bottom:12px;font-size:12.5px;font-weight:500}
.rp3-dirty-bar .actions{display:flex;gap:6px}

.rp3-tabs{display:flex;align-items:stretch;gap:4px;background:#fff;border-radius:10px;padding:6px;margin-bottom:12px;box-shadow:0 1px 3px rgba(139,99,71,.05);overflow-x:auto;scrollbar-width:thin;border:1px solid #f0e4d2;flex-wrap:wrap}
.rp3-tab{flex:0 0 auto;display:flex;align-items:center;gap:4px;padding:7px 11px;border-radius:7px;cursor:pointer;font-size:12px;font-weight:500;color:#8b6347;transition:all .15s;border:1px solid transparent;white-space:nowrap;min-width:0;position:relative}
.rp3-tab:hover{background:#faf3eb;color:#5c4033}
.rp3-tab.active{background:#8b6347;color:#fff;font-weight:600;box-shadow:0 2px 6px rgba(139,99,71,.25)}
.rp3-tab.active .rp3-tab-count{background:rgba(255,255,255,.25);color:#fff}
.rp3-tab .rp3-tab-name{font-weight:600}
.rp3-tab-count{background:#f5ede2;color:#8b6347;font-size:10px;padding:1px 6px;border-radius:8px;font-weight:600;flex-shrink:0}
.rp3-tab-add{flex:0 0 auto;padding:8px 14px;border-radius:7px;cursor:pointer;font-size:12.5px;font-weight:600;color:#8b6347;background:transparent;border:1px dashed #c4956a;transition:all .15s;white-space:nowrap;display:flex;align-items:center;gap:4px}
.rp3-tab-add:hover{background:#faf3eb;border-color:#8b6347;border-style:solid;color:#5c4033}
.rp3-tab-search{flex:1 1 200px;min-width:140px;background:#faf3eb;border:1px solid #e8d5c4;border-radius:6px;padding:4px 8px;font-size:12px;color:#5c4033;font-family:inherit;outline:none}
.rp3-tab-search:focus{border-color:#8b6347;background:#fff}
.rp3-tab-search::placeholder{color:#c4956a}

.rp3-info{display:grid;grid-template-columns:1fr 1fr;gap:10px;background:#fff;border-radius:10px;padding:12px 18px;margin-bottom:12px;box-shadow:0 1px 3px rgba(139,99,71,.05);border:1px solid #f0e4d2}
.rp3-info-cell{display:flex;align-items:center;gap:8px;font-size:12.5px;color:#5c4033;min-width:0}
.rp3-info-label{color:#9ca3af;font-size:11px;font-weight:600;letter-spacing:.3px;flex-shrink:0;min-width:64px}
.rp3-info-value{font-weight:600;color:#5c4033;flex-shrink:0}
.rp3-info-cell-grow{flex:1;min-width:0;display:flex;align-items:center;gap:4px;flex-wrap:wrap}
.rp3-chip{display:inline-flex;align-items:center;gap:3px;background:#f5ede2;color:#8b6347;padding:3px 8px 3px 10px;border-radius:10px;font-size:11.5px;border:1px solid #e8d5c4;font-weight:500;line-height:1.4}
.rp3-chip .x{cursor:pointer;opacity:.5;padding:0 2px;border-radius:50%;font-size:14px;line-height:1;transition:all .15s}
.rp3-chip .x:hover{opacity:1;background:#dc2626;color:#fff;padding:0 4px}
.rp3-chip-add{display:inline-flex;align-items:center;gap:2px;background:transparent;color:#8b6347;padding:3px 9px;border-radius:10px;font-size:11.5px;border:1px dashed #c4956a;cursor:pointer;font-weight:500;transition:all .15s}
.rp3-chip-add:hover{background:#faf3eb;border-style:solid;border-color:#8b6347;color:#5c4033}
.rp3-info-meta{color:#9ca3af;font-size:11.5px;flex-shrink:0;display:flex;align-items:center;gap:8px}
.rp3-info-meta .count{color:#5c4033;font-weight:700}

.rp3-matrix-wrap{background:#fff;border-radius:10px;padding:0;box-shadow:0 1px 3px rgba(139,99,71,.05);overflow:hidden;border:1px solid #f0e4d2}
.rp3-matrix-toolbar{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;background:#faf3eb;border-bottom:1px solid #f0e4d2;gap:8px;flex-wrap:wrap}
.rp3-matrix-toolbar-left{font-size:12.5px;color:#5c4033;font-weight:600}
.rp3-matrix-toolbar-right{display:flex;align-items:center;gap:6px}
.rp3-matrix-search{background:#fff;border:1px solid #d4b896;border-radius:6px;padding:4px 9px;font-size:12px;color:#5c4033;font-family:inherit;outline:none;width:160px;transition:all .15s}
.rp3-matrix-search:focus{border-color:#8b6347;box-shadow:0 0 0 2px rgba(139,99,71,.1)}

@media (max-width:768px) {
  .rp3-info{grid-template-columns:1fr;gap:8px;padding:10px 12px}
  .rp3-topbar{padding:10px 12px}
  .rp3-tab-search{display:none}
  .rp3-matrix-toolbar-right{flex:1}
  .rp3-matrix-search{flex:1;width:auto}
}

/* 添加角色向导弹窗 */
.rp3-wizard-step{display:none}
.rp3-wizard-step.active{display:block}
.rp3-wizard-progress{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:18px}
.rp3-wizard-dot{width:24px;height:24px;border-radius:50%;background:#faf3eb;color:#9ca3af;font-size:12px;font-weight:600;display:flex;align-items:center;justify-content:center;border:1.5px solid #e8d5c4;transition:all .2s}
.rp3-wizard-dot.active{background:#8b6347;color:#fff;border-color:#8b6347;box-shadow:0 0 0 3px rgba(139,99,71,.15)}
.rp3-wizard-dot.done{background:#10b981;color:#fff;border-color:#10b981}
.rp3-wizard-line{flex:0 0 30px;height:1.5px;background:#e8d5c4}
.rp3-wizard-line.done{background:#10b981}
.rp3-wizard-tpl-card{border:1.5px solid #e8d5c4;border-radius:9px;padding:10px 12px;cursor:pointer;transition:all .15s;background:#fff}
.rp3-wizard-tpl-card:hover{border-color:#8b6347;background:#faf3eb}
.rp3-wizard-tpl-card.selected{border-color:#8b6347;background:#faf3eb;box-shadow:0 0 0 2px rgba(139,99,71,.15)}
.rp3-wizard-tpl-card .name{font-size:13px;font-weight:600;color:#5c4033;margin-bottom:2px}
.rp3-wizard-tpl-card .desc{font-size:11px;color:#9ca3af}
/* fv3 多角色 AND/OR 选择器按钮 */
.fv3-btn-or,.fv3-btn-and{min-width:120px;padding:12px 16px;border:2px solid #e5d5c0;border-radius:8px;background:#fff;cursor:pointer;font-size:14px;font-weight:600;color:#5c4033;transition:all .15s}
.fv3-btn-or:hover,.fv3-btn-and:hover{border-color:#8b6347;background:#faf3eb}
.fv3-btn-or small,.fv3-btn-and small{display:block;font-size:11px;color:#9ca3af;font-weight:400;margin-top:2px}
.rp3-wizard-tpl-card .badge{float:right;font-size:10px;background:#10b981;color:#fff;padding:1px 6px;border-radius:8px;font-weight:600;margin-top:2px}

/* ===== trap-648 学习管理 UI 升级(2026-07-16) ===== */
/* 设计令牌 */
:root {
  --lms-bg:#f7f3ee;--lms-surface:#fff;--lms-surface-2:#faf6f0;
  --lms-border:#e8d5c4;--lms-border-soft:#f0e6d8;
  --lms-text-1:#3a2a1a;--lms-text-2:#6b553f;--lms-text-3:#a08060;
  --lms-brand:#8b6347;--lms-brand-soft:#b89070;--lms-brand-bg:rgba(139,99,71,.08);
  --lms-danger:#c0392b;--lms-danger-bg:rgba(192,57,43,.08);
  --lms-success:#5a8a6a;
  --lms-shadow-sm:0 1px 2px rgba(58,42,26,.04);
  --lms-shadow:0 2px 8px rgba(58,42,26,.06);
  --lms-radius:8px;
}
/* 视图标题 sub 子标题 */
.view-header > .view-title .view-title-sub{font-size:12px;color:var(--lms-text-3);font-weight:400;margin-left:8px}
/* 4 列 stats 网格 */
.lms-stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin-bottom:16px}
/* 复用现有 .stat-card,只补 hover 增强 */
.lms-stats-grid .stat-card{display:flex;align-items:center;gap:12px}
.lms-stats-grid .stat-card .stat-icon{
  width:40px;height:40px;border-radius:10px;
  display:flex;align-items:center;justify-content:center;font-size:20px;
  flex-shrink:0;margin-bottom:0;
}
.lms-stats-grid .stat-card .stat-icon.theme-amber{background:var(--lms-brand-bg);color:var(--lms-brand)}
.lms-stats-grid .stat-card .stat-icon.theme-red{background:var(--lms-danger-bg);color:var(--lms-danger)}
.lms-stats-grid .stat-card .stat-icon.theme-green{background:rgba(90,138,106,.10);color:var(--lms-success)}
.lms-stats-grid .stat-card .stat-icon.theme-blue{background:rgba(91,141,184,.10);color:#5b8db8}
.lms-stats-grid .stat-card .stat-num{font-size:22px;font-weight:700;color:var(--lms-text-1);line-height:1.1}
.lms-stats-grid .stat-card .stat-label{font-size:12px;color:var(--lms-text-3);margin-top:2px}
.lms-stats-grid .stat-card .stat-trend{font-size:11px;color:var(--lms-success);margin-top:2px}
.lms-stats-grid .stat-card .stat-trend.down{color:var(--lms-danger)}
.lms-stats-grid .stat-card .stat-trend.muted{color:var(--lms-text-3);font-style:italic}
/* 工具栏:搜索 + 类型 chip */
.lms-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px}
.lms-search{position:relative;width:280px;max-width:100%}
.lms-search input{
  width:100%;padding:7px 10px 7px 30px;
  border:1px solid var(--lms-border-soft);border-radius:var(--lms-radius);
  font-size:13px;background:var(--lms-surface-2);color:var(--lms-text-1);
  transition:all .15s;
}
.lms-search input:focus{outline:0;border-color:var(--lms-brand-soft);background:#fff;box-shadow:0 0 0 3px var(--lms-brand-bg)}
.lms-search::before{content:'🔍';position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.6}
.lms-chip-row{display:flex;gap:6px;flex-wrap:wrap}
.lms-chip{
  padding:5px 11px;border-radius:999px;font-size:12px;
  background:var(--lms-surface-2);color:var(--lms-text-2);
  border:1px solid var(--lms-border-soft);cursor:pointer;transition:all .12s;user-select:none;
}
.lms-chip:hover{border-color:var(--lms-brand-soft);color:var(--lms-brand)}
.lms-chip.active{background:var(--lms-brand-bg);color:var(--lms-brand);border-color:var(--lms-brand-soft);font-weight:500}
/* 表格调整 */
.lms-table tbody tr{transition:background .12s}
.lms-table tbody tr:hover{background:var(--lms-surface-2)}
.lms-table .col-name{width:38%}
.lms-table .col-type{width:18%}
.lms-table .col-chap{width:12%}
.lms-table .col-req{width:12%}
.lms-table .col-act{width:20%;text-align:right}
/* 课程名+描述双行 */
.lms-course{display:flex;flex-direction:column;gap:4px}
.lms-course .title{font-weight:600;color:var(--lms-text-1);font-size:14px}
.lms-course .desc{
  font-size:12px;color:var(--lms-text-3);line-height:1.4;
  display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical;overflow:hidden;
}
/* 类型徽章(品牌色四类) */
.lms-type{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:500}
.lms-type.type-new_hire{background:rgba(91,141,184,.10);color:#4a7596}
.lms-type.type-daily{background:rgba(139,99,71,.10);color:var(--lms-brand)}
.lms-type.type-promotion{background:rgba(176,140,80,.12);color:#a07d3c}
.lms-type.type-other{background:rgba(160,128,96,.10);color:var(--lms-text-3)}
/* 章节数胶囊 */
.lms-chap{display:inline-flex;align-items:center;gap:3px;background:var(--lms-surface-2);padding:3px 9px;border-radius:999px;font-size:12px;color:var(--lms-text-2);font-weight:500}
.lms-chap::before{content:'';width:5px;height:5px;background:var(--lms-brand-soft);border-radius:50%;display:inline-block}
/* 必修徽章(琥珀色,不抢焦点);选修灰字 */
.lms-req-required{display:inline-flex;align-items:center;gap:4px;background:rgba(176,140,80,.12);color:#a07d3c;padding:3px 9px;border-radius:999px;font-size:12px;font-weight:500}
.lms-req-required::before{content:'●';color:#a07d3c;font-size:8px}
.lms-req-optional{color:var(--lms-text-3);font-size:12px}
/* 操作列 */
.lms-actions{display:inline-flex;align-items:center;gap:4px;justify-content:flex-end}
.lms-btn-chap{
  background:var(--lms-brand-bg);color:var(--lms-brand);
  padding:5px 12px;font-size:12px;font-weight:500;
  border:1px solid transparent;border-radius:var(--lms-radius);
  display:inline-flex;align-items:center;gap:4px;cursor:pointer;transition:all .15s;
}
.lms-btn-chap:hover{background:var(--lms-brand);color:#fff;transform:translateY(-1px)}
.lms-icon-btn{
  width:30px;height:30px;border:none;background:transparent;border-radius:6px;cursor:pointer;color:var(--lms-text-3);
  display:inline-flex;align-items:center;justify-content:center;font-size:14px;transition:all .12s;
}
.lms-icon-btn:hover{background:var(--lms-surface-2);color:var(--lms-text-1)}
.lms-icon-btn.danger:hover{background:var(--lms-danger-bg);color:var(--lms-danger)}
/* 空态 */
.lms-empty{padding:60px 20px;text-align:center}
.lms-empty .emoji{font-size:48px;opacity:.3;margin-bottom:12px}
.lms-empty .msg{font-size:14px;color:var(--lms-text-3);margin-bottom:16px}
/* 失败态加重试 */
.lms-err{padding:40px 20px;text-align:center}
.lms-err .msg{color:var(--lms-danger);margin-bottom:12px}
.lms-err button{
  background:var(--lms-brand);color:#fff;border:none;padding:8px 20px;border-radius:var(--lms-radius);font-size:13px;cursor:pointer;
}
/* 移动端 */
@media (max-width:768px){
  .lms-stats-grid{grid-template-columns:repeat(2,1fr);gap:8px}
  .lms-toolbar{flex-direction:column;align-items:stretch;gap:8px}
  .lms-search{width:100%}
  .lms-table thead{display:none}
  .lms-table,.lms-table tbody,.lms-table tr,.lms-table td{display:block}
  .lms-table tbody tr{
    background:#fff;border:1px solid var(--lms-border-soft);
    border-radius:var(--lms-radius);margin-bottom:8px;padding:10px 12px;
  }
  .lms-table td{padding:4px 0;border:none}
  .lms-table td.col-act{text-align:left;padding-top:8px;border-top:1px dashed var(--lms-border-soft);margin-top:6px}
  .lms-course .desc{-webkit-line-clamp:2}
}

/* ============================================================
   trap-649 Phase 2: 章节抽屉 / 详情 tabs / iOS toggle / OA confirm
   ============================================================ */

/* === Drawer === */
.lms-drawer{position:fixed;inset:0;z-index:1040;visibility:hidden;transition:visibility 0s .3s}
.lms-drawer.lms-drawer--open{visibility:visible;transition-delay:0s}
.lms-drawer__backdrop{position:absolute;inset:0;background:rgba(58,42,26,.45);opacity:0;transition:opacity .3s ease}
.lms-drawer.lms-drawer--open .lms-drawer__backdrop{opacity:1}
.lms-drawer__panel{
  position:absolute;top:0;right:0;bottom:0;
  width:min(560px,92vw);
  background:var(--lms-surface,#fff);
  box-shadow:-4px 0 24px rgba(58,42,26,.18);
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.4,0,.2,1);
  display:flex;flex-direction:column;
}
.lms-drawer.lms-drawer--open .lms-drawer__panel{transform:translateX(0)}
.lms-drawer__header{
  flex-shrink:0;padding:18px 22px 14px;
  border-bottom:1px solid var(--lms-border,#e8d5c4);
  background:var(--lms-surface,#fff);position:relative;
}
.lms-drawer__title{font-size:17px;font-weight:700;color:var(--lms-text-1,#3a2a1a);margin-bottom:4px;line-height:1.3}
.lms-drawer__meta{font-size:12px;color:var(--lms-text-3,#a08060)}
.lms-drawer__close{
  position:absolute;top:14px;right:14px;width:32px;height:32px;
  border:none;background:transparent;font-size:22px;color:var(--lms-text-3,#a08060);
  cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;
}
.lms-drawer__close:hover{background:var(--lms-brand-bg,rgba(139,99,71,.08));color:var(--lms-brand,#8b6347)}
.lms-drawer__body{flex:1;overflow-y:auto;padding:0}
.lms-drawer__footer{
  flex-shrink:0;padding:14px 22px;
  background:var(--lms-surface,#fff);border-top:1px solid var(--lms-border,#e8d5c4);
  display:flex;justify-content:flex-end;gap:10px;
}

/* === Tabs === */
.lms-tabs{display:flex;gap:0;padding:0 22px;border-bottom:1px solid var(--lms-border,#e8d5c4);background:#fdf8f3;position:sticky;top:0;z-index:1}
.lms-tab{
  flex:1;padding:12px 0;font-size:13px;font-weight:500;color:var(--lms-text-3,#a08060);
  background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;
  transition:all .2s;
}
.lms-tab:hover{color:var(--lms-text-1,#3a2a1a)}
.lms-tab.lms-tab--active{color:var(--lms-brand,#8b6347);font-weight:600;border-bottom-color:var(--lms-brand,#8b6347)}
.lms-tab-panel{padding:18px 22px 80px;display:none}
.lms-tab-panel.lms-tab-panel--active{display:block}
.lms-tab-panel[hidden]{display:none}

/* === Chapter Item === */
.lms-chapter-item{display:flex;align-items:center;gap:12px;padding:14px 0;border-bottom:1px solid #f5ede0}
.lms-chapter-item:last-child{border-bottom:none}
.lms-chapter-item__index{
  width:28px;height:28px;border-radius:50%;background:var(--lms-brand-bg,rgba(139,99,71,.08));
  color:var(--lms-brand,#8b6347);display:flex;align-items:center;justify-content:center;
  font-size:12px;font-weight:700;flex-shrink:0;
}
.lms-chapter-item__main{flex:1;min-width:0}
.lms-chapter-item__title{font-size:14px;color:var(--lms-text-1,#3a2a1a);font-weight:600;margin-bottom:2px}
.lms-chapter-item__meta{display:flex;gap:10px;flex-wrap:wrap;font-size:11px;color:var(--lms-text-3,#a08060)}
.lms-chapter-item__actions{display:flex;gap:4px}
.tag-mini{font-size:10px;padding:1px 6px;border-radius:4px;font-weight:600}
.tag-preview{background:#e8f4ee;color:#2d6e4a}
.icon-mini{
  width:30px;height:30px;border:none;background:transparent;border-radius:6px;
  cursor:pointer;display:flex;align-items:center;justify-content:center;font-size:14px;color:var(--lms-text-3,#a08060);
}
.icon-mini:hover{background:var(--lms-brand-bg,rgba(139,99,71,.08));color:var(--lms-brand,#8b6347)}
.icon-mini.danger:hover{background:#fce8e6;color:var(--lms-danger,#c0392b)}
/* R5: 编辑按钮禁用视觉提示 (trap-650 上线前 disabled) */
.icon-mini.edit-chapter-btn:disabled{opacity:.45;cursor:not-allowed;background:transparent}

/* === Form Fields === */
.field-group{margin-bottom:14px}
.field-label{font-size:12px;font-weight:600;color:var(--lms-text-1,#3a2a1a);display:block;margin-bottom:6px}
.field-label .req{color:var(--lms-danger,#c0392b);margin-right:2px}
.field-hint{font-size:11px;color:var(--lms-text-3,#a08060);margin-top:4px}
.field-input{
  width:100%;padding:9px 12px;border:1px solid var(--lms-border,#e8d5c4);
  border-radius:var(--lms-radius-sm,8px);font-size:13px;
  background:#fff;color:var(--lms-text-1,#3a2a1a);transition:border-color .15s;
}
.field-input:focus{outline:none;border-color:var(--lms-brand,#8b6347);box-shadow:0 0 0 3px rgba(139,99,71,.12)}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}

/* === iOS Switch === */
.ios-switch-row{
  display:flex;justify-content:space-between;align-items:center;
  padding:12px 14px;background:#fdf8f3;border-radius:var(--lms-radius-sm,8px);
  margin:14px 0;
}
.ios-switch-info{flex:1}
.ios-switch-info label{font-size:13px;font-weight:600;color:var(--lms-text-1,#3a2a1a);display:block;margin-bottom:2px}
.ios-switch-info small{font-size:11px;color:var(--lms-text-3,#a08060)}
.ios-switch{position:relative;display:inline-block;width:46px;height:26px;flex-shrink:0}
.ios-switch input{opacity:0;width:0;height:0}
.ios-slider{
  position:absolute;inset:0;background:#d6c5b1;border-radius:26px;
  cursor:pointer;transition:background .25s;
}
.ios-slider::before{
  content:'';position:absolute;left:3px;top:3px;
  width:20px;height:20px;background:#fff;border-radius:50%;
  transition:transform .25s;box-shadow:0 2px 4px rgba(0,0,0,.15);
}
.ios-switch input:checked + .ios-slider{background:var(--lms-brand,#8b6347)}
.ios-switch input:checked + .ios-slider::before{transform:translateX(20px)}

/* === Stats 2x2 === */
.lms-stats-grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lms-stat-mini{
  background:#fdf8f3;padding:12px;border-radius:var(--lms-radius-sm,8px);
  border:1px solid var(--lms-border,#e8d5c4);
}
.lms-stat-mini .num{font-size:22px;font-weight:700;color:var(--lms-brand,#8b6347);line-height:1}
.lms-stat-mini .num small{font-size:11px;color:var(--lms-text-3,#a08060);font-weight:500;margin-left:2px}
.lms-stat-mini .lbl{font-size:11px;color:var(--lms-text-3,#a08060);margin-top:4px}

/* === Empty State === */
.lms-empty{padding:32px 16px;text-align:center;color:var(--lms-text-3,#a08060)}
.lms-empty__icon{font-size:32px;margin-bottom:10px}
.lms-empty__msg{font-size:13px;margin-bottom:14px}

/* === Generic Dialog (R6 命名空间) === */
.lms-dialog{position:fixed;inset:0;z-index:1050;display:flex;align-items:center;justify-content:center}
.lms-dialog__backdrop{position:absolute;inset:0;background:rgba(58,42,26,.45);animation:fadeIn .15s ease}
.lms-dialog__card{
  position:relative;background:var(--lms-surface,#fff);border-radius:var(--lms-radius,12px);
  padding:24px;width:min(360px,86vw);box-shadow:var(--lms-shadow,0 12px 40px rgba(58,42,26,.18));
}
.lms-dialog__title{font-size:16px;color:var(--lms-text-1,#3a2a1a);font-weight:700;margin-bottom:10px}
.lms-dialog__msg{font-size:13px;color:var(--lms-text-3,#a08060);margin-bottom:18px;line-height:1.5}
.lms-dialog__actions{display:flex;gap:10px;justify-content:flex-end}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}

/* === Header 添加按钮（lms-btn-add） === */
.lms-btn-add{display:inline-flex;align-items:center;gap:5px;padding:8px 18px;background:#8b6347;color:#fff;border:1px solid #8b6347;border-radius:8px;font-size:13px;font-weight:600;cursor:pointer;transition:all .15s;box-shadow:0 2px 6px rgba(139,99,71,.18);white-space:nowrap}
.lms-btn-add:hover{background:#6b4a38;border-color:#6b4a38;transform:translateY(-1px);box-shadow:0 3px 8px rgba(139,99,71,.25)}
.lms-btn-add:active{transform:translateY(0);box-shadow:0 1px 3px rgba(139,99,71,.2)}

/* === Tab Row (题库管理 tab 切换条) === */
.tab-row{display:flex;gap:6px;margin-bottom:16px}

/* === 危险按钮 (danger variant, 给 oaConfirm 用) === */
.btn-danger{background:var(--lms-danger,#c0392b);color:#fff}
.btn-danger:hover{background:#a53026}

/* === Mobile Bottom Sheet (R3) === */
@media (max-width:540px){
  .lms-drawer__panel{
    width:100vw;top:auto;bottom:0;height:90vh;
    border-radius:16px 16px 0 0;
    transform:translateY(100%);
  }
  .lms-drawer.lms-drawer--open .lms-drawer__panel{transform:translateY(0)}
  .lms-drawer__panel::before{
    content:'';display:block;
    width:36px;height:4px;margin:8px auto;
    background:#d6c5b1;border-radius:2px;
  }
  .lms-drawer__close{
    width:44px;height:44px;top:8px;right:8px;
    background:var(--lms-brand-bg,rgba(139,99,71,.08));
  }
  .lms-drawer__header{padding-top:18px}
  .lms-tabs{padding:0 16px}
  .lms-tab-panel{padding:16px 16px 60px}
  .lms-drawer__footer{padding:12px 16px}
}

/* === P4: prefers-reduced-motion 降动 === */
@media (prefers-reduced-motion:reduce){
  .lms-drawer__panel,.lms-drawer__backdrop,.ios-slider,.ios-slider::before,.lms-tab{transition:none}
}

/* ================================================================
   题库管理 UI 升级 (Part B, 2026-07-17)
   前缀: lms-exam-*
   组件: stats grid / toolbar / chip / table tag / mobile card
   ================================================================ */

/* -- Stats Grid (复用 stat-card, 补父容器) -- */
.lms-exam-stats-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;margin-bottom:16px}
.lms-exam-stats-grid .stat-card{display:flex;align-items:center;gap:12px}
.lms-exam-stats-grid .stat-card .stat-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;font-size:18px;flex-shrink:0}
.lms-exam-stats-grid .stat-card .stat-icon.theme-a{background:rgba(139,99,71,.12);color:#8b6347}
.lms-exam-stats-grid .stat-card .stat-icon.theme-b{background:rgba(90,138,106,.10);color:#5a8a6a}
.lms-exam-stats-grid .stat-card .stat-icon.theme-c{background:rgba(91,141,184,.10);color:#5b8db8}
.lms-exam-stats-grid .stat-card .stat-icon.theme-d{background:rgba(176,140,80,.12);color:#a07d3c}
.lms-exam-stats-grid .stat-card .stat-icon.theme-e{background:rgba(192,57,43,.08);color:#c0392b}
.lms-exam-stats-grid .stat-card .stat-num{font-size:22px;font-weight:700;color:var(--lms-text-1,#3d2b1f);line-height:1.1}
.lms-exam-stats-grid .stat-card .stat-label{font-size:12px;color:var(--lms-text-3,#9ca3af);margin-top:2px}
.lms-exam-stats-grid .stat-card .stat-sub{font-size:11px;color:var(--lms-success,#5a8a6a);margin-top:2px}
.lms-exam-stats-grid .stat-card .stat-sub.muted{color:var(--lms-text-3,#9ca3af);font-style:italic}

/* -- Toolbar (search + chip, 跟 lms-toolbar 同模式) -- */
.lms-exam-toolbar{display:flex;align-items:center;gap:12px;margin-bottom:12px;flex-wrap:wrap}
.lms-exam-search{position:relative;width:280px;max-width:100%}
.lms-exam-search input{width:100%;padding:8px 12px 8px 32px;border:1px solid #e0d0c0;border-radius:8px;font-size:13px;background:#fff;color:#5c4033;box-sizing:border-box}
.lms-exam-search input:focus{outline:0;border-color:rgba(139,99,71,.25);box-shadow:0 0 0 3px rgba(139,99,71,.08)}
.lms-exam-search::before{content:'🔍';position:absolute;left:10px;top:50%;transform:translateY(-50%);font-size:12px;opacity:.6;pointer-events:none}
.lms-exam-chip-row{display:flex;gap:6px;flex-wrap:wrap}
.lms-exam-chip{padding:5px 12px;border-radius:99px;border:1px solid #e0d0c0;font-size:12px;cursor:pointer;background:#fff;color:#8b6347;transition:all .12s;white-space:nowrap;user-select:none}
.lms-exam-chip:hover{border-color:#c4a88b;color:#6b4a38}
.lms-exam-chip.active{background:rgba(139,99,71,.08);color:#8b6347;border-color:rgba(139,99,71,.25);font-weight:500}

/* -- Type Tags (题库题型) -- */
.lms-exam-type{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;border-radius:99px;font-size:12px;font-weight:500}
.lms-exam-type.t-single{background:rgba(91,141,184,.10);color:#4a7596}
.lms-exam-type.t-multi{background:rgba(176,140,80,.12);color:#a07d3c}
.lms-exam-type.t-blank{background:rgba(139,99,71,.10);color:#8b6347}
.lms-exam-diff{font-size:12px;color:#d4a017;letter-spacing:1px}

/* -- Status Tags (考试/会话状态) -- */
.lms-exam-status{display:inline-flex;align-items:center;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:500}
.lms-exam-status.s-running{background:#dcfce7;color:#166534}
.lms-exam-status.s-ended{background:#f3f4f6;color:#6b7280}
.lms-exam-status.s-pending{background:#fef3c7;color:#92400e}

/* -- Table Enhancements -- */
.lms-exam-table tbody tr{transition:background .12s}
.lms-exam-table tbody tr:hover{background:var(--lms-surface-2,#faf8f5)}
.lms-exam-table .col-q{width:38%}
.lms-exam-table .col-t{width:14%}
.lms-exam-table .col-d{width:10%}
.lms-exam-table .col-c{width:20%}
.lms-exam-table .col-a{width:18%;text-align:right}

/* -- Section chip label -- */
.lms-exam-chip-label{font-size:12px;color:var(--lms-text-3,#9ca3af);flex-shrink:0}

/* -- Empty State -- */
.lms-exam-empty{padding:40px 16px;text-align:center;color:#a08060}
.lms-exam-empty .icon{font-size:32px;margin-bottom:10px}
.lms-exam-empty .msg{font-size:13px;margin-bottom:14px}

/* -- Mobile (表格→卡片) -- */
@media(max-width:768px){
  .lms-exam-stats-grid{grid-template-columns:repeat(2,1fr)}
  .lms-exam-stats-grid .stat-card{padding:10px 12px}
  .lms-exam-stats-grid .stat-card .stat-num{font-size:18px}
  .lms-exam-toolbar{flex-direction:column;align-items:stretch}
  .lms-exam-search{width:100%}
  /* 题库表格→卡片 */
  .lms-exam-table thead{display:none}
  .lms-exam-table tbody,.lms-exam-table tr,.lms-exam-table td{display:block}
  .lms-exam-table tr{margin-bottom:12px;border:1px solid #f0e6dc;border-radius:10px;overflow:hidden}
  .lms-exam-table td{padding:8px 12px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #f8f4f0}
  .lms-exam-table td::before{content:attr(data-label);font-size:11px;color:#9ca3af;font-weight:500;flex-shrink:0;margin-right:8px}
  .lms-exam-table td:last-child{border-bottom:none}
  .lms-exam-table .col-q,.lms-exam-table .col-t,.lms-exam-table .col-d,.lms-exam-table .col-c,.lms-exam-table .col-a{width:auto;text-align:left}
}
