/* * 用户会员后台页(users.php?page=jio_user_vip)专属样式:列表细节 + 调整弹窗。 * 依赖 native-ui.css 的 --an-* 令牌;标记由 src/Admin/Native/UsersMenusVipView.php 输出。 */ /* ---------- 筛选 ---------- */ .jio-vip .jio-vip-filters .small-text { width: 96px; } .jio-vip .jio-vip-filters label > span[aria-hidden] { color: var(--an-muted); } /* ---------- 列表 ---------- */ .jio-vip .jio-native-card__actions .button, .jio-vip .column-actions .button { display: inline-flex; align-items: center; justify-content: center; gap: 4px; } .jio-vip .jio-native-card__actions .button .dashicons, .jio-vip .column-actions .button .dashicons { width: 16px; height: 16px; margin: 0; font-size: 16px; line-height: 1; vertical-align: middle; } .jio-vip .column-actions .button-small .dashicons { width: 14px; height: 14px; font-size: 14px; } .jio-vip-selection { padding: 2px 10px; color: var(--an-primary); font-size: 12px; background: var(--an-primary-soft); border-radius: 999px; } .jio-vip-table .column-user { width: 32%; } .jio-vip-table .column-actions { width: 96px; text-align: right; } .jio-vip-login, .jio-vip-note, .jio-vip-remaining { display: block; margin-top: 4px; font-size: 12px; } .jio-vip-expiry { font-variant-numeric: tabular-nums; } .jio-vip-sort { display: inline-flex; align-items: center; gap: 6px; color: inherit; text-decoration: none; } .jio-vip-sort:hover, .jio-vip-sort.is-asc, .jio-vip-sort.is-desc { color: var(--an-primary); } /* 上下两个 CSS 三角,当前方向高亮;不依赖图标字形的朝向。 */ .jio-vip-sort__icon { display: inline-flex; flex-direction: column; gap: 2px; } .jio-vip-sort__icon i { display: block; width: 0; height: 0; border-right: 4px solid transparent; border-left: 4px solid transparent; color: #c9cdd4; } .jio-vip-sort__icon i:first-child { border-bottom: 5px solid currentColor; } .jio-vip-sort__icon i:last-child { border-top: 5px solid currentColor; } .jio-vip-sort.is-asc .jio-vip-sort__icon i:first-child, .jio-vip-sort.is-desc .jio-vip-sort__icon i:last-child { color: var(--an-primary); } .jio-vip-history .column-time { width: 140px; } .jio-vip-history .column-user { width: 22%; } .jio-vip-history .column-reason { width: 26%; word-break: break-word; } /* ---------- 弹窗 ---------- */ .jio-vip-dialog { width: min(560px, calc(100vw - 32px)); max-height: calc(100vh - 64px); padding: 0; color: var(--an-text-2); background: var(--an-card); border: 0; border-radius: var(--an-radius); box-shadow: 0 12px 48px rgba(15, 23, 42, .18); } .jio-vip-dialog::backdrop { background: rgba(15, 23, 42, .45); } .jio-vip-dialog__form { display: flex; flex-direction: column; max-height: inherit; margin: 0; } .jio-vip-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 16px 20px; border-bottom: 1px solid var(--an-border-soft); } .jio-vip-dialog .jio-vip-dialog__title { margin: 0; color: var(--an-text); font-size: 16px; font-weight: 600; line-height: 1.4; } .jio-vip-dialog__close { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; padding: 0; color: var(--an-muted); background: transparent; border: 0; border-radius: var(--an-radius-sm); cursor: pointer; } .jio-vip-dialog__close:hover, .jio-vip-dialog__close:focus-visible { color: var(--an-text); background: var(--an-bg-soft); } .jio-vip-dialog__body { display: flex; flex-direction: column; gap: 16px; padding: 18px 20px; overflow-y: auto; } .jio-vip-dialog__body > * { margin: 0; } .jio-vip-dialog__target { padding: 10px 12px; color: var(--an-text); background: var(--an-bg-soft); border-radius: var(--an-radius-sm); word-break: break-word; } .jio-vip-dialog__foot { display: flex; justify-content: flex-end; gap: 8px; padding: 14px 20px; border-top: 1px solid var(--an-border-soft); } .jio-vip-dialog .button.is-danger { color: #fff; background: var(--an-danger); border-color: var(--an-danger); } .jio-vip-dialog .button.is-danger:hover, .jio-vip-dialog .button.is-danger:focus { color: #fff; background: #b02a45; border-color: #b02a45; } /* 操作分段选择 */ .jio-vip-ops { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin: 0; padding: 0; border: 0; } .jio-vip-ops legend { margin-bottom: 8px; padding: 0; } .jio-vip-op { position: relative; display: block; cursor: pointer; } /* 单选框只承载状态,视觉由卡片表现。WP forms.css 会给 radio 画圆点(:checked::before)并给 :disabled 设 opacity, 故用裁剪彻底隐藏,而不是只靠 opacity。 */ .jio-vip-dialog .jio-vip-op input[type="radio"] { position: absolute; width: 1px; height: 1px; min-width: 0; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); border: 0; opacity: 0; appearance: none; pointer-events: none; } .jio-vip-op > span { display: flex; flex-direction: column; align-items: center; gap: 4px; padding: 10px 6px; color: var(--an-text-2); font-size: 13px; text-align: center; border: 1px solid var(--an-border); border-radius: var(--an-radius-sm); transition: border-color .15s, color .15s, background .15s; } .jio-vip-op .dashicons { width: 20px; height: 20px; font-size: 20px; } .jio-vip-op:hover > span { border-color: var(--an-primary); } .jio-vip-op input:checked + span { color: var(--an-primary); background: var(--an-primary-soft); border-color: var(--an-primary); font-weight: 600; } .jio-vip-op input:focus-visible + span { outline: 2px solid color-mix(in srgb, var(--an-primary) 40%, transparent); outline-offset: 1px; } .jio-vip-op.is-danger:hover > span { border-color: var(--an-danger); } .jio-vip-op.is-danger input:checked + span { color: var(--an-danger); background: #fdf0f2; border-color: var(--an-danger); } .jio-vip-op.is-disabled { cursor: not-allowed; } .jio-vip-op.is-disabled > span, .jio-vip-op.is-disabled:hover > span { color: #c9cdd4; background: var(--an-bg-soft); border-color: var(--an-border-soft); } .jio-vip-op-hint { font-size: 12px; } .jio-vip-pane[hidden] { display: none; } .jio-vip-dialog .jio-native-callout { margin: 0; } .jio-vip-switch { display: inline-flex; align-items: center; gap: 6px; color: var(--an-text); grid-column: 1 / -1; } .jio-vip-duration { display: flex; gap: 8px; } .jio-vip-duration input { flex: 1 1 auto; } .jio-vip-duration select { flex: 0 0 96px; } .jio-vip-bulk-note { font-size: 12px; } @media (max-width: 600px) { .jio-vip-ops { grid-template-columns: repeat(2, minmax(0, 1fr)); } .jio-vip-table .column-user { width: auto; } }