html, body {
    font-family: 'Helvetica Neue', Helvetica, Arial, sans-serif;
    background-color: #000;
    color: #fff;
}

/* light 主题下让 body 底色跟随主题, 避免顶层容器外的边角（overscroll bounce / modal 外区）露出黑色破坏整体亮色视觉
 * 按系统区分底色：
 *   - WeiCity → 米色 #f3ede5（WeiCity 品牌色）
 *   - 其他系统（YFGJ68 / Stk 等）→ 白色 #ffffff
 * 区分靠 body.sys-{systemMode} class（由 App.razor 渲染时设置）。 */

/* WeiCity：米色 */
[data-bs-theme="light"] html:has(body.sys-weicity),
[data-bs-theme="light"] body.sys-weicity {
    background-color: #f3ede5;
    color: #182230;
}

/* 其他系统：白色（覆盖第 1-5 行 base 黑色规则在 light 模式下） */
[data-bs-theme="light"] html:not(:has(body.sys-weicity)),
[data-bs-theme="light"] body:not(.sys-weicity) {
    background-color: #ffffff;
    color: #182230;
}

/* YFGJ68 专属：
   1. color-scheme: light —— 让浏览器原生 UI（表单控件等）按 light 风格渲染
   2. background-color: #fff —— <html> 自身白底
      原因：scrollbar-color 的 track 设为 transparent，会透出 <html> 背景。
      之前依赖 [data-bs-theme="light"] html:not(:has(body.sys-weicity)) 给白底，
      但 :has() 选择器在 SSR 早期可能匹配不到，导致首页滚动条露黑底。
      这里用更稳的属性选择器（不带 :has），第一帧就能命中。
   精确限定 [data-system-mode="YFGJ68"]，不影响 WeiCity / Stk / ACEI。 */
html[data-system-mode="YFGJ68"] {
    color-scheme: light;
    background-color: #ffffff;
}

:root {
    --wc-btn-text: #f7f9fc;
    --wc-btn-border: rgba(150, 166, 189, 0.22);
    --wc-btn-border-strong: rgba(177, 191, 214, 0.32);
    --wc-btn-bg: linear-gradient(180deg, rgba(33, 40, 53, 0.96) 0%, rgba(18, 23, 31, 0.98) 100%);
    --wc-btn-bg-strong: linear-gradient(180deg, rgba(46, 56, 72, 0.98) 0%, rgba(24, 30, 40, 1) 100%);
    --wc-btn-bg-hover: linear-gradient(180deg, rgba(55, 67, 85, 0.98) 0%, rgba(31, 39, 50, 1) 100%);
    --wc-btn-bg-active: linear-gradient(180deg, rgba(68, 81, 102, 0.98) 0%, rgba(39, 48, 61, 1) 100%);
    --wc-btn-shadow: 0 14px 30px rgba(3, 7, 18, 0.22);
    --wc-btn-focus: rgba(148, 163, 184, 0.18);
    --wc-btn-danger-border: rgba(167, 119, 126, 0.34);
    --wc-btn-danger-bg: linear-gradient(180deg, rgba(105, 63, 69, 0.96) 0%, rgba(63, 39, 43, 0.99) 100%);
    --wc-btn-danger-hover: linear-gradient(180deg, rgba(120, 74, 80, 0.98) 0%, rgba(75, 47, 51, 1) 100%);
}

