/* ========== 全局基础 ========== */
* {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}
body {
    font-family: "PingFang SC", "Microsoft YaHei", "SimHei", "Noto Sans SC", -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    background: #f5f7fa;
    height: 100vh;
    overflow: hidden;
}

/* ========== 登录页 ========== */
.login-page {
    width: 100%;
    height: 100vh;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(135deg, #1677ff, #409eff);
}
.login-box {
    width: 360px;
    background: #fff;
    border-radius: 12px;
    padding: 40px 32px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.1);
}
.login-title {
    text-align: center;
    font-size: 20px;
    font-weight: 600;
    color: #333;
    margin-bottom: 32px;
}
.login-form-item {
    margin-bottom: 20px;
}
.login-form-item label {
    display: block;
    margin-bottom: 8px;
    font-size: 14px;
    color: #555;
}
.login-form-item input {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #dcdfe6;
    border-radius: 6px;
    font-size: 14px;
    outline: none;
}
.login-form-item input:focus {
    border-color: #409eff;
}
.login-btn {
    width: 100%;
    padding: 12px;
    background: #409eff;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 16px;
    cursor: pointer;
    transition: background 0.2s;
}
.login-btn:hover {
    background: #66b1ff;
}

/* ========== 主界面布局 ========== */
.top-header {
    height: 60px;
    background: linear-gradient(135deg, #1677ff, #409eff);
    color: #fff;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 32px;
    font-size: 20px;
    font-weight: 600;
}
.header-right {
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 16px;
}
.logout-btn {
    background: rgba(255,255,255,0.2);
    color: #fff;
    border: none;
    padding: 6px 14px;
    border-radius: 4px;
    cursor: pointer;
    font-size: 13px;
}
.logout-btn:hover {
    background: rgba(255,255,255,0.3);
}
.layout {
    display: flex;
    height: calc(100vh - 60px);
}
.sidebar {
    width: 220px;
    background: #fff;
    border-right: 1px solid #e8e8e8;
    display: flex;
    flex-direction: column;
    flex-shrink: 0;
    padding-top: 12px;
}
.sidebar .menu-item {
    padding: 14px 20px;
    cursor: pointer;
    color: #333;
    font-size: 15px;
    font-weight: 500;
    border-left: 3px solid transparent;
    transition: all 0.2s;
    margin-bottom: 4px;
}
.sidebar .menu-item:hover {
    background-color: #f5f7fa;
    color: #165DFF;
}
.sidebar .menu-item.active {
    background-color: #e8f0ff;
    color: #165DFF;
    font-weight: 600;
    border-left-color: #165DFF;
}
.main-content {
    flex: 1;
    display: flex;
    flex-direction: column;
    overflow: hidden;
}
.content-body {
    flex: 1;
    overflow-y: auto;
    padding: 24px 32px;
}
.content-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
    border-bottom: 1px solid #e4e7ed;
}
.tab-btn {
    padding: 10px 24px;
    border: none;
    background: none;
    font-size: 15px;
    color: #666;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    transition: all 0.2s;
}
.tab-btn.active {
    color: #409eff;
    border-bottom-color: #409eff;
    font-weight: 500;
}
.tab-content, .menu-panel {
    display: none;
}
.tab-content.active, .menu-panel.active {
    display: block;
}
.container {
    max-width: 1200px;
    margin: 0 auto;
}

/* ========== 表单组件 ========== */
.form-row {
    margin-bottom: 16px;
    display: flex;
    gap: 12px;
}
.form-item {
    flex: 1;
}
label {
    display: block;
    margin-bottom: 6px;
    font-size: 14px;
    color: #555;
}
input, select {
    width: 100%;
    padding: 8px 12px;
    border: 1px solid #dcdfe6;
    border-radius: 6px;
    font-size: 14px;
    outline: none;
    background: #fff;
}
input:disabled {
    background: #f5f7fa;
    color: #909399;
    cursor: not-allowed;
}
input:focus, select:focus {
    border-color: #409eff;
}
textarea {
    width: 100%;
    padding: 10px 12px;
    border: 1px solid #dcdfe6;
    border-radius: 6px;
    font-size: 14px;
    outline: none;
    background: #fff;
    font-family: inherit;
    line-height: 1.7;
    min-height: 120px;
    resize: vertical;
    box-sizing: border-box;
}
textarea:focus {
    border-color: #409eff;
}
.tip {
    font-size: 12px;
    color: #909399;
    margin-top: 4px;
}
.mini-btn {
    width: auto;
    padding: 8px 16px;
    font-size: 14px;
    white-space: nowrap;
}
.mini-btn.save {
    background: #67c23a;
}
.mini-btn.save:hover {
    background: #85ce61;
}

