﻿/**
 * 样式: assets/css/mall.css
 */
        :root {
            --primary-color: #4F46E5; /* 主色调：靛蓝色 */
            --secondary-color: #EC4899; /* 辅助色：粉色 */
            --accent-color: #0EA5E9; /* 强调色：天蓝色 */
            --dark-color: #1F2937; /* 深色文本 */
            --light-color: #F9FAFB; /* 浅色背景 */
            --text-color: #1F2937; /* 文本颜色 */
            --text-muted: #6B7280; /* 次要文本颜色 */
            --card-bg: #FFFFFF; /* 卡片背景 */
            --card-hover: #F3F4F6; /* 卡片悬停背景 */
            --border-color: #E5E7EB; /* 边框颜色 */
        }
        /* 基础样式重置 */
        body {
            background: linear-gradient(135deg, var(--light-color) 0%, #F3F4F6 100%);
            color: var(--text-color);
            font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
        }
        /* 公告样式 */
        .announcement-container {
            background: linear-gradient(90deg, rgba(79, 70, 229, 0.05), rgba(236, 72, 153, 0.05));
            border-radius: 0.75rem;
            padding: 0.5rem 1rem;
            margin-bottom: 1rem;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.05);
            overflow: hidden;
            position: relative;
        }
        .announcement-scroll {
            display: flex;
            align-items: center;
            white-space: nowrap;
            animation: scrollAnnouncement 20s linear infinite;
        }
        .announcement-scroll:hover {
            animation-play-state: paused;
        }
        @keyframes scrollAnnouncement {
            0% { transform: translateX(100%); }
            100% { transform: translateX(-100%); }
        }
        .announcement-icon {
            color: var(--secondary-color);
            margin-right: 0.5rem;
            font-size: 1.2rem;
        }
        .announcement-item {
            margin-right: 2rem;
            display: inline-flex;
            align-items: center;
        }
        .announcement-date {
            color: var(--text-muted);
            font-size: 0.85rem;
            margin-right: 0.5rem;
        }
        .announcement-content {
            font-weight: 500;
        }
        .announcement-important {
            color: var(--secondary-color);
            font-weight: 600;
        }
        /* 卡片样式 */
        .card {
            background: var(--card-bg);
            border: 1px solid rgba(79, 70, 229, 0.1);
            border-radius: 0.75rem;
            transition: all 0.3s ease;
            margin: 0.5rem;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
        }
        .card:hover {
            transform: translateY(-5px);
            box-shadow: 0 8px 30px rgba(79, 70, 229, 0.15);
        }
        .card.selected {
            background: linear-gradient(135deg, rgba(79, 70, 229, 0.05) 0%, rgba(236, 72, 153, 0.05) 100%);
            border: 2px solid var(--secondary-color);
            box-shadow: 0 0 15px rgba(236, 72, 153, 0.2);
        }
        /* 导航栏样式 */
        .nav-tabs .nav-link {
            color: var(--text-muted);
            border: none;
            border-bottom: 2px solid transparent;
            font-weight: 500;
            transition: all 0.3s ease;
        }
        .nav-tabs .nav-link:hover {
            color: var(--primary-color);
        }
        .nav-tabs .nav-link.active {
            color: var(--primary-color);
            background: rgba(79, 70, 229, 0.05);
            border-bottom: 2px solid var(--primary-color);
        }
        /* 按钮样式 */
        .btn-primary {
            background: linear-gradient(135deg, var(--primary-color) 0%, #4338CA 100%);
            border: none;
            color: white;
            font-weight: 500;
            transition: all 0.3s ease;
        }
        .btn-primary:hover {
            background: linear-gradient(135deg, #4338CA 0%, var(--primary-color) 100%);
            transform: translateY(-2px);
            box-shadow: 0 4px 15px rgba(79, 70, 229, 0.3);
        }
        .btn-warning {
            background: linear-gradient(135deg, var(--secondary-color) 0%, #DB2777 100%);
            border: none;
            color: white;
            font-weight: 500;
            transition: all 0.3s ease;
        }
        .btn-warning:hover {
            background: linear-gradient(135deg, #DB2777 0%, var(--secondary-color) 100%);
            transform: translateY(-2px);
            box-shadow: 0 4px 15px rgba(236, 72, 153, 0.3);
        }
        .btn-danger {
            background: linear-gradient(135deg, #EF4444 0%, #B91C1C 100%);
            border: none;
            color: white;
            font-weight: 500;
            transition: all 0.3s ease;
        }
        .btn-danger:hover {
            background: linear-gradient(135deg, #B91C1C 0%, #EF4444 100%);
            transform: translateY(-2px);
            box-shadow: 0 4px 15px rgba(239, 68, 68, 0.3);
        }
        /* 输入框样式 */
        .form-control {
            background: rgba(255, 255, 255, 0.8);
            border: 1px solid rgba(79, 70, 229, 0.2);
            color: var(--text-color);
            transition: all 0.3s ease;
        }
        .form-control:focus {
            background: rgba(255, 255, 255, 1);
            border-color: var(--primary-color);
            box-shadow: 0 0 0 0.2rem rgba(79, 70, 229, 0.2);
            color: var(--text-color);
        }
        /* 面板样式 */
        .bg-light {
            background: rgba(243, 244, 246, 0.8) !important;
        }
        .bg-white {
            background: var(--card-bg) !important;
            backdrop-filter: blur(10px);
            border-radius: 0.75rem;
            box-shadow: 0 4px 20px rgba(0, 0, 0, 0.05);
        }
        /* 进度条样式 */
        .progress {
            background: rgba(79, 70, 229, 0.05);
            border-radius: 0.5rem;
        }
        .progress-bar {
            background: linear-gradient(90deg, var(--primary-color) 0%, var(--accent-color) 100%);
        }
        /* 自定义滚动条 */
        ::-webkit-scrollbar {
            width: 8px;
            height: 8px;
        }
        ::-webkit-scrollbar-track {
            background: rgba(79, 70, 229, 0.03);
            border-radius: 4px;
        }
        ::-webkit-scrollbar-thumb {
            background: rgba(79, 70, 229, 0.2);
            border-radius: 4px;
        }
        ::-webkit-scrollbar-thumb:hover {
            background: rgba(79, 70, 229, 0.3);
        }
        /* 动画效果 */
        .fade-in {
            animation: fadeIn 0.5s ease-in-out;
        }
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }
        /* 布局调整 */
        .left-panel {
            height: 35vh;
            overflow-y: auto;
        }
        .right-panel {
            height: auto;
            min-height: 30vh;
        }
        /* Footer样式 */
        # main-footer {
            margin-top: 1rem;
            padding: 1rem 0;
        }
        /* 文字样式 */
        .text-danger {
            color: #EF4444 !important;
        }
        .text-primary {
            color: var(--primary-color) !important;
        }
        .text-info {
            color: var(--accent-color) !important;
        }
        .badge {
            font-weight: 500;
            padding: 0.4em 0.6em;
            border-radius: 0.5rem;
        }
        .badge-primary {
            background: rgba(79, 70, 229, 0.1);
            color: var(--primary-color);
        }
        .badge-warning {
            background: rgba(236, 72, 153, 0.1);
            color: var(--secondary-color);
        }
        /* 模态框居中显示 */
        .modal {
            text-align: center;
        }
        .modal:before {
            content: '';
            display: inline-block;
            height: 100%;
            vertical-align: middle;
            margin-right: -4px;
        }
        .modal-dialog {
            display: inline-block;
            text-align: left;
            vertical-align: middle;
        }
        /* 模态框美化样式 */
        .modal-content {
            border: none;
            border-radius: 1rem;
            box-shadow: 0 10px 40px rgba(0, 0, 0, 0.2);
            overflow: hidden;
        }
        .modal-header {
            background: linear-gradient(135deg, var(--primary-color) 0%, #4338CA 100%);
            color: white;
            border-bottom: none;
            padding: 1.5rem;
            position: relative;
        }
        .modal-header .modal-title {
            font-weight: 600;
            font-size: 1.25rem;
            margin: 0;
            display: flex;
            align-items: center;
        }
        .modal-header .modal-title i {
            font-size: 1.3rem;
            margin-right: 0.5rem;
        }
        .modal-header .close {
            color: white;
            opacity: 0.9;
            font-size: 1.5rem;
            font-weight: 300;
            text-shadow: none;
            padding: 0;
            margin: 0;
            width: 2rem;
            height: 2rem;
            display: flex;
            align-items: center;
            justify-content: center;
            border-radius: 50%;
            transition: all 0.3s ease;
        }
        .modal-header .close:hover {
            opacity: 1;
            background: rgba(255, 255, 255, 0.2);
            transform: rotate(90deg);
        }
        .modal-body {
            padding: 2rem;
            background: #ffffff;
        }
        .modal-body .form-group {
            margin-bottom: 1.5rem;
        }
        .modal-body .form-group label {
            font-weight: 500;
            color: var(--text-color);
            margin-bottom: 0.5rem;
            display: flex;
            align-items: center;
        }
        .modal-body .form-group label i {
            margin-right: 0.5rem;
            color: var(--primary-color);
        }
        .modal-body .form-control {
            border: 2px solid var(--border-color);
            border-radius: 0.5rem;
            padding: 0.75rem 1rem;
            font-size: 1rem;
            transition: all 0.3s ease;
        }
        .modal-body .form-control:focus {
            border-color: var(--primary-color);
            box-shadow: 0 0 0 0.2rem rgba(79, 70, 229, 0.15);
        }
        .modal-body .form-text {
            font-size: 0.875rem;
            color: var(--text-muted);
            margin-top: 0.5rem;
        }
        .modal-footer {
            border-top: 1px solid var(--border-color);
            padding: 1.5rem;
            background: #f8f9fa;
            display: flex;
            justify-content: flex-end;
            gap: 0.75rem;
        }
        .modal-footer .btn {
            padding: 0.75rem 1.5rem;
            font-weight: 500;
            border-radius: 0.5rem;
            transition: all 0.3s ease;
            border: none;
        }
        .modal-footer .btn-secondary {
            background: #e5e7eb;
            color: #374151;
        }
        .modal-footer .btn-secondary:hover {
            background: #d1d5db;
            transform: translateY(-2px);
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        }
        .modal-footer .btn-primary {
            background: linear-gradient(135deg, var(--primary-color) 0%, #4338CA 100%);
            color: white;
        }
        .modal-footer .btn-primary:hover {
            background: linear-gradient(135deg, #4338CA 0%, var(--primary-color) 100%);
            transform: translateY(-2px);
            box-shadow: 0 4px 15px rgba(79, 70, 229, 0.4);
        }
        /* 个人信息弹窗特殊样式 */
        # changePasswordModal .modal-header {
            background: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%);
        }
        /* PC端个人信息弹窗宽度 */
        @media (min-width: 769px) {
            # changePasswordModal .modal-dialog {
                max-width: 600px;
                width: 600px;
            }
        }
        # changePasswordModal .modal-body .form-group label::before {
            content: '';
            display: inline-block;
            width: 4px;
            height: 16px;
            background: linear-gradient(135deg, #8B5CF6 0%, #6D28D9 100%);
            border-radius: 2px;
            margin-right: 0.75rem;
            vertical-align: middle;
        }
        /* CDK兑换弹窗特殊样式 */
        # cdkRedeemModal .modal-header {
            background: linear-gradient(135deg, #10B981 0%, #059669 100%);
        }
        # cdkRedeemModal .modal-dialog {
            margin: 1.75rem auto;
            max-width: 90%;
            width: 600px;
        }
        # cdkRedeemModal .modal-body {
            background: linear-gradient(135deg, #f0fdf4 0%, #ffffff 100%);
        }
        # cdkRedeemModal .form-control {
            border: 2px solid #10B981;
        }
        # cdkRedeemModal .form-control:focus {
            border-color: #059669;
            box-shadow: 0 0 0 0.2rem rgba(16, 185, 129, 0.15);
        }
        # cdkRedeemModal .btn-primary {
            background: linear-gradient(135deg, #10B981 0%, #059669 100%);
        }
        # cdkRedeemModal .btn-primary:hover {
            background: linear-gradient(135deg, #059669 0%, #10B981 100%);
        }
        /* 联系客服弹窗特殊样式 */
        # contactServiceModal .modal-header {
            background: linear-gradient(135deg, #0EA5E9 0%, #0284C7 100%);
        }
        # contactServiceModal .modal-dialog {
            margin: 1.75rem auto;
            max-width: 90%;
            width: 600px;
        }
        # contactServiceModal .modal-body {
            background: linear-gradient(135deg, #f0f9ff 0%, #ffffff 100%);
            min-height: 150px;
        }
        # contact-service-content {
            padding: 1rem 0;
        }
        # contact-service-content h5 {
            color: var(--primary-color);
            font-weight: 600;
            margin-bottom: 1.5rem;
        }
        # contact-service-content .bg-light {
            background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 100%) !important;
            border: 2px solid #0EA5E9;
            border-radius: 0.75rem;
            padding: 1.5rem;
            box-shadow: 0 4px 12px rgba(14, 165, 233, 0.1);
        }
        # contact-service-content .text-muted {
            color: #64748b !important;
            font-size: 1rem;
        }
        /* 移动端响应式 */
        @media (max-width: 768px) {
            .modal-dialog {
                width: 95%;
                max-width: 95%;
                margin: 1rem auto;
            }
            .modal-header {
                padding: 1.25rem;
            }
            .modal-body {
                padding: 1.5rem;
            }
            .modal-footer {
                padding: 1.25rem;
                flex-direction: column;
            }
            .modal-footer .btn {
                width: 100%;
            }
        }
        /* 玩家信息表格样式 */
        # player-info-section .table {
            margin-bottom: 0;
            background-color: #fff;
        }
        # player-info-section .table td {
            padding: 0.75rem;
            vertical-align: middle;
            border-color: rgba(79, 70, 229, 0.1);
        }
        # player-info-section .table td:first-child {
            font-weight: 500;
            background-color: rgba(79, 70, 229, 0.03);
        }
        # player-info-section .table-hover tbody tr:hover {
            background-color: rgba(79, 70, 229, 0.05);
        }
        /* 响应式设计 - 移动端优化 */
        @media (max-width: 768px) {
            /* 移动端表格不换行 */
            # player-info-section .table td {
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            # player-info-section .table td:first-child {
                width: auto;
                min-width: 120px;
                max-width: 40%;
            }
            # player-info-section .table td:last-child {
                width: auto;
                min-width: 0;
                flex: 1;
            }
            /* 移动端用户按钮与当前角色对齐 */
            # player-info-section .d-flex.justify-content-between {
                align-items: flex-start;
                flex-wrap: nowrap;
            }
            # player-info-section .d-flex.justify-content-between > div:first-child {
                flex: 1;
                min-width: 0;
                margin-right: 0.5rem;
            }
            # player-info-section .d-flex.justify-content-between .dropdown {
                margin-top: 0 !important;
                align-self: flex-start;
                flex-shrink: 0;
            }
            /* 确保用户按钮与角色信息在同一行 */
            # player-info-section .d-flex.align-items-center {
                flex-wrap: nowrap;
                align-items: center;
            }
            # player-info-section .d-flex.align-items-center > div:first-child {
                flex: 1;
                min-width: 0;
            }
            # player-info-section .d-flex.align-items-center p {
                margin-bottom: 0;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }
            /* 确保角色信息显示在同一行 */
            # player-info-section #player-role-info {
                display: inline !important;
            }
        }

