/* ============================================================================
 * uw-overrides.css
 * 《放置：宇宙大战》卡通风格双主题 —— 覆盖对比度 + 签到弹窗 + Swal/Modal 弹窗
 *
 * 本文件从 uw-theme.css 拆分而来（2026-11-03），原始单文件 5204 行。
 * 拆分后由 index.html 逐个 <link> 引入，加载顺序必须保持变量文件在最前。
 * 所有规则只引用 uw-variables.css 里定义的 CSS 变量，不硬编码颜色。
 * ==========================================================================*/

/* ============================================================================
 * 覆盖 universe-war.css 中的硬编码低对比度组件
 * （uw-theme.css 在 universe-war.css 之后加载，此处同选择器新规则胜出；两主题均适配）
 * ==========================================================================*/

/* Tag 系列：universe-war.css 用"淡色底 + 亮色字"，浅底亮字对比度 1.8-2.4:1 */
.uw-tag-success { color: var(--uw-color-success); border-color: var(--uw-color-success); }
.uw-tag-danger   { color: var(--uw-color-danger);  border-color: var(--uw-color-danger); }
.uw-tag-warning  { color: var(--uw-color-warning); border-color: var(--uw-color-warning); }
.uw-tag-muted    { color: var(--uw-color-text-muted); border-color: var(--uw-color-text-muted); }

/* Error 提示：淡红底 + #f44336 亮红字 3.53:1 → 用深红变量 4.71:1 */
.uw-error {
    color: var(--uw-color-danger);
    border-left-color: var(--uw-color-danger);
}

/* 交易行标签：硬编码亮色边框/文字，全部改走变量 */
.uw-trade-tag.type-resource  { border-color: var(--uw-color-success); color: var(--uw-color-success); }
.uw-trade-tag.type-ship      { border-color: var(--uw-color-accent);  color: var(--uw-color-accent); }
.uw-trade-tag.type-blueprint { border-color: var(--uw-color-accent-dim); color: var(--uw-color-warning); }
.uw-trade-tag.type-part      { border-color: var(--uw-color-info);    color: var(--uw-color-info); }
.uw-trade-tag.type-debris    { border-color: var(--uw-color-text-secondary); color: var(--uw-color-text-secondary); }

/* 势力徽章 rank-1/2/3：硬编码 #6a9c79/#4d8ac9/#26a6cf，全部改走变量 */
.uw-faction-rank-badge.rank-1 { color: var(--uw-color-success); border-color: var(--uw-color-success); }
.uw-faction-rank-badge.rank-2 { color: var(--uw-color-info);    border-color: var(--uw-color-info); }
.uw-faction-rank-badge.rank-3 { color: var(--uw-color-warning); border-color: var(--uw-color-warning); }

/* 排行榜领奖台：原先这里靠给 rank 大字改色来保证对比度（24px accent 蓝压浅蓝底只有 1.75:1），
   现在名次换成了 UwRankBadge，那三条规则的目标元素已不存在，故删掉。
   改为把卡片描边对齐徽章本身的金属色 —— 之前 .gold 用的是青蓝 #35d6ff，
   配红金徽章明显串味。渐变只改色相，方向与透明度沿用原设计。 */
.uw-leaderboard-podium-item.gold {
    border-color: #E8A33D;
    background: linear-gradient(180deg, rgba(232, 163, 61, 0.16), transparent);
}
.uw-leaderboard-podium-item.silver {
    border-color: #85B7EB;
    background: linear-gradient(180deg, rgba(133, 183, 235, 0.14), transparent);
}
.uw-leaderboard-podium-item.bronze {
    border-color: #BA7517;
    background: linear-gradient(180deg, rgba(186, 117, 23, 0.14), transparent);
}

/* 存在状态选项：淡蓝底 + accent 蓝字 1.79:1，改用深棕字（两主题对比度 ≥ 5:1） */
.uw-presence-option.active { color: var(--uw-color-text-primary); }

/* 推荐徽章：白渐变底 + #060b16 硬编码字 1.66:1（在白天蓝渐变按钮上几乎不可读） */
.uw-badge-recommend { color: var(--uw-btn-text); }

