/* ============================================= 邮箱总览页样式 v2.0 增强网格布局和交互效果 ============================================= */ .page-mailboxes .container{ max-width: 1200px; padding: 20px 20px 28px; grid-template-columns: 1fr; } .page-mailboxes .main{ grid-column: 1; } .page-mailboxes .card{ padding: 24px; } /* 让右侧操作区真正靠右 */ .page-mailboxes .topbar .topbar-inner{ display:flex; align-items:center; gap:20px; width:100%; } /* 栅格铺满展示,固定卡片宽度 */ .page-mailboxes #grid.grid { display: grid; grid-template-columns: repeat(auto-fill, 280px); gap: 12px; justify-content: center; max-width: 1200px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* 默认grid样式,兼容性处理 */ .page-mailboxes .grid { display: grid; grid-template-columns: repeat(auto-fill, 280px); gap: 12px; justify-content: center; max-width: 1200px; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* 增强卡片样式 */ .mailbox-card{ display: flex; flex-direction: column; gap: 8px; width: 280px; height: 145px; padding: 14px; background: rgba(255, 255, 255, 0.75); border: 1px solid rgba(255, 255, 255, 0.4); border-radius: 18px; box-shadow: 0 8px 32px rgba(99, 102, 241, 0.1), 0 4px 12px rgba(0, 0, 0, 0.05); position: relative; box-sizing: border-box; cursor: pointer; transition: all 0.3s cubic-bezier(0.16, 1, 0.3, 1); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); } .mailbox-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, #6366f1, #8b5cf6, #a855f7); border-radius: 18px 18px 0 0; opacity: 0; transition: opacity 0.3s ease; } .mailbox-card:hover::before { opacity: 1; } .mailbox-card:hover { transform: translateY(-4px) scale(1.01); box-shadow: 0 16px 40px rgba(99, 102, 241, 0.18), 0 8px 16px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(99, 102, 241, 0.15); border-color: rgba(99, 102, 241, 0.25); background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(249, 250, 251, 0.98) 100%); } .mailbox-card:active { transform: translateY(-2px) scale(0.99); transition-duration: 0.1s; } /* 当鼠标悬停在按钮区域时,取消卡片的悬停效果 */ .mailbox-card .actions:hover ~ *, .mailbox-card:has(.actions:hover) { transform: none !important; } .mailbox-card .line{ color:#475569; font-size:12px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; max-width: 256px; /* 280px - 24px padding */ } .mailbox-card .addr{ font-weight:700; font-size:14px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; width: 100%; max-width: 256px; /* 280px - 24px padding */ cursor: help; transition: all 0.2s ease; } /* 邮箱地址悬停显示完整内容 */ .mailbox-card .addr:hover { position: relative; z-index: 20; } .mailbox-card .addr:hover::after { content: attr(title); position: absolute; bottom: 100%; left: 0; background: rgba(0, 0, 0, 0.9); color: white; padding: 6px 8px; border-radius: 4px; font-size: 12px; white-space: nowrap; z-index: 21; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.3); margin-bottom: 4px; max-width: 300px; word-break: break-all; white-space: normal; } .mailbox-card .pwd{ color:#64748b; } .mailbox-card .login{ color:#64748b; } .mailbox-card .time{ color:#64748b; } /* 置顶标识 - 右上角显示 */ .mailbox-card .pin-badge { position: absolute; top: 8px; right: 8px; z-index: 5; background: linear-gradient(135deg, #f59e0b 0%, #d97706 100%); color: white; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; box-shadow: 0 2px 8px rgba(245, 158, 11, 0.4); z-index: 10; border: 2px solid rgba(255, 255, 255, 0.9); transition: all 0.2s ease; } .mailbox-card .pin-badge:hover { transform: scale(1.1) rotate(15deg); box-shadow: 0 4px 12px rgba(245, 158, 11, 0.6); } /* 收藏标识 - 右上角显示(置顶标识右侧) */ .mailbox-card .favorite-badge { position: absolute; top: 8px; right: 8px; z-index: 10; background: linear-gradient(135deg, #fbbf24 0%, #f59e0b 100%); color: white; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; box-shadow: 0 2px 8px rgba(251, 191, 36, 0.4); border: 2px solid rgba(255, 255, 255, 0.9); transition: all 0.2s ease; } /* 当同时有置顶和收藏标识时,收藏标识往左偏移 */ .mailbox-card:has(.pin-badge) .favorite-badge { right: 38px; } .mailbox-card .favorite-badge:hover { transform: scale(1.1); box-shadow: 0 4px 12px rgba(251, 191, 36, 0.6); } /* 转发标识 - 右上角显示 */ .mailbox-card .forward-badge { position: absolute; top: 8px; right: 8px; z-index: 10; background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); color: white; width: 24px; height: 24px; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 12px; box-shadow: 0 2px 8px rgba(59, 130, 246, 0.4); border: 2px solid rgba(255, 255, 255, 0.9); transition: all 0.2s ease; } /* 转发标识位置调整 - 根据其他标识偏移 */ .mailbox-card:has(.pin-badge):not(:has(.favorite-badge)) .forward-badge { right: 38px; } .mailbox-card:has(.favorite-badge):not(:has(.pin-badge)) .forward-badge { right: 38px; } .mailbox-card:has(.pin-badge):has(.favorite-badge) .forward-badge { right: 68px; } .mailbox-card .forward-badge:hover { transform: scale(1.1); box-shadow: 0 4px 12px rgba(59, 130, 246, 0.6); } /* 悬停操作区 - 2x2 网格布局 */ .mailbox-card .actions{ position: absolute; right: 8px; top: 50%; transform: translateY(-50%); display: grid; grid-template-columns: repeat(2, 1fr); grid-template-rows: repeat(2, 1fr); gap: 4px; opacity: 0; transition: opacity .2s ease, transform .2s ease; width: 80px; height: 80px; background: rgba(255, 255, 255, 0.95); border-radius: 14px; padding: 6px; box-shadow: 0 8px 25px rgba(0, 0, 0, 0.15), 0 4px 10px rgba(0, 0, 0, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.8); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); border: 1px solid rgba(255, 255, 255, 0.6); } .mailbox-card:hover .actions{ opacity: 1; transform: translateY(-50%) scale(1.02); } .mailbox-card .actions .btn-icon{ width: 32px; height: 32px; border-radius: 8px; border: 1px solid rgba(226, 232, 240, 0.6); background: rgba(255, 255, 255, 0.9); display: flex; align-items: center; justify-content: center; cursor: pointer; font-size: 14px; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; color: #475569; } .mailbox-card .actions .btn-icon::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(139, 92, 246, 0.1)); opacity: 0; transition: opacity 0.25s ease; } .mailbox-card .actions .btn-icon:hover{ background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(139, 92, 246, 0.05)); border-color: rgba(99, 102, 241, 0.3); transform: scale(1.1) translateY(-1px); box-shadow: 0 6px 20px rgba(99, 102, 241, 0.25), 0 3px 8px rgba(0, 0, 0, 0.1); color: #4338ca; } .mailbox-card .actions .btn-icon:hover::before { opacity: 1; } .mailbox-card .actions .btn-icon.active{ background: linear-gradient(135deg, #10b981 0%, #059669 100%); border-color: #10b981; color: white; box-shadow: 0 4px 14px rgba(16, 185, 129, 0.4), 0 2px 6px rgba(0, 0, 0, 0.1); } .mailbox-card .actions .btn-icon:active { transform: scale(0.95); } /* 顶部搜索条适配本页 */ .page-mailboxes .searchbar{ width: min(900px, 100%); position: relative; z-index: 10; } /* 确保搜索按钮可见 */ .page-mailboxes .searchbar .btn { flex-shrink: 0; position: relative; z-index: 11; } /* 分页器样式优化 */ .page-mailboxes .pager { display: flex; justify-content: center; align-items: center; gap: 12px; margin-top: 16px; min-height: 40px; } .page-mailboxes .pager #page { min-width: 120px; text-align: center; color: #64748b; font-size: 14px; font-weight: 500; } .page-mailboxes .pager .btn { transition: all 0.2s ease; } .page-mailboxes .pager .btn:disabled { opacity: 0.5; cursor: not-allowed; } /* 加载状态优化 */ .page-mailboxes #grid.loading { opacity: 0.6; pointer-events: none; transition: opacity 0.2s ease; } /* 加载时隐藏网格 */ .page-mailboxes #grid.loading-hidden { display: none; } /* 视图切换过渡状态 */ .page-mailboxes #grid.view-transitioning { transition: opacity 0.1s ease-out; } .page-mailboxes #grid.view-transitioning .mailbox-card, .page-mailboxes #grid.view-transitioning .mailbox-list-item { animation: fadeInUp 0.25s cubic-bezier(0.4, 0, 0.2, 1) forwards; opacity: 0; transform: translateY(8px) scale(0.98); } /* 确保动画结束后状态正确 - 使用更高特异性避免!important */ .page-mailboxes #grid.grid:not(.view-transitioning) .mailbox-card, .page-mailboxes #grid.list:not(.view-transitioning) .mailbox-list-item { animation: none; opacity: 1; transform: none; animation-delay: 0s; animation-fill-mode: none; } /* 网格视图交错动画 */ .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(1) { animation-delay: 0.01s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(2) { animation-delay: 0.02s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(3) { animation-delay: 0.03s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(4) { animation-delay: 0.04s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(5) { animation-delay: 0.05s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(6) { animation-delay: 0.06s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(7) { animation-delay: 0.07s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(8) { animation-delay: 0.08s; } .page-mailboxes #grid.view-transitioning.grid .mailbox-card:nth-child(n+9) { animation-delay: 0.09s; } /* 列表视图交错动画 */ .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(1) { animation-delay: 0.01s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(2) { animation-delay: 0.02s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(3) { animation-delay: 0.03s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(4) { animation-delay: 0.04s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(5) { animation-delay: 0.05s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(6) { animation-delay: 0.06s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(7) { animation-delay: 0.07s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(8) { animation-delay: 0.08s; } .page-mailboxes #grid.view-transitioning.list .mailbox-list-item:nth-child(n+9) { animation-delay: 0.09s; } @keyframes fadeInUp { to { opacity: 1; transform: translateY(0) scale(1); } } .page-mailboxes .btn:disabled { opacity: 0.7; cursor: not-allowed; transition: opacity 0.2s ease; } /* 加载占位符样式 */ .loading-placeholder { display: none; } .loading-placeholder.show { display: grid; grid-template-columns: repeat(auto-fill, 280px); gap: 12px; justify-content: center; max-width: 1200px; } .loading-placeholder.show.list { display: flex !important; flex-direction: column; gap: 8px; max-width: 100%; grid-template-columns: none !important; } /* 确保没有show类时完全隐藏,不管是否有其他类 */ .loading-placeholder:not(.show) { display: none !important; } /* 骨架屏卡片 */ .skeleton-card { width: 280px; height: 140px; padding: 12px; background: var(--card-glass); border: 1px solid var(--border-glass); border-radius: var(--radius); box-shadow: var(--shadow-glass); position: relative; box-sizing: border-box; display: flex; flex-direction: column; gap: 6px; } .skeleton-list-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--card-glass); border: 1px solid var(--border-glass); border-radius: var(--radius); box-shadow: var(--shadow-glass); min-height: 60px; } /* 骨架屏动画 */ .skeleton-line { background: linear-gradient(90deg, rgba(226, 232, 240, 0.6) 25%, rgba(248, 250, 252, 0.8) 50%, rgba(226, 232, 240, 0.6) 75% ); background-size: 200% 100%; border-radius: 4px; animation: shimmer 1.5s infinite; } @keyframes shimmer { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } } /* 骨架屏各种线条 */ .skeleton-line.title { height: 16px; width: 70%; margin-bottom: 2px; } .skeleton-line.subtitle { height: 12px; width: 50%; } .skeleton-line.text { height: 12px; width: 40%; } .skeleton-line.time { height: 12px; width: 60%; } /* 列表视图骨架屏 */ .skeleton-list-item .skeleton-pin { width: 16px; height: 16px; border-radius: 50%; flex-shrink: 0; } .skeleton-list-item .skeleton-content { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } .skeleton-list-item .skeleton-actions { display: flex; gap: 8px; flex-shrink: 0; } .skeleton-list-item .skeleton-actions .skeleton-line { width: 36px; height: 32px; border-radius: 8px; } /* 响应式设计 - 仅针对grid视图 */ @media (max-width: 1200px){ .page-mailboxes #grid.grid, .page-mailboxes .grid{ grid-template-columns: repeat(auto-fill, 260px); } .mailbox-card{ width: 260px; } .mailbox-card .line, .mailbox-card .addr{ max-width: 236px; /* 260px - 24px padding */ } /* 加载占位符响应式 */ .loading-placeholder.show { grid-template-columns: repeat(auto-fill, 260px); } .skeleton-card { width: 260px; } } @media (max-width: 768px){ .page-mailboxes #grid.grid, .page-mailboxes .grid{ grid-template-columns: repeat(auto-fill, 240px); gap: 8px; } .mailbox-card{ width: 240px; height: 120px; padding: 10px; } .mailbox-card .line, .mailbox-card .addr{ max-width: 220px; /* 240px - 20px padding */ font-size: 11px; } .mailbox-card .addr{ font-size: 13px; } /* 加载占位符响应式 */ .loading-placeholder.show { grid-template-columns: repeat(auto-fill, 240px); gap: 8px; } .skeleton-card { width: 240px; height: 120px; padding: 10px; } } @media (max-width: 480px){ .page-mailboxes #grid.grid, .page-mailboxes .grid{ grid-template-columns: 1fr; max-width: 100%; } .mailbox-card{ width: 100%; max-width: 320px; margin: 0 auto; } .mailbox-card .line, .mailbox-card .addr{ max-width: calc(100% - 24px); } /* 加载占位符响应式 */ .loading-placeholder.show { grid-template-columns: 1fr; max-width: 100%; } .skeleton-card { width: 100%; max-width: 320px; margin: 0 auto; } } /* 模态框样式 - 统一确认对话框 */ .modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.4); display: flex; align-items: center; justify-content: center; z-index: 1000; backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .modal-card { background: rgba(255, 255, 255, 0.95); border: 1px solid rgba(255, 255, 255, 0.3); border-radius: 16px; box-shadow: 0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04), 0 0 0 1px rgba(255, 255, 255, 0.5); width: 90%; max-width: 480px; max-height: 90vh; overflow: hidden; animation: modalSlideIn 0.3s cubic-bezier(0.4, 0, 0.2, 1); } @keyframes modalSlideIn { from { opacity: 0; transform: scale(0.95) translateY(-10px); } to { opacity: 1; transform: scale(1) translateY(0); } } .modal-header { display: flex; align-items: center; justify-content: space-between; padding: 20px 24px 16px 24px; border-bottom: 1px solid rgba(226, 232, 240, 0.6); background: linear-gradient(135deg, rgba(248, 250, 252, 0.8) 0%, rgba(241, 245, 249, 0.8) 100%); } .modal-header > div { display: flex; align-items: center; gap: 10px; font-weight: 600; font-size: 16px; color: #1e293b; } .modal-icon { font-size: 20px; } /* 登录权限图标颜色优化 */ #login-confirm-icon { transition: all 0.2s ease; } /* 解锁图标样式 - 绿色调 */ #login-confirm-icon.unlock { color: #16a34a; text-shadow: 0 0 8px rgba(22, 163, 74, 0.3); } /* 上锁图标样式 - 红色调 */ #login-confirm-icon.lock { color: #dc2626; text-shadow: 0 0 8px rgba(220, 38, 38, 0.3); } .modal-header .close { background: rgba(248, 250, 252, 0.8); border: 1px solid rgba(226, 232, 240, 0.6); font-size: 18px; color: #64748b; cursor: pointer; padding: 6px; border-radius: 8px; transition: all 0.2s ease; width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; } .modal-header .close:hover { background: rgba(239, 68, 68, 0.1); border-color: rgba(239, 68, 68, 0.3); color: #dc2626; transform: scale(1.05); } .modal-body { padding: 24px; background: rgba(255, 255, 255, 0.9); } /* 模态框内的按钮样式优化 */ .modal-body .btn { padding: 10px 20px; border-radius: 10px; font-weight: 600; font-size: 14px; transition: all 0.2s ease; border: none; cursor: pointer; display: inline-flex; align-items: center; justify-content: center; min-width: 80px; } .modal-body .btn-secondary { background: rgba(248, 250, 252, 0.9); border: 1px solid rgba(226, 232, 240, 0.8); color: #475569; } .modal-body .btn-secondary:hover { background: rgba(241, 245, 249, 1); border-color: rgba(203, 213, 225, 1); color: #334155; transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } .modal-body .btn-primary { background: linear-gradient(135deg, #3b82f6 0%, #2563eb 100%); color: white; border: 1px solid transparent; } .modal-body .btn-primary:hover { background: linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%); transform: translateY(-1px); box-shadow: 0 6px 20px rgba(59, 130, 246, 0.4); } .modal-body .btn-danger { background: linear-gradient(135deg, #ef4444 0%, #dc2626 100%); color: white; border: 1px solid transparent; } .modal-body .btn-danger:hover { background: linear-gradient(135deg, #dc2626 0%, #b91c1c 100%); transform: translateY(-1px); box-shadow: 0 6px 20px rgba(239, 68, 68, 0.4); } /* 邮箱地址显示区域样式优化 */ .modal-body > div[style*="padding:12px"] { padding: 16px !important; border: 1px solid rgba(226, 232, 240, 0.6) !important; border-radius: 12px !important; background: linear-gradient(135deg, rgba(248, 250, 252, 0.8) 0%, rgba(241, 245, 249, 0.6) 100%) !important; box-shadow: inset 0 1px 3px rgba(0, 0, 0, 0.05) !important; } .modal-body > p { color: #475569 !important; line-height: 1.6 !important; margin-bottom: 16px !important; } /* 表单输入框样式 */ .modal-body .form-input { transition: all 0.2s ease; } .modal-body .form-input:focus { outline: none !important; border-color: rgba(59, 130, 246, 0.5) !important; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important; background: rgba(255, 255, 255, 1) !important; } .modal-body .form-input:hover { border-color: rgba(203, 213, 225, 1) !important; } /* 视图切换按钮样式 */ .view-toggle { display: flex; gap: 2px; margin-left: auto; background: rgba(248, 250, 252, 0.8); border: 1px solid rgba(226, 232, 240, 0.6); border-radius: 12px; padding: 4px; box-shadow: 0 2px 8px rgba(0, 0, 0, 0.04); } .view-toggle .btn { min-width: 44px; height: 36px; padding: 8px 12px; border-radius: 8px; font-size: 18px; font-weight: 600; display: flex; align-items: center; justify-content: center; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); border: none; background: transparent; color: #64748b; cursor: pointer; position: relative; overflow: hidden; letter-spacing: 0.5px; } .view-toggle .btn::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(139, 92, 246, 0.1)); opacity: 0; transition: opacity 0.25s ease; } .view-toggle .btn.active { background: linear-gradient(135deg, #6366f1 0%, #8b5cf6 100%); color: white; transform: scale(1.02); box-shadow: 0 4px 14px rgba(99, 102, 241, 0.4), 0 2px 6px rgba(0, 0, 0, 0.1), inset 0 1px 0 rgba(255, 255, 255, 0.2); } .view-toggle .btn.active::before { opacity: 0; } .view-toggle .btn:not(.active):hover { color: #4338ca; background: rgba(99, 102, 241, 0.1); transform: translateY(-1px); box-shadow: 0 3px 12px rgba(99, 102, 241, 0.15); } .view-toggle .btn:not(.active):hover::before { opacity: 1; } .view-toggle .btn:active { transform: scale(0.98); } /* 视图图标样式 */ .view-icon { width: 16px; height: 16px; position: relative; display: inline-block; } /* 网格图标 - 2x2网格 */ .grid-icon { background: linear-gradient(currentColor, currentColor) 0 0/6px 6px no-repeat, linear-gradient(currentColor, currentColor) 10px 0/6px 6px no-repeat, linear-gradient(currentColor, currentColor) 0 10px/6px 6px no-repeat, linear-gradient(currentColor, currentColor) 10px 10px/6px 6px no-repeat; } /* 列表图标 - 水平线条 */ .list-icon { background: linear-gradient(currentColor, currentColor) 0 2px/16px 2px no-repeat, linear-gradient(currentColor, currentColor) 0 7px/16px 2px no-repeat, linear-gradient(currentColor, currentColor) 0 12px/16px 2px no-repeat; } /* 激活状态下图标颜色 */ .view-toggle .btn.active .view-icon { color: white; } /* 悬停状态下图标颜色 */ .view-toggle .btn:not(.active):hover .view-icon { color: #4338ca; } /* 工具栏布局调整 - 两行布局 */ .toolbar { display: flex; flex-direction: column; gap: 12px; margin-bottom: 16px; } /* 第一行:搜索框 + 筛选器 */ .toolbar-row-1 { display: flex; gap: 12px; align-items: center; flex-wrap: wrap; } /* 第二行:批量操作 + 视图切换 */ .toolbar-row-2 { display: flex; gap: 12px; align-items: center; justify-content: flex-end; flex-wrap: wrap; } .toolbar-spacer { flex: 1; } .toolbar .searchbar { flex: 0 0 auto; min-width: 280px; max-width: 360px; display: flex; align-items: center; gap: 8px; } /* 筛选器区域 */ .filter-actions { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; } .filter-select { padding: 8px 12px; border: 1px solid rgba(226, 232, 240, 0.8); border-radius: 8px; font-size: 13px; color: #475569; background: rgba(255, 255, 255, 0.95); cursor: pointer; transition: all 0.2s ease; min-width: 100px; outline: none; } .filter-select:hover { border-color: rgba(99, 102, 241, 0.4); background: rgba(255, 255, 255, 1); } .filter-select:focus { border-color: rgba(99, 102, 241, 0.6); box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1); background: rgba(255, 255, 255, 1); } /* 批量操作按钮区域 */ .batch-actions { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; } .batch-actions .btn { white-space: nowrap; transition: all 0.2s ease; padding: 6px 10px; font-size: 13px; } .batch-actions .btn .btn-icon { margin-right: 4px; } .batch-actions .btn:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1); } /* 列表视图样式 */ .page-mailboxes #grid.list { display: flex; flex-direction: column; gap: 8px; max-width: 100%; grid-template-columns: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } /* 兼容性列表样式 */ .page-mailboxes .list { display: flex; flex-direction: column; gap: 8px; max-width: 100%; grid-template-columns: none; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); } .mailbox-list-item { display: flex; align-items: center; gap: 12px; padding: 12px 16px; background: var(--card-glass); border: 1px solid var(--border-glass); border-radius: var(--radius); box-shadow: var(--shadow-glass); cursor: pointer; transition: all 0.2s ease; min-height: 60px; } .mailbox-list-item:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(0, 0, 0, 0.1), 0 2px 4px rgba(0, 0, 0, 0.06); border-color: rgba(99, 102, 241, 0.3); background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(249, 250, 251, 0.95) 100%); } /* 置顶指示器(包含置顶、收藏、转发图标) */ .pin-indicator { min-width: 32px; display: flex; justify-content: flex-start; align-items: center; flex-shrink: 0; gap: 2px; } .pin-icon { color: #f59e0b; font-size: 16px; text-shadow: 0 1px 3px rgba(245, 158, 11, 0.3); transition: transform 0.2s ease; } .favorite-icon { color: #fbbf24; font-size: 14px; text-shadow: 0 1px 3px rgba(251, 191, 36, 0.3); transition: transform 0.2s ease; margin-left: 2px; } .forward-icon { color: #3b82f6; font-size: 14px; text-shadow: 0 1px 3px rgba(59, 130, 246, 0.3); transition: transform 0.2s ease; margin-left: 2px; } .pin-placeholder { width: 16px; height: 16px; } .mailbox-list-item:hover .pin-icon { transform: scale(1.1) rotate(15deg); } .mailbox-list-item:hover .favorite-icon, .mailbox-list-item:hover .forward-icon { transform: scale(1.1); } /* 邮箱信息区域 */ .mailbox-info { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; } .mailbox-info .addr { font-weight: 600; font-size: 16px; color: var(--text); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; cursor: help; } .mailbox-info .meta { display: flex; gap: 8px; font-size: 12px; color: #64748b; flex-wrap: wrap; align-items: center; } .mailbox-info .meta > span { white-space: nowrap; } /* 时间显示 */ .mailbox-info .meta .meta-time { color: #94a3b8; min-width: 130px; } /* 状态图标统一样式 */ .mailbox-info .meta .meta-status { display: inline-flex; align-items: center; justify-content: center; width: 24px; height: 24px; border-radius: 6px; background: rgba(241, 245, 249, 0.8); font-size: 14px; cursor: help; transition: all 0.2s ease; } .mailbox-info .meta .meta-status:hover { transform: scale(1.1); background: rgba(226, 232, 240, 0.9); } /* 登录状态 */ .mailbox-info .meta .meta-login.enabled { background: rgba(34, 197, 94, 0.15); } .mailbox-info .meta .meta-login.disabled { background: rgba(239, 68, 68, 0.1); } /* 收藏状态 */ .mailbox-info .meta .meta-fav.active { background: rgba(251, 191, 36, 0.2); } /* 转发地址显示 */ .mailbox-info .meta .meta-forward { display: inline-flex; align-items: center; gap: 4px; padding: 2px 8px; background: linear-gradient(135deg, rgba(59, 130, 246, 0.1) 0%, rgba(99, 102, 241, 0.1) 100%); border: 1px solid rgba(59, 130, 246, 0.2); border-radius: 12px; color: #3b82f6; font-size: 11px; max-width: 200px; overflow: hidden; text-overflow: ellipsis; } .mailbox-info .meta .meta-forward-empty { color: #cbd5e1; font-size: 16px; } /* 列表视图操作按钮 */ .list-actions { display: flex; gap: 8px; flex-shrink: 0; align-items: center; background: rgba(248, 250, 252, 0.6); padding: 6px; border-radius: 10px; border: 1px solid rgba(226, 232, 240, 0.4); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .list-actions .btn { padding: 8px 10px; font-size: 14px; min-width: 36px; height: 36px; border-radius: 8px; border: 1px solid rgba(226, 232, 240, 0.6); background: rgba(255, 255, 255, 0.8); color: #475569; transition: all 0.25s cubic-bezier(0.4, 0, 0.2, 1); position: relative; overflow: hidden; cursor: pointer; display: flex; align-items: center; justify-content: center; } .list-actions .btn::before { content: ''; position: absolute; top: 0; left: 0; right: 0; bottom: 0; background: linear-gradient(135deg, rgba(99, 102, 241, 0.1), rgba(139, 92, 246, 0.1)); opacity: 0; transition: opacity 0.25s ease; } .list-actions .btn:hover { transform: translateY(-2px); background: rgba(99, 102, 241, 0.1); border-color: rgba(99, 102, 241, 0.3); color: #4338ca; box-shadow: 0 6px 20px rgba(99, 102, 241, 0.2), 0 3px 10px rgba(0, 0, 0, 0.1); } .list-actions .btn:hover::before { opacity: 1; } .list-actions .btn.active { background: linear-gradient(135deg, #10b981 0%, #059669 100%); border-color: #10b981; color: white; box-shadow: 0 4px 14px rgba(16, 185, 129, 0.4), 0 2px 6px rgba(0, 0, 0, 0.1); } .list-actions .btn.active::before { opacity: 0; } .list-actions .btn:active { transform: scale(0.96) translateY(-1px); } /* 响应式设计 - 列表视图 */ @media (max-width: 768px) { .mailbox-info .meta { gap: 12px; font-size: 11px; } .list-actions { gap: 6px; padding: 4px; } .list-actions .btn { padding: 6px 8px; font-size: 12px; min-width: 32px; height: 32px; } .mailbox-list-item { padding: 10px 12px; min-height: 54px; } .mailbox-info .addr { font-size: 14px; } /* 视图切换按钮响应式 */ .view-toggle { padding: 3px; } .view-toggle .btn { min-width: 36px; height: 32px; padding: 6px 8px; font-size: 14px; } .view-icon { width: 14px; height: 14px; } .grid-icon { background: linear-gradient(currentColor, currentColor) 0 0/5px 5px no-repeat, linear-gradient(currentColor, currentColor) 9px 0/5px 5px no-repeat, linear-gradient(currentColor, currentColor) 0 9px/5px 5px no-repeat, linear-gradient(currentColor, currentColor) 9px 9px/5px 5px no-repeat; } .list-icon { background: linear-gradient(currentColor, currentColor) 0 2px/14px 2px no-repeat, linear-gradient(currentColor, currentColor) 0 6px/14px 2px no-repeat, linear-gradient(currentColor, currentColor) 0 10px/14px 2px no-repeat; } } @media (max-width: 480px) { .mailbox-info .meta { flex-direction: column; gap: 2px; } .list-actions { flex-direction: column; gap: 4px; padding: 4px; } .list-actions .btn { padding: 8px; width: 36px; height: 36px; font-size: 14px; } .mailbox-list-item { gap: 8px; padding: 8px 10px; } .pin-indicator { width: 24px; } /* 视图切换按钮在小屏幕上优化 */ .view-toggle { gap: 1px; padding: 2px; } .view-toggle .btn { min-width: 32px; height: 28px; padding: 4px 6px; font-size: 13px; } .view-icon { width: 12px; height: 12px; } .grid-icon { background: linear-gradient(currentColor, currentColor) 0 0/4px 4px no-repeat, linear-gradient(currentColor, currentColor) 8px 0/4px 4px no-repeat, linear-gradient(currentColor, currentColor) 0 8px/4px 4px no-repeat, linear-gradient(currentColor, currentColor) 8px 8px/4px 4px no-repeat; } .list-icon { background: linear-gradient(currentColor, currentColor) 0 1px/12px 1.5px no-repeat, linear-gradient(currentColor, currentColor) 0 5px/12px 1.5px no-repeat, linear-gradient(currentColor, currentColor) 0 9px/12px 1.5px no-repeat; } /* 卡片视图操作按钮在小屏幕上优化 */ .mailbox-card .actions { width: 76px; height: 40px; gap: 6px; padding: 4px; } .mailbox-card .actions .btn-icon { width: 32px; height: 32px; font-size: 14px; } } /* 从内联样式迁移的样式 */ /* 邮箱卡片额外样式 */ .card.mailbox { padding: 12px; } .card.mailbox .addr { font-weight: 600; word-break: break-all; } .meta { color:#475569; font-size:12px; margin-top:6px } .topbar .nav-actions .btn { margin-left:8px } .pager { display:flex; justify-content:center; align-items:center; gap:8px; margin-top:12px } /* 批量操作模态框特殊样式 */ .form-textarea { transition: all 0.2s ease; } .form-textarea:focus { outline: none !important; border-color: rgba(59, 130, 246, 0.5) !important; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1) !important; background: rgba(255, 255, 255, 1) !important; } .form-textarea:hover { border-color: rgba(203, 213, 225, 1) !important; } .batch-btn-loading { display: none; } /* 响应式设计 - 批量操作按钮和筛选器 */ @media (max-width: 768px) { .toolbar { gap: 8px; } .toolbar-row-1, .toolbar-row-2 { flex-direction: column; align-items: stretch; gap: 8px; } .toolbar .searchbar { max-width: 100%; min-width: auto; width: 100%; } .filter-actions { gap: 4px; justify-content: flex-start; } .filter-select { min-width: 0; flex: 1; font-size: 12px; padding: 6px 8px; } .batch-actions { gap: 4px; justify-content: flex-start; } .batch-actions .btn span:not(.btn-icon) { display: none; } .batch-actions .btn { padding: 8px; } .batch-actions .btn .btn-icon { margin-right: 0; } .toolbar-row-2 { flex-direction: row; justify-content: space-between; } } @media (max-width: 480px) { .toolbar { flex-direction: column; align-items: stretch; } .toolbar .searchbar { width: 100%; max-width: 100%; } .filter-actions { width: 100%; justify-content: space-between; } .filter-select { flex: 1; min-width: auto; } .batch-actions { width: 100%; justify-content: space-between; } .batch-actions .btn { flex: 1; } } /* 二级页面样式 */ .subpage { position: fixed; inset: 0; z-index: 3000; display: flex; align-items: center; justify-content: center; animation: fadeIn 0.3s ease-out; } .subpage-overlay { position: absolute; inset: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); } .subpage-content { position: relative; width: 90vw; max-width: 800px; max-height: 90vh; background: white; border-radius: 16px; box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25); display: flex; flex-direction: column; overflow: hidden; animation: slideUp 0.3s ease-out; } .subpage-header { display: flex; align-items: center; justify-content: space-between; padding: 20px 24px; border-bottom: 1px solid #e2e8f0; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); } .subpage-title { display: flex; align-items: center; gap: 12px; font-size: 18px; font-weight: 600; color: #1e293b; } .subpage-icon { font-size: 20px; } .subpage-close { width: 32px; height: 32px; border: none; background: none; border-radius: 8px; cursor: pointer; display: flex; align-items: center; justify-content: center; color: #64748b; transition: all 0.2s ease; } .subpage-close:hover { background: rgba(248, 113, 113, 0.1); color: #ef4444; } .subpage-body { flex: 1; padding: 24px; overflow-y: auto; display: flex; flex-direction: column; gap: 24px; } .assign-mailbox-info { padding: 16px; border: 1px solid #e2e8f0; border-radius: 12px; background: linear-gradient(135deg, #f8fafc 0%, #f1f5f9 100%); } .info-label { font-size: 12px; color: #64748b; margin-bottom: 4px; } .info-value { font-weight: 600; color: #1e293b; word-break: break-all; } .section-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; } .section-header h3 { margin: 0; font-size: 16px; font-weight: 600; color: #1e293b; } .selection-actions { display: flex; gap: 8px; } .user-search { margin-bottom: 16px; } .user-search .search-input { width: 100%; padding: 10px 12px; border: 1px solid #d1d5db; border-radius: 8px; font-size: 14px; } .loading-state { display: flex; align-items: center; justify-content: center; gap: 12px; padding: 40px; color: #64748b; } .loading-spinner { width: 20px; height: 20px; border: 2px solid #e2e8f0; border-top: 2px solid #3b82f6; border-radius: 50%; animation: spin 1s linear infinite; } .users-list { border: 1px solid #e2e8f0; border-radius: 12px; max-height: 300px; overflow-y: auto; } .user-item { display: flex; align-items: center; padding: 12px 16px; border-bottom: 1px solid #f1f5f9; cursor: pointer; transition: background-color 0.2s ease; } .user-item:last-child { border-bottom: none; } .user-item:hover { background: #f8fafc; } .user-item.selected { background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); border-color: #93c5fd; } .user-checkbox { margin-right: 12px; width: 16px; height: 16px; accent-color: #3b82f6; } .user-info { flex: 1; } .user-name { font-weight: 600; color: #1e293b; margin-bottom: 2px; } .user-details { font-size: 12px; color: #64748b; } .selected-users-section { border-top: 1px solid #e2e8f0; padding-top: 24px; } .selected-users-list { display: flex; flex-wrap: wrap; gap: 8px; } .selected-user-tag { display: flex; align-items: center; gap: 6px; padding: 6px 12px; background: linear-gradient(135deg, #dbeafe 0%, #bfdbfe 100%); border: 1px solid #93c5fd; border-radius: 20px; font-size: 12px; color: #1e40af; } .selected-user-tag .remove-btn { background: none; border: none; cursor: pointer; color: #64748b; font-size: 10px; width: 16px; height: 16px; border-radius: 50%; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; } .selected-user-tag .remove-btn:hover { background: rgba(239, 68, 68, 0.1); color: #ef4444; } .subpage-footer { padding: 20px 24px; border-top: 1px solid #e2e8f0; background: #f8fafc; } .footer-actions { display: flex; gap: 12px; justify-content: flex-end; } .btn-loading { display: none; } @keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } } @keyframes slideUp { from { opacity: 0; transform: translateY(20px) scale(0.95); } to { opacity: 1; transform: translateY(0) scale(1); } } @keyframes spin { to { transform: rotate(360deg); } } /* 子页面响应式设计 */ @media (max-width: 768px) { .subpage-content { width: 95vw; max-height: 95vh; } .subpage-header, .subpage-body, .subpage-footer { padding: 16px; } .subpage-body { gap: 16px; } }