Files
wordpress-theme-aksrt/assets/css/routes/user-center/shell.css
T

592 lines
16 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.
/**
* User Center — shell / sidebar / content base / drawer
*/
/**
* AKSRT User Center — 本人中心专属样式
*
* 原主题风格两栏布局:左侧边栏 + 右侧内容区
* 仅在本人中心页面加载(body.aksrt-user-center)
*/
/* ==================== 用户中心容器 ==================== */
/* 主内容宽度由 frontend/layout.css 的 profile shell 合同统一管理。 */
.aksrt-profile.content-shell {
display: block;
width: 100%;
max-width: none;
padding: 0 0 40px;
box-sizing: border-box;
}
/* main 仍带 legacy .user-center 类;旧规则会把整页误设为 flex,并以
* gap:20px 挤窄第一个 flex 子项(顶部资料卡所在的 content-wrap)。 */
.aksrt-profile.user-center {
display: block;
gap: 0;
}
/* 顶部资料卡位于双栏布局之前,必须与用户中心外壳同宽,不能继续继承
* legacy .content-wrap / .container 的收窄规则。 */
.aksrt-profile.content-shell > .content-wrap,
.aksrt-profile.content-shell > .content-wrap > .uc-header,
.aksrt-profile.content-shell .uc-header {
width: 100%;
max-width: none;
box-sizing: border-box;
}
/* VIP, level and worn-medal marks share the global identity baseline. */
.uc-header__name > .img-icon,
h1.uc-header__name > .img-icon,
.uc-header__name .medal-icon.img-icon,
.uc-header__name .aksrt-identity-medal,
h1.uc-header__name .medal-icon.img-icon,
h1.uc-header__name .aksrt-identity-medal {
width: auto;
height: 1.1em;
max-width: 6em;
object-fit: contain;
vertical-align: -.15em;
margin-left: 4px;
display: inline-block;
border: none;
outline: none;
box-shadow: none;
background: transparent;
}
/* ==================== 页面自有双栏(对齐 legacy .user-center flex,不走全站 float 壳) ==================== */
/* DOM: sidebar first + content second(与 legacy user-center-sidebar / user-center-content 一致)。
* 选择器同时覆盖 body.aksrt-user-center 与 main.user-center / .aksrt-profile,避免 body class 漏打时失效。 */
body.aksrt-user-center .content-wrap,
.aksrt-profile .content-wrap,
.user-center .content-wrap {
float: none;
width: 100%;
min-width: 0;
}
/* 对齐 legacy: .user-center { display:flex; gap:20px; } */
body.aksrt-user-center .user-center-body,
body.aksrt-user-center .aksrt-profile__layout,
.aksrt-profile .user-center-body,
.aksrt-profile .aksrt-profile__layout,
.user-center .user-center-body {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
align-items: flex-start;
gap: 20px;
width: 100%;
margin-left: 0;
margin-right: 0;
min-width: 0;
box-sizing: border-box;
}
/* 中和 site-layout-2/3 对 content-layout 的 margin 挖空(兼容旧 class) */
body.aksrt-user-center.site-layout-1 .aksrt-profile__layout,
body.aksrt-user-center.site-layout-2 .aksrt-profile__layout,
body.aksrt-user-center.site-layout-3 .aksrt-profile__layout,
body.aksrt-user-center.site-layout-1 .user-center-body,
body.aksrt-user-center.site-layout-2 .user-center-body,
body.aksrt-user-center.site-layout-3 .user-center-body {
margin-left: 0;
margin-right: 0;
}
/* 对齐 legacy: .user-center .user-center-sidebar { width:320px; flex-shrink:0; } */
body.aksrt-user-center .user-center-sidebar,
body.aksrt-user-center .uc-sidebar,
body.aksrt-user-center .aksrt-profile__aside,
.aksrt-profile .user-center-sidebar,
.aksrt-profile .uc-sidebar,
.aksrt-profile .aksrt-profile__aside,
.user-center .user-center-sidebar {
float: none;
display: flex;
flex-direction: column;
gap: 0;
flex: 0 0 320px;
width: 320px;
max-width: 320px;
margin-left: 0;
margin-right: 0;
box-sizing: border-box;
min-width: 0;
position: sticky;
top: calc(var(--nav-height, 60px) + 20px);
align-self: flex-start;
}
/* 对齐 legacy: .user-center .user-center-content { width: calc(100% - 320px); } */
body.aksrt-user-center .user-center-content,
body.aksrt-user-center .uc-content,
.aksrt-profile .user-center-content,
.aksrt-profile .uc-content,
.user-center .user-center-content {
flex: 1 1 auto;
width: calc(100% - 340px);
min-width: 0;
max-width: none;
box-sizing: border-box;
}
.uc-header__actions {
position: relative;
display: flex;
align-items: center;
gap: 6px;
}
.uc-header__signin-btn.is-done {
color: var(--color-success, #10b981);
}
.uc-header__message-btn {
position: relative;
}
.uc-header__action-badge {
position: absolute;
top: -5px;
right: -5px;
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 16px;
height: 16px;
margin: 0;
padding: 0 4px;
border-radius: 999px;
background: var(--color-error, #ef4444);
color: #fff;
font-size: 11px;
font-weight: 700;
line-height: 1;
}
/* ==================== 左侧边栏 chrome ==================== */
/* sticky / 宽度由 .user-center-sidebar 负责;此处只定 section/btn 视觉 */
.uc-sidebar {
display: flex;
flex-direction: column;
gap: 0;
}
/* 侧栏卡片间距:1:1 参考主题。参考侧栏是普通块流,每张卡片自带 mb20
(zib-widget 默认也是 20px),≤640px 由 mb10-sm 收到 10px。
本站侧栏不用 gap,间距全部由卡片自己的 margin-bottom 承担。 */
.uc-sidebar > .uc-sidebar-statistics,
.uc-sidebar > .uc-sidebar-vip,
.uc-sidebar > .uc-sidebar__pair,
.uc-sidebar-centers > .zib-widget,
.uc-sidebar > .uc-sidebar-iconbox {
margin-bottom: 20px;
}
@media (max-width: 640px) {
.uc-sidebar > .uc-sidebar-statistics,
.uc-sidebar > .uc-sidebar-vip,
.uc-sidebar > .uc-sidebar__pair,
.uc-sidebar-centers > .zib-widget,
.uc-sidebar > .uc-sidebar-iconbox {
margin-bottom: 10px;
}
}
.uc-sidebar__section {
background: var(--surface-1);
border-radius: var(--main-radius, var(--radius, 8px));
padding: 16px;
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04);
border: 1px solid var(--color-line-soft, transparent);
}
.uc-sidebar__title {
font-size: 12px;
font-weight: 600;
color: var(--color-ink-4);
margin-bottom: 12px;
text-transform: uppercase;
letter-spacing: 0.05em;
padding-bottom: 8px;
border-bottom: 1px solid var(--color-line-soft, rgba(0,0,0,0.06));
}
/* 侧栏按钮组 */
.uc-sidebar__buttons {
display: flex;
flex-direction: column;
gap: 2px;
}
.uc-sidebar__btn {
display: flex;
align-items: center;
gap: 10px;
width: 100%;
padding: 10px 12px;
border: none;
border-radius: 8px;
background: transparent;
color: var(--color-ink-2);
text-decoration: none;
font-size: 14px;
font-weight: 500;
cursor: pointer;
transition: background-color 0.15s, color 0.15s, box-shadow 0.15s;
text-align: left;
position: relative;
}
.uc-sidebar__btn::before {
content: '';
position: absolute;
left: 0;
top: 50%;
transform: translateY(-50%);
width: 3px;
height: 0;
background: var(--color-primary);
border-radius: 0 3px 3px 0;
transition: height 0.2s ease;
}
.uc-sidebar__btn:hover {
background: var(--surface-2);
color: var(--color-ink);
}
.uc-sidebar__btn.is-active {
background: var(--color-primary-soft);
color: var(--color-primary);
font-weight: 600;
}
.uc-sidebar__btn.is-active::before {
height: 20px;
}
.uc-sidebar__btn i {
width: 18px;
text-align: center;
font-size: 14px;
flex-shrink: 0;
opacity: 0.8;
}
.uc-sidebar__btn.is-active i {
opacity: 1;
}
.uc-sidebar__badge {
margin-left: auto;
display: inline-flex;
align-items: center;
justify-content: center;
min-width: 18px;
height: 18px;
padding: 0 5px;
border-radius: 100px;
background: var(--color-error);
color: #fff;
font-size: 11px;
font-weight: 600;
line-height: 1;
animation: badge-pulse 2s ease-in-out infinite;
}
@keyframes badge-pulse {
0%, 100% { transform: scale(1); }
50% { transform: scale(1.1); }
}
/* 移动端抽屉触发器 */
.uc-sidebar__drawer-trigger {
display: none;
position: fixed;
bottom: calc(80px + env(safe-area-inset-bottom, 0px));
right: calc(20px + env(safe-area-inset-right, 0px));
width: 50px;
height: 50px;
border-radius: 50%;
border: none;
background: var(--color-primary);
color: #fff;
font-size: 20px;
cursor: pointer;
box-shadow: 0 4px 16px rgba(0,0,0,0.25);
z-index: 100;
align-items: center;
justify-content: center;
transition: transform 0.2s, box-shadow 0.2s;
}
.uc-sidebar__drawer-trigger:hover {
transform: scale(1.02);
box-shadow: 0 6px 20px rgba(0,0,0,0.3);
}
.uc-sidebar__drawer-trigger:active {
transform: scale(0.92);
}
/* 抽屉遮罩 */
.uc-drawer-overlay {
display: none;
position: fixed;
inset: 0;
background: rgba(0,0,0,0.45);
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
z-index: 200;
opacity: 0;
transition: opacity 0.3s;
}
.uc-drawer-overlay.is-visible {
display: block;
opacity: 1;
}
/* ==================== 右侧内容区 ==================== */
/* 宽度由 .user-center-content / flex 行负责;此处只定内容区 min-width */
.uc-content {
min-width: 0;
}
.uc-content .dashboard-panel {
background: var(--surface-1);
border-radius: var(--main-radius, var(--radius, 8px));
padding: 24px;
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04);
border: 1px solid var(--color-line-soft, transparent);
animation: panel-fade-in 0.25s ease;
}
@keyframes panel-fade-in {
from { opacity: 0; transform: translateY(6px); }
to { opacity: 1; transform: translateY(0); }
}
.uc-content .dashboard-panel.is-active {
display: block;
}
/* 面板内 widget-card 增强 */
.uc-content .widget-card {
border: 1px solid var(--color-line-soft, rgba(0,0,0,0.06));
border-radius: 10px;
padding: 20px;
margin-bottom: 16px;
background: var(--surface-1);
transition: box-shadow 0.2s;
}
.uc-content .widget-card:hover {
box-shadow: 0 2px 8px rgba(15, 23, 42, 0.06);
}
.uc-content .dashboard-panel:not(#panel-settings) > .widget-card,
.uc-content #panel-profile .profile-form > .widget-card {
background: transparent;
border: 0;
border-radius: 0;
box-shadow: none;
margin-bottom: 0;
padding: 0;
}
.uc-content .dashboard-panel:not(#panel-settings) > .widget-card:hover,
.uc-content #panel-profile .profile-form > .widget-card:hover {
box-shadow: none;
}
.uc-content #panel-profile .profile-form > .widget-card + .widget-card {
margin-top: 18px;
padding-top: 18px;
border-top: 1px solid var(--color-line-soft, rgba(0,0,0,0.06));
}
/* 文章 / 评论 / 收藏 / 粉丝:1:1 参考主题 zib_user_center_page_sidebar_statistics()。
参考主题没有给 .user-statistics-item 写专门样式,外观全部来自 zib-widget padding-10
与 em14 / em09 opacity5 mt6;链接交互来自全局 a / a:hover 与 a[href] 过渡:
常态正文色,悬停/聚焦切到 --focus-color,color 0.2s 过渡,无下划线、无 outline。 */
.uc-sidebar-statistics.zib-widget {
clear: both;
line-height: 1.42857143;
background-color: var(--main-bg-color);
box-shadow: 0 0 10px var(--main-shadow);
border-radius: var(--main-radius);
color: var(--main-color);
}
.uc-sidebar-statistics > .user-statistics-item {
color: var(--main-color);
text-decoration: none;
transition: color 0.2s, background 0.3s, opacity 0.3s, box-shadow 0.3s, transform 0.3s;
}
.uc-sidebar-statistics > .user-statistics-item:hover,
.uc-sidebar-statistics > .user-statistics-item:focus {
color: var(--focus-color, #f04494);
outline: 0;
text-decoration: none;
}
@media (max-width: 991.98px) {
.uc-sidebar > .uc-sidebar-statistics {
margin-right: 12px;
margin-left: 12px;
}
}
/* VIP 入口:1:1 参考主题 zib_user_center_page_sidebar_vip(),外观全部来自
payvip-icon / badg / btn-block / abs-right。这里只补 <a> 与侧栏 gap 带来的差异。 */
.uc-sidebar .uc-sidebar-vip,
.uc-sidebar .uc-sidebar-vip:hover,
.uc-sidebar .uc-sidebar-vip:focus {
color: #ece0e0;
text-decoration: none;
}
/* legacy-utilities 把 .abs-right 改成 top:0/right:0,恢复参考主题的垂直居中几何。 */
.uc-sidebar-vip > .abs-right {
top: 50%;
right: 0.7em;
transform: translateY(-50%);
}
.uc-sidebar-vip .img-icon {
height: 1em;
width: auto;
vertical-align: -0.1em;
}
/* 创作中心 / 推广中心:1:1 参考主题 zib_user_center_page_sidebar_income_rebate()。
.zib-widget 在本站不是全局类,在侧栏内按参考原值落地。 */
.uc-sidebar-centers > .zib-widget {
clear: both;
background-color: var(--main-bg-color);
padding: 10px;
box-shadow: 0 0 10px var(--main-shadow);
border-radius: var(--main-radius);
color: var(--main-color);
text-decoration: none;
}
.uc-sidebar-centers > .zib-widget:hover,
.uc-sidebar-centers > .zib-widget:focus {
color: var(--main-color);
}
@media (max-width: 991.98px) {
.uc-sidebar > .uc-sidebar-vip,
.uc-sidebar > .uc-sidebar__pair,
.uc-sidebar > .uc-sidebar-centers {
margin-right: 12px;
margin-left: 12px;
}
}
.uc-sidebar__pair {
display: grid;
grid-template-columns: repeat(2, minmax(0, 1fr));
/* 参考主题余额 / 积分并排用 col-ml6,横向间距 6px。 */
gap: 6px;
}
.uc-summary-card {
min-width: 0;
border: 1px solid var(--color-line-soft, rgba(15, 23, 42, 0.06));
border-radius: var(--main-radius, var(--radius, 8px));
background: var(--surface-1);
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.04);
color: var(--color-ink-2);
text-decoration: none;
}
.uc-summary-card {
padding: 14px;
}
.uc-summary-card__head,
.uc-summary-card__body {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
}
.uc-summary-card__head {
margin-bottom: 10px;
color: var(--color-ink-4);
font-size: 12px;
}
.uc-summary-card__body strong {
overflow: hidden;
font-size: 18px;
font-variant-numeric: tabular-nums;
letter-spacing: -0.02em;
text-overflow: ellipsis;
}
.uc-summary-card__body > i,
.uc-summary-card__body > svg {
font-size: 18px;
}
.uc-summary-card--wallet .uc-summary-card__body { color: #3978d6; }
.uc-summary-card--points .uc-summary-card__body { color: #ba7a0a; }
/* 我的服务 / 功能设置:1:1 参考主题 zib_user_center_page_sidebar_button_1/2()。
外壳为 zib-widget padding-6,标题为普通字重的 padding-6 ml3;
网格项只继承正文色,参考主题没有 hover / 选中变色。
参考主题正文行高是 bootstrap 的 1.42857143,本站 body 为 1.6,
标题、图标、文字三行会各自被撑高,这里恢复参考行高。 */
/* widgets/frontend.css 在 main.min.css 之后加载,其 .zib-widget{padding:15px} 会盖掉 .padding-6,这里按参考值锁回 6px。 */
.uc-sidebar-iconbox.zib-widget {
clear: both;
padding: 6px;
line-height: 1.42857143;
background-color: var(--main-bg-color);
box-shadow: 0 0 10px var(--main-shadow);
border-radius: var(--main-radius);
color: var(--main-color);
}
.user-icon-but-box > a {
width: calc(25% - 10px);
margin: 5px;
min-width: 50px;
max-width: 100px;
cursor: pointer;
color: inherit;
text-decoration: none;
}
.user-icon-but-box > a:hover,
.user-icon-but-box > a:focus {
color: inherit;
}
@media (max-width: 991.98px) {
.uc-sidebar > .uc-sidebar-iconbox {
margin-right: 12px;
margin-left: 12px;
}
}
.uc-follow-management__list { display: grid; gap: 10px; margin-top: 16px; }
.uc-follow-management__item { display: flex; align-items: center; gap: 12px; padding: 12px; border: 1px solid var(--border-color, rgba(15, 23, 42, .08)); border-radius: 12px; }
.uc-follow-management__avatar img { display: block; width: 48px; height: 48px; border-radius: 50%; }
.uc-follow-management__identity { display: grid; gap: 4px; min-width: 0; }
.uc-follow-management__identity a { color: var(--color-ink-1); font-weight: 600; }
.uc-follow-management__identity span { color: var(--color-ink-4); font-size: 12px; }
.uc-follow-management__actions { display: flex; flex-wrap: wrap; gap: 8px; margin-left: auto; }
@media (max-width: 560px) { .uc-follow-management__item { align-items: flex-start; flex-wrap: wrap; } .uc-follow-management__actions { width: 100%; margin-left: 60px; } }