[data-bs-theme="light"] {
    /* light 主题下 secondary/outline 用深色文字 (在浅底上看清), primary/danger 单独覆写为白色 */
    --wc-btn-text: #000000;
    --wc-btn-border: rgba(24, 34, 48, 0.14);
    --wc-btn-border-strong: rgba(239, 106, 66, 0.36);
    --wc-btn-bg: rgba(255, 255, 255, 0.92);
    /* primary 实底用商家 accent 橙 #ef6a42 (跟 P1-6 色调统一一致) */
    --wc-btn-bg-strong: linear-gradient(180deg, #ef6a42 0%, #d75b35 100%);
    --wc-btn-bg-hover: linear-gradient(180deg, #f47c54 0%, #ef6a42 100%);
    --wc-btn-bg-active: linear-gradient(180deg, #d75b35 0%, #c44d29 100%);
    --wc-btn-danger-border: rgba(214, 69, 69, 0.4);
    --wc-btn-danger-bg: linear-gradient(180deg, #d64545 0%, #b53737 100%);
    --wc-btn-danger-hover: linear-gradient(180deg, #e25656 0%, #c44040 100%);
    /* light 主题阴影削弱: 半个 blur (24→10) + 半个 alpha (0.14→0.07), 避免白底黑阴影显得"压得重" */
    --wc-btn-shadow: 0 4px 10px rgba(15, 23, 42, 0.07);
    --wc-btn-focus: rgba(116, 130, 151, 0.14);
}

/* light 主题下 primary/danger 是实底彩色背景 (橙/红), base 状态钉白文字才看清.
   注: hover/focus/active 状态已经在上方 base hover 规则统一钉白, 这里只补 base + disabled + .disabled + checked 的钉白. */
[data-bs-theme="light"] .btn-primary,
[data-bs-theme="light"] .btn-primary:disabled,
[data-bs-theme="light"] .btn-primary.disabled,
[data-bs-theme="light"] .btn-phoenix-primary,
[data-bs-theme="light"] .btn-phoenix-primary:disabled,
[data-bs-theme="light"] .btn-phoenix-primary.disabled,
[data-bs-theme="light"] .btn-danger,
[data-bs-theme="light"] .btn-danger:disabled,
[data-bs-theme="light"] .btn-danger.disabled,
[data-bs-theme="light"] .btn-phoenix-danger,
[data-bs-theme="light"] .btn-phoenix-danger:disabled,
[data-bs-theme="light"] .btn-phoenix-danger.disabled,
[data-bs-theme="light"] .btn-subtle-danger,
[data-bs-theme="light"] .btn-outline-danger.active,
[data-bs-theme="light"] .btn-check:checked + .btn-outline-primary,
[data-bs-theme="light"] .btn-check:checked + .btn-outline-secondary,
[data-bs-theme="light"] .btn-check:checked + .btn-outline-info,
[data-bs-theme="light"] .btn-check:checked + .btn-outline-warning,
[data-bs-theme="light"] .btn-check:checked + .btn-outline-success,
[data-bs-theme="light"] .btn-check:checked + .btn-outline-danger {
    color: #ffffff !important;
}

a, .btn-link {
    color: #006bb7;
}

.btn-primary,
.btn-phoenix-primary {
    color: var(--wc-btn-text) !important;
    border-color: var(--wc-btn-border-strong) !important;
    background: var(--wc-btn-bg-strong) !important;
    box-shadow: var(--wc-btn-shadow) !important;
}

.btn-secondary,
.btn-phoenix-secondary,
.btn-outline-primary,
.btn-outline-secondary,
.btn-outline-info,
.btn-outline-warning,
.btn-outline-success,
.btn-phoenix-info,
.btn-phoenix-warning,
.btn-phoenix-success,
.btn-subtle-primary,
.btn-subtle-secondary,
.btn-subtle-success {
    color: var(--wc-btn-text) !important;
    border-color: var(--wc-btn-border) !important;
    background: var(--wc-btn-bg) !important;
    box-shadow: var(--wc-btn-shadow) !important;
}

.btn-danger,
.btn-phoenix-danger,
.btn-outline-danger,
.btn-subtle-danger {
    color: var(--wc-btn-text) !important;
    border-color: var(--wc-btn-danger-border) !important;
    background: var(--wc-btn-danger-bg) !important;
    box-shadow: var(--wc-btn-shadow) !important;
}

.btn-primary:hover,
.btn-primary:focus-visible,
.btn-primary:active,
.btn-phoenix-primary:hover,
.btn-phoenix-primary:focus-visible,
.btn-phoenix-primary:active,
.btn-secondary:hover,
.btn-secondary:focus-visible,
.btn-secondary:active,
.btn-phoenix-secondary:hover,
.btn-phoenix-secondary:focus-visible,
.btn-phoenix-secondary:active,
.btn-outline-primary:hover,
.btn-outline-primary:focus-visible,
.btn-outline-primary:active,
.btn-outline-secondary:hover,
.btn-outline-secondary:focus-visible,
.btn-outline-secondary:active,
.btn-outline-info:hover,
.btn-outline-info:focus-visible,
.btn-outline-info:active,
.btn-outline-warning:hover,
.btn-outline-warning:focus-visible,
.btn-outline-warning:active,
.btn-outline-success:hover,
.btn-outline-success:focus-visible,
.btn-outline-success:active,
.btn-phoenix-info:hover,
.btn-phoenix-info:focus-visible,
.btn-phoenix-info:active,
.btn-phoenix-warning:hover,
.btn-phoenix-warning:focus-visible,
.btn-phoenix-warning:active,
.btn-phoenix-success:hover,
.btn-phoenix-success:focus-visible,
.btn-phoenix-success:active,
.btn-subtle-primary:hover,
.btn-subtle-primary:focus-visible,
.btn-subtle-primary:active,
.btn-subtle-secondary:hover,
.btn-subtle-secondary:focus-visible,
.btn-subtle-secondary:active,
.btn-subtle-success:hover,
.btn-subtle-success:focus-visible,
.btn-subtle-success:active {
    /* 所有按钮 hover 钉白文字 — 因为 --wc-btn-bg-hover 是橙色实底 (light) 或深灰实底 (dark),
       白文字才有足够对比度. var(--wc-btn-text) 在 light 主题解析为 #000000 深字, 跟橙底冲突 */
    color: #ffffff !important;
    border-color: var(--wc-btn-border-strong) !important;
    background: var(--wc-btn-bg-hover) !important;
}

.btn-danger:hover,
.btn-danger:focus-visible,
.btn-danger:active,
.btn-phoenix-danger:hover,
.btn-phoenix-danger:focus-visible,
.btn-phoenix-danger:active,
.btn-outline-danger:hover,
.btn-outline-danger:focus-visible,
.btn-outline-danger:active,
.btn-subtle-danger:hover,
.btn-subtle-danger:focus-visible,
.btn-subtle-danger:active {
    /* danger hover 同理钉白 — 红色实底必须白字 */
    color: #ffffff !important;
    border-color: var(--wc-btn-danger-border) !important;
    background: var(--wc-btn-danger-hover) !important;
}

.btn-check:checked + .btn-outline-primary,
.btn-check:checked + .btn-outline-secondary,
.btn-check:checked + .btn-outline-info,
.btn-check:checked + .btn-outline-warning,
.btn-check:checked + .btn-outline-success,
.btn-check:checked + .btn-outline-danger,
.btn-outline-primary.active,
.btn-outline-secondary.active,
.btn-outline-info.active,
.btn-outline-warning.active,
.btn-outline-success.active,
.btn-outline-danger.active,
.show > .btn-outline-primary.dropdown-toggle,
.show > .btn-outline-secondary.dropdown-toggle,
.show > .btn-outline-info.dropdown-toggle,
.show > .btn-outline-warning.dropdown-toggle,
.show > .btn-outline-success.dropdown-toggle,
.show > .btn-outline-danger.dropdown-toggle {
    color: var(--wc-btn-text) !important;
    border-color: var(--wc-btn-border-strong) !important;
    background: var(--wc-btn-bg-active) !important;
    box-shadow: var(--wc-btn-shadow) !important;
}

.btn-outline-danger.active,
.show > .btn-outline-danger.dropdown-toggle,
.btn-check:checked + .btn-outline-danger {
    border-color: var(--wc-btn-danger-border) !important;
    background: var(--wc-btn-danger-hover) !important;
}

.btn-primary:disabled,
.btn-primary.disabled,
.btn-phoenix-primary:disabled,
.btn-phoenix-primary.disabled,
.btn-secondary:disabled,
.btn-secondary.disabled,
.btn-phoenix-secondary:disabled,
.btn-phoenix-secondary.disabled,
.btn-outline-primary:disabled,
.btn-outline-primary.disabled,
.btn-outline-secondary:disabled,
.btn-outline-secondary.disabled,
.btn-outline-info:disabled,
.btn-outline-info.disabled,
.btn-outline-warning:disabled,
.btn-outline-warning.disabled,
.btn-outline-success:disabled,
.btn-outline-success.disabled,
.btn-outline-danger:disabled,
.btn-outline-danger.disabled,
.btn-phoenix-info:disabled,
.btn-phoenix-info.disabled,
.btn-phoenix-warning:disabled,
.btn-phoenix-warning.disabled,
.btn-phoenix-success:disabled,
.btn-phoenix-success.disabled,
.btn-danger:disabled,
.btn-danger.disabled,
.btn-phoenix-danger:disabled,
.btn-phoenix-danger.disabled,
.btn-subtle-primary:disabled,
.btn-subtle-primary.disabled,
.btn-subtle-secondary:disabled,
.btn-subtle-secondary.disabled,
.btn-subtle-success:disabled,
.btn-subtle-success.disabled,
.btn-subtle-danger:disabled,
.btn-subtle-danger.disabled {
    opacity: 0.58;
    box-shadow: none !important;
}

.btn:focus, .btn:active:focus, .btn-link.nav-link:focus, .form-control:focus, .form-check-input:focus {
  box-shadow: 0 0 0 0.12rem rgba(255, 255, 255, 0.08), 0 0 0 0.26rem var(--wc-btn-focus);
}

/* InputFile (Blazor 内置) 渲染的 native <input type="file"> 隐藏 —
   原本想在 PersonalSocialHome.razor.css 用 ::deep input 隐藏, 但 scoped CSS 编译后 selector 没命中 InputFile
   输出的元素 (DevTools 显示 input 仍可见 72x26 #6B6B6B 覆盖 label 底部). 全局 selector 不依赖 scope hash, 稳.
   依靠 HTML spec: <label> 包 <input> 时点击 label 任意位置自动触发 input click. */
.wc-social__media-button input {
    display: none;
}

/* _Navbar_User_DropdownMenu 的 light 主题覆写必须放全局, 不能放 .razor.css —
   scoped CSS isolation 会让 [data-bs-theme="light"] 加 [b-xxx] 属性, 而 data-bs-theme 在 <html> 上,
   导致 light 主题下 popover 仍保留深底 + 文字走 wc-social 深色变量 → 深底深字看不清. */
[data-bs-theme="light"] .wc-user-menu__topbar-pill,
[data-bs-theme="light"] .wc-user-menu__sidebar-card {
    background: rgba(255, 255, 255, 0.78);
}

[data-bs-theme="light"] .wc-user-menu__floating-pill {
    background: rgba(239, 106, 66, 0.14);
}

[data-bs-theme="light"] .wc-user-menu__ellipsis,
[data-bs-theme="light"] .wc-user-menu__chevron {
    background: rgba(24, 34, 48, 0.05);
}

[data-bs-theme="light"] .wc-user-menu__popover {
    background: rgba(252, 250, 247, 0.98) !important;
    box-shadow: 0 24px 60px rgba(87, 73, 59, 0.16);
    color: #000000;
}

[data-bs-theme="light"] .wc-user-menu__popover .wc-user-menu__action,
[data-bs-theme="light"] .wc-user-menu__popover .wc-user-menu__action:visited {
    color: #000000;
}

[data-bs-theme="light"] .wc-user-menu__popover .wc-user-menu__divider {
    border-top-color: rgba(24, 34, 48, 0.1);
}

[data-bs-theme="light"] .wc-user-menu__action:hover,
[data-bs-theme="light"] .wc-user-menu__action:focus-visible {
    background: rgba(24, 34, 48, 0.06);
    color: #000000;
}

[data-bs-theme="light"] .wc-user-menu__action.is-danger,
[data-bs-theme="light"] .wc-user-menu__action.is-danger:hover,
[data-bs-theme="light"] .wc-user-menu__action.is-danger:focus-visible {
    color: #c54b33;
}

.wc-share-panel {
    padding: 0.9rem 1rem;
    border-radius: 1.5rem;
}

.wc-share-panel__stack {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
}

.wc-share-panel__field {
    display: flex;
    align-items: stretch;
    gap: 0.75rem;
}

.wc-share-panel__input {
    min-width: 0;
}

.wc-share-panel__button {
    flex: 0 0 auto;
    min-width: 3.8rem;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding-inline: 1rem;
    border-radius: 16px !important;
}

.wc-share-panel__qr {
    display: flex;
    justify-content: center;
}

.wc-share-panel__qr img {
    width: min(100%, 170px);
    height: auto;
    max-height: none !important;
    padding: 8px;
    border-radius: 22px;
    background: #fff;
    box-shadow: 0 16px 32px rgba(3, 7, 18, 0.18);
}

@media (max-width: 767.98px) {
    .wc-share-panel__field {
        flex-direction: column;
    }

    .wc-share-panel__button {
        width: 100%;
    }

    .wc-share-panel__qr {
        padding-top: 0.4rem;
    }
}

.content {
    padding-top: 1.1rem;
}

h1:focus {
    outline: none;
}

.valid.modified:not([type=checkbox]) {
    outline: 1px solid #26b050;
}

.invalid {
    outline: 1px solid #e50000;
}

.validation-message {
    color: #e50000;
}

.blazor-error-boundary {
    background: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iNTYiIGhlaWdodD0iNDkiIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2ZyIgeG1sbnM6eGxpbms9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGxpbmsiIG92ZXJmbG93PSJoaWRkZW4iPjxkZWZzPjxjbGlwUGF0aCBpZD0iY2xpcDAiPjxyZWN0IHg9IjIzNSIgeT0iNTEiIHdpZHRoPSI1NiIgaGVpZ2h0PSI0OSIvPjwvY2xpcFBhdGg+PC9kZWZzPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMCkiIHRyYW5zZm9ybT0idHJhbnNsYXRlKC0yMzUgLTUxKSI+PHBhdGggZD0iTTI2My41MDYgNTFDMjY0LjcxNyA1MSAyNjUuODEzIDUxLjQ4MzcgMjY2LjYwNiA1Mi4yNjU4TDI2Ny4wNTIgNTIuNzk4NyAyNjcuNTM5IDUzLjYyODMgMjkwLjE4NSA5Mi4xODMxIDI5MC41NDUgOTIuNzk1IDI5MC42NTYgOTIuOTk2QzI5MC44NzcgOTMuNTEzIDI5MSA5NC4wODE1IDI5MSA5NC42NzgyIDI5MSA5Ny4wNjUxIDI4OS4wMzggOTkgMjg2LjYxNyA5OUwyNDAuMzgzIDk5QzIzNy45NjMgOTkgMjM2IDk3LjA2NTEgMjM2IDk0LjY3ODIgMjM2IDk0LjM3OTkgMjM2LjAzMSA5NC4wODg2IDIzNi4wODkgOTMuODA3MkwyMzYuMzM4IDkzLjAxNjIgMjM2Ljg1OCA5Mi4xMzE0IDI1OS40NzMgNTMuNjI5NCAyNTkuOTYxIDUyLjc5ODUgMjYwLjQwNyA1Mi4yNjU4QzI2MS4yIDUxLjQ4MzcgMjYyLjI5NiA1MSAyNjMuNTA2IDUxWk0yNjMuNTg2IDY2LjAxODNDMjYwLjczNyA2Ni4wMTgzIDI1OS4zMTMgNjcuMTI0NSAyNTkuMzEzIDY5LjMzNyAyNTkuMzEzIDY5LjYxMDIgMjU5LjMzMiA2OS44NjA4IDI1OS4zNzEgNzAuMDg4N0wyNjEuNzk1IDg0LjAxNjEgMjY1LjM4IDg0LjAxNjEgMjY3LjgyMSA2OS43NDc1QzI2Ny44NiA2OS43MzA5IDI2Ny44NzkgNjkuNTg3NyAyNjcuODc5IDY5LjMxNzkgMjY3Ljg3OSA2Ny4xMTgyIDI2Ni40NDggNjYuMDE4MyAyNjMuNTg2IDY2LjAxODNaTTI2My41NzYgODYuMDU0N0MyNjEuMDQ5IDg2LjA1NDcgMjU5Ljc4NiA4Ny4zMDA1IDI1OS43ODYgODkuNzkyMSAyNTkuNzg2IDkyLjI4MzcgMjYxLjA0OSA5My41Mjk1IDI2My41NzYgOTMuNTI5NSAyNjYuMTE2IDkzLjUyOTUgMjY3LjM4NyA5Mi4yODM3IDI2Ny4zODcgODkuNzkyMSAyNjcuMzg3IDg3LjMwMDUgMjY2LjExNiA4Ni4wNTQ3IDI2My41NzYgODYuMDU0N1oiIGZpbGw9IiNGRkU1MDAiIGZpbGwtcnVsZT0iZXZlbm9kZCIvPjwvZz48L3N2Zz4=) no-repeat 1rem/1.8rem, #b32121;
    padding: 1rem 1rem 1rem 3.7rem;
    color: white;
}

    .blazor-error-boundary::after {
        content: "An error has occurred."
    }

.darker-border-checkbox.form-check-input {
    border-color: #929292;
}

.form-floating > .form-control-plaintext::placeholder, .form-floating > .form-control::placeholder {
    color: var(--bs-secondary-color);
    text-align: end;
}

.form-floating > .form-control-plaintext:focus::placeholder, .form-floating > .form-control:focus::placeholder {
    text-align: start;
}

/* 频道页 banner 贴边: scoped CSS (WeiCityShell.razor.css) 有 hot-reload hash 不匹配问题,
   关键覆盖放全局确保始终生效 */
.wc-app-shell--column-page .wc-app-shell__main,
.wc-app-shell--column-page .wc-app-shell__main.wc-app-shell__main--headerless {
    padding: 0 0 calc(102px + env(safe-area-inset-bottom, 0px)) 0 !important;
    gap: 0 !important;
}

.wc-app-shell--column-page .wc-app-shell__frame {
    padding: 0 !important;
    margin: 0 !important;
}

.wc-app-shell--column-page .wc-app-shell__layout {
    gap: 0 !important;
}

.wc-public-page__hero {
    padding: 0 !important;
}

.wc-channel-banner__upload {
    width: 100%;
    height: 100%;
}

.wc-channel-banner__upload img {
    width: 100% !important;
    height: 100% !important;
    object-fit: contain !important;
}

.wc-channel-banner__upload .mud-image {
    width: 100% !important;
    height: 100% !important;
}

.wc-channel-banner__upload .card,
.wc-channel-banner__upload .mud-card,
.wc-channel-banner__upload .mud-paper {
    height: 100% !important;
    border-radius: 0 !important;
}

.wc-channel-banner__upload-hint {
    position: absolute;
    bottom: 14px;
    right: 20px;
    z-index: 10;
    padding: 10px 20px;
    border-radius: 10px;
    font-size: 1rem;
    font-weight: 700;
    color: #ffffff;
    background: #000000;
    border: 2px solid #ffffff;
    box-shadow: 0 4px 20px rgba(0, 0, 0, 0.6);
    white-space: nowrap;
    pointer-events: none;
}

@media (min-width: 981px) {
    .wc-app-shell--column-page .wc-app-shell__main,
    .wc-app-shell--column-page .wc-app-shell__main.wc-app-shell__main--headerless {
        padding: 0 0 28px 0 !important;
    }
}

@media (max-width: 640px) {
    .wc-app-shell--column-page .wc-app-shell__main,
    .wc-app-shell--column-page .wc-app-shell__main.wc-app-shell__main--headerless {
        padding: 0 0 calc(96px + env(safe-area-inset-bottom, 0px)) 0 !important;
    }
}

/* Phoenix theme (theme.css) 给所有 <section> 元素加了默认 padding:
   - 默认 padding-top/bottom: 2.5rem (40px)
   - 992px+: padding-top/bottom: 3.5rem (56px)
   wc-public-page__surface 是 wc-public-page 内部布局区块,自己控制间距,
   不需要 phoenix 默认 section padding,否则会在 banner / breadcrumb / 卡片
   之间堆出 56px+56px 的大块空白(详见 CTO 反馈的聚合栏目页). */
.wc-public-page__surface {
    padding-top: 0;
    padding-bottom: 0;
}

/* 登录/注册页 card 样式放全局, 不放 LoginOrRegister.razor.css —
   scoped CSS 在 hot reload 时 selector 上的 [b-hash] 跟 HTML 老 hash 经常对不上, 导致 card 背景/边框/圆角全部消失,
   表单裸贴在黑色背景上 (用户反馈)。
   走 var token 模式 (跟 --wc-btn-* 一致), root 给 dark 默认值, [data-bs-theme=light] 覆盖 token, 不靠叠 selector */
:root {
    --wc-auth-card-bg: rgba(255, 255, 255, 0.045);
    --wc-auth-card-border: rgba(255, 255, 255, 0.12);
    --wc-auth-card-shadow: 0 24px 64px -24px rgba(0, 0, 0, 0.75),
                           0 0 0 1px rgba(255, 255, 255, 0.02);
}

[data-bs-theme="light"] {
    --wc-auth-card-bg: rgba(255, 255, 255, 0.92);
    --wc-auth-card-border: rgba(24, 34, 48, 0.10);
    --wc-auth-card-shadow: 0 18px 48px -22px rgba(15, 23, 42, 0.18);
}

.wc-auth-page--minimal {
    display: flex;
    justify-content: center;
    align-items: flex-start;
    min-height: calc(100vh - 40px);
    min-height: calc(100dvh - 40px);
    padding: clamp(40px, 8vh, 96px) 16px 48px;
}

.wc-auth-page__card {
    width: 100%;
    max-width: 460px;
    margin: 0 auto;
    display: grid;
    gap: 20px;
    padding: clamp(28px, 4vw, 40px);
    border: 1px solid var(--wc-auth-card-border);
    border-radius: 24px;
    background: var(--wc-auth-card-bg);
    box-shadow: var(--wc-auth-card-shadow);
    backdrop-filter: blur(8px);
}

@media (max-width: 640px) {
    .wc-auth-page--minimal {
        min-height: auto;
        padding: 24px 12px 32px;
    }

    .wc-auth-page__card {
        gap: 18px;
        padding: 20px;
        border-radius: 18px;
    }
}

/* _SubmitButtonGroup (商家文档/频道编辑底部 "保存并发布 / 草稿 / 删除" 按钮组) 样式放全局.
   原 .razor.css 用 ::deep 写法 (scoped), hot reload 后 b-hash 失配 → 按钮变成裸文字.
   组件 ClassName 是 btn btn-sm + wc-submit-button*, 没有 .btn-primary 等 color modifier, app.css 上方 btn 全局规则也不命中.
   这里直接给 .wc-submit-button 写全局规则, 不带 ::deep, 永远生效. */

/* group 容器规则也走全局: scoped 失效时 display:flex / justify-content:center 跟着失效, 按钮退化成 inline 元素靠左对齐,
   表现就是 "保存并发布" 偏左不居中. 全局兜底后不管 scope 在不在都居中. */
.wc-submit-button-group {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 0.9rem;
}

.wc-submit-button-group--fullwidth {
    align-items: stretch;
    flex-direction: column;
}

.wc-submit-button {
    min-width: clamp(9.75rem, 18vw, 13rem);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    padding: 0.8rem 1.35rem;
    border-radius: 999px;
    border: 1px solid rgba(168, 182, 204, 0.24);
    background: linear-gradient(180deg, rgba(27, 34, 45, 0.96) 0%, rgba(14, 19, 28, 0.99) 100%);
    color: #f6f8fc !important;
    font-weight: 700;
    letter-spacing: 0.01em;
    box-shadow: 0 14px 28px rgba(4, 8, 16, 0.18);
    transition: transform 0.16s ease, box-shadow 0.16s ease, border-color 0.16s ease, background 0.16s ease;
}

.wc-submit-button > span {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    line-height: 1.1;
}

.wc-submit-button i {
    display: block;
    flex: 0 0 auto;
    margin: 0 !important;
    line-height: 1;
}

.wc-submit-button:hover,
.wc-submit-button:focus-visible {
    transform: translateY(-1px);
    box-shadow: 0 18px 32px rgba(4, 8, 16, 0.22);
}

.wc-submit-button--draft {
    border-color: rgba(171, 123, 130, 0.34);
    background: linear-gradient(180deg, rgba(91, 59, 64, 0.96) 0%, rgba(53, 35, 39, 0.99) 100%);
}

.wc-submit-button--draft:hover,
.wc-submit-button--draft:focus-visible {
    border-color: rgba(198, 147, 155, 0.42);
    background: linear-gradient(180deg, rgba(108, 70, 76, 0.98) 0%, rgba(65, 43, 47, 1) 100%);
}

.wc-submit-button--delete {
    border-color: rgba(145, 159, 182, 0.24);
    background: linear-gradient(180deg, rgba(20, 25, 35, 0.96) 0%, rgba(10, 14, 22, 0.99) 100%);
}

.wc-submit-button--delete:hover,
.wc-submit-button--delete:focus-visible {
    border-color: rgba(185, 198, 219, 0.3);
    background: linear-gradient(180deg, rgba(30, 36, 48, 0.98) 0%, rgba(16, 21, 31, 1) 100%);
}

.wc-submit-button--publish {
    border-color: rgba(120, 188, 131, 0.36);
    background: linear-gradient(180deg, rgba(31, 67, 44, 0.96) 0%, rgba(17, 39, 27, 0.99) 100%);
    color: #9be58d !important;
}

.wc-submit-button--publish:hover,
.wc-submit-button--publish:focus-visible {
    border-color: rgba(144, 216, 155, 0.44);
    background: linear-gradient(180deg, rgba(39, 82, 54, 0.98) 0%, rgba(20, 47, 32, 1) 100%);
}

[data-bs-theme="light"] .wc-submit-button {
    border-color: rgba(15, 23, 42, 0.14);
    background: linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 250, 253, 0.96) 100%);
    color: #0f172a !important;
    box-shadow: 0 6px 14px rgba(15, 23, 42, 0.08);
}

[data-bs-theme="light"] .wc-submit-button:hover,
[data-bs-theme="light"] .wc-submit-button:focus-visible {
    box-shadow: 0 10px 20px rgba(15, 23, 42, 0.12);
}

[data-bs-theme="light"] .wc-submit-button--draft {
    border-color: rgba(184, 106, 78, 0.32);
    background: linear-gradient(180deg, rgba(255, 244, 238, 0.98) 0%, rgba(252, 232, 224, 0.96) 100%);
    color: #8a4428 !important;
}

[data-bs-theme="light"] .wc-submit-button--draft:hover,
[data-bs-theme="light"] .wc-submit-button--draft:focus-visible {
    border-color: rgba(184, 106, 78, 0.46);
    background: linear-gradient(180deg, rgba(252, 232, 224, 1) 0%, rgba(248, 218, 204, 1) 100%);
}

[data-bs-theme="light"] .wc-submit-button--delete {
    border-color: rgba(190, 18, 60, 0.26);
    background: linear-gradient(180deg, rgba(255, 245, 247, 0.98) 0%, rgba(254, 232, 236, 0.96) 100%);
    color: #be123c !important;
}

[data-bs-theme="light"] .wc-submit-button--delete:hover,
[data-bs-theme="light"] .wc-submit-button--delete:focus-visible {
    border-color: rgba(190, 18, 60, 0.4);
    background: linear-gradient(180deg, rgba(254, 232, 236, 1) 0%, rgba(252, 218, 224, 1) 100%);
}

[data-bs-theme="light"] .wc-submit-button--publish {
    border-color: rgba(31, 122, 61, 0.36);
    background: linear-gradient(180deg, rgba(232, 248, 237, 0.98) 0%, rgba(214, 240, 222, 0.96) 100%);
    color: #1f7a3d !important;
}

[data-bs-theme="light"] .wc-submit-button--publish:hover,
[data-bs-theme="light"] .wc-submit-button--publish:focus-visible {
    border-color: rgba(31, 122, 61, 0.48);
    background: linear-gradient(180deg, rgba(214, 240, 222, 1) 0%, rgba(196, 232, 208, 1) 100%);
}

.wc-submit-button-group--fullwidth .wc-submit-button {
    min-width: 0;
    width: 100%;
}

@media (min-width: 768px) {
    .wc-submit-button-group:not(.wc-submit-button-group--fullwidth) {
        flex-wrap: nowrap;
    }

    .wc-submit-button-group:not(.wc-submit-button-group--fullwidth) .wc-submit-button {
        flex: 1 1 0;
        min-width: 0;
        width: 100%;
    }

    /* 单按钮场景 (只剩一个 "保存并发布") 不撑满父容器, 收成紧凑胶囊居中, 否则按钮变一整条横幅, 视觉违和.
       group 默认 justify-content: center, only-child + flex:0 让它在 center 居中显示.
       min-width 从 clamp(9.75rem, 18vw, 13rem) 收到 8rem (≈128px), 比多按钮场景更紧凑符合"一个按钮"的视觉权重. */
    .wc-submit-button-group:not(.wc-submit-button-group--fullwidth) .wc-submit-button:only-child {
        flex: 0 0 auto;
        width: auto;
        min-width: 8rem;
        padding: 0.65rem 1.4rem;
    }
}

@media (max-width: 767.98px) {
    .wc-submit-button-group {
        align-items: stretch;
        flex-direction: column;
    }

    .wc-submit-button {
        min-width: 0;
        width: 100%;
    }
}

/* 原生 <select> 展开后, <option> 由 OS 渲染, 背景默认白色;
   但 color 会继承父级 form-select 的颜色——在 dark 主题下父级是白色, 导致白底白字看不清.
   Ph117 主题没给 option 显式色, 这里给个跨主题安全的根 selector 补回去. */
select option,
select optgroup {
    color: #182230;
    background-color: #ffffff;
}