/* 交易行筛选按钮激活态：accent-dim 橙金底 + 深棕字（两主题都 8+:1） */
.uw-trade-filter-btn.active { color: var(--uw-color-text-primary); }

/* 商店卡片功能型：#4fd8f5 淡青条 border-top 在奶油底上几乎不可见，改用主蓝 */
.uw-shop-card.type-functional { border-top-color: var(--uw-color-accent); }

/* 星系概览/会员徽章/舰队数：硬编码 #d4af37 金色字在白底 1.44:1，改用 warning 深金 */
.uw-galaxy-fleet-overview-title,
.uw-fleet-galaxy-count,
.uw-membership-badge { color: var(--uw-color-warning); }

/* 采集场升级中边框：#f5a623 亮橙边框，改用 warning 变量 */
.uw-galaxy-collector-card.collector-upgrading { border-left-color: var(--uw-color-warning); }

/* 舰队穿梭中：accent 蓝字压白底 2.4:1，改用深棕字保证可读 */
.uw-fleet-state.state-jumping { color: var(--uw-color-text-primary); }

/* 表头文字 3.78:1 → 加深到 primary 6.21:1 */
.uw-table th { color: var(--uw-color-text-primary); font-weight: 700; }

/* 导航组头展开态 3.78:1 → primary 6.21:1 */
.uw-nav-group.expanded > .uw-nav-group-header { color: var(--uw-color-text-primary); }

/* 顶栏主标题：accent 蓝 4.10:1 卡 AA 边缘 → primary 6.21:1 保证可读 */
.uw-topbar-title { color: var(--uw-color-text-primary); }

/* 顶栏副标题（10px 小字）3.55:1 → primary 6.21:1 */
.uw-topbar-sub { color: var(--uw-color-text-primary); }

/* 主题切换器选项激活态 3.78:1 → primary 6.21:1 */
.uw-theme-opt.active { color: var(--uw-color-text-primary); }

/* 页面标题：accent 蓝 18px 4.33:1 卡 AA 边缘 → 深棕 6.55:1 更稳（保留下边框作为品牌色点缀） */
.uw-page-title { color: var(--uw-color-text-primary); font-weight: 700; }

/* 我方领地标签：uw-theme 把它改浅底后，universe-war 里硬编码的浅色字（bg-primary）压浅底 1.07:1 几乎不可见 */
.uw-tag-owned { color: var(--uw-color-success); border-color: var(--uw-color-success); }

/* 我的母星标签：accent-dim 橙金底 + 浅色字（bg-primary）压橙金 1.07:1，改用深棕字 9.6:1 */
.uw-tag-mother { color: var(--uw-color-text-primary); border-color: var(--uw-color-accent-dim); }

/* 星球岩石标签：原 3.94:1 未达 AA，改用深棕主字 */
.uw-tag-rocky { color: var(--uw-color-text-primary); }

/* 社交页标签激活态：accent 蓝字 4.38:1 卡 AA 边缘，改主字深棕 */
.uw-social-tab.active { color: var(--uw-color-text-primary); }

/* 签到统计值：accent-dim 橙金 4.10:1 卡 AA，改深棕主字 */
.uw-signin-stat-value { color: var(--uw-color-text-primary); }
.uw-signin-stat-value.pending { color: var(--uw-color-text-secondary); }

/* 顶部签到入口：复用邮件图标样式，红点提示今日未签 */
.uw-topbar-signin { position: relative; }

/* 顶栏赛季入口（2026-10-09 由底部 Dock「活动-赛季」迁入）：
   胶囊与资源项同款，position:relative 供待领取角标（.uw-badge）绝对定位挂右上角；
   hover 微动效提示可点（与资源胶囊一致的反馈）。 */
.uw-topbar-season { position: relative; cursor: pointer; }
.uw-topbar-season:hover { transform: translateY(-1px); border-color: var(--uw-color-accent); }
.uw-season-badge { font-weight: 800; }

