.page-profile-module { background: #f8f4ec; } .module-hero { position: relative; overflow: hidden; padding: 58px 0 42px; background: radial-gradient(circle at 76% 18%, rgba(196, 146, 69, .16), transparent 25%), linear-gradient(125deg, #fffaf0 0%, #f5eadb 52%, #eaf2ee 100%); } .module-hero:before { content: ""; position: absolute; inset: 0; background-image: linear-gradient(rgba(138, 50, 43, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(138, 50, 43, .05) 1px, transparent 1px); background-size: 64px 64px; mask-image: linear-gradient(90deg, transparent, #000 14%, #000 86%, transparent); } .module-hero .container { position: relative; z-index: 2; } .module-kicker { width: fit-content; margin-bottom: 18px; padding: 8px 14px; border-radius: 999px; color: var(--red); background: rgba(248, 229, 223, .92); font-weight: 900; } .module-title-row { display: flex; justify-content: space-between; gap: 22px; align-items: flex-end; } .module-title-row h1 { margin-bottom: 12px; font-size: 48px; } .module-title-row p { max-width: 780px; margin: 0; color: #636c65; font-size: 17px; line-height: 1.9; } .module-layout { display: grid; grid-template-columns: 280px minmax(0, 1fr); gap: 24px; align-items: start; } .module-nav, .module-panel, .module-card { border: 1px solid rgba(224, 211, 189, .86); border-radius: 18px; background: rgba(255,253,248,.88); box-shadow: 0 22px 58px rgba(57, 48, 36, .08); } .module-nav { position: sticky; top: 106px; display: grid; gap: 8px; padding: 16px; } .module-nav a { padding: 14px 16px; border-radius: 14px; color: #5e665f; font-weight: 900; transition: transform .22s ease, color .22s ease, background .22s ease; } .module-nav a:hover, .module-nav a.active { color: var(--red); background: #f8e5df; transform: translateX(4px); } .module-main { display: grid; gap: 20px; } .module-panel { padding: 28px; } .module-panel h2 { margin-bottom: 10px; font-family: "SimSun", "Songti SC", serif; font-size: 32px; } .module-panel > p { color: var(--muted); line-height: 1.85; } .module-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; } .module-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .module-card { position: relative; overflow: hidden; min-height: 170px; padding: 22px; transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease; } .module-action-card { /* 按钮型模块卡片用于消息中心操作,保留卡片视觉但去掉浏览器按钮默认样式 */ width: 100%; text-align: left; cursor: pointer; font: inherit; } .notification-row.is-unread { /* 未读消息用轻量背景强调,不新增内联样式 */ border-color: rgba(200, 59, 50, .28); background: #fff7f2; } .join-apply-row { /* 加入申请行复用 module-row,只补充审核业务的按钮对齐 */ align-items: center; } .join-apply-row .bottom-actions { justify-content: flex-end; } .generation-row { /* 字辈谱行复用 module-row,补充按钮型 pill 的对齐和点击反馈 */ align-items: center; } .generation-row .pill { border: 0; cursor: pointer; font: inherit; } .lineage-row { /* 世系人物行使用 button 承载点击详情,保留列表卡片视觉 */ width: 100%; text-align: left; cursor: pointer; font: inherit; } .lineage-row.is-selected { border-color: rgba(200, 59, 50, .38); background: #fff6f1; } .lineage-toolbar { /* 搜索栏只做世系图页面差异布局,不放到 JS 内联样式 */ display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 12px; margin-bottom: 16px; } .lineage-toolbar input { min-height: 46px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: #fffdf8; color: var(--ink); font: inherit; outline: none; } .lineage-tree-wrap { overflow-x: auto; padding: 18px; border: 1px solid var(--line); border-radius: 8px; background: #fffdf8; } .lineage-tree-wrap.is-compact { max-height: 420px; } .lineage-tree, .lineage-tree ul { /* 树结构只负责层级缩进,避免用 JS 计算位置 */ display: grid; gap: 12px; margin: 0; padding-left: 24px; list-style: none; } .lineage-tree { padding-left: 0; } .lineage-node { min-width: 168px; padding: 12px 14px; border: 1px solid rgba(224, 211, 189, .86); border-radius: 8px; background: #fff7f2; color: var(--ink); text-align: left; cursor: pointer; font: inherit; } .lineage-node strong, .lineage-node span { display: block; } .lineage-node span { margin-top: 4px; color: var(--muted); font-size: 13px; } .member-admin-row { /* 成员管理行保留列表结构,右侧放权限和移除操作 */ align-items: center; } .row-actions { display: flex; gap: 10px; flex-wrap: wrap; justify-content: flex-end; } .pill.is-danger { color: #8a322b; background: #fde8e2; } .article-row { /* 谱文列表行复用模块列表视觉,单独保留类名方便后续文章样式调整 */ align-items: center; } .feed-row { /* 家族圈动态行右侧承载点赞和评论按钮 */ align-items: center; } .feed-row small { display: block; margin-top: 6px; color: var(--muted); } .album-row, .album-photo-row { /* 相册和照片行使用独立类名,便于后续相册页单独调样式 */ align-items: center; } .album-photo-form { margin-top: 18px; } .upload-control { /* 公共上传按钮使用 label 触发文件选择,避免 JS 注入按钮样式 */ width: fit-content; min-height: 42px; display: inline-flex; align-items: center; justify-content: center; margin-top: 10px; padding: 10px 14px; border-radius: 8px; color: var(--red); background: #f8e5df; font-weight: 900; cursor: pointer; } .upload-input { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; } .upload-status { margin: 8px 0 0; color: var(--muted); font-size: 14px; } .ceremony-row, .ceremony-gift-row, .merit-row { /* 贺礼、献礼和功德记录行复用模块列表,仅补业务类名方便维护 */ align-items: center; } .ceremony-gift-form { margin-top: 18px; } .growth-row { /* 成长记录行复用模块列表,单独留类名方便后续调整 */ align-items: center; } .memo-row { /* 备忘录行复用模块列表,单独留类名方便后续调整 */ align-items: center; } .vip-package-list { /* 会员套餐列表用网格呈现,套餐卡片由接口数据渲染 */ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 16px; margin: 18px 0; } .vip-package-card { min-height: 188px; padding: 20px; border: 1px solid rgba(224, 211, 189, .86); border-radius: 8px; background: #fffdf8; color: var(--ink); text-align: left; cursor: pointer; font: inherit; transition: border-color .22s ease, box-shadow .22s ease, transform .22s ease; } .vip-package-card:hover, .vip-package-card.is-selected { border-color: rgba(200, 59, 50, .48); box-shadow: 0 18px 42px rgba(57, 48, 36, .1); transform: translateY(-2px); } .vip-package-name, .vip-package-card strong, .vip-package-card small { display: block; } .vip-package-name { margin-bottom: 12px; color: var(--red); font-weight: 900; } .vip-package-card strong { margin-bottom: 6px; font-size: 30px; } .vip-package-card small { color: var(--muted); } .vip-package-card p { margin: 14px 0 0; color: var(--muted); line-height: 1.7; } .vip-order-form { margin-top: 20px; } .vip-order-row { /* 会员订单行只补业务类名,方便和其他 module-row 分开维护 */ align-items: center; } .security-form { /* 安全设置表单复用编辑表单结构,只补模块间距 */ margin-top: 16px; } .security-danger { border-color: rgba(138, 50, 43, .28); background: #fff7f2; } .security-danger .editor-field input, .security-danger .editor-field textarea { background: #fffdf8; } .region-profile-form { /* 个人资料地区表单使用公共地区选择器,样式集中在 CSS */ margin-top: 16px; } .profile-region-picker { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; } .profile-region-picker select { min-height: 48px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: #fffdf8; color: var(--ink); font: inherit; outline: none; } .profile-create-family-form { /* 个人中心创建家谱页复用编辑表单,只保留页面级间距 */ margin-top: 16px; } .module-card:hover { border-color: rgba(196, 146, 69, .42); box-shadow: 0 24px 60px rgba(57, 48, 36, .11); } .module-card.is-selected { border-color: rgba(200, 59, 50, .5); background: #fff6f1; box-shadow: 0 24px 60px rgba(200, 59, 50, .12); } .module-card:after { content: ""; position: absolute; inset: 0 auto 0 -42%; width: 34%; background: linear-gradient(90deg, transparent, rgba(255,255,255,.52), transparent); transform: skewX(-18deg); transition: left .54s ease; } .module-card:hover:after { left: 112%; } .module-card .icon { width: 46px; height: 46px; margin-bottom: 18px; border-radius: 14px; display: grid; place-items: center; color: var(--red); background: #f8e5df; font-weight: 900; } .module-card h3 { margin-bottom: 8px; font-size: 23px; } .module-card p { color: var(--muted); line-height: 1.75; } .module-list { display: grid; gap: 14px; } .module-row { display: grid; grid-template-columns: 1fr auto; gap: 16px; align-items: center; padding: 18px 20px; border: 1px solid var(--line); border-radius: 15px; background: #fffdf8; } .module-row h3 { margin-bottom: 4px; font-size: 22px; } .module-row p { margin: 0; color: var(--muted); } .pill { padding: 7px 12px; border-radius: 999px; color: var(--red); background: #f8e5df; font-weight: 900; white-space: nowrap; } .form-like { display: grid; overflow: hidden; border: 1px solid var(--line); border-radius: 16px; background: #fffdf8; } .form-like p { display: grid; grid-template-columns: 170px 1fr auto; gap: 16px; margin: 0; padding: 18px 20px; border-bottom: 1px solid var(--line); align-items: center; } .form-like p:last-child { border-bottom: 0; } .form-like span { color: var(--muted); } .form-like b { color: var(--ink); } .bottom-actions { display: flex; gap: 14px; flex-wrap: wrap; } .editor-form { display: grid; gap: 18px; } .profile-data-form { /* 个人资料编辑表单只补充本页间距,基础控件继续复用 editor-form。 */ margin-top: 14px; } .editor-field { display: grid; gap: 10px; } .editor-field label { color: var(--ink); font-weight: 900; } .editor-field input, .editor-field select, .editor-field textarea { width: 100%; min-height: 48px; padding: 12px 14px; border: 1px solid var(--line); border-radius: 8px; background: #fffdf8; color: var(--ink); font: inherit; outline: none; transition: border-color .2s ease, box-shadow .2s ease; } .editor-field textarea { min-height: 160px; resize: vertical; } .editor-field input:focus, .editor-field select:focus, .editor-field textarea:focus { border-color: rgba(200, 59, 50, .45); box-shadow: 0 0 0 4px rgba(200, 59, 50, .08); } .editor-two { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; } .profile-form-actions { /* 保存状态跟随按钮排列,避免用 JS 写入临时样式。 */ align-items: center; } .form-status { color: var(--muted); font-weight: 800; } .generation-batch-form { /* 批量字辈表单复用编辑表单,只补充本页预览前的间距。 */ margin-top: 14px; } .generation-batch-check { display: flex; gap: 10px; align-items: center; color: var(--muted); font-weight: 800; } .generation-batch-check input { width: 18px; height: 18px; accent-color: var(--red); } .generation-batch-actions { align-items: center; } .generation-batch-preview { margin-top: 18px; } .upload-box { min-height: 136px; border: 1px dashed rgba(138, 50, 43, .28); border-radius: 8px; display: grid; place-items: center; color: var(--red); background: #fff8f2; font-weight: 900; cursor: pointer; } .switch-row { display: flex; gap: 18px; flex-wrap: wrap; align-items: center; } .tilt-card { transform: perspective(900px) rotateX(var(--tilt-x, 0deg)) rotateY(var(--tilt-y, 0deg)) translateY(var(--lift, 0)); transition: transform .18s ease, box-shadow .24s ease, border-color .24s ease; } .tilt-card:hover { --lift: -5px; } @media (max-width: 1060px) { .module-layout, .module-grid, .module-grid.two, .vip-package-list { grid-template-columns: 1fr; } .module-nav { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 720px) { .module-title-row { display: grid; } .module-title-row h1 { font-size: 38px; } .module-nav { grid-template-columns: 1fr; } .form-like p, .module-row, .editor-two, .profile-region-picker { grid-template-columns: 1fr; } }