        /* ========== 全局重置 ========== */
        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
            -webkit-tap-highlight-color: transparent;
        }

        html, body {
            font-family: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
            background: #f3f4f6;
            color: #333;
            font-size: 14px;
            line-height: 1.5;
        }

        a { text-decoration: none; color: inherit; }
        ul, li { list-style: none; }
        img { display: block; max-width: 100%; }

        /* ========== 整体容器（PC居中、移动端全宽） ========== */
        .app-wrap {
            position: relative;
            width: 100%;
            max-width: 480px;
            min-height: 100vh;
            margin: 0 auto;
            background: #f3f4f6;
            padding-bottom: 70px; /* 给底部 tabbar 让位 */
        }

        @media (min-width: 768px) {
            body { background: #e9eaee; }
            .app-wrap {
                box-shadow: 0 0 16px rgba(0, 0, 0, 0.08);
                background: #f3f4f6;
            }
        }

        /* ========== 个人中心 · 头像 + 签到 + 个人信息（同一张白卡，避免模块在视觉上“丢失”） ========== */
        .user-card.uc-profile {
            position: relative;
            display: flex;
            flex-direction: column;
            align-items: stretch;
            padding: 20px 16px;
            background: #fff;
            margin: 10px 12px 0;
            border-radius: 12px;
            overflow: hidden;
        }
        .uc-profile-head-row {
            display: flex;
            align-items: center;
            position: relative;
            width: 100%;
        }
        .user-card .avatar {
            width: 72px;
            height: 72px;
            border-radius: 50%;
            background: #1f1f1f center/cover no-repeat;
            flex-shrink: 0;
            border: 2px solid #f0f0f0;
            overflow: hidden;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #888;
            font-size: 28px;
        }
        .uc-account {
            flex: 1;
            margin-left: 14px;
            min-width: 0;
            padding-right: 92px; /* 避免与右侧「签到」重叠 */
        }

        .sign-btn {
            position: absolute;
            right: 0;
            top: 50%;
            transform: translateY(-50%);
            display: inline-flex;
            align-items: center;
            padding: 7px 16px;
            background: linear-gradient(90deg, #69c0ff, #1890ff);
            color: #fff;
            font-size: 13px;
            border-radius: 22px;
            box-shadow: 0 2px 8px rgba(24, 144, 255, 0.28);
            cursor: pointer;
            user-select: none;
        }
        .sign-btn .layui-icon {
            font-size: 15px;
            margin-right: 4px;
        }

        /* 嵌在资料卡内的「个人信息」，与上方头像区分隔线 */
        .uc-panel.uc-panel--in-profile {
            margin: 14px 0 0;
            padding: 14px 0 0;
            border-top: 1px solid #f0f0f0;
            background: transparent;
            border-radius: 0;
            width: 100%;
        }
        .uc-panel.uc-panel--in-profile .uc-panel-title {
            margin-bottom: 10px;
        }

        .uc-panel-title {
            font-size: 14px;
            font-weight: 600;
            color: #333;
            margin-bottom: 12px;
            padding-left: 2px;
        }
        /* ========== 个人信息：固定 3×2 六宫格；左列上平台币、下积分 ========== */
        .uc-info-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            grid-template-rows: repeat(2, minmax(100px, auto));
            background: #f0f1f4;
            gap: 3px;
            border: 3px solid #f0f1f4;
            border-radius: 6px;
            overflow: hidden;
        }
        .uc-info-cell {
            padding: 10px 6px;
            text-align: center;
            background: #fff;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            min-height: 100px;
        }
        .uc-info-cell .num {
            font-size: 17px;
            font-weight: 700;
            color: #ff4d4f;
            line-height: 1.2;
            word-break: break-all;
            max-width: 100%;
        }
        .uc-info-cell.is-blue .num { color: #1890ff; }
        .uc-info-cell.is-zone .num { color: #1890ff; }
        .uc-info-cell .num.is-sm {
            font-size: 13px;
            font-weight: 600;
        }
        .uc-info-cell .label {
            margin-top: 6px;
            font-size: 11px;
            color: #888;
            line-height: 1.35;
        }

        /* ========== 特权领取：notice usercenter.html 与「四个圆形快捷入口」同源 class/尺寸 ========== */
        .quick-menu.uc-shop-quick {
            display: flex;
            justify-content: center;
            background: #fff;
            margin: 10px 12px 0;
            padding: 18px 0 16px;
            border-radius: 12px;
        }
        .quick-menu.uc-shop-quick .qm-item.uc-priv-slot {
            flex: 1;
            min-width: 0;
            text-align: center;
            cursor: pointer;
            color: inherit;
            text-decoration: none;
            display: block;
        }
        .quick-menu.uc-shop-quick .qm-ico {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 50px;
            height: 50px;
            border-radius: 50%;
            color: #fff;
            font-size: 24px;
            margin-bottom: 8px;
            box-shadow: 0 4px 8px rgba(0, 0, 0, 0.08);
        }
        .quick-menu.uc-shop-quick .qm-ico.bg-blue {
            background: linear-gradient(135deg, #5cadff, #1890ff);
        }
        .quick-menu.uc-shop-quick .qm-ico.bg-orange {
            background: linear-gradient(135deg, #ffe066, #faad14);
        }
        .quick-menu.uc-shop-quick .qm-ico.bg-red {
            background: linear-gradient(135deg, #ff7875, #ff4d4f);
        }
        .quick-menu.uc-shop-quick .qm-ico.bg-green {
            background: linear-gradient(135deg, #73d13d, #52c41a);
        }
        .quick-menu.uc-shop-quick .qm-ico.bg-purple {
            background: linear-gradient(135deg, #b37feb, #722ed1);
        }
        .quick-menu.uc-shop-quick .qm-label {
            font-size: 13px;
            color: #222;
            font-weight: 600;
        }
        /* 与 notice 充值页一致：单片红胶囊 vip0（恢复，去掉外层橙框） */
        .uc-name-row .uc-vip-pill {
            margin-left: 6px;
            display: inline-flex;
            align-items: center;
            padding: 1px 7px;
            background: linear-gradient(90deg, #ff7875, #ff4d4f);
            color: #fff;
            border-radius: 8px;
            font-size: 11px;
            font-weight: 600;
        }
        .uc-name-row {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 4px 8px;
            margin-bottom: 8px;
        }
        .uc-name-row .uc-name {
            font-size: 16px;
            font-weight: 700;
            color: #222;
            max-width: 70%;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }
        .progress-wrap {
            position: relative;
            width: 100%;
            max-width: 260px;
            height: 16px;
            margin-top: 4px;
            background: #ebebeb;
            border-radius: 8px;
            overflow: hidden;
        }
        .progress-wrap .fill {
            position: relative;
            z-index: 0;
            height: 100%;
            width: 12%;
            background: linear-gradient(90deg, #ff7875, #ff4d4f);
            border-radius: 8px;
        }
        /* 深字 + 描边：灰底/红底上都能看清 */
        .progress-wrap .text {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            z-index: 2;
            font-size: 11px;
            font-weight: 800;
            color: #333;
            letter-spacing: 0.02em;
            white-space: nowrap;
            text-shadow: -1px -1px 0 #fff, 1px -1px 0 #fff, -1px 1px 0 #fff, 1px 1px 0 #fff;
        }
        .uc-list-wrap {
            margin: 10px 12px 0;
            background: #fff;
            border-radius: 12px;
            overflow: hidden;
        }

        .uc-list-wrap .row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            padding: 16px 16px;
            border-bottom: 1px solid #f0f0f0;
            cursor: pointer;
            transition: background .2s;
        }
        .uc-list-wrap .row:last-child { border-bottom: none; }
        .uc-list-wrap .row:active { background: #fafafa; }
        .uc-list-wrap .row .left {
            font-size: 14px;
            color: #333;
            font-weight: 600;
        }
        .uc-list-wrap .row .right {
            display: flex;
            align-items: center;
            font-size: 13px;
            color: #999;
        }
        .uc-list-wrap .row .right .layui-icon-right {
            margin-left: 6px;
            font-size: 12px;
            color: #c0c4cc;
        }

        /* ========== 退出登录 ========== */
        .logout-row {
            margin: 10px 12px 0;
            padding: 16px;
            background: #fff;
            text-align: center;
            font-size: 14px;
            color: #333;
            cursor: pointer;
            font-weight: 500;
            border-radius: 12px;
        }
        .logout-row:active { background: #fafafa; }

        @media (max-width: 360px) {
            .uc-info-cell .num { font-size: 15px; }
            .uc-info-cell .num.is-sm { font-size: 12px; }
        }
        /* ========== 签到日历弹窗 ========== */
        .sign-dialog {
            padding: 18px 16px 12px;
            background: #fff;
            border-radius: 12px;
            box-sizing: border-box;
        }
        .sign-dialog .sign-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            margin-bottom: 14px;
            padding-right: 36px;
        }
        .sign-dialog .sign-title {
            font-size: 16px;
            color: #222;
            font-weight: 600;
        }
        .sign-dialog .sign-title .num {
            color: #ff4d4f;
            font-size: 20px;
            font-weight: 700;
            margin: 0 2px;
        }
        .sign-dialog .sign-title .sign-title-tip {
            margin-left: 4px;
            font-size: 12px;
            font-weight: 400;
            color: #999;
        }
        .sign-dialog .sign-extra {
            font-size: 13px;
            color: #888;
        }
        .sign-dialog .sign-extra .v {
            color: #ff4d4f;
            font-weight: 600;
            margin-left: 4px;
        }

        .week-header,
        .day-grid {
            display: grid;
            grid-template-columns: repeat(7, 1fr);
            gap: 6px;
        }
        .week-header {
            margin-bottom: 6px;
        }
        .week-header .w {
            text-align: center;
            font-size: 12px;
            color: #aaa;
            line-height: 28px;
        }

        .day-cell {
            position: relative;
            aspect-ratio: 1 / 1;
            background: #f6f7fb;
            border-radius: 10px;
            display: flex;
            align-items: center;
            justify-content: center;
            font-size: 14px;
            color: #555;
        }
        .day-cell.is-empty {
            background: transparent;
        }
        /* 未签到（过去/今天/未来），统一显示数字 */
        .day-cell.is-future {
            background: #f6f7fb;
            color: #888;
        }
        .day-cell.is-past-unsign {
            background: #f6f7fb;
            color: #b0b3bd;
        }
        /* 已签到 */
        .day-cell.is-signed {
            background: #fff;
            border: 2px solid #ff7875;
            color: #ff4d4f;
            font-weight: 700;
        }
        .day-cell.is-signed::before {
            content: "\e605"; /* layui-icon-ok */
            font-family: "layui-icon" !important;
            font-size: 20px;
        }
        /* 今天 */
        .day-cell.is-today {
            box-shadow: 0 0 0 2px #ff7875 inset;
            color: #ff4d4f;
            font-weight: 700;
            background: #fff1f0;
        }
        .day-cell.is-today.is-signed {
            background: #fff;
        }

        /* 奖励横向滚动：卡片等高，底部状态区占位一致避免错位 */
        .reward-scroll {
            margin-top: 14px;
            display: flex;
            align-items: stretch;
            gap: 10px;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
            padding: 0 0 8px;
        }
        .reward-scroll::-webkit-scrollbar { display: none; }
        .reward-card {
            flex: 0 0 auto;
            width: 112px;
            min-height: 176px;
            background: #fff;
            border-radius: 10px;
            overflow: hidden;
            border: 1px solid #e8e8e8;
            box-shadow: 0 1px 4px rgba(0, 0, 0, 0.06);
            text-align: center;
            display: flex;
            flex-direction: column;
        }
        .reward-card .top {
            flex-shrink: 0;
            background: #4ea1ff;
            color: #fff;
            font-size: 13px;
            font-weight: 600;
            padding: 8px 6px;
            line-height: 1.25;
        }
        .reward-card .mid {
            flex: 1 1 auto;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #eaf3ff;
            color: #333;
            font-size: 11px;
            line-height: 1.45;
            padding: 10px 6px;
            word-break: break-all;
            min-height: 56px;
        }
        .reward-card .reward-card-foot {
            flex-shrink: 0;
            min-height: 40px;
            padding: 8px 6px 10px;
            font-size: 12px;
            font-weight: 600;
            line-height: 1.3;
            display: flex;
            align-items: center;
            justify-content: center;
            background: #fafafa;
            color: #999;
            border-top: 1px solid #f0f0f0;
        }
        .reward-card .reward-card-foot.is-claim {
            background: #fff1f0;
            color: #ff4d4f;
            border-top-color: #ffccc7;
        }
        .reward-card .reward-card-foot.is-done {
            background: #f6ffed;
            color: #52c41a;
            border-top-color: #d9f7be;
        }
        .reward-card.is-locked {
            opacity: 0.88;
        }
        .reward-card.is-locked .mid {
            color: #666;
            background: #f3f4f6;
        }
        .reward-card.is-claimable {
            border-color: #ffccc7;
            box-shadow: 0 0 0 1px rgba(255, 77, 79, 0.2);
        }
        .reward-card.is-claimed .top { background: #73d13d; }
        .reward-card.is-claimed .mid {
            color: #389e0d;
            background: #f6ffed;
        }
        .sign-toolbar {
            margin-bottom: 12px;
            padding: 10px 12px;
            background: #fff7e6;
            border-radius: 10px;
            border: 1px solid #ffe58f;
        }
        .sign-toolbar .sign-daily {
            font-size: 13px;
            color: #444;
            margin-bottom: 8px;
        }
        .sign-toolbar .sign-daily .v { color: #d46b08; font-weight: 600; }
        .sign-bind-warn {
            display: block;
            font-size: 12px;
            color: #cf1322;
            margin-bottom: 8px;
        }
        .sign-today-btn {
            width: 100%;
            border: none;
            border-radius: 22px;
            padding: 10px 16px;
            font-size: 14px;
            font-weight: 600;
            color: #fff;
            background: var(--shop-btn-gradient, linear-gradient(90deg, #ff7875, #ff4d4f));
            cursor: pointer;
            box-shadow: var(--shop-btn-shadow-sm, 0 2px 8px rgba(255, 77, 79, 0.28));
        }
        .sign-today-btn:disabled {
            background: #d9d9d9;
            color: #fff;
            box-shadow: none;
            cursor: not-allowed;
        }

        /* 弹窗外壳：保留圆角，不再裁切（避免裁掉关闭按钮） */
        .layui-layer.sign-layer {
            border-radius: 14px !important;
            background: #fff !important;
            box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18);
        }
        .layui-layer.sign-layer .layui-layer-content {
            background: #fff;
            border-radius: 14px;
        }
        .layui-layer.consult-layer {
            border-radius: 14px !important;
            background: #fff !important;
            box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18);
        }
        .layui-layer.consult-layer .layui-layer-content {
            background: #fff;
            border-radius: 14px;
        }
        .layui-layer.update-log-layer {
            border-radius: 12px !important;
            overflow: hidden;
            box-shadow: 0 8px 30px rgba(0, 0, 0, 0.18);
        }
        .layui-layer.update-log-layer .layui-layer-content {
            overflow: hidden;
        }
        .consult-dialog .consult-contact-rows {
            background: #fafafa;
            border-radius: 10px;
            padding: 4px 12px;
            margin-bottom: 12px;
        }
        .consult-dialog .consult-contact-row {
            display: flex;
            justify-content: space-between;
            align-items: flex-start;
            gap: 12px;
            padding: 11px 0;
            border-bottom: 1px solid #eee;
            font-size: 14px;
            line-height: 1.45;
        }
        .consult-dialog .consult-contact-row:last-child {
            border-bottom: none;
            padding-bottom: 8px;
        }
        .consult-dialog .consult-contact-k {
            color: #ff4d4f;
            flex-shrink: 0;
            font-weight: 600;
        }
        .consult-dialog .consult-contact-v {
            color: #1890ff;
            text-align: right;
            word-break: break-all;
            font-weight: 500;
        }
        .consult-dialog .consult-tip {
            font-size: 12px;
            color: #999;
            line-height: 1.55;
            text-align: center;
            padding: 0 4px 4px;
        }
        /* 自定义关闭按钮（圆形灰底 + 黑色 X） */
        .sign-dialog .sign-close {
            position: absolute;
            top: 10px;
            right: 10px;
            width: 28px;
            height: 28px;
            border-radius: 50%;
            background: #f1f2f5;
            color: #555;
            display: flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            transition: all .2s;
            z-index: 2;
        }
        .sign-dialog .sign-close:hover {
            background: #e3e5e9;
            color: #222;
        }
        .sign-dialog .sign-close .layui-icon {
            font-size: 14px;
            line-height: 1;
        }
        .sign-dialog { position: relative; }
        /* 特权领取弹窗（与礼包商城卡片同风格） */
        .priv-claim-dialog { padding: 12px 10px 14px; position: relative; max-height: 72vh; overflow-y: auto; background: #fff; }
        .priv-claim-dialog .sign-head { padding-right: 32px; margin-bottom: 10px; }
        .priv-claim-dialog .pc-goods-list {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 10px;
            align-content: start;
        }
        .priv-claim-dialog .pc-goods-list-msg {
            grid-column: 1 / -1;
            padding: 28px 12px;
            text-align: center;
            font-size: 13px;
            color: #999;
        }
        .priv-claim-dialog .pc-goods-item {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            background: #f5f6f8;
            border: 1px solid #f0f0f0;
            border-radius: 10px;
            overflow: hidden;
            box-shadow: 0 1px 4px rgba(0, 0, 0, 0.04);
        }
        .priv-claim-dialog .pc-goods-img {
            width: 100%;
            aspect-ratio: 1;
            max-height: 120px;
            flex-shrink: 0;
            display: flex;
            align-items: center;
            justify-content: center;
            color: #fff;
            font-size: 26px;
            font-weight: 700;
            background: var(--shop-btn-gradient, linear-gradient(135deg, #ff7875, #ff4d4f));
            overflow: hidden;
        }
        .priv-claim-dialog .pc-goods-img.pc-goods-img-photo {
            padding: 0;
            background: #f0f0f0;
        }
        .priv-claim-dialog .pc-goods-img.pc-goods-img-photo img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }
        .priv-claim-dialog .pc-goods-meta {
            flex: 1;
            display: flex;
            flex-direction: column;
            min-height: 0;
            padding: 8px 8px 10px;
        }
        .priv-claim-dialog .pc-goods-name {
            font-size: 13px;
            font-weight: 700;
            color: #222;
            line-height: 1.35;
            overflow: hidden;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
            line-clamp: 2;
            word-break: break-word;
        }
        .priv-claim-dialog .pc-goods-desc {
            font-size: 11px;
            color: #999;
            margin-top: 6px;
            line-height: 1.42;
            overflow: hidden;
            display: -webkit-box;
            -webkit-box-orient: vertical;
            -webkit-line-clamp: 2;
            line-clamp: 2;
            word-break: break-word;
            flex: 1;
        }
        .priv-claim-dialog .pc-goods-hint {
            font-size: 10px;
            color: #bbb;
            margin-top: 6px;
            line-height: 1.35;
        }
        .priv-claim-dialog .pc-goods-footer {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 6px;
            margin-top: 10px;
            flex-shrink: 0;
        }
        .priv-claim-dialog .pc-goods-footer .pc-foot-status {
            font-size: 11px;
            font-weight: 600;
            color: #ff4d4f;
            line-height: 1.25;
            min-width: 0;
            flex: 1;
        }
        .priv-claim-dialog .pc-goods-footer .pc-foot-status.is-muted { color: #999; font-weight: 500; }
        .priv-claim-dialog .pc-claim-btn {
            padding: 3px 10px;
            border: 1px solid #ff4d4f;
            background: #fff;
            color: #ff4d4f;
            border-radius: 12px;
            font-size: 11px;
            cursor: pointer;
            transition: all .15s;
            flex-shrink: 0;
        }
        .priv-claim-dialog .pc-claim-btn:hover:not(:disabled),
        .priv-claim-dialog .pc-claim-btn:active:not(:disabled) {
            background: #ff4d4f;
            color: #fff;
        }
        .priv-claim-dialog .pc-claim-btn:disabled {
            opacity: .45;
            cursor: not-allowed;
        }