/* 顶栏 PvP/PvE 模式徽标（2026-10-18 PvP/PvE 模式方案）：
   和平（PvE）= 绿色盾牌常亮；交战（PvP）= 红色双剑 + 剩余倒计时 + 呼吸光圈提示风险。
   配色统一走主题变量（白天/黑夜双主题各自取值），保证对比度。 */
.uw-topbar-pvp { position: relative; cursor: help; }
.uw-topbar-pvp .uw-resource-label { font-weight: 700; }
.uw-topbar-pvp .uw-resource-value { font-variant-numeric: tabular-nums; }
.uw-topbar-pvp.is-peace { color: var(--uw-color-success); border-color: var(--uw-color-success); }
.uw-topbar-pvp.is-war {
    color: var(--uw-color-danger);
    border-color: var(--uw-color-danger);
    background: rgba(255, 107, 107, 0.10);
    animation: uw-pvp-pulse 2.4s ease-in-out infinite;
}
@keyframes uw-pvp-pulse {
    0%, 100% { box-shadow: 0 0 0 0 rgba(255, 107, 107, 0); }
    50% { box-shadow: 0 0 0 3px rgba(255, 107, 107, 0.20); }
}
/* 降低动效偏好时关闭呼吸，仅保留配色区分 */
@media (prefers-reduced-motion: reduce) {
    .uw-topbar-pvp.is-war { animation: none; }
}

/* 顶部签到弹窗：容纳 30 天奖励网格 */
.uw-modal-signin { width: 720px; }
.uw-modal-signin h4 { margin: 0 0 12px; color: var(--uw-color-accent); }
.uw-modal-signin .uw-signin-panel { max-height: 70vh; overflow-y: auto; }

/* 【2026-10-19 修复】手机/平板上签到弹窗高 711px、内滚内容 1163px，主操作「立即签到」
   位于内滚区最底部（初始 y=1268，视口 844 之外）→ 打开弹窗第一屏看不到主按钮，要先滑 ~590px。
   把动作区吸底固定，进弹窗即可点。 */
html[data-device="mobile"] .uw-modal-signin .uw-signin-action {
    position: sticky;
    bottom: 0;
    z-index: 2;
    margin-top: 8px;
    padding: 8px 0 4px;
    background: var(--uw-color-bg-secondary);
    border-top: 1px solid var(--uw-color-border-dim);
}

/* 星系缩放按钮：accent-dim 橙金字压浅底 1.72:1，改用深棕主字保证可读 */
.uw-galaxy-zoom-controls .uw-galaxy-zoom-btn {
    color: var(--uw-color-text-primary);
    background-color: var(--uw-color-bg-primary);
    border-color: var(--uw-color-border-dim);
}
.uw-galaxy-zoom-controls .uw-galaxy-zoom-btn:hover {
    background-color: var(--uw-color-accent);
    color: var(--uw-color-bg-primary);
    border-color: var(--uw-color-accent);
}

/* 教程提示 pill：硬编码 rgba(6,11,22,.94) 深黑底在白天主题下与深棕字仅 1.51:1，几乎不可见 */
.uw-tutorial-pill {
    background-color: var(--uw-color-bg-primary);
    border-color: var(--uw-color-accent);
    color: var(--uw-color-text-primary);
    box-shadow: 0 4px 14px var(--uw-shade), 0 0 14px rgba(53, 214, 255, 0.15);
}
.uw-tutorial-pill:hover { border-color: var(--uw-color-accent-hover); }
.uw-tutorial-pill-title { color: var(--uw-color-accent); }
.uw-tutorial-pill-progress { color: var(--uw-color-text-secondary); }

