/* 赛势雷达 wall.css — 只读大屏（wall2）。独立样式，不影响主站 style.css / 手机竖屏。 */
:root { --s: 1; --bg: #05070a; --bg2: #0b0f15; --line: #1a2230; --fg: #e8edf3; --mut: #7f8b9c;
  --up: #22e07a; --down: #ff4d4f; --gold: #ffcc33; --late: #ff9f1a; --blue: #4aa3ff;
  --fs: calc(1.55vw * var(--s)); }
* { box-sizing: border-box; }
html, body { margin: 0; height: 100%; background: var(--bg); color: var(--fg); overflow: hidden;
  font-family: "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "Noto Sans CJK SC", system-ui, sans-serif;
  -webkit-font-smoothing: antialiased; cursor: default; }
.wall { position: fixed; inset: 0; display: flex; flex-direction: column; font-size: var(--fs); }
.up { color: var(--up); } .down { color: var(--down); } .flat { color: var(--fg); } .muted { color: var(--mut); }
.hidden { display: none !important; }
b { font-variant-numeric: tabular-nums; }

/* 顶栏 */
.w-head { display: flex; align-items: center; gap: 2vw; padding: 1.2vh 1.6vw; background: linear-gradient(180deg, #0d131c, #070a0f);
  border-bottom: 2px solid var(--line); min-height: 11vh; }
.w-title { display: flex; flex-direction: column; min-width: 18vw; }
.w-logo { color: var(--mut); font-size: 0.7em; letter-spacing: .2em; }
.w-view { font-size: 1.55em; font-weight: 800; letter-spacing: .04em; }
.w-role { font-size: .8em; color: var(--blue); font-weight: 600; }
.w-stats { flex: 1; display: flex; gap: 2.4vw; justify-content: center; }
.st-card { display: flex; flex-direction: column; align-items: center; padding: .3vh 1.4vw; border-left: 1px solid var(--line); }
.st-card:first-child { border-left: 0; }
.w-stats.st-hidden { display: none; } /* 2026-10-04：持仓视图不显示大号试算合计 */
.st-card .big { font-size: 2.5em; font-weight: 900; line-height: 1.05; border-radius: .2em; padding: 0 .2em; }
.st-card span { font-size: .72em; color: var(--mut); white-space: nowrap; }
.w-clock-box { text-align: right; min-width: 12vw; }
.w-clock { font-size: 1.9em; font-weight: 800; font-variant-numeric: tabular-nums; }
.w-tz { font-size: .6em; color: var(--mut); }

/* 列头与行 */
.w-cols, .w-row { display: grid; align-items: center; column-gap: 1.2vw; padding: 0 1.6vw;
  grid-template-columns: 7.5vw minmax(0, 1fr) 11vw 19vw 8.5vw 13vw; }
body.v-pnl .w-cols, body.v-pnl .w-row { grid-template-columns: 7.5vw minmax(0, 1fr) 11vw 19vw 9vw 13vw; }
.w-cols { color: var(--mut); font-size: .68em; letter-spacing: .1em; height: 4.2vh; border-bottom: 1px solid var(--line); background: var(--bg2); }
.w-cols .c-pnl, .w-cols .c-stake { text-align: right; }
.w-cols .c-score { text-align: center; }
.w-body { flex: 1; overflow: hidden; position: relative; }
.w-track { will-change: transform; transition: opacity .35s; }
.w-track.w-fade { opacity: 0; }
.w-row { min-height: 9.2vh; border-bottom: 1px solid var(--line); position: relative; }
.w-row:nth-child(even) { background: rgba(255,255,255,.018); }
.c-match { display: flex; flex-direction: column; min-width: 0; }
.c-match .lg { color: var(--mut); font-size: .66em; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.c-match .vs { font-size: 1.12em; font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.c-match .vs i { font-style: normal; color: var(--mut); margin: 0 .45em; font-weight: 400; font-size: .8em; }
.c-score { text-align: center; display: flex; flex-direction: column; align-items: center; }
.c-score .sc { font-size: 1.75em; font-weight: 900; display: inline-block; letter-spacing: .04em; }
.c-score .en { font-size: .55em; color: var(--mut); }
.c-min .min { font-size: 1.35em; font-weight: 800; }
.c-min .min.late { color: var(--late); }
.c-time { font-size: 1.05em; color: var(--mut); font-variant-numeric: tabular-nums; }
.c-pick { display: flex; flex-direction: column; min-width: 0; }
.c-pick .pk { font-weight: 700; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.c-pick .wt { color: var(--mut); font-size: .7em; }
.c-stake { text-align: right; color: var(--mut); font-variant-numeric: tabular-nums; }
.c-tag { font-weight: 700; font-size: .9em; }
.c-pnl { text-align: right; display: flex; flex-direction: column; align-items: flex-end; }
.c-pnl .pn { font-size: 1.6em; font-weight: 900; border-radius: .2em; padding: 0 .15em; }
.c-pnl .tg { font-size: .55em; color: var(--mut); }
.w-row.crown-miss { opacity: .55; }
.w-row.crown-miss .c-tag { color: var(--mut) !important; }

/* 分组头：P* 与 S* 分开 */
.w-sec { display: flex; gap: 2vw; align-items: baseline; padding: 1vh 1.6vw .6vh; background: #0e1520; border-bottom: 1px solid var(--line);
  border-top: 2px solid #1f2b3d; font-size: .8em; color: var(--mut); }
.w-sec .s-name { color: var(--blue); font-weight: 800; font-size: 1.15em; }
.w-sec b { color: var(--fg); font-size: 1.1em; }
.w-sec b.up { color: var(--up); } .w-sec b.down { color: var(--down); }
.w-empty { padding: 4vh 1.6vw; color: var(--mut); font-size: 1.2em; text-align: center; }

/* 底栏 */
.w-foot { display: flex; justify-content: space-between; gap: 1vw; padding: .6vh 1.6vw; font-size: .55em; color: var(--mut);
  border-top: 1px solid var(--line); background: var(--bg2); }
.w-src.stale { color: var(--late); font-weight: 700; }
.w-sound { margin-left: 1vw; font-size: 1.2em; line-height: 1; background: transparent; color: var(--fg); border: 1px solid var(--line);
  border-radius: .4em; padding: .05em .4em; cursor: pointer; opacity: .55; vertical-align: middle; }
.w-sound:hover, .w-sound.on { opacity: 1; }
.w-gate { position: fixed; inset: 0; display: flex; align-items: center; justify-content: center; background: rgba(5,7,10,.92); z-index: 30; }
.g-box { text-align: center; max-width: 60vw; } .g-t { font-size: 2em; font-weight: 800; } .g-m { margin-top: 2vh; color: var(--mut); }

/* ── 特效 ── */
/* 进球：金色闪烁 + 比分放大跳动 + 顶部横幅 3 秒 */
.w-row.fx-goal { animation: wGoal .8s ease-in-out 0s 4; }
@keyframes wGoal { 0%,100% { background: rgba(255,204,51,.06); box-shadow: inset 0 0 0 0 rgba(255,204,51,0); }
  50% { background: rgba(255,204,51,.30); box-shadow: inset 0 0 0 3px var(--gold); } }
.sc.fx-bump { animation: wBump .4s ease-out 0s 4; color: var(--gold); }
@keyframes wBump { 0% { transform: scale(1); } 40% { transform: scale(1.55); } 100% { transform: scale(1); } }
.w-row.score-hit .sc { color: var(--gold); }
.w-banner { position: fixed; left: 50%; top: 12.5vh; transform: translate(-50%, -160%); z-index: 20; display: flex; align-items: center; gap: 1.2vw;
  padding: 1.4vh 2.4vw; border-radius: 1vh; background: linear-gradient(90deg, #3a2a00, #6b4d00, #3a2a00); border: 3px solid var(--gold);
  box-shadow: 0 0 4vh rgba(255,204,51,.55); font-size: calc(2vw * var(--s)); font-weight: 800; white-space: nowrap; opacity: 0;
  transition: transform .35s cubic-bezier(.2,1.4,.4,1), opacity .25s; pointer-events: none; max-width: 96vw; overflow: hidden; }
.w-banner.show { transform: translate(-50%, 0); opacity: 1; }
.w-banner .b-tag { background: var(--gold); color: #1a1200; padding: .1em .5em; border-radius: .3em; }
.w-banner .b-lg { font-size: .6em; color: #f5dc8a; font-weight: 600; }
.w-banner .b-sc { font-size: 1.5em; color: var(--gold); font-variant-numeric: tabular-nums; animation: wBump .5s ease-out 0s 3; }
.w-banner .b-min { font-size: .75em; color: #f5dc8a; }
/* 新增盈利：绿色闪光（金额滚动由 JS 完成；+金额 飘字） */
.fx-up { animation: wUp 1.5s ease-out; }
@keyframes wUp { 0% { background: rgba(34,224,122,.45); box-shadow: 0 0 2.5vh rgba(34,224,122,.6); } 100% { background: transparent; box-shadow: none; } }
/* 新增亏损：红色闪一下（克制） */
.fx-down { animation: wDown .7s ease-out; }
@keyframes wDown { 0% { background: rgba(255,77,79,.28); } 100% { background: transparent; } }
.fx-new { animation: wNew 1.6s ease-out; }
@keyframes wNew { 0% { background: rgba(74,163,255,.25); } 100% { background: transparent; } }
.w-fx-layer { position: fixed; inset: 0; pointer-events: none; z-index: 25; }
.w-float { position: fixed; transform: translate(-50%, 0); color: var(--up); font-weight: 900; font-size: calc(2.2vw * var(--s));
  text-shadow: 0 0 1.5vh rgba(34,224,122,.8); animation: wFloat 1.8s ease-out forwards; white-space: nowrap; }
@keyframes wFloat { 0% { opacity: 0; transform: translate(-50%, 0) scale(.8); } 15% { opacity: 1; transform: translate(-50%, -1vh) scale(1.1); }
  100% { opacity: 0; transform: translate(-50%, -9vh) scale(1); } }
/* 临近完场（最后 5 分钟）：呼吸灯 */
.w-row.ft-glow { animation: wBreath 2.4s ease-in-out infinite; }
.w-row.ft-glow.fx-goal { animation: wGoal .8s ease-in-out 0s 4; }
.w-row.ft-glow.fx-up { animation: wUp 1.5s ease-out; }
.w-row.ft-glow.fx-down { animation: wDown .7s ease-out; }
.w-row.ft-glow.fx-new { animation: wNew 1.6s ease-out; }
@keyframes wBreath { 0%,100% { box-shadow: inset .5vw 0 0 0 rgba(255,159,26,.25); background: rgba(255,159,26,.02); }
  50% { box-shadow: inset .5vw 0 0 0 rgba(255,159,26,1); background: rgba(255,159,26,.12); } }
.w-row.late:not(.ft-glow) { box-shadow: inset .3vw 0 0 0 rgba(255,159,26,.55); }
@media (prefers-reduced-motion: reduce) { .w-row.ft-glow { animation: none; box-shadow: inset .5vw 0 0 0 var(--late); } }
@media (max-aspect-ratio: 1/1) { :root { --fs: calc(2.6vw * var(--s)); } .w-cols, .w-row { grid-template-columns: 11vw minmax(0,1fr) 15vw 22vw 0 17vw; } .c-stake { display: none; } }

/* 2026-10-05 canwin：持仓卡「可赢金额」（注额×水位，两位小数）；颜色见下方 canwin-color（金黄） */
.c-pnl .pn.canwin { color: var(--canwin); font-variant-numeric: tabular-nums; }
/* 2026-10-05 canwin-color：未结算可赢=皇冠金黄；已结算 走盘/平注=白、赢=绿、输=红 */
:root { --canwin: #ffc61a; --push: #ffffff; }
.push { color: var(--push); }
.c-tag.push, .c-pnl .pn.push { color: var(--push); }
.c-tag.up, .c-pnl .pn.up { color: var(--up); }
.c-tag.down, .c-pnl .pn.down { color: var(--down); }
/* 2026-10-05 wall7-green：赢利一律绿色——盈利视图标题、试算已赢持仓的「盈利中」小字与行左绿条；已结算赢单/合计/ROI>0 用 .up（绿）。未结算可赢金额仍金黄、走盘白、输红 */
body.v-win #wTitle { color: var(--up); }
.c-pnl .tg.up { color: var(--up); font-weight: 700; }
.w-row.trial-win:not(.late) { box-shadow: inset .3vw 0 0 0 var(--up); }
/* 2026-10-05 wall8-trialgreen：试算已赢（fPnl>0）持仓的可赢金额 = 绿；其他未结算（fPnl<=0）仍金黄 */
.c-pnl .pn.canwin.up { color: var(--up); }
