Files
lol-skin/.data/www/网页/css/style.css
T

2858 lines
67 KiB
CSS
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
/* =============================================
全局 Reset & 变量
============================================= */
:root {
--bg: #f4f5f7;
--sidebar-bg: #ffffff;
--card-bg: #ffffff;
--border: #e8eaed;
--text: #1a1d23;
--text-sub: #6b7280;
--text-muted: #9ca3af;
--accent: #0bc4e3;
--accent-2: #1677ff;
--accent-green: #52c41a;
--accent-red: #ff4d4f;
--accent-gold: #faad14;
--sidebar-w: 13vw;
--titlebar-h: 4vh;
--radius: 10px;
--shadow: 0 2px 12px rgba(0,0,0,.07);
}
* { margin:0; padding:0; box-sizing:border-box; outline:none; }
html { width:100%; height:100%; font-size: calc(12px + 0.3vw); }
body {
font-family: 'Microsoft YaHei', 'PingFang SC', sans-serif;
background: var(--bg);
color: var(--text);
width: 100%;
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
font-size: 1rem;
}
.app-shell {
flex: 1;
min-height: 0;
width: 100%;
height: 100%;
overflow: hidden;
display: flex;
flex-direction: column;
background: var(--bg);
}
/* =============================================
顶部标题栏
============================================= */
.titlebar {
height: clamp(30px, 4vh, 44px);
background: #ffffff;
border-bottom: 1px solid var(--border);
display: flex;
align-items: center;
justify-content: space-between;
padding: 0 1vw 0 1.2vw;
flex-shrink: 0;
user-select: none;
-webkit-app-region: drag;
}
.titlebar-left {
display: flex;
align-items: center;
gap: 8px;
}
.titlebar-logo {
width: 22px; height: 22px;
object-fit: contain;
display: block;
flex-shrink: 0;
}
.titlebar-title {
font-size: 16px;
color: var(--text);
font-weight: 700;
letter-spacing: .5px;
}
.titlebar-title em {
font-style: italic;
color: #1677ff;
}
.titlebar-btns {
display: flex;
gap: 6px;
-webkit-app-region: no-drag;
}
.tb-btn {
width: 28px;
height: 22px;
border: none;
border-radius: 5px;
background: transparent;
color: var(--text-sub);
font-size: 13px;
cursor: pointer;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.15s;
line-height: 1;
}
.tb-btn:hover { background: #f0f0f0; }
.tb-close:hover { background: #ff4d4f; color: #fff; }
.tb-min:hover { background: #e8eaed; }
/* =============================================
app-body:标题栏下方整体
============================================= */
.app-body {
flex: 1;
display: flex;
overflow: hidden;
min-height: 0;
}
/* =============================================
侧边栏
============================================= */
.sidebar {
width: 230px;
background: var(--sidebar-bg);
border-right: 1px solid var(--border);
display: flex;
flex-direction: column;
flex-shrink: 0;
}
.logo {
padding: 22px 20px 18px;
border-bottom: 1px solid var(--border);
display: flex;
justify-content: center;
align-items: center;
}
.logo-text {
font-size: 20px;
font-weight: 400;
color: var(--text);
letter-spacing: 1px;
}
.logo-em {
font-style: italic;
font-weight: 800;
color: #1677ff;
font-size: 26px;
margin-right: 1px;
}
.nav {
flex: 1;
padding: 16px 10px;
display: flex;
flex-direction: column;
gap: 8px;
}
.nav-item {
display: flex;
align-items: center;
gap: 14px;
padding: 0 16px;
height: 54px;
min-height: 54px;
box-sizing: border-box;
cursor: pointer;
color: var(--text-sub);
text-decoration: none;
font-size: 15px;
position: relative;
border-radius: 10px;
transition: background 0.15s, color 0.15s, transform 0.18s cubic-bezier(.34,1.56,.64,1);
transform-origin: center;
}
/* emoji 图标 */
.nav-icon {
font-size: 20px;
line-height: 1;
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
}
/* hover:整个按钮轻微放大 */
.nav-item:hover {
background: #F0F6FC;
color: var(--text);
transform: scale(1.03);
}
/* active:背景 + 蓝色文字 + 左侧蓝条 */
.nav-item.active {
background: #F0F6FC;
color: #1677ff;
font-weight: 600;
transform: scale(1);
border-left: 5px solid #1677ff;
padding-left: 11px;
}
/* 非active时左边透明占位,保持宽度一致 */
.nav-item:not(.active) {
border-left: 5px solid transparent;
padding-left: 11px;
}
/* 删除::before,改用border-left实现 */
.nav-item.active::before {
display: none;
}
/* =============================================
主内容区 & 页面切换
============================================= */
.main {
flex: 1;
overflow: hidden;
position: relative;
min-width: 0;
display: flex;
flex-direction: column;
}
.page {
flex: 1;
width: 100%;
overflow-y: auto;
padding: 24px;
display: none;
min-height: 0;
box-sizing: border-box;
}
.page.active { display: flex; flex-direction: column; }
/* 皮肤库、美化库不需要 padding,各自控制 */
#page-skins.active,
#page-beauty.active {
padding: 0;
}
/* 工具箱、设置页用 block 滚动 */
#page-settings.active,
#page-tools.active {
display: block;
overflow-y: auto;
padding: 0;
}
.page::-webkit-scrollbar { width: 5px; }
.page::-webkit-scrollbar-track { background: transparent; }
.page::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 3px; }
/* =============================================
通用卡片
============================================= */
.card {
background: var(--card-bg);
border-radius: var(--radius);
border: 1px solid var(--border);
padding: 20px;
box-shadow: var(--shadow);
}
.card-title {
font-size: 14px;
font-weight: 600;
color: var(--text);
margin-bottom: 14px;
display: flex;
align-items: center;
gap: 6px;
}
/* =============================================
主页布局
============================================= */
.home-grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: auto 1fr;
gap: 16px;
width: 100%;
align-content: start;
}
/* 欢迎横幅 */
.welcome-banner {
grid-column: 1 / -1;
background: linear-gradient(135deg, #0bc4e3 0%, #1677ff 100%);
border-radius: var(--radius);
padding: 22px 28px;
color: #fff;
display: flex;
align-items: center;
justify-content: space-between;
}
.welcome-title {
font-size: 22px;
font-weight: 700;
display: flex;
align-items: center;
gap: 10px;
}
.welcome-sub {
margin-top: 6px;
font-size: 13px;
opacity: .85;
}
.welcome-actions {
display: flex;
gap: 10px;
}
.btn {
padding: 8px 16px;
border-radius: 6px;
font-size: 13px;
cursor: pointer;
border: none;
font-family: inherit;
transition: all 0.15s;
display: inline-flex;
align-items: center;
gap: 5px;
}
.btn-primary { background: var(--accent-2); color: #fff; }
.btn-primary:hover { background: #0958d9; }
.btn-white { background: rgba(255,255,255,.9); color: var(--accent-2); }
.btn-white:hover { background: #fff; }
.btn-outline { background: transparent; border: 1px solid var(--border); color: var(--text-sub); }
.btn-outline:hover { border-color: var(--accent); color: var(--accent); }
.btn-danger { background: #fff0f0; border: 1px solid #ffccc7; color: var(--accent-red); }
.btn-danger:hover { background: #ffccc7; }
/* =============================================
主页 - 账号信息卡
============================================= */
.account-card {}
.account-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 0;
border-bottom: 1px solid var(--border);
font-size: 13px;
}
.account-row:last-child { border-bottom: none; }
.account-label { color: var(--text-sub); }
.account-value { color: var(--text); font-weight: 500; }
.account-value.blue { color: var(--accent-2); }
.account-value.green { color: var(--accent-green); }
.account-actions {
display: flex;
gap: 10px;
margin-top: 16px;
}
/* 状态徽章 */
.badge {
display: inline-block;
padding: 2px 9px;
border-radius: 20px;
font-size: 11px;
font-weight: 600;
}
.badge-green { background: #f6ffed; color: var(--accent-green); border: 1px solid #b7eb8f; }
.badge-red { background: #fff1f0; color: var(--accent-red); border: 1px solid #ffa39e; }
/* =============================================
主页 - 游戏状态卡
============================================= */
.game-status-card .status-row {
display: flex;
align-items: center;
gap: 12px;
padding: 10px 0;
border-bottom: 1px solid var(--border);
font-size: 13px;
}
.game-status-card .status-row:last-child { border-bottom: none; }
.status-icon {
width: 36px;
height: 36px;
border-radius: 8px;
display: flex;
align-items: center;
justify-content: center;
font-size: 18px;
flex-shrink: 0;
}
.status-icon.blue { background: #e6f4ff; }
.status-icon.green { background: #f6ffed; }
.status-icon.gold { background: #fffbe6; }
.status-info { flex: 1; }
.status-info .s-label { color: var(--text-muted); font-size: 12px; }
.status-info .s-value { color: var(--text); font-weight: 600; margin-top: 1px; }
/* =============================================
主页 - 新闻资讯卡(右下角)
============================================= */
.news-card {
grid-column: 2;
grid-row: 2;
}
.news-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
}
.news-more {
font-size: 12px;
color: var(--accent-2);
cursor: pointer;
text-decoration: none;
}
/* 新闻列表可滚动区域,最多显示8条,支持鼠标滚轮 */
.news-list-scroll {
max-height: 320px;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: #d1d5db transparent;
}
.news-list-scroll::-webkit-scrollbar { width: 4px; }
.news-list-scroll::-webkit-scrollbar-thumb { background: #d1d5db; border-radius: 2px; }
.news-item {
display: flex;
align-items: center;
gap: 10px;
padding: 11px 8px;
border-bottom: 1px solid var(--border);
border-radius: 6px;
cursor: pointer;
transition: background 0.15s, transform 0.22s cubic-bezier(.25,.46,.45,.94);
}
.news-item:last-child { border-bottom: none; }
.news-item:hover {
background: #f0f6ff;
transform: translateY(-2px);
}
.news-item:hover .news-title { color: var(--accent-2); }
/* 标签:新闻/视频/公告 */
.news-tag {
flex-shrink: 0;
font-size: 11px;
padding: 1px 6px;
border: 1px solid;
border-radius: 3px;
font-weight: 500;
line-height: 18px;
}
.news-thumb {
width: 96px;
height: 60px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #e8eaed;
}
.news-content { flex: 1; min-width: 0; }
.news-title {
flex: 1;
min-width: 0;
font-size: 13px;
color: var(--text);
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
transition: color 0.15s;
}
.news-date {
flex-shrink: 0;
font-size: 12px;
color: var(--text-muted);
white-space: nowrap;
}
.news-thumb {
width: 96px;
height: 60px;
border-radius: 6px;
object-fit: cover;
flex-shrink: 0;
background: #e8eaed;
}
.news-content { flex: 1; min-width: 0; }
.news-title {
font-size: 13px;
color: var(--text);
line-height: 1.5;
overflow: hidden;
display: -webkit-box;
-webkit-line-clamp: 2;
-webkit-box-orient: vertical;
transition: color 0.15s;
font-weight: 500;
}
.news-date {
font-size: 12px;
color: var(--text-muted);
margin-top: 4px;
}
/* =============================================
皮肤库 - 英雄列表页
============================================= */
.skins-toolbar {
display: flex;
align-items: center;
justify-content: space-between;
margin-bottom: 10px;
flex-wrap: nowrap;
gap: 10px;
background: #ffffff;
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 10px 16px;
box-shadow: var(--shadow);
flex-shrink: 0;
}
.role-tabs {
display: flex;
gap: 6px;
flex-wrap: wrap;
flex: 1;
}
.role-tab {
width: 88px;
height: 40px;
border-radius: 20px;
font-size: 14px;
cursor: pointer;
border: 1.5px solid #e8eaed;
background: #ffffff;
color: #6b7280;
display: flex;
align-items: center;
justify-content: center;
gap: 5px;
transition: transform 0.18s cubic-bezier(.34,1.56,.64,1), border-color 0.15s, color 0.15s, box-shadow 0.15s;
white-space: nowrap;
flex-shrink: 0;
user-select: none;
}
.role-tab span:first-child {
font-size: 18px;
line-height: 1;
}
.role-tab-icon {
font-size: 18px;
line-height: 1;
}
.role-tab:hover {
transform: scale(1.06);
border-color: #c0c8d8;
color: var(--text);
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.role-tab.active {
background: #ffffff;
color: #1677ff;
border-color: #1677ff;
border-width: 2px;
font-weight: 600;
transform: scale(1);
box-shadow: none;
}
/* 右侧:英雄数 + 搜索框 */
.champ-search-box {
display: flex;
align-items: center;
gap: 10px;
flex-shrink: 0;
}
.champ-count {
font-size: 14px;
color: var(--text-muted);
white-space: nowrap;
padding-left: 12px;
border-left: 1px solid var(--border);
}
.champ-count-num {
color: var(--accent-2);
font-weight: 600;
}
.search-input {
width: 240px;
height: 40px;
padding: 0 14px;
border: 1px solid var(--border);
border-radius: 8px;
font-size: 14px;
font-family: inherit;
outline: none;
color: var(--text-sub);
background: #f5f6f8;
transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.search-input::placeholder { color: #b0b8c4; }
.search-input:focus {
background: #fff;
border-color: #1677FF;
box-shadow: 0 0 0 2px rgba(22,119,255,0.12);
}
/* 英雄网格 */
/* 英雄网格 - 自适应,随窗口宽度变化 */
.champ-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(clamp(80px, 9vw, 160px), 1fr));
gap: clamp(8px, 1vw, 16px);
padding: 0 4px; /* 防止卡片阴影被裁切 */
}
.champ-card {
border-radius: 12px;
overflow: hidden; /* hidden防止图片超出圆角 */
cursor: pointer;
background: var(--card-bg);
border: 1.5px solid transparent;
box-shadow: 0 2px 8px rgba(0,0,0,.08);
transition: box-shadow 0.3s ease, transform 0.3s cubic-bezier(.25,.46,.45,.94), border-color 0.2s;
transform: translateZ(0);
will-change: transform;
}
.champ-card:hover {
box-shadow: 0 10px 28px rgba(0,0,0,.18);
transform: translateY(-6px) scale(1.03);
border-color: rgba(22,119,255,0.3);
}
/* 图片单独包一层限制溢出 */
.champ-card .champ-img-wrap {
border-radius: 0; /* 父级已有overflow:hidden,不需要再单独设圆角 */
overflow: hidden;
width: 100%;
aspect-ratio: 1;
position: relative;
}
/* hover 时底部渐变黑色遮罩 */
.champ-card .champ-img-wrap::after {
content: '';
position: absolute;
bottom: 0; left: 0; right: 0;
height: 50%;
background: linear-gradient(to top, rgba(0,0,0,0.55) 0%, transparent 100%);
opacity: 0;
transition: opacity 0.25s ease;
pointer-events: none;
border-radius: 0;
}
.champ-card:hover .champ-img-wrap::after {
opacity: 1;
}
.champ-card img {
width: 100%;
height: 100%;
object-fit: cover;
display: block;
transition: transform 0.3s cubic-bezier(.34,1.56,.64,1);
}
.champ-card:hover img {
transform: scale(1.12);
}
.champ-card .champ-name {
text-align: center;
font-size: 12px;
padding: 7px 4px 10px; /* 底部留白10px */
color: var(--text);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
background: var(--card-bg);
border-radius: 0;
}
/* =============================================
皮肤详情页 - 对齐参考项目
============================================= */
/* 顶部信息栏 */
.sp-info-bar {
flex-shrink: 0;
width: auto; /* 配合 margin: 0 16px 使用,不用 width:100% 避免溢出 */
height: clamp(46px, 6vh, 62px);
background: var(--card-bg);
border: 1px solid var(--border);
border-radius: 12px;
display: flex; align-items: center; justify-content: space-between;
padding: 0 clamp(12px, 1.5vw, 22px);
margin-bottom: 10px;
box-sizing: border-box;
}
.sp-info-left { display: flex; align-items: center; gap: 14px; }
.sp-info-avatar {
width: 38px; height: 38px;
border-radius: 50%; object-fit: cover;
background: var(--border); border: 2px solid var(--border);
}
.sp-info-name { font-size: 17px; font-weight: 700; color: var(--text); }
.sp-info-sub {
font-size: 12px; color: var(--text-sub);
background: var(--bg);
border: 1px solid var(--border);
border-radius: 12px; padding: 3px 10px;
margin-left: 4px;
}
.sp-info-right { display: flex; align-items: center; gap: 10px; }
.sp-info-count {
display: flex; align-items: center; gap: 6px;
padding: 4px 12px;
background: rgba(22,93,255,0.08);
border: 1.5px solid rgba(22,93,255,0.2);
border-radius: 20px;
font-size: 12px; font-weight: 600; color: var(--accent-2);
}
.sp-info-count svg { width: 14px; height: 14px; fill: var(--accent-2); flex-shrink: 0; }
.sp-back-btn {
display: flex; align-items: center; gap: 5px;
height: 30px; padding: 0 12px;
border: 1.5px solid var(--border); border-radius: 7px;
background: var(--bg); color: var(--text);
font-size: 12px; font-weight: 600; cursor: pointer;
transition: all 0.15s;
}
.sp-back-btn svg { width: 15px; height: 15px; fill: var(--text); }
.sp-back-btn:hover { background: var(--accent-2); color: #fff; border-color: var(--accent-2); }
.sp-back-btn:hover svg { fill: #fff; }
/* 大图画布区域 */
.sp-canvas {
flex-shrink: 0;
width: auto; /* 配合 margin: 0 16px 使用 */
height: clamp(360px, 52vh, 660px);
position: relative;
background: #0a0e14; border-radius: 14px;
overflow: hidden;
display: flex;
flex-direction: column;
justify-content: flex-end;
}
/* 大图铺满整个canvas */
.sp-bg-img {
position: absolute;
inset: 0; width: 100%; height: 100%;
object-fit: cover;
object-position: center 15%; /* 让人物上半身/脸部更完整显示 */
display: block;
transition: opacity 0.35s ease, transform 0.6s cubic-bezier(.25,.46,.45,.94);
transform-origin: center top;
}
.sp-canvas:hover .sp-bg-img {
transform: scale(1.04);
}
.sp-bg-loading {
position: absolute; inset: 0; z-index: 5;
background: rgba(10,14,20,0.65);
display: flex; align-items: center; justify-content: center;
opacity: 0; pointer-events: none; transition: opacity .2s;
}
.sp-bg-loading.show { opacity: 1; }
/* ── 炫彩圆点行:右上角,从右滑入 ── */
.sp-chroma-row {
position: absolute; top: 12px; right: 12px;
display: flex; align-items: center; gap: 6px;
flex-wrap: nowrap; z-index: 20;
background: rgba(10,14,30,0.7);
padding: 7px 12px; border-radius: 22px;
backdrop-filter: blur(6px);
border: 1px solid rgba(255,255,255,0.15);
transform: translateX(20px); opacity: 0;
transition: transform 0.32s cubic-bezier(.34,1.56,.64,1), opacity 0.25s ease;
}
.sp-chroma-row.visible { transform: translateX(0); opacity: 1; }
.sp-chroma-dot {
width: 20px; height: 20px; border-radius: 50%;
cursor: pointer; flex-shrink: 0;
border: 2px solid rgba(255,255,255,0.3);
transition: transform 0.18s, border-color 0.18s, box-shadow 0.18s;
box-shadow: 0 1px 4px rgba(0,0,0,0.5);
}
.sp-chroma-dot:hover { transform: scale(1.3); border-color: #fff; }
.sp-chroma-dot.active {
border-color: #fff;
box-shadow: 0 0 0 2.5px rgba(255,255,255,0.45);
transform: scale(1.2);
}
/* ── 炫彩预览卡片:右上角,蓝色边框,从右滑入 ── */
.sp-chroma-card-name {
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 底部信息条 */
.sp-bottom-bar {
position: absolute; bottom: 0; left: 0; right: 0; z-index: 8;
background: linear-gradient(0deg, rgba(0,0,0,0.92) 0%, rgba(0,0,0,0.55) 70%, transparent 100%);
padding-top: 60px;
}
.sp-name-box {
display: flex; flex-direction: column; align-items: flex-start;
padding: 0 20px 10px;
}
.sp-skin-name {
font-size: 26px; font-weight: 700; color: #fff;
text-shadow: 0 2px 10px rgba(0,0,0,0.7);
line-height: 1.2; margin-bottom: 5px;
}
.sp-skin-desc {
font-size: 12px; color: rgba(255,255,255,0.72);
line-height: 1.65; max-width: 55%;
display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical;
overflow: hidden;
}
.sp-action-row { display: flex; gap: 10px; margin-top: 14px; }
.sp-btn-apply {
height: 40px; padding: 0 22px;
background: var(--accent-2); color: #fff;
border: none; border-radius: 7px;
font-size: 13px; font-weight: 700; cursor: pointer;
transition: transform 0.3s cubic-bezier(.25,.46,.45,.94), background 0.15s, box-shadow 0.3s;
}
.sp-btn-apply:hover {
background: #0958d9;
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(22,119,255,0.45);
}
.sp-btn-apply:active { transform: translateY(-1px); }
.sp-btn-career {
height: 40px; padding: 0 22px;
background: rgba(255,255,255,0.12); color: #fff;
border: 1.5px solid rgba(255,255,255,0.35); border-radius: 7px;
font-size: 13px; font-weight: 700; cursor: pointer;
backdrop-filter: blur(6px);
transition: transform 0.3s cubic-bezier(.25,.46,.45,.94), background 0.15s, box-shadow 0.3s;
}
.sp-btn-career:hover {
background: rgba(255,255,255,0.22);
transform: translateY(-4px);
box-shadow: 0 8px 20px rgba(0,0,0,0.25);
}
.sp-btn-career:active { transform: translateY(-1px); }
/* 缩略图横向滚动行 */
.sp-thumb-row {
display: flex; align-items: center;
background: rgba(0,0,0,0.55);
padding: 10px 0; gap: 0;
}
.sp-arrow-btn {
flex-shrink: 0; width: 36px; height: 36px; border-radius: 50%;
background: rgba(255,255,255,0.15); border: none;
display: flex; align-items: center; justify-content: center;
cursor: pointer; margin: 0 8px;
transition: background 0.2s, transform 0.2s;
}
.sp-arrow-btn svg { width: 20px; height: 20px; fill: #fff; }
.sp-arrow-btn:hover { background: var(--accent-2); transform: scale(1.1); }
.sp-thumb-scroll {
flex: 1; min-width: 0; height: 160px; overflow: hidden; position: relative;
}
.sp-thumb-track {
display: flex; gap: 8px;
padding: 8px 8px;
height: 100%; align-items: flex-start;
box-sizing: border-box;
transition: transform 0.4s cubic-bezier(0.4,0,0.2,1);
will-change: transform;
cursor: grab; user-select: none;
flex-wrap: wrap;
}
.sp-thumb-track.dragging { cursor: grabbing; transition: none; }
/* 单个缩略图 - 对齐参考图白色卡片 */
.sp-thumb {
flex-shrink: 0;
width: 100%;
border-radius: 10px;
overflow: hidden;
cursor: pointer;
border: 1.5px solid transparent;
position: relative;
background: #ffffff;
box-shadow: 0 1px 4px rgba(0,0,0,0.08);
transition: border-color 0.18s, box-shadow 0.18s;
display: flex; flex-direction: column;
}
.sp-thumb:hover img { transform: scale(1.1); }
.sp-thumb:hover .sp-thumb-img-wrap::after { opacity: 1; }
.sp-thumb.active {
border-color: #1E88D8;
box-shadow: 0 0 0 1px rgba(30,136,216,0.2);
}
.sp-thumb.active .sp-thumb-name { color: #1E88D8; }
/* 图片容器 */
.sp-thumb-img-wrap {
position: relative; overflow: hidden;
border-radius: 8px 8px 0 0;
aspect-ratio: 1; width: 100%;
}
.sp-thumb-img-wrap::after {
content: "";
position: absolute; inset: 0;
background: linear-gradient(to top, rgba(0,0,0,0.45) 0%, transparent 60%);
opacity: 0; transition: opacity 0.22s ease;
pointer-events: none;
}
.sp-thumb img {
width: 100%; height: 100%;
object-fit: cover; object-position: center top;
display: block;
transition: transform 0.28s cubic-bezier(.34,1.56,.64,1);
}
.sp-thumb-name {
background: #fff;
padding: 5px 5px 6px;
font-size: 11px; font-weight: 400; color: #333333;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
text-align: center;
border-top: 1px solid rgba(0,0,0,0.05);
transition: color 0.18s;
}
/* 角标 */
.sp-thumb-corner {
position: absolute; top: 5px; right: 5px;
min-width: 24px; height: 24px;
background: #1890ff; border-radius: 7px;
display: flex; align-items: center; justify-content: center;
padding: 0 4px; z-index: 4;
box-shadow: 0 2px 6px rgba(24,144,255,0.5);
}
.sp-thumb-corner span {
font-size: 13px; font-weight: 800; color: #fff; line-height: 1;
}
.sp-thumb-quest {
position: absolute; top: 5px; right: 5px;
padding: 5px 4px;
background: #e53935;
border-radius: 5px; z-index: 4;
writing-mode: vertical-rl;
text-orientation: upright;
letter-spacing: 1px;
}
.sp-thumb-quest span { font-size: 11px; font-weight: 700; color: #fff; line-height: 1; }
/* =============================================
/* =============================================
Toast 通知框 - 顶部居中,支持多个叠加
============================================= */
#toast-container {
position: fixed;
top: 16px;
left: 50%;
transform: translateX(-50%);
z-index: 99999;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
pointer-events: none;
white-space: nowrap;
}
.toast {
display: inline-flex;
align-items: center;
gap: 12px;
background: #ffffff;
border-radius: 14px;
box-shadow: 0 4px 16px rgba(0,0,0,0.10);
border-left: 4px solid #52c41a;
padding: 13px 22px 13px 16px;
pointer-events: auto;
position: relative;
overflow: hidden;
animation: toastIn 0.38s cubic-bezier(.34,1.56,.64,1) forwards;
}
.toast.err { border-left-color: #1677ff; }
.toast.leaving { animation: toastOut 0.28s ease forwards; }
@keyframes toastIn {
from { opacity: 0; transform: translateY(-16px) scale(0.94); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
@keyframes toastOut {
from { opacity: 1; transform: translateY(0) scale(1); }
to { opacity: 0; transform: translateY(-10px) scale(0.96); }
}
.toast-icon {
width: 32px; height: 32px;
border-radius: 50%;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
font-size: 17px; font-weight: 700;
background: #f0fff4;
color: #52c41a;
}
.toast.err .toast-icon {
background: #e8f4ff;
color: #1677ff;
font-style: italic;
}
.toast-body {
font-size: 15px;
font-weight: 400;
color: #969696;
line-height: 1.4;
}
.toast-bar {
position: absolute;
bottom: 0; left: 0;
height: 3px;
background: #52c41a;
animation: toastBar 2.6s linear forwards;
}
.toast.err .toast-bar { background: #1677ff; }
@keyframes toastBar {
from { width: 100%; }
to { width: 0%; }
}
.loading-spin {
display: flex; justify-content: center; align-items: center;
height: 120px; color: var(--text-muted); gap: 10px; font-size: 13px;
}
.loading-spin::before {
content: ''; width: 18px; height: 18px;
border: 2px solid #e8eaed; border-top-color: var(--accent);
border-radius: 50%; animation: spin .7s linear infinite; flex-shrink: 0;
}
@keyframes spin { to { transform: rotate(360deg); } }
.placeholder-page {
display: flex; flex-direction: column;
align-items: center; justify-content: center;
height: 60vh; color: var(--text-muted); gap: 12px;
}
.placeholder-page svg { width: 60px; height: 60px; fill: #d1d5db; }
.placeholder-page p { font-size: 15px; }
/* 皮肤库页面 */
#page-skins {
padding: 0;
gap: 0;
overflow: hidden;
display: flex;
flex-direction: column;
}
#page-skins:not(.active) { display: none !important; }
/* =============================================
皮肤详情 - 炫彩 wrap(圆点+卡片,右上角整体)
============================================= */
.sp-chroma-wrap {
position: absolute; z-index: 999;
display: flex; flex-direction: column; align-items: flex-end; gap: 6px;
transform: translateX(30px); opacity: 0;
transition: transform 0.38s cubic-bezier(.34,1.56,.64,1), opacity 0.28s ease;
pointer-events: none;
}
.sp-chroma-wrap.visible {
transform: translateX(0); opacity: 1;
pointer-events: auto;
}
/* 炫彩卡片:点击圆点后弹出 */
.sp-chroma-card {
width: 200px;
background: rgba(8,12,28,0.88);
backdrop-filter: blur(16px);
border: 1.5px solid rgba(255,255,255,0.18);
border-radius: 12px;
overflow: hidden;
opacity: 0; pointer-events: none;
transform: translateY(-8px) scale(0.95);
transition: opacity 0.22s ease, transform 0.25s cubic-bezier(.34,1.56,.64,1);
position: relative;
z-index: 25;
}
.sp-chroma-card.visible {
opacity: 1 !important;
pointer-events: auto;
transform: translateY(0) scale(1) !important;
}
/* 皮肤图标网格(大图下方,独立滚动) */
.sp-skin-grid-wrap {
flex: 1;
width: auto; /* 配合 margin: 0 16px 使用 */
min-height: 0;
background: #ffffff;
border-radius: 12px;
border: 1px solid var(--border);
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
margin-top: 10px;
overflow: hidden;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
/* 顶部固定间距(不随滚动消失) */
.sp-skin-grid-wrap::before {
content: '';
display: block;
height: 14px;
flex-shrink: 0;
}
.sp-skin-grid-inner {
overflow-y: auto;
overflow-x: hidden;
flex: 1;
padding: 0 14px 14px;
scrollbar-width: thin;
scrollbar-color: #c5c8d0 transparent;
}
.sp-skin-grid-inner::-webkit-scrollbar { width: 5px; }
.sp-skin-grid-inner::-webkit-scrollbar-thumb { background: #c5c8d0; border-radius: 3px; }
.sp-skin-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
gap: 10px;
}
/* 英雄网格外层卡片(和皮肤详情的 sp-skin-grid-wrap 一致) */
.champ-grid-card {
flex: 1;
min-height: 0;
margin: 0 16px 16px;
background: #ffffff;
border-radius: 14px;
border: 1px solid var(--border);
box-shadow: 0 2px 8px rgba(0,0,0,0.06);
overflow: hidden;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
/* 英雄列表滚动容器 */
.champ-grid-scroll {
flex: 1;
min-height: 0;
overflow-y: scroll; /* 始终显示滚动条 */
overflow-x: hidden;
padding: 14px 14px 14px 14px;
scrollbar-width: thin;
scrollbar-color: #8c9096 transparent;
}
.champ-grid-scroll::-webkit-scrollbar { width: 6px; }
.champ-grid-scroll::-webkit-scrollbar-track {
background: rgba(0,0,0,0.04);
border-radius: 3px;
}
.champ-grid-scroll::-webkit-scrollbar-thumb {
background: #c5c8d0;
border-radius: 3px;
min-height: 40px;
}
.champ-grid-scroll::-webkit-scrollbar-thumb:hover { background: #8c9096; }
/* 底部占位 */
.champ-grid::after {
content: '';
display: block;
height: 16px;
grid-column: 1 / -1;
}
/* 职业筛选标签 */
.role-tabs {
display: flex;
gap: 8px;
flex-wrap: wrap;
flex: 1;
}
/* 加载中 Toast */
.toast-loading {
border-left-color: #1677ff;
}
.toast-spinner {
width: 20px; height: 20px;
border-radius: 50%;
border: 2.5px solid #e8f4ff;
border-top-color: #1677ff;
flex-shrink: 0;
animation: spin .7s linear infinite;
}
/* =============================================
美化库
============================================= */
#page-beauty {
padding: 0;
overflow: hidden;
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
}
#page-beauty > * { box-sizing: border-box; width: 100%; }
#page-beauty:not(.active) { display: none !important; }
.beauty-wrap {
display: flex;
flex-direction: column;
flex: 1;
min-height: 0;
height: 100%; /* 确保撑满父容器 */
overflow: hidden;
}
/* 顶部分类Tab */
.beauty-tabs {
display: flex;
align-items: center;
justify-content: space-between;
gap: 10px;
padding: 10px 16px;
background: #ffffff;
border: 1px solid var(--border);
border-radius: var(--radius);
flex-shrink: 0;
flex-wrap: nowrap;
margin: 14px 16px 10px; /* 左右16px,和皮肤库toolbar一致 */
box-shadow: var(--shadow);
}
.beauty-tab {
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
padding: 0;
width: 104px;
height: 40px;
border-radius: 20px;
border: 1.5px solid #e8eaed;
background: #fff;
color: #6b7280;
font-size: 14px;
cursor: pointer;
transition: transform 0.18s cubic-bezier(.34,1.56,.64,1), border-color 0.15s, color 0.15s, box-shadow 0.15s;
white-space: nowrap;
flex-shrink: 0;
user-select: none;
}
.beauty-tab:hover {
transform: scale(1.06);
border-color: #c0c8d8;
color: var(--text);
box-shadow: 0 2px 8px rgba(0,0,0,0.08);
}
.beauty-tab.active {
font-weight: 600;
border-width: 2px;
transform: scale(1);
box-shadow: none;
}
.beauty-total {
font-size: 14px;
color: var(--text-muted);
white-space: nowrap;
padding-left: 12px;
border-left: 1px solid var(--border);
flex-shrink: 0;
background: none;
border-radius: 0;
height: auto;
display: flex;
align-items: center;
gap: 4px;
}
.beauty-total-num {
color: var(--accent-2);
font-weight: 600;
}
/* 图片网格滚动容器 */
.beauty-grid-wrap {
flex: 1;
min-height: 0;
overflow-y: auto;
overflow-x: hidden;
padding: 0 16px 14px 16px; /* 左右16px,和皮肤库一致 */
scrollbar-width: thin;
scrollbar-color: #c5c8d0 transparent;
}
.beauty-grid-wrap::-webkit-scrollbar { width: 5px; }
.beauty-grid-wrap::-webkit-scrollbar-thumb { background: #c5c8d0; border-radius: 3px; }
.beauty-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(clamp(110px, 10vw, 180px), 1fr));
gap: clamp(8px, 1vw, 14px);
padding-top: 14px;
padding-bottom: 14px;
align-content: start; /* 有几行就占几行,不拉伸撑满 */
}
/* 图片缺失时的提示覆盖层 */
.beauty-card-img-wrap.img-missing {
background: #f5f6f8;
display: flex;
align-items: center;
justify-content: center;
}
.beauty-img-missing-tip {
display: none;
font-size: 12px;
color: #9ca3af;
text-align: center;
pointer-events: none;
}
.beauty-card-img-wrap.img-missing .beauty-img-missing-tip {
display: block;
}
[data-theme="dark"] .beauty-card-img-wrap.img-missing {
background: #252840;
}
[data-theme="dark"] .beauty-img-missing-tip {
color: #565e7a;
}
/* 界面(jm)宽屏:横向比例 16:5,自适应列 */
.beauty-grid-wide {
grid-template-columns: repeat(auto-fill, minmax(380px, 1fr));
}
.beauty-img-wide {
aspect-ratio: 16/5 !important;
}
/* 单个美化卡片 - 和sp-thumb完全一致 */
.beauty-card {
border-radius: 10px;
overflow: hidden;
cursor: pointer;
border: 1.5px solid transparent;
position: relative;
background: #ffffff;
box-shadow: 0 1px 4px rgba(0,0,0,0.08);
transition: border-color 0.18s, box-shadow 0.18s;
display: flex;
flex-direction: column;
transform: translateZ(0);
will-change: transform;
}
.beauty-card:hover {
border-color: #1E88D8;
box-shadow: 0 0 0 1px rgba(30,136,216,0.2);
}
.beauty-card:hover .beauty-card-img-wrap img {
transform: scale(1.1);
}
.beauty-card-img-wrap {
position: relative;
overflow: hidden;
border-radius: 8px 8px 0 0;
aspect-ratio: 1;
width: 100%;
background: #f8f8f8;
transform: translateZ(0); /* 强制GPU渲染,修复overflow:hidden在缩放时失效 */
}
.beauty-card-img-wrap img {
width: 100%;
height: 100%;
object-fit: cover;
object-position: center;
display: block;
transition: transform 0.28s cubic-bezier(.34,1.56,.64,1);
}
.beauty-card-name {
background: #fff;
padding: 5px 5px 6px;
font-size: 11px;
font-weight: 400;
color: #333333;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
text-align: center;
border-top: 1px solid rgba(0,0,0,0.05);
transition: color 0.18s;
}
.beauty-card:hover .beauty-card-name { color: #1E88D8; }
.beauty-card.active .beauty-card-name { color: #1E88D8; }
/* 底部操作栏 */
.beauty-footer {
flex-shrink: 0;
padding: 12px 20px;
background: #fff;
border-top: 1px solid var(--border);
display: flex;
align-items: center;
}
.beauty-clear-btn {
height: 40px;
padding: 0 28px;
background: #1677ff;
color: #fff;
border: none;
border-radius: 8px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
transition: transform 0.3s cubic-bezier(.25,.46,.45,.94), box-shadow 0.3s;
}
.beauty-clear-btn:hover {
transform: translateY(-3px);
box-shadow: 0 8px 20px rgba(22,119,255,0.4);
}
/* 界面(jm)宽屏网格 — 已在上方统一定义,此处删除重复规则 */
/* =============================================
使用指南卡片
============================================= */
.guide-header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 14px;
}
.guide-list {
display: flex;
flex-direction: column;
gap: 10px;
margin-bottom: 14px;
}
.guide-item {
display: flex;
align-items: center;
gap: 8px;
font-size: 13px;
flex-wrap: wrap;
}
.guide-num {
width: 20px;
height: 20px;
border-radius: 50%;
background: #1677ff;
color: #fff;
font-size: 12px;
font-weight: 700;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
}
.guide-text {
color: var(--text);
flex: 1;
}
.guide-link {
color: #1677ff;
font-size: 12px;
text-decoration: none;
white-space: nowrap;
flex-shrink: 0;
}
.guide-link:hover { text-decoration: underline; }
.guide-disclaimer {
background: #fffbe6;
border: 1px solid #ffe58f;
border-left: 3px solid #faad14;
border-radius: 4px;
padding: 10px 12px;
font-size: 12px;
color: #666;
line-height: 1.7;
margin-bottom: 14px;
}
.guide-footer {
display: flex;
gap: 10px;
}
.guide-btn-manual {
flex: 1;
height: 36px;
border: 1px solid var(--border);
border-radius: 6px;
background: #fff;
color: var(--text-sub);
font-size: 13px;
cursor: pointer;
transition: border-color 0.15s, color 0.15s;
}
.guide-btn-manual:hover { border-color: #1677ff; color: #1677ff; }
.guide-btn-service {
flex: 1;
height: 36px;
border: none;
border-radius: 6px;
background: #52c41a;
color: #fff;
font-size: 13px;
font-weight: 600;
cursor: pointer;
transition: background 0.15s, transform 0.2s;
}
.guide-btn-service:hover { background: #389e0d; transform: translateY(-1px); }
/* =============================================
美化下载圆形进度弹窗
============================================= */
#beauty-progress-modal {
position: fixed;
top: 0;
left: 0;
right: 0;
bottom: 0;
z-index: 999999;
display: flex;
align-items: center;
justify-content: center;
background: rgba(0,0,0,0.5);
backdrop-filter: blur(6px);
}
#beauty-progress-modal.hidden { display: none; }
.beauty-progress-box {
background: #fff;
border-radius: 24px;
padding: 36px 44px 28px;
display: flex;
flex-direction: column;
align-items: center;
gap: 18px;
box-shadow: 0 24px 64px rgba(0,0,0,0.22);
min-width: 260px;
}
.beauty-progress-ring-wrap {
position: relative;
width: 160px;
height: 160px;
flex-shrink: 0;
}
.beauty-progress-ring-wrap svg {
position: absolute;
top: 0; left: 0;
width: 160px; height: 160px;
transform: rotate(-90deg);
filter: drop-shadow(0 0 8px rgba(22,119,255,0.4));
z-index: 2;
pointer-events: none;
}
.beauty-progress-ring-bg {
fill: none;
stroke: #eef2ff;
stroke-width: 5;
}
.beauty-progress-ring-bar {
fill: none;
stroke: url(#progressGrad);
stroke-width: 5;
stroke-linecap: round;
transition: stroke-dashoffset 0.45s cubic-bezier(.4,0,.2,1);
}
.beauty-progress-img {
position: absolute;
top: 8px;
left: 8px;
width: 144px;
height: 144px;
border-radius: 50%;
object-fit: cover;
object-position: center center;
background: #f0f0f0;
z-index: 1;
}
/* 百分比放在圆圈底部,不挡图片主体 */
.beauty-progress-pct {
position: absolute;
bottom: 10px;
left: 0; right: 0;
display: flex;
align-items: center;
justify-content: center;
font-size: 14px;
font-weight: 700;
color: #fff;
text-shadow: 0 1px 4px rgba(0,0,0,0.8), 0 0 8px rgba(0,0,0,0.5);
z-index: 3;
}
.beauty-progress-label {
font-size: 14px;
color: var(--text-sub);
text-align: center;
max-width: 220px;
line-height: 1.6;
font-weight: 500;
}
.beauty-progress-speed {
font-size: 12px;
color: var(--text-muted);
margin-top: -10px;
}
/* =============================================
设置页面
============================================= */
#page-settings {
padding: 0;
overflow-y: auto;
scrollbar-width: thin;
scrollbar-color: #c5c8d0 transparent;
}
#page-settings::-webkit-scrollbar { width: 5px; }
#page-settings::-webkit-scrollbar-thumb { background: #c5c8d0; border-radius: 3px; }
.settings-wrap {
width: 100%;
padding: 14px 16px 40px;
display: flex;
flex-direction: column;
gap: 16px;
box-sizing: border-box;
}
/* 顶部标题区 —— 白色底,和美化库Tab栏一致 */
.settings-header {
display: flex;
align-items: center;
gap: 14px;
background: #ffffff;
border: 1px solid var(--border);
border-radius: var(--radius);
padding: 10px 16px;
box-shadow: var(--shadow);
}
.settings-header-icon {
width: 40px; height: 40px;
border-radius: 10px;
background: #e6f4ff;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
}
.settings-header-title {
font-size: 15px; font-weight: 700; color: var(--text);
}
.settings-header-sub {
font-size: 12px; color: var(--text-muted); margin-top: 2px;
}
/* 主体区 */
.settings-body {
display: flex;
flex-direction: column;
gap: 18px;
}
/* 各分区块 */
.settings-section {
background: #fff;
border: 1px solid var(--border);
border-radius: 14px;
overflow: hidden;
box-shadow: 0 2px 10px rgba(0,0,0,0.06);
}
.settings-section-title {
display: flex;
align-items: center;
gap: 10px;
padding: 16px 20px 14px;
font-size: 15px;
font-weight: 700;
color: var(--text);
border-bottom: 1px solid var(--border);
background: #fafbfc;
}
.settings-section-icon {
width: 30px; height: 30px;
border-radius: 8px;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
}
.settings-section-badge {
font-size: 11px;
font-weight: 700;
padding: 2px 8px;
border-radius: 20px;
letter-spacing: .5px;
margin-left: auto;
}
.badge-cn {
background: linear-gradient(90deg, #fa541c, #fa8c16);
color: #fff;
}
.badge-global {
background: linear-gradient(90deg, #1677ff, #36cfc9);
color: #fff;
}
/* 清理残留卡 */
.settings-clean-card {
display: flex;
align-items: center;
justify-content: space-between;
gap: 20px;
padding: 20px 22px;
flex-wrap: wrap;
}
.settings-clean-info { flex: 1; min-width: 0; }
.settings-clean-title {
font-size: 14px; font-weight: 600; color: var(--text); margin-bottom: 6px;
}
.settings-clean-desc {
font-size: 13px; color: var(--text-sub); line-height: 1.6; margin-bottom: 10px;
}
.settings-clean-tags { display: flex; gap: 8px; flex-wrap: wrap; }
.settings-tag {
font-size: 13px;
padding: 6px 14px;
border-radius: 20px;
font-weight: 600;
}
.tag-warn { background: #fffbe6; color: #d46b08; border: 1px solid #ffe58f; }
.tag-safe { background: #f6ffed; color: #389e0d; border: 1px solid #b7eb8f; }
.settings-clean-btn {
flex-shrink: 0;
display: flex; align-items: center; gap: 7px;
height: 44px; padding: 0 22px;
background: linear-gradient(135deg, #ff4d4f, #ff7a45);
color: #fff; border: none; border-radius: 10px;
font-size: 14px; font-weight: 700; cursor: pointer;
box-shadow: 0 4px 14px rgba(255,77,79,0.38);
transition: transform 0.25s cubic-bezier(.34,1.56,.64,1), box-shadow 0.25s;
}
.settings-clean-btn:hover {
transform: translateY(-3px);
box-shadow: 0 8px 22px rgba(255,77,79,0.5);
}
.settings-clean-btn:active { transform: translateY(-1px); }
/* 复选框组 */
.settings-checks-group {
display: flex;
gap: 32px;
padding: 18px 22px 22px;
}
.settings-check-label {
display: flex;
align-items: center;
gap: 12px;
cursor: pointer;
user-select: none;
}
/* 自定义方框 —— 放大版 */
.settings-check-box {
width: 28px;
height: 28px;
border-radius: 7px;
border: 2px solid #d1d5db;
background: #fff;
display: flex;
align-items: center;
justify-content: center;
flex-shrink: 0;
transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
box-sizing: border-box;
}
/* 勾选状态 */
.settings-check-box.checked {
background: #1677ff;
border-color: #1677ff;
box-shadow: 0 3px 10px rgba(22,119,255,0.4);
}
/* 勾选后显示 ✓ */
.settings-check-box.checked::after {
content: '';
width: 7px;
height: 12px;
border: 2.5px solid #fff;
border-top: none;
border-left: none;
transform: rotate(45deg) translateY(-1px);
display: block;
}
/* hover */
.settings-check-label:hover .settings-check-box {
border-color: #1677ff;
}
.settings-check-text {
font-size: 15px;
font-weight: 600;
color: var(--text);
}
/* 复选框行右侧红色提示 */
.settings-check-tip {
margin-left: auto;
font-size: 13px;
font-weight: 500;
color: #ff4d4f;
background: #fff1f0;
border: 1px solid #ffccc7;
border-radius: 8px;
padding: 6px 14px;
line-height: 1.5;
align-self: center;
}
/* 分隔线(清理卡片内) */
.settings-divider {
height: 1px;
background: var(--border);
margin: 0 22px;
}
/* =============================================
工具箱页面
============================================= */
.tools-wrap {
display: flex;
flex-direction: column;
gap: 16px;
padding: 14px 16px 40px;
width: 100%;
box-sizing: border-box;
}
/* 主布局:左2列功能卡 + 右段位卡 */
.tools-main-grid {
display: grid;
grid-template-columns: 1fr minmax(22vw, 380px);
gap: clamp(10px, 1.2vw, 18px);
align-items: stretch;
width: 100%;
}
/* 左侧容器 —— 透明传递,让 tools-grid 直接参与 main-grid 布局 */
.tools-left {
display: flex;
flex-direction: column;
min-height: 0;
}
/* 左侧 2列功能卡网格,撑满左侧高度 */
.tools-grid {
display: grid;
grid-template-columns: 1fr 1fr;
grid-template-rows: 1fr 1fr;
gap: 14px;
flex: 1;
}
/* 单个功能卡片 */
.tools-card {
background: #fff;
border: 1px solid var(--border);
border-radius: 16px;
padding: 26px 24px;
display: flex;
align-items: center;
gap: 18px;
box-shadow: 0 2px 10px rgba(0,0,0,0.06);
transition: box-shadow 0.3s ease, transform 0.3s cubic-bezier(.25,.46,.45,.94);
cursor: default;
box-sizing: border-box;
min-height: 130px;
}
.tools-card:hover {
box-shadow: 0 10px 28px rgba(0,0,0,0.13);
transform: translateY(-6px);
}
.tools-card-icon {
width: 60px; height: 60px;
border-radius: 16px;
display: flex; align-items: center; justify-content: center;
flex-shrink: 0;
}
.tools-card-info { flex: 1; min-width: 0; }
.tools-card-title {
font-size: 17px; font-weight: 700; color: var(--text); margin-bottom: 6px;
}
.tools-card-desc { font-size: 13px; color: var(--text-muted); }
/* 开关 toggle */
.tools-toggle {
flex-shrink: 0;
width: 46px; height: 26px;
border-radius: 13px;
background: #e0e0e0;
position: relative;
cursor: pointer;
transition: background 0.25s;
}
.tools-toggle.on { background: #1677ff; }
.tools-toggle-dot {
position: absolute;
top: 3px; left: 3px;
width: 20px; height: 20px;
border-radius: 50%;
background: #fff;
box-shadow: 0 1px 4px rgba(0,0,0,0.2);
transition: left 0.25s cubic-bezier(.34,1.56,.64,1);
}
.tools-toggle.on .tools-toggle-dot { left: 23px; }
/* 段位修改卡片 —— 右侧,和左侧等高 */
.tools-rank-card {
background: #fff;
border: 1px solid var(--border);
border-radius: 16px;
box-shadow: 0 2px 10px rgba(0,0,0,0.06);
overflow: hidden;
transition: box-shadow 0.3s ease, transform 0.3s cubic-bezier(.25,.46,.45,.94);
display: flex;
flex-direction: column;
}
.tools-rank-card:hover {
box-shadow: 0 10px 28px rgba(0,0,0,0.13);
transform: translateY(-6px);
}
.tools-rank-title {
display: flex; align-items: center; gap: 10px;
padding: 14px 20px;
font-size: 15px; font-weight: 700; color: var(--text);
border-bottom: 1px solid var(--border);
background: #fafbfc;
}
.tools-rank-body {
padding: 18px 20px 20px;
display: flex;
flex-direction: column;
gap: 14px;
flex: 1;
justify-content: center;
}
.tools-rank-row {
display: flex; gap: 14px;
}
.tools-rank-field {
flex: 1;
display: flex; flex-direction: column; gap: 7px;
}
.tools-rank-field-full { width: 100%; }
.tools-rank-label {
font-size: 12px; font-weight: 600; color: var(--text-sub);
}
/* 段位下拉 */
.tools-select-wrap {
position: relative;
}
.tools-select {
width: 100%; height: 42px;
padding: 0 36px 0 14px;
border-radius: 10px;
border: 1.5px solid var(--border);
background: #f5f6f8;
font-size: 14px; font-weight: 600;
font-family: inherit;
color: var(--text);
outline: none;
appearance: none; -webkit-appearance: none;
cursor: pointer;
transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.tools-select:focus {
background: #fff;
border-color: #1677ff;
box-shadow: 0 0 0 3px rgba(22,119,255,0.10);
}
.tools-select-arrow {
position: absolute; right: 12px; top: 50%;
transform: translateY(-50%);
pointer-events: none;
color: #9ca3af; font-size: 14px;
}
/* 工具箱底部提示 */
.tools-footer-tip {
font-size: 13px;
font-weight: 500;
color: #ff4d4f;
background: #fff1f0;
border: 1px solid #ffccc7;
border-radius: 10px;
padding: 12px 18px;
text-align: center;
letter-spacing: .3px;
}
/* =============================================
侧边栏底部用户区
============================================= */
.sidebar-user {
margin: auto 10px 12px;
padding: 10px 12px;
border-radius: 12px;
border: 1px solid var(--border);
background: #f8f9fb;
display: flex;
align-items: center;
gap: 10px;
cursor: pointer;
transition: background 0.15s, box-shadow 0.15s;
flex-shrink: 0;
}
.sidebar-user:hover {
background: #eef2ff;
box-shadow: 0 2px 10px rgba(22,119,255,0.1);
}
.sidebar-user-avatar {
width: 36px; height: 36px;
border-radius: 50%;
object-fit: cover;
border: 2px solid #d1d5db;
flex-shrink: 0;
background: #e8eaed;
}
.sidebar-user-info { flex: 1; min-width: 0; }
.sidebar-user-name {
font-size: 13px; font-weight: 600; color: var(--text);
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
.sidebar-user-sub {
font-size: 11px; color: var(--text-muted); margin-top: 1px;
}
/* =============================================
用户信息弹出卡片 — 重新设计
============================================= */
.user-card {
position: fixed;
width: 240px;
background: #fff;
border: 1px solid var(--border);
border-radius: 20px;
box-shadow: 0 12px 40px rgba(0,0,0,0.15);
z-index: 99998;
overflow: hidden;
animation: userCardIn 0.22s cubic-bezier(.34,1.56,.64,1);
box-sizing: border-box;
}
.user-card.hidden { display: none; }
@keyframes userCardIn {
from { opacity: 0; transform: translateY(10px) scale(0.95); }
to { opacity: 1; transform: translateY(0) scale(1); }
}
/* 顶部蓝色渐变区 */
.user-card-bg {
height: 68px;
background: linear-gradient(135deg, #1677ff 0%, #0bc4e3 100%);
}
/* 头像悬浮区 */
.user-card-avatar-wrap {
position: relative;
display: flex;
justify-content: center;
margin-top: -38px;
margin-bottom: 4px;
}
.user-card-avatar {
width: 76px; height: 76px;
border-radius: 50%;
object-fit: cover;
border: 3px solid #fff;
box-shadow: 0 4px 16px rgba(22,119,255,0.4);
background: #e8eaed;
display: block;
}
.user-card-level {
position: absolute;
bottom: -6px;
left: 50%;
transform: translateX(-50%);
font-size: 11px; font-weight: 700;
color: #fff;
background: linear-gradient(90deg, #1677ff, #0bc4e3);
border-radius: 10px;
padding: 2px 10px;
border: 2px solid #fff;
white-space: nowrap;
box-shadow: 0 2px 8px rgba(22,119,255,0.5);
z-index: 1;
}
/* 昵称居中 */
.user-card-name {
text-align: center;
font-size: 15px; font-weight: 700;
color: var(--text);
padding: 0 16px;
margin: 14px 0 12px;
white-space: nowrap; overflow: hidden; text-overflow: ellipsis;
}
/* 信息行 */
.user-card-rows {
border-top: 1px solid var(--border);
padding: 8px 16px 14px;
}
.user-card-row {
display: flex;
justify-content: space-between;
align-items: center;
padding: 7px 0;
font-size: 13px;
border-bottom: 1px solid #f0f0f0;
}
.user-card-row:last-child { border-bottom: none; }
.user-card-label { color: var(--text-muted); }
.user-card-value { font-weight: 600; color: var(--text); }
.user-card-expire { color: #ff4d4f; }
/* =============================================
暗色主题
============================================= */
[data-theme="dark"] {
--bg: #0f1117;
--sidebar-bg: #1a1d27;
--card-bg: #1e2130;
--border: #2e3347;
--text: #e8eaf0;
--text-sub: #8b92a8;
--text-muted: #565e7a;
--accent: #0bc4e3;
--accent-2: #4d8fff;
--shadow: 0 2px 12px rgba(0,0,0,.35);
}
[data-theme="dark"] body {
background: var(--bg);
color: var(--text);
}
[data-theme="dark"] .titlebar {
background: #1a1d27;
border-bottom-color: var(--border);
}
[data-theme="dark"] .sidebar {
background: var(--sidebar-bg);
border-right-color: var(--border);
}
[data-theme="dark"] .nav-item:hover {
background: #252840;
}
[data-theme="dark"] .nav-item.active {
background: #252840;
color: var(--accent-2);
}
[data-theme="dark"] .card,
[data-theme="dark"] .tools-card,
[data-theme="dark"] .tools-rank-card,
[data-theme="dark"] .settings-section,
[data-theme="dark"] .beauty-tabs,
[data-theme="dark"] .skins-toolbar {
background: var(--card-bg);
border-color: var(--border);
}
[data-theme="dark"] .sp-skin-grid-wrap,
[data-theme="dark"] .beauty-footer {
background: var(--card-bg);
border-color: var(--border);
}
[data-theme="dark"] .champ-card {
background: #252840;
border-color: #2e3347;
}
[data-theme="dark"] .champ-card:hover {
border-color: rgba(77,143,255,0.5);
box-shadow: 0 10px 28px rgba(0,0,0,.45);
}
[data-theme="dark"] .champ-grid-card {
background: #1a1d27;
border-color: var(--border);
}
[data-theme="dark"] .champ-card .champ-name {
background: #252840;
color: var(--text);
}
[data-theme="dark"] .sp-thumb,
[data-theme="dark"] .beauty-card {
background: #252840;
}
[data-theme="dark"] .sp-thumb-name,
[data-theme="dark"] .beauty-card-name {
background: #252840;
color: var(--text-sub);
}
[data-theme="dark"] .search-input,
[data-theme="dark"] .tools-select {
background: #252840;
border-color: var(--border);
color: var(--text);
}
[data-theme="dark"] .sidebar-user {
background: #252840;
border-color: var(--border);
}
[data-theme="dark"] .user-card {
background: #1e2130;
border-color: var(--border);
}
[data-theme="dark"] .settings-section-title,
[data-theme="dark"] .tools-rank-title {
background: #252840;
}
[data-theme="dark"] .tb-btn:hover {
background: #2e3347;
}
[data-theme="dark"] .welcome-banner {
background: linear-gradient(135deg, #1a3a6e 0%, #0f2a52 100%);
}
[data-theme="dark"] .role-tab {
background: var(--card-bg);
border-color: var(--border);
color: var(--text-sub);
}
[data-theme="dark"] .logo {
border-bottom-color: var(--border);
}
/* ── 暗色主题补充 ── */
/* 美化库 tab */
[data-theme="dark"] .beauty-tab {
background: #1e2130;
border-color: #2e3347;
color: #8b92a8;
}
[data-theme="dark"] .beauty-tab:hover {
background: #252840;
border-color: #4d8fff;
color: #e8eaf0;
}
[data-theme="dark"] .beauty-tabs {
background: #1a1d27;
border-color: #2e3347;
}
[data-theme="dark"] .beauty-total { color: #8b92a8; }
[data-theme="dark"] .beauty-grid-wrap { background: transparent; }
/* 美化卡片名字 */
[data-theme="dark"] .beauty-card-name {
background: #252840;
color: #8b92a8;
border-top-color: #2e3347;
}
[data-theme="dark"] .beauty-card {
background: #252840;
border-color: #2e3347;
}
/* 工具箱底部提示 */
[data-theme="dark"] .tools-footer-tip {
background: #2a1a1f;
border-color: #4a2530;
color: #ff7875;
}
/* 工具箱 toggle 背景 */
[data-theme="dark"] .tools-toggle { background: #2e3347; }
[data-theme="dark"] .tools-toggle.on { background: #4d8fff; }
/* 段位下拉 */
[data-theme="dark"] .tools-select {
background: #252840;
border-color: #2e3347;
color: #e8eaf0;
}
[data-theme="dark"] .tools-select-arrow { color: #565e7a; }
[data-theme="dark"] .tools-rank-label { color: #8b92a8; }
/* 设置页标题卡 */
[data-theme="dark"] .settings-header {
background: #1e2130;
border-color: #2e3347;
}
[data-theme="dark"] .settings-header-title { color: #e8eaf0; }
[data-theme="dark"] .settings-header-sub { color: #8b92a8; }
[data-theme="dark"] .settings-header-icon { background: #252840; }
/* 设置页分区块 */
[data-theme="dark"] .settings-section-title {
background: #252840;
border-bottom-color: #2e3347;
color: #e8eaf0;
}
[data-theme="dark"] .settings-clean-title { color: #e8eaf0; }
[data-theme="dark"] .settings-clean-desc { color: #8b92a8; }
/* tag标签 */
[data-theme="dark"] .tag-warn {
background: #2a2210;
border-color: #5a4500;
color: #ffc53d;
}
[data-theme="dark"] .tag-safe {
background: #0f2a1a;
border-color: #1a5c30;
color: #73d13d;
}
/* 复选框文字 */
[data-theme="dark"] .settings-check-text { color: #e8eaf0; }
[data-theme="dark"] .settings-check-box {
border-color: #4d8fff;
background: #1e2130;
}
[data-theme="dark"] .settings-check-tip {
background: #2a1a1f;
border-color: #4a2530;
color: #ff7875;
}
/* 设置页分隔线 */
[data-theme="dark"] .settings-divider { background: #2e3347; }
[data-theme="dark"] .settings-clean-card { background: #1e2130; }
/* 工具箱 rank 卡片标题 */
[data-theme="dark"] .tools-rank-title {
background: #252840;
color: #e8eaf0;
border-bottom-color: #2e3347;
}
[data-theme="dark"] .tools-rank-body { background: #1e2130; }
[data-theme="dark"] .tools-rank-card { background: #1e2130; border-color: #2e3347; }
/* page背景 */
[data-theme="dark"] .page { background: #0f1117; }
[data-theme="dark"] .main { background: #0f1117; }
/* 滚动条 */
[data-theme="dark"] ::-webkit-scrollbar-thumb { background: #4a5068; }
[data-theme="dark"] ::-webkit-scrollbar-thumb:hover { background: #5e6480; }
[data-theme="dark"] ::-webkit-scrollbar-track { background: rgba(255,255,255,0.03); }
/* 皮肤库搜索框 */
[data-theme="dark"] .search-input {
background: #252840;
border-color: #2e3347;
color: #e8eaf0;
}
[data-theme="dark"] .search-input::placeholder { color: #565e7a; }
/* role tab */
[data-theme="dark"] .role-tab {
background: #1e2130;
border-color: #2e3347;
color: #8b92a8;
}
[data-theme="dark"] .role-tab.active {
background: #1e2130;
border-color: #4d8fff;
color: #4d8fff;
}
/* skins toolbar */
[data-theme="dark"] .skins-toolbar {
background: #1a1d27;
border-color: #2e3347;
}
[data-theme="dark"] .champ-count { color: #8b92a8; border-left-color: #2e3347; }
/* 用户信息弹出卡片暗色 */
[data-theme="dark"] .user-card {
background: #1e2130;
border-color: #2e3347;
box-shadow: 0 8px 32px rgba(0,0,0,0.45);
}
[data-theme="dark"] .user-card-bg {
background: linear-gradient(135deg, #0a3a7a 0%, #0a5a8a 100%);
}
[data-theme="dark"] .user-card-avatar {
border-color: #1e2130;
}
[data-theme="dark"] .user-card-level { border-color: #1e2130; }
[data-theme="dark"] .user-card-name { color: #e8eaf0; }
[data-theme="dark"] .user-card-rows { border-top-color: #2e3347; }
[data-theme="dark"] .user-card-row { border-bottom-color: #2e3347; }
[data-theme="dark"] .user-card-label { color: #8b92a8; }
[data-theme="dark"] .user-card-value:not(.user-card-expire) { color: #e8eaf0; }
[data-theme="dark"] .user-card-level { background: linear-gradient(90deg, #1677ff, #0bc4e3); }
/* 侧边栏底部用户区 */
[data-theme="dark"] .sidebar-user {
background: #252840;
border-color: #2e3347;
}
[data-theme="dark"] .sidebar-user:hover {
background: #2e3347;
}
[data-theme="dark"] .sidebar-user-name { color: #e8eaf0; }
[data-theme="dark"] .sidebar-user-sub { color: #565e7a; }
/* 美化库图片容器暗色背景修复 */
[data-theme="dark"] .beauty-card-img-wrap {
background: #252840;
}
[data-theme="dark"] .beauty-card:hover {
border-color: #4d8fff;
box-shadow: 0 0 0 1px rgba(77,143,255,0.2);
}
[data-theme="dark"] .beauty-card:hover .beauty-card-name { color: #4d8fff; }
[data-theme="dark"] .beauty-card.active .beauty-card-name { color: #4d8fff; }
/* 修复暗色主题美化库hover白色框 */
[data-theme="dark"] .beauty-card {
background: #252840;
border-color: #2e3347;
}
[data-theme="dark"] .beauty-card .beauty-card-img-wrap {
background: #252840;
}
/* 美化资源下载按钮 */
.beauty-download-btn {
height: 46px; padding: 0 32px;
background: linear-gradient(135deg, #1677ff, #0bc4e3);
color: #fff; border: none; border-radius: 12px;
font-size: 15px; font-weight: 700; cursor: pointer;
box-shadow: 0 4px 16px rgba(22,119,255,0.4);
transition: transform 0.25s cubic-bezier(.34,1.56,.64,1), box-shadow 0.25s;
}
.beauty-download-btn:hover {
transform: translateY(-3px);
box-shadow: 0 8px 24px rgba(22,119,255,0.5);
}
/* =============================================
CEF 窗口自适应 — 统一响应式规则
============================================= */
/* 确保 html/body 撑满窗口 */
html, body { width: 100%; height: 100%; overflow: hidden; }
.app-shell, .app-body, .main { width: 100%; min-width: 0; }
/* 大窗口 ≥ 1200px */
@media (min-width: 1200px) {
:root { --sidebar-w: 180px; }
.champ-grid { grid-template-columns: repeat(7, 1fr); }
}
/* 标准窗口 900-1199px */
@media (min-width: 900px) and (max-width: 1199px) {
:root { --sidebar-w: 160px; }
.champ-grid { grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); }
.role-tab { width: 80px; font-size: 13px; }
}
/* 小窗口 700-899px */
@media (min-width: 700px) and (max-width: 899px) {
:root { --sidebar-w: 140px; }
.champ-grid { grid-template-columns: repeat(auto-fill, minmax(95px, 1fr)); gap: 10px; }
.nav-item { font-size: 13px; height: 46px; min-height: 46px; }
.role-tab { width: 70px; height: 36px; font-size: 12px; }
.search-input { width: 160px; }
.skins-toolbar { flex-wrap: wrap; padding: 8px 12px; }
.beauty-tabs { margin: 8px 10px 6px; padding: 8px 10px; }
.beauty-tab { width: 82px; height: 34px; font-size: 12px; }
.tools-main-grid { grid-template-columns: 1fr; }
.tools-rank-card { height: auto; }
}
/* 超小窗口 < 700px */
@media (max-width: 699px) {
:root { --sidebar-w: 52px; }
.nav-item span:not(.nav-icon) { display: none; }
.nav-item { padding: 0; justify-content: center; gap: 0; }
.logo-em { font-size: 14px; }
.sidebar-user-info { display: none; }
.sidebar-user-avatar { width: 30px; height: 30px; }
.champ-grid { grid-template-columns: repeat(auto-fill, minmax(80px, 1fr)); gap: 8px; }
.skins-toolbar { flex-wrap: wrap; gap: 6px; }
.role-tabs { gap: 4px; }
.role-tab { width: 60px; height: 32px; font-size: 11px; }
.search-input { width: 120px; }
.beauty-tabs { margin: 8px 10px 6px; padding: 8px 10px; }
.beauty-tab { width: 70px; height: 32px; font-size: 11px; }
.tools-main-grid { grid-template-columns: 1fr; }
.tools-card { padding: 16px; }
.tools-rank-card { height: auto; }
.settings-wrap { padding: 10px 10px 20px; }
}
/* 高度较小的窗口 */
@media (max-height: 500px) {
.nav-item { height: 40px; min-height: 40px; }
.logo { padding: 12px 10px; }
.champ-card .champ-name { font-size: 11px; }
}
/* =============================================
皮肤详情页自适应
============================================= */
.sp-canvas {
height: clamp(360px, 52vh, 660px);
}
.sp-skin-name {
font-size: clamp(18px, 2.2vw, 30px);
}
.sp-btn-apply, .sp-btn-career {
height: clamp(34px, 4.5vh, 46px);
padding: 0 clamp(14px, 1.8vw, 26px);
font-size: clamp(12px, 1.1vw, 15px);
}
.sp-info-bar {
height: clamp(46px, 6vh, 62px);
padding: 0 clamp(12px, 1.5vw, 22px);
}
.sp-info-name {
font-size: clamp(14px, 1.4vw, 20px);
}
/* 美化库tab自适应 */
.beauty-tab {
width: clamp(70px, 8vw, 120px);
height: clamp(32px, 4.5vh, 46px);
font-size: clamp(11px, 1vw, 14px);
}
/* 工具箱卡片自适应 */
.tools-card {
padding: clamp(14px, 2vh, 28px) clamp(14px, 1.8vw, 26px);
min-height: clamp(100px, 14vh, 180px);
}
.tools-card-title {
font-size: clamp(13px, 1.3vw, 19px);
}
.tools-card-desc {
font-size: clamp(11px, 0.9vw, 14px);
}
.tools-card-icon {
width: clamp(42px, 5vw, 68px);
height: clamp(42px, 5vw, 68px);
font-size: clamp(22px, 3vw, 40px);
}
/* 设置页自适应 */
.settings-clean-title {
font-size: clamp(13px, 1.2vw, 16px);
}
.settings-clean-desc {
font-size: clamp(11px, 0.9vw, 13px);
}
.settings-clean-btn {
height: clamp(36px, 5vh, 48px);
padding: 0 clamp(14px, 1.8vw, 24px);
font-size: clamp(12px, 1vw, 15px);
}
.settings-check-text {
font-size: clamp(13px, 1.2vw, 17px);
}
.settings-check-box {
width: clamp(22px, 2.5vw, 32px);
height: clamp(22px, 2.5vw, 32px);
}
/* =============================================
皮肤库 & 皮肤详情 高端化升级
============================================= */
/* toolbar 加 margin,和美化库tabs一致 */
.skins-toolbar {
margin: 14px 16px 10px;
flex-shrink: 0;
}
/* 英雄卡片升级(补充属性,不重写基础定义)*/
/* 基础定义已在上方 .champ-card 中,这里只补充升级属性 */
.champ-card .champ-name {
font-size: clamp(11px, 0.85vw, 13px);
padding: 7px 4px 10px; /* 保持底部留白 */
font-weight: 500;
letter-spacing: 0.2px;
}
/* 皮肤详情 - 信息栏升级(#page-skins 已有 padding:0 16px,不需要左右margin) */
.sp-info-bar {
background: var(--card-bg);
border-radius: 14px;
box-shadow: var(--shadow);
margin: 14px 16px 10px;
width: auto;
flex-shrink: 0;
box-sizing: border-box;
}
/* 皮肤详情 - 大图区域升级 */
.sp-canvas {
margin: 0 16px 10px;
border-radius: 16px;
box-shadow: 0 4px 20px rgba(0,0,0,.2);
flex-shrink: 0;
width: auto;
}
/* 皮肤详情 - 皮肤网格升级 */
.sp-skin-grid-wrap {
margin: 0 16px 16px;
border-radius: 14px;
box-shadow: var(--shadow);
width: auto;
}
/* 皮肤缩略图升级 */
.sp-thumb {
border-radius: 12px;
transition: border-color 0.2s, box-shadow 0.2s, transform 0.2s cubic-bezier(.25,.46,.45,.94);
}
.sp-thumb:hover {
transform: translateY(-2px);
box-shadow: 0 4px 14px rgba(0,0,0,.14);
}
.sp-thumb.active {
border-color: #1677ff;
box-shadow: 0 0 0 2px rgba(22,119,255,0.25);
}
/* 应用皮肤按钮升级 */
.sp-btn-apply {
background: linear-gradient(135deg, #1677ff, #0bc4e3);
box-shadow: 0 4px 14px rgba(22,119,255,0.4);
border-radius: 10px;
transition: transform 0.25s cubic-bezier(.34,1.56,.64,1), box-shadow 0.25s;
}
.sp-btn-apply:hover {
background: linear-gradient(135deg, #0958d9, #1677ff);
transform: translateY(-3px);
box-shadow: 0 8px 20px rgba(22,119,255,0.5);
}
.sp-btn-career {
border-radius: 10px;
backdrop-filter: blur(8px);
transition: transform 0.25s cubic-bezier(.34,1.56,.64,1), background 0.2s;
}
.sp-btn-career:hover {
background: rgba(255,255,255,0.28);
transform: translateY(-3px);
}
/* 皮肤名称升级 */
#spSkinName {
font-size: clamp(18px, 2.2vw, 28px) !important;
font-weight: 800 !important;
letter-spacing: 0.5px;
text-shadow: 0 2px 12px rgba(0,0,0,0.8) !important;
}
/* 返回按钮升级 */
.sp-back-btn {
border-radius: 10px;
font-weight: 600;
transition: background 0.15s, color 0.15s, transform 0.2s;
}
.sp-back-btn:hover {
background: var(--accent-2);
color: #fff;
border-color: var(--accent-2);
transform: translateX(-2px);
}
/* =============================================
英雄选择自动跟踪按钮
============================================= */
.csw-toggle-btn {
display: inline-flex;
align-items: center;
gap: 5px;
height: 34px;
padding: 0 13px;
border-radius: 20px;
border: 1.5px solid #d1d5db;
background: #f5f6f8;
color: #9ca3af;
font-size: 13px;
font-family: inherit;
font-weight: 500;
cursor: pointer;
white-space: nowrap;
flex-shrink: 0;
transition: all 0.2s;
user-select: none;
}
.csw-toggle-btn:hover {
border-color: #52c41a;
color: #52c41a;
background: #f6ffed;
}
/* 开启状态 */
.csw-toggle-btn.on {
border-color: #52c41a;
background: #f6ffed;
color: #389e0d;
}
.csw-toggle-btn.on::before {
content: '';
display: inline-block;
width: 7px;
height: 7px;
border-radius: 50%;
background: #52c41a;
flex-shrink: 0;
animation: csw-btn-pulse 1.6s ease-in-out infinite;
}
@keyframes csw-btn-pulse {
0%,100% { box-shadow: 0 0 0 0 rgba(82,196,26,.5); }
50% { box-shadow: 0 0 0 4px rgba(82,196,26,.0); }
}
/* 暗色主题适配 */
[data-theme="dark"] .csw-toggle-btn {
background: #1e2130;
border-color: #2e3347;
color: #6b7280;
}
[data-theme="dark"] .csw-toggle-btn:hover,
[data-theme="dark"] .csw-toggle-btn.on {
background: #162312;
border-color: #52c41a;
color: #52c41a;
}