/* ========== 上传区域 ========== */
.upload-card {
    background: #fff;
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
    margin-bottom: 16px;
}
.upload-area {
    margin: 20px 0;
    padding: 40px;
    border: 2px dashed #dcdfe6;
    border-radius: 8px;
    text-align: center;
    transition: all 0.3s;
    cursor: pointer;
    background: #fafafa;
}
.upload-area:hover, .upload-area.drag-over {
    border-color: #409eff;
    background: #ecf5ff;
}
.upload-tip {
    font-size: 14px;
    color: #666;
    margin-bottom: 12px;
}
.file-input-hidden {
    display: none;
}
.selected-files {
    margin-top: 16px;
    text-align: left;
}
.selected-file-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 12px;
    background: #fff;
    border-radius: 4px;
    margin-bottom: 6px;
    font-size: 13px;
    border: 1px solid #ebeef5;
}
.selected-file-name {
    color: #333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    flex: 1;
    margin-right: 12px;
}
.selected-file-size {
    color: #999;
    font-size: 12px;
    flex-shrink: 0;
}
.submit-btn {
    width: 100%;
    padding: 12px;
    background: #409eff;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 16px;
    cursor: pointer;
    transition: background 0.2s;
}
.submit-btn:hover {
    background: #66b1ff;
}
.submit-btn:disabled {
    background: #a0cfff;
    cursor: not-allowed;
}
.result-box {
    margin-top: 20px;
    padding: 16px;
    background: #fff;
    border-radius: 6px;
    font-family: monospace;
    font-size: 13px;
    line-height: 1.6;
    white-space: pre-wrap;
    word-break: break-all;
    max-height: 300px;
    overflow-y: auto;
    border: 1px solid #ebeef5;
}
.success { color: #67c23a; }
.error { color: #f56c6c; }

/* ========== 文件列表 ========== */
.filter-bar,
.log-filter-bar {
    display: flex;
    gap: 12px;
    margin-bottom: 12px;
    padding: 16px 20px;
    background: #fff;
    border-radius: 12px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
    align-items: flex-end;
    flex-wrap: wrap;
}
.filter-item {
    flex: 1;
}
.total-count,
.log-total-count {
    padding: 0 4px 12px;
    font-size: 13px;
    color: #666;
}
.total-count strong,
.log-total-count strong {
    color: #409eff;
    font-size: 16px;
    margin: 0 2px;
    font-weight: 600;
}

/* 列表表头（最终优化版） */
.list-header,
.log-list-header {
    display: flex;
    align-items: center;
    padding: 12px 16px;
    background: #e6f0ff;
    border: 1px solid #c9dfff;
    border-bottom: 2px solid #1677ff;
    border-radius: 8px 8px 0 0;
    font-weight: 700;
    color: #1d2b4a;
    font-size: 14px;
}
/* 表头所有列统一加粗 */
.list-header [class^="header-"],
.list-header [class*=" header-"],
.log-list-header [class^="col-"],
.log-list-header [class*=" col-"],
.user-table th {
    font-weight: 700;
}
/* 表头次要列颜色区分 */
.list-header .header-time,
.list-header .header-author,
.list-header .header-grade,
.list-header .header-book,
.list-header .header-format,
.list-header .header-size,
.log-list-header .col-index,
.log-list-header .col-ip,
.log-list-header .col-time {
    color: #4a5a7a;
}

/* 列宽定义 */
.header-checkbox {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    cursor: pointer;
}
.header-name { flex: 2; }
.header-format, .header-size, .header-time { flex: 1; }
.header-author, .paper-author { flex: none; width: 80px; }
.header-grade, .paper-grade { flex: none; width: 100px; }
.header-book, .paper-book { flex: none; width: 90px; }
.header-time, .paper-time { flex: none; width: 140px; }
.header-actions, .paper-actions {
    flex-shrink: 0;
    width: 160px;
    display: flex;
    justify-content: flex-end;
    gap: 8px;
}

/* 批量删除按钮（最终加深版） */
.batch-delete-btn {
    padding: 6px 14px;
    background: #e53e3e;
    color: #fff;
    border: none;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    transition: background 0.2s;
}
.batch-delete-btn:disabled {
    background: #f5a3a3;
    cursor: not-allowed;
}
.batch-delete-btn:hover:not(:disabled) {
    background: #cf2a2a;
}

.unit-section {
    margin-bottom: 20px;
}
.unit-title {
    font-size: 15px;
    font-weight: 600;
    color: #333;
    margin-bottom: 10px;
    padding-left: 8px;
    border-left: 4px solid #409eff;
}
.paper-list {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.paper-item {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 12px 16px;
    background: #fff;
    border-radius: 8px;
    transition: all 0.2s;
    box-shadow: 0 2px 8px rgba(0,0,0,0.03);
    font-size: 14px;
}
.paper-item:hover {
    background: #ecf5ff;
}
.paper-checkbox {
    flex-shrink: 0;
    width: 16px;
    height: 16px;
    cursor: pointer;
}
.paper-name {
    flex: 2;
    color: #333;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.paper-format, .paper-size, .paper-time,
.paper-author, .paper-grade, .paper-book {
    flex: 1;
    font-size: 12px;
    color: #909399;
}
.action-btn {
    padding: 5px 12px;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    border: none;
    transition: all 0.2s;
}
.btn-download {
    background: #409eff;
    color: #fff;
}
.btn-download:hover {
    background: #66b1ff;
}
.btn-delete {
    background: #fef0f0;
    color: #f56c6c;
}
.btn-delete:hover {
    background: #fde2e2;
}
.btn-edit {
    background: #ecf5ff;
    color: #409eff;
    margin-right: 6px;
}
.btn-edit:hover {
    background: #d9ecff;
}
.btn-view {
    background: #f4f4f5;
    color: #606266;
    margin-right: 6px;
}
.btn-view:hover {
    background: #e9e9eb;
}
.empty-tip {
    text-align: center;
    padding: 40px;
    color: #909399;
    font-size: 14px;
    background: #fff;
    border-radius: 8px;
}
.loading {
    text-align: center;
    padding: 20px;
    color: #909399;
}

/* ========== 用户管理 ========== */
.user-card {
    background: #fff;
    border-radius: 12px;
    padding: 24px;
    box-shadow: 0 2px 12px rgba(0,0,0,0.04);
}
.user-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 20px;
}
.user-title {
    font-size: 16px;
    font-weight: 600;
    color: #333;
}
.add-user-btn {
    padding: 8px 16px;
    background: #409eff;
    color: #fff;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    font-size: 14px;
}
.add-user-btn:hover {
    background: #66b1ff;
}
.user-table {
    width: 100%;
    border-collapse: collapse;
}
.user-table th, .user-table td {
    padding: 12px 16px;
    text-align: left;
    border-bottom: 1px solid #ebeef5;
    font-size: 14px;
}
.user-table th {
    background: #e6f0ff;
    border-bottom: 2px solid #1677ff;
    color: #1d2b4a;
}
.user-table td {
    color: #555;
}

/* ========== 弹窗组件 ========== */
.modal-mask {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: rgba(0,0,0,0.5);
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 9999;
}
.modal-mask.show {
    display: flex;
}
.modal-box {
    width: 360px;
    background: #fff;
    border-radius: 8px;
    padding: 24px;
}
.modal-title {
    font-size: 16px;
    font-weight: 600;
    margin-bottom: 20px;
    color: #333;
}
.modal-footer {
    margin-top: 24px;
    display: flex;
    justify-content: flex-end;
    gap: 12px;
}
.btn-cancel {
    padding: 8px 16px;
    background: #fff;
    border: 1px solid #dcdfe6;
    color: #666;
    border-radius: 6px;
    cursor: pointer;
}
.btn-confirm {
    padding: 8px 16px;
    background: #409eff;
    color: #fff;
    border: none;
    border-radius: 6px;
    cursor: pointer;
}

/* 弹窗全局定位兜底 */
.modal-mask,
#globalToastMask,
#globalConfirmMask {
    position: fixed !important;
    top: 0 !important;
    left: 0 !important;
    width: 100vw !important;
    height: 100vh !important;
    transform: none !important;
    margin: 0 !important;
    padding: 0 !important;
}
.modal-mask .modal-box,
#globalToastBox,
#globalConfirmMask > div {
    position: absolute !important;
    top: 50% !important;
    left: 50% !important;
    transform: translate(-50%, -50%) !important;
    margin: 0 !important;
}
html, body,
.layout,
.sidebar,
.main-content,
.content-body,
.menu-panel,
.tab-content,
.container {
    transform: none !important;
    perspective: none !important;
    filter: none !important;
    -webkit-transform: none !important;
}

/* ========== 消息提示 ========== */
.toast {
    position: fixed;
    top: 24px;
    left: 50%;
    transform: translateX(-50%);
    padding: 12px 24px;
    border-radius: 8px;
    color: #fff;
    font-size: 14px;
    z-index: 99999;
    opacity: 0;
    transition: opacity 0.3s;
    pointer-events: none;
}
.toast.show {
    opacity: 1;
}
.toast.success { background: #67c23a; }
.toast.error { background: #f56c6c; }
.toast.warning { background: #e6a23c; }

/* ========== 操作日志 ========== */
#system-account-panel, #system-log-panel {
    display: none;
}
#system-account-panel.active, #system-log-panel.active {
    display: block;
}
.log-filter-bar .filter-item {
    min-width: 160px;
}
.log-filter-bar .filter-item label {
    margin-bottom: 6px;
    font-size: 13px;
    color: #666;
}
.log-filter-bar .query-btn {
    flex-shrink: 0;
    height: 34px;
    padding: 0 20px;
    background: #409eff;
    color: #fff;
    border: none;
    border-radius: 6px;
    font-size: 14px;
    cursor: pointer;
    transition: background 0.2s;
}
.log-filter-bar .query-btn:hover {
    background: #66b1ff;
}

/* 操作日志列宽 */
.log-list-header .col-index { flex: none; width: 60px; }
.log-list-header .col-username { flex: none; width: 170px; }
.log-list-header .col-module { flex: none; width: 120px; }
.log-list-header .col-action { flex: none; width: 100px; }
.log-list-header .col-detail { flex: 1; }
.log-list-header .col-ip { flex: none; width: 130px; }
.log-list-header .col-time { flex: none; width: 170px; }

/* 日志列表 */
.log-list {
    display: flex;
    flex-direction: column;
    border: 1px solid #ebeef5;
    border-radius: 0 0 8px 8px;
    overflow: hidden;
}
.log-item {
    display: flex;
    align-items: center;
    padding: 10px 16px;
    background: #fff;
    font-size: 13px;
    border-bottom: 1px solid #f0f2f5;
    transition: background 0.2s;
}
.log-item:last-child {
    border-bottom: none;
}
.log-item:hover {
    background: #f5f9ff;
}
.log-item .col-index { flex: none; width: 60px; color: #999; }
.log-item .col-username { flex: none; width: 170px; color: #333; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.log-item .col-module { flex: none; width: 120px; }
.log-item .col-action { flex: none; width: 100px; }
.log-item .col-detail {
    flex: 1;
    color: #555;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    padding-right: 12px;
}
.log-item .col-ip { flex: none; width: 130px; color: #999; }
.log-item .col-time {
    flex: none;
    width: 170px;
    color: #999;
    font-family: "Consolas", monospace;
}

/* 模块/操作标签 */
.module-tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
    background: #ecf5ff;
    color: #409eff;
    font-weight: 500;
}
.action-tag {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 500;
}
.action-tag.login { background: #f0f9eb; color: #67c23a; }
.action-tag.logout { background: #f0f2f5; color: #606266; }
.action-tag.upload { background: #ecf5ff; color: #409eff; }
.action-tag.add,
.action-tag.init { background: #f0f9eb; color: #67c23a; }
.action-tag.edit,
.action-tag.update { background: #fdf6ec; color: #e6a23c; }
.action-tag.delete,
.action-tag.batchDelete { background: #fef0f0; color: #f56c6c; }

/* 分页控件 */
.log-pagination {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    gap: 8px;
    margin-top: 16px;
    padding: 10px 0;
    font-size: 13px;
    color: #606266;
}
.log-pagination .page-btn {
    min-width: 32px;
    height: 32px;
    padding: 0 10px;
    border: 1px solid #dcdfe6;
    background: #fff;
    color: #606266;
    border-radius: 4px;
    cursor: pointer;
    transition: all 0.2s;
}
.log-pagination .page-btn:hover:not(:disabled) {
    color: #409eff;
    border-color: #409eff;
}
.log-pagination .page-btn.active {
    background: #409eff;
    color: #fff;
    border-color: #409eff;
}
.log-pagination .page-btn:disabled {
    background: #f5f7fa;
    color: #c0c4cc;
    cursor: not-allowed;
}
.log-pagination .page-info {
    margin-right: 8px;
}
.log-pagination .page-jump {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-left: 8px;
}
.log-pagination .page-jump input {
    width: 50px;
    height: 32px;
    padding: 0 8px;
    border: 1px solid #dcdfe6;
    border-radius: 4px;
    font-size: 13px;
    text-align: center;
    outline: none;
}
.log-pagination .page-jump input:focus {
    border-color: #409eff;
}

/* ========== 专项样式 ========== */
/* 编辑诗词弹窗加宽 */
#poemEditModal > div {
    width: 560px;
    max-width: 92vw;
}

/* 年级筛选下拉框宽度 */
.form-item.grade-filter,
.filter-item.grade-filter {
    flex: 0 0 auto;
    width: 360px;
}
.grade-filter select {
    width: 100%;
}

/* 表头复选框间距优化 */
.list-header .header-checkbox {
    margin-right: 8px;
    flex-shrink: 0;
}

/* 同步修复列表行内复选框间距，保持对齐 */
.paper-item .paper-checkbox {
    margin-right: 8px;
    flex-shrink: 0;
}

/* ========== 用户管理表格优化 ========== */
/* 列宽与对齐 */
.user-table th:first-child,
.user-table td:first-child {
    width: 80px;
    color: #606266;
}
.user-table th:last-child,
.user-table td:last-child {
    width: 120px;
    text-align: right;
}

/* 行 hover 效果，和文件列表统一 */
.user-table tbody tr:hover {
    background: #f5f9ff;
}

/* 删除按钮样式统一 */
.user-table .btn-delete {
    padding: 5px 12px;
    border: none;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    background: #fef0f0;
    color: #f56c6c;
    transition: all 0.2s;
}
.user-table .btn-delete:hover {
    background: #fde2e2;
}
.user-table .btn-delete:disabled {
    background: #f5f7fa;
    color: #c0c4cc;
    cursor: not-allowed;
}
/* 修改密码按钮（用户表格操作列） */
.user-table .btn-edit {
    padding: 5px 12px;
    border: none;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    background: #ecf5ff;
    color: #409eff;
    margin-right: 6px;
    transition: all 0.2s;
}
.user-table .btn-edit:hover {
    background: #d9ecff;
}

/* 表格文字颜色统一 */
.user-table td {
    color: #333;
}
/* 操作行为标签颜色区分 */
.action-tag-color {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 4px;
    font-size: 12px;
    font-weight: 500;
    white-space: nowrap;
    line-height: 1.5;
}

/* 登录 - 蓝色 */
.action-tag-color.login {
    color: #1677ff;
    background-color: #e6f4ff;
}

/* 登出 - 灰色 */
.action-tag-color.logout {
    color: #595959;
    background-color: #f0f0f0;
}

/* 上传 - 青色 */
.action-tag-color.upload {
    color: #13c2c2;
    background-color: #e6fffb;
}

/* 新增 - 绿色 */
.action-tag-color.add {
    color: #52c41a;
    background-color: #f6ffed;
}

/* 编辑 - 橙色 */
.action-tag-color.edit {
    color: #fa8c16;
    background-color: #fff7e6;
}

/* 删除 - 红色 */
.action-tag-color.delete {
    color: #f5222d;
    background-color: #fff1f0;
}

/* 初始化 - 紫色 */
.action-tag-color.init {
    color: #722ed1;
    background-color: #f9f0ff;
}

/* 批量删除 - 深红 */
.action-tag-color.batchDelete {
    color: #cf1322;
    background-color: #ffccc7;
}

/* 未匹配行为 - 默认灰色 */
.action-tag-color.default {
    color: #333333;
    background-color: #f5f5f5;
}

/* 移除数字输入框默认上下箭头 */
#logJumpInput::-webkit-outer-spin-button,
#logJumpInput::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
#logJumpInput[type=number] {
    -moz-appearance: textfield;
}

/* ========== 筛选统计区 ========== */
.total-count {
    margin-bottom: 12px;
    font-size: 14px;
    color: #606266;
}

/* ========== 表头：保留卡片，加大底部间距 ========== */
.list-header,
.log-list-header{
    border: 1px solid #b8d1ff;
    background: #e6f0ff;
    border-radius: 8px;
    padding: 10px 16px;
    margin-bottom: 16px;
    font-weight: 500;
    color: #1e293b;
}



/* ========== 文件列表容器 ========== */
#listContent {
    display: flex;
    flex-direction: column;
    gap: 12px; /* 每个单元分组之间的间距 */
}

/* ========== 单元分组：统一卡片风格 ========== */
.unit-group {
    background: #ffffff;
    border: 1px solid #e2e8f0;
    border-radius: 8px;
    padding: 14px 16px 16px;
}

/* 单元分组标题 */
.unit-group .unit-title {
    margin: 0 0 12px 0;
    padding-left: 10px;
    font-size: 15px;
    font-weight: 500;
    color: #1e293b;
    border-left: 3px solid #3b82f6;
}

/* 分组内文件项 */
.unit-group .file-item {
    padding: 10px 4px;
    border-bottom: 1px solid #f0f2f5;
}
.unit-group .file-item:last-child {
    border-bottom: none;
}

/* 空分组占位 */
.unit-group .empty-tip {
    padding: 28px 0;
    text-align: center;
    color: #94a3b8;
    font-size: 14px;
}

/* ========== 账号列表表头：移除蓝线+统一风格 ========== */
.user-table thead th {
    border-bottom: none !important; /* 核心：移除底部粗蓝线 */
    background: #eef4ff; /* 和文件列表表头同色 */
    color: #1e293b;
    font-weight: 500;
    padding: 10px 16px;
    text-align: left;
}

/* 表格整体圆角+边框，和卡片风格统一 */
.user-table {
    border: 1px solid #c7d9ff;
    border-radius: 8px;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    width: 100%;
}

/* 表格行分隔线，用细灰线替代粗蓝线 */
.user-table tbody td {
    border-bottom: 1px solid #e2e8f0;
    padding: 12px 16px;
}
.user-table tbody tr:last-child td {
    border-bottom: none;
}

.log-card {
    border: 1px solid #c7d9ff;
    border-radius: 8px;
    overflow: hidden;
    background: #fff;
}
/* 表头：去掉底部圆角、底部外边距，底部不设边框 */
.log-list-header {
    border-radius: 8px 8px 0 0 !important;
    margin-bottom: 0 !important;
    padding-bottom: 10px; /* 和顶部内边距保持一致即可 */
    border-bottom: none !important;
}

/* 列表容器：去掉顶部圆角、顶部外边距、顶部内边距，顶部边框和表头衔接 */
#logListContent {
    border-radius: 0 0 8px 8px !important;
    margin-top: 0 !important;
    padding-top: 0 !important;
    border-top: none !important;
}

/* 列表第一行：去掉顶部的边框/间距，避免出现第二条横线 */
#logListContent .log-item:first-child {
    border-top: none !important;
    padding-top: 12px;
}

/* 账号列表表头加粗，高优先级 */
#system-account-panel .user-table thead th {
    font-weight: 600 !important;
    color: #1e293b !important;
}


/* ========== 小程序访问统计 ========== */
.visit-stat-cards {
    display: flex;
    gap: 20px;
    margin-bottom: 20px;
}
.visit-stat-card {
    flex: 1;
    background: #fff;
    border-radius: 12px;
    padding: 24px 28px;
    box-shadow: 0 2px 12px rgba(0, 0, 0, 0.06);
    display: flex;
    align-items: center;
    gap: 16px;
    position: relative;
    overflow: hidden;
}
.visit-stat-card::after {
    content: '';
    position: absolute;
    right: -20px;
    top: -20px;
    width: 90px;
    height: 90px;
    border-radius: 50%;
    opacity: 0.08;
}
.visit-card-today {
    border-left: 4px solid #1677ff;
}
.visit-card-today::after {
    background: #1677ff;
}
.visit-card-total {
    border-left: 4px solid #52c41a;
}
.visit-card-total::after {
    background: #52c41a;
}
.visit-stat-card .stat-icon {
    font-size: 38px;
    line-height: 1;
    flex-shrink: 0;
}
.visit-stat-card .stat-info {
    display: flex;
    flex-direction: column;
}
.visit-stat-card .stat-label {
    font-size: 14px;
    color: #888;
    margin-bottom: 6px;
}
.visit-card-today .stat-num {
    font-size: 36px;
    font-weight: 700;
    color: #1677ff;
}
.visit-card-total .stat-num {
    font-size: 36px;
    font-weight: 700;
    color: #52c41a;
}
.visit-module-table {
    width: 100%;
    border-collapse: collapse;
    background: #fff;
    border-radius: 8px;
    overflow: hidden;
}
.visit-module-table th,
.visit-module-table td {
    padding: 14px 16px;
    text-align: left;
    border-bottom: 1px solid #f0f0f0;
}
.visit-module-table th {
    background: #f5f7fa;
    font-weight: 600;
    color: #333;
}
.visit-module-table tbody tr:hover {
    background: #fafafa;
}
.visit-module-table td:first-child {
    font-weight: 500;
}
.module-icon {
    margin-right: 8px;
    font-size: 16px;
}

/* 访客列表设备号列 */
.log-item .col-device {
    flex: 1;
    margin-right: 30px;
    color: #666;
    font-family: 'Consolas', 'Courier New', monospace;
    font-size: 13px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.log-list-header .col-device {
    flex: 1;
    margin-right: 30px;
    color: #4a5a7a;
}

/* ===== 意见反馈列 ===== */
.log-list-header .col-fb-name { flex: none; width: 150px; }
.log-list-header .col-fb-content { flex: 2; }
.log-list-header .col-fb-contact { flex: none; width: 130px; }
.log-list-header .col-fb-time { flex: none; width: 155px; }
.log-list-header .col-fb-result { flex: 2; }
.log-list-header .col-fb-action { flex: none; width: 80px; }

.log-item .col-fb-name { flex: none; width: 150px; color: #333; font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.log-item .col-fb-content { flex: 2; color: #555; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.log-item .col-fb-contact { flex: none; width: 130px; color: #666; }
.log-item .col-fb-time { flex: none; width: 155px; color: #999; font-size: 13px; }
.log-item .col-fb-result { flex: 2; color: #333; display: flex; align-items: center; gap: 8px; min-width: 0; }
.log-item .fb-result-text { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.log-item .fb-result-btn { flex: none; }
.log-item .col-fb-action { flex: none; width: 80px; }