/* 新手引导展开卡片：硬编码 rgba(6,11,22,.95) 深黑底在白天主题下与深棕字对比度不足 */
.uw-tutorial-card {
    background-color: var(--uw-color-bg-primary);
    border-color: var(--uw-color-accent);
    color: var(--uw-color-text-primary);
    box-shadow: 0 4px 20px var(--uw-shade), 0 0 12px var(--uw-color-glow);
    backdrop-filter: blur(6px);
}
/* 徽章：白天用奶油底 + 深棕字；夜间用同色系深底 + 亮字，保证 6:1+ 对比度 */
html:not([data-theme="night"]) .uw-tutorial-badge {
    background-color: var(--uw-color-bg-secondary);
    color: var(--uw-color-text-primary);
    border: 1px solid var(--uw-color-accent-dim);
}
html[data-theme="night"] .uw-tutorial-badge {
    background-color: var(--uw-color-bg-tertiary);
    color: var(--uw-color-text-primary);
    border: 1px solid var(--uw-color-accent);
}
/* hint 提示条：走当前主题次级面板底色 */
.uw-tutorial-hint {
    background-color: var(--uw-color-bg-secondary);
    border-left-color: var(--uw-color-accent-dim);
    color: var(--uw-color-text-secondary);
}

/* ============================================================================
 * 覆盖 Swal / Bootstrap Modal 弹窗样式（universe-war.css 硬编码深空蓝底 + #545454 灰字）
 * 问题：白天主题下弹窗仍深底 + 文字用 Bootstrap 默认 #545454 灰，实测 2.9:1 未达 AA；
 *      夜间主题下 #d9eaf5 亮蓝字压深底也 OK，但按钮/图标色硬编码导致视觉不统一。
 * 修复：白天主题切换到奶油底 + 深棕字；夜间保留深底但用主题变量统一；文字全部走 text-primary。
 * ==========================================================================*/

/* 通用：正文/标题/内容色 —— 全部走主字色，稳过 AA 4.5:1 */
.swal2-title,
.swal2-html-container,
.swal2-content,
.swal2-actions .btn { color: var(--uw-color-text-primary); }

/* Swal 图标（圆圈内数字/问号）：用主字色，与背景对比度稳定 */
.swal2-icon-content { color: var(--uw-color-text-primary) !important; }
.swal2-icon { border-color: var(--uw-color-accent) !important; }

/* 白天主题（奶油）：弹窗整体换成奶油底风格 */
html:not([data-theme="night"]) .modal-content {
    background: linear-gradient(180deg, #FFFFFF 0%, #FFF7E6 100%);
    border-color: var(--uw-color-accent);
    box-shadow: 0 0 24px var(--uw-shade), 0 0 4px var(--uw-color-glow);
}
html:not([data-theme="night"]) .swal2-popup {
    background: linear-gradient(180deg, #FFFFFF 0%, #FFF7E6 100%) !important;
    border-color: var(--uw-color-accent);
}
html:not([data-theme="night"]) .modal-backdrop { background-color: #2a1e0e; opacity: .42 !important; }

/* 白天主题按钮：确认钮用主色蓝底白字（按钮白字 5.38:1）；取消钮浅咖底主字 */
html:not([data-theme="night"]) .swal2-confirm,
html:not([data-theme="night"]) .swal2-actions .btn-primary {
    background: linear-gradient(180deg, var(--uw-color-accent-hover) 0%, var(--uw-color-accent) 100%) !important;
    border-color: var(--uw-color-accent);
    color: var(--uw-btn-text) !important;
}
html:not([data-theme="night"]) .swal2-cancel,
html:not([data-theme="night"]) .swal2-actions .btn-secondary {
    background: linear-gradient(180deg, #FFFFFF 0%, #FFF1D6 100%) !important;
    border-color: var(--uw-color-border-dim);
    color: var(--uw-color-text-primary) !important;
}

/* 夜间主题按钮：使用亮色 accent 底 + 深色字（避免亮底亮字） */
html[data-theme="night"] .swal2-confirm,
html[data-theme="night"] .swal2-actions .btn-primary {
    background: linear-gradient(180deg, var(--uw-color-accent-hover) 0%, var(--uw-color-accent) 100%) !important;
    border-color: var(--uw-color-accent-hover);
    color: #1a1440 !important;
}
html[data-theme="night"] .swal2-cancel,
html[data-theme="night"] .swal2-actions .btn-secondary {
    background: linear-gradient(180deg, var(--uw-color-bg-secondary) 0%, var(--uw-color-bg-tertiary) 100%) !important;
    border-color: var(--uw-color-border-dim);
    color: var(--uw-color-text-primary) !important;
}

/* 弹窗关闭按钮（右上 X） */
.swal2-close {
    color: var(--uw-color-text-secondary) !important;
    opacity: 1;
}
.swal2-close:hover { color: var(--uw-color-text-primary) !important; }

/* ==========================================================
   弹窗（BootstrapBlazor Dialog）配色跟随 uw 双主题
   修复：index.html 固定 data-bs-theme="dark"，Bootstrap 弹窗的
   标题栏/底栏/内容底始终走夜间配色，与奶油白天主题脱节。
   用 uw 双主题变量覆盖各区域（两套主题共用变量名，自动适配）。
   ========================================================== */
.modal .modal-content {
    background: var(--uw-color-bg-tertiary, #FFFFFF);
    color: var(--uw-color-text-primary, #3D2E1E);
    border: 1px solid var(--uw-color-border-dim, #F0D9AE);
}
.modal .modal-header {
    background: var(--uw-color-bg-secondary, #FFEFC9);
    color: var(--uw-color-text-primary, #3D2E1E);
    border-bottom: 1px solid var(--uw-color-border-dim, #F0D9AE);
}
.modal .modal-title {
    color: var(--uw-color-text-primary, #3D2E1E);
}
.modal .modal-footer {
    background: var(--uw-color-bg-secondary, #FFEFC9);
    border-top: 1px solid var(--uw-color-border-dim, #F0D9AE);
}
/* 深色 bs 主题给关闭按钮加了反色滤镜，奶油弹窗上需还原成深色 X */
.modal .btn-close {
    filter: none;
    opacity: .75;
}
.modal .btn-close:hover { opacity: 1; }

/* ==========================================================
   WinBox 浮动窗口（Client 2.0 P2：Dock 页面窗口）主题端点色
   - 白天：蜜糖浅金渐变标题栏 + 深可可文字（配奶油内容区）
   - 夜晚：深靛蓝渐变标题栏 + 白色文字（配深空内容区）
   - 控制图标为白色精灵图：白天在浅金标题栏上压暗保证对比度
   ========================================================== */
:root {
    --uw-winbox-title-a: #FFE2A4;
    --uw-winbox-title-b: #FFC86B;
    --uw-winbox-title-color: #4A3421;
    --uw-winbox-icon-filter: brightness(0.45);
}
html[data-theme="night"] {
    --uw-winbox-title-a: #4A5FD0;
    --uw-winbox-title-b: #333B8F;
    --uw-winbox-title-color: #FFFFFF;
    --uw-winbox-icon-filter: none;
}
.winbox.uw-winbox .wb-control button,
.winbox.uw-winbox .wb-control span {
    filter: var(--uw-winbox-icon-filter);
}

/* ============================================================================
 * 名次徽章（UwRankBadge 组件）—— 底版位图 + 游戏字体叠数字
 * ----------------------------------------------------------------------------
 * 底版来自 wwwroot/img/badges（SenseNova 出图后按连通域切分的 12 档造型）。
 * 数字不烧进图里，交给 --uw-font-tech（Baloo 2 / Quicksand）渲染：
 * 名次是任意整数，只有这样 13 名开外也才用得上、放大也才不糊。
 * 超出 12 档的名次由 --plain 变体回落成纯数字胶囊。
 * ==========================================================================*/
:root {
    /* 数字描边色：刻意不拆双主题 —— 数字压在徽章自己的色面上，
       而徽章位图两套主题共用同一份，描边跟着页面主题变反而会和徽章脱节 */
    --uw-badge-ink: #221A33;

    /* 徽章数字字体：优先 Baloo 2 —— 它是这套字体里笔画最粗、字面最饱满的一款，
       和徽章位图上的卡通描边最搭；Quicksand 偏几何、笔画细，
       缩到榜单行的 30px 会发虚（实测同字号下 Baloo 2 字宽 210.9 / Quicksand 219.6）。
       徽章内数字与超档位胶囊必须共用这一款，否则同一列里第 12 名（徽章）
       和第 13 名（胶囊）的数字字形会明显不一样。 */
    --uw-font-num: "Baloo 2", "Quicksand", "Comic Sans MS", "Microsoft YaHei", sans-serif;
}
