:root {
  --navy: #0b1f3a;
  --navy-2: #12365f;
  --blue: #1d5fa7;
  --blue-soft: #eaf2fb;
  --paper: #f4f7fa;
  --white: #ffffff;
  --ink: #172033;
  --muted: #5b6573;
  --line: #d9e0e8;
  --gold: #a76f12;
  --gold-bg: #fff8e6;
  --silver: #667085;
  --silver-bg: #f1f3f6;
  --bronze: #92552d;
  --bronze-bg: #fff1e8;
}

* { box-sizing: border-box; }
html { background: var(--paper); }
body { margin: 0; min-height: 100vh; min-height: 100dvh; color: var(--ink); background: var(--paper); font-family: system-ui, -apple-system, "HarmonyOS Sans SC", "Noto Sans CJK SC", "PingFang SC", "Microsoft YaHei", Arial, sans-serif; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
button, input, select { font: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }
.arena-grid { position: fixed; inset: 0; z-index: 20; pointer-events: none; opacity: .5; background: linear-gradient(rgba(130,170,235,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(130,170,235,.05) 1px, transparent 1px); background-size: 42px 42px; mask-image: radial-gradient(ellipse 110% 75% at 50% -10%, #000 35%, transparent 78%); }
main { min-height: 100vh; }

/* 工作台：深色科技风门户 —— 深蓝黑渐变 + 玻璃拟态卡片 + 主题色光晕，文字对比度 ≥4.5:1 */
.workspace-view {
  position: relative;
  min-height: 100vh;
  padding: max(24px, env(safe-area-inset-top)) 18px max(28px, env(safe-area-inset-bottom));
  color: #e8eef7;
  background:
    radial-gradient(900px 420px at 50% -120px, rgba(74,144,255,.16), transparent 65%),
    radial-gradient(700px 380px at 108% 12%, rgba(124,92,255,.10), transparent 60%),
    linear-gradient(165deg, #05080f 0%, #0a1220 55%, #0d1a2c 100%);
}
.workspace-head { display: flex; justify-content: space-between; align-items: flex-start; max-width: 820px; margin: 0 auto; padding-bottom: 18px; border-bottom: 1px solid rgba(140,175,230,.16); }
.workspace-head p { margin: 0 0 6px; color: #7fd0ff; font: 700 10px monospace; letter-spacing: .14em; }
.workspace-head h2 { margin: 0; color: #eef3fb; font: 800 clamp(22px,6vw,32px)/1.15 system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: -.04em; text-shadow: 0 0 26px rgba(90,160,255,.28); }
.workspace-head span { display: block; margin-top: 6px; color: #9fb6d8; font-size: 12.5px; font-weight: 600; }

.workspace-toolbar { display: flex; justify-content: space-between; align-items: center; max-width: 820px; margin: 28px auto 14px; }
.workspace-toolbar-title b { color: #eef3fb; font: 800 clamp(20px,5.5vw,28px)/1.1 system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: -.02em; }
.workspace-toolbar-title small { display: block; margin-top: 4px; color: #9db0ca; font-size: 12.5px; }
.sort-toggle { padding: 7px 14px; border: 1px solid rgba(127,208,255,.4); border-radius: 99px; color: #9fd4ff; background: rgba(127,208,255,.06); font-size: 12px; font-weight: 700; cursor: pointer; transition: all .2s; }
.sort-toggle:hover { background: rgba(127,208,255,.12); border-color: rgba(127,208,255,.65); }
.sort-toggle[data-sorting="1"] { color: #04121f; background: linear-gradient(135deg, #6fd0ff, #3f8cf0); border-color: transparent; box-shadow: 0 0 18px rgba(80,170,255,.35); }

.module-grid { display: grid; max-width: 820px; margin: 0 auto; gap: 12px; }
.module-card {
  position: relative;
  display: flex;
  flex-direction: column;
  overflow: hidden;
  border: 1px solid var(--mc-border, rgba(255,255,255,.10));
  border-radius: 16px;
  padding: 18px 18px 14px;
  text-align: left;
  color: #e8eef7;
  background: linear-gradient(150deg, rgba(255,255,255,.055), rgba(255,255,255,.02));
  box-shadow: 0 10px 30px rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.06);
  transition: transform .15s, box-shadow .15s, border-color .15s;
}
.module-card::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  background: radial-gradient(240px 90px at 16% 0%, var(--mc-glow, rgba(120,170,255,.16)), transparent 70%);
}
.module-card:hover { transform: translateY(-2px); border-color: var(--mc-border, rgba(140,175,230,.5)); box-shadow: 0 16px 40px rgba(0,0,0,.5), 0 0 26px var(--mc-glow, rgba(100,160,255,.14)), inset 0 1px 0 rgba(255,255,255,.08); }
.module-card.sorting { outline: 2px dashed rgba(160,200,255,.6); outline-offset: 2px; }
.module-card.preview { box-shadow: none; }
.module-card.preview .mc-enter { cursor: default; }

.mc-sort { position: absolute; right: 10px; top: 10px; display: flex; gap: 4px; z-index: 2; }
.mc-sort button { width: 28px; height: 28px; border: 1px solid rgba(150,185,235,.28); border-radius: 7px; color: #cfdcf0; background: rgba(16,26,46,.85); box-shadow: 0 1px 4px rgba(0,0,0,.4); font-size: 13px; font-weight: 900; cursor: pointer; }
.mc-sort button:hover { background: #1a2a4d; border-color: rgba(150,185,235,.6); }

.mc-main { display: flex; gap: 14px; align-items: flex-start; }
.mc-icon { flex-shrink: 0; width: 46px; height: 46px; display: flex; align-items: center; justify-content: center; font-size: 23px; background: var(--mc-tint, rgba(255,255,255,.07)); border: 1px solid rgba(255,255,255,.14); border-radius: 13px; box-shadow: 0 0 16px var(--mc-glow, rgba(100,160,255,.10)); }
.mc-body { min-width: 0; }
.mc-body small { display: block; color: var(--mc-accent, #8ab8ff); font: 700 10px monospace; letter-spacing: .12em; margin-bottom: 7px; }
.mc-body h3 { margin: 0 0 5px; color: inherit; font: 900 24px/1 system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: -.03em; }
.mc-body p { margin: 0; color: #aebcd2; font-size: 13px; line-height: 1.55; max-width: 340px; }

.mc-footer { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 14px; padding-top: 12px; border-top: 1px solid rgba(255,255,255,.09); }
.mc-summary { min-width: 0; }
.mc-summary b { display: block; color: #eef4fd; font-size: 13.5px; font-weight: 800; }
.mc-summary span { display: block; color: #a9bcd9; font-size: 12.5px; margin-top: 2px; }
.mc-enter { padding: 7px 16px; border: 0; border-radius: 9px; color: #04122a; background: linear-gradient(135deg, #5ba8ff, #2f7bff); font-size: 12.5px; font-weight: 800; cursor: pointer; white-space: nowrap; transition: filter .2s, transform .1s; box-shadow: 0 4px 14px rgba(0,0,0,.35); }
.mc-enter:hover { filter: brightness(1.12); }
.mc-enter:active { transform: scale(.97); }
.mc-enter.disabled { background: #232b3c; color: #8d99b0; cursor: default; box-shadow: none; }

/* 模块主题：深色玻璃拟态 + 主题色光晕/描边/按钮 */
.module-card.ai-module { --mc-accent: #7fd0ff; --mc-border: rgba(127,208,255,.45); --mc-glow: rgba(90,190,255,.20); --mc-tint: rgba(110,195,255,.16); background: linear-gradient(150deg, rgba(90,190,255,.13), rgba(90,190,255,.03) 60%, rgba(255,255,255,.015)); }
.module-card.ai-module .mc-body p { color: #b5d6ec; }
.module-card.ai-module .mc-summary span { color: #9cc4e0; }
.module-card.ai-module .mc-enter { color: #03141f; background: linear-gradient(135deg, #6fd0ff, #2f96e0); }

.module-card.buzzer-module { --mc-accent: #ffe08a; --mc-border: rgba(255,105,72,.58); --mc-glow: rgba(255,71,52,.24); --mc-tint: rgba(255,92,54,.18); background: linear-gradient(150deg, rgba(178,30,34,.30), rgba(83,17,26,.16) 60%, rgba(255,190,70,.04)); }
.module-card.buzzer-module .mc-body p { color: #efc5b9; }
.module-card.buzzer-module .mc-summary span { color: #dcae9c; }
.module-card.buzzer-module .mc-enter { color: #2a0805; background: linear-gradient(135deg, #ffd36b, #ff6a3d); }

.module-card.exam-module { --mc-accent: #8ab8ff; --mc-border: rgba(120,175,255,.45); --mc-glow: rgba(90,150,255,.18); --mc-tint: rgba(110,168,255,.16); background: linear-gradient(150deg, rgba(96,160,255,.12), rgba(96,160,255,.03) 60%, rgba(255,255,255,.015)); }
.module-card.exam-module .mc-body p { color: #b9cbe8; }
.module-card.exam-module .mc-summary span { color: #9fb8dd; }
.module-card.exam-module .mc-enter { background: linear-gradient(135deg, #5ba8ff, #2f7bff); }

.module-card.monthly-module { --mc-accent: #ffc46b; --mc-border: rgba(255,196,107,.4); --mc-glow: rgba(255,180,80,.16); --mc-tint: rgba(255,190,90,.14); background: linear-gradient(150deg, rgba(255,190,80,.10), rgba(255,190,80,.03) 60%, rgba(255,255,255,.015)); }
.module-card.monthly-module .mc-body p { color: #e0c79a; }
.module-card.monthly-module .mc-summary span { color: #cdb784; }
.module-card.monthly-module .mc-enter { color: #241303; background: linear-gradient(135deg, #ffb64d, #e8930c); }

.module-card.star-module { --mc-accent: #6fe3a0; --mc-border: rgba(111,227,160,.4); --mc-glow: rgba(90,210,150,.16); --mc-tint: rgba(100,215,155,.14); background: linear-gradient(150deg, rgba(90,210,150,.10), rgba(90,210,150,.03) 60%, rgba(255,255,255,.015)); }
.module-card.star-module .mc-body p { color: #a9dcc0; }
.module-card.star-module .mc-summary span { color: #94c9ac; }
.module-card.star-module .mc-enter { color: #032012; background: linear-gradient(135deg, #3fd689, #1f9e5f); }

.module-card.rongzhi-module { --mc-accent: #b3a5ff; --mc-border: rgba(179,165,255,.4); --mc-glow: rgba(140,120,255,.18); --mc-tint: rgba(150,130,255,.16); background: linear-gradient(150deg, rgba(140,120,255,.12), rgba(140,120,255,.03) 60%, rgba(255,255,255,.015)); }
.module-card.rongzhi-module .mc-body p { color: #c4bce8; }
.module-card.rongzhi-module .mc-summary span { color: #b3aad9; }
.module-card.rongzhi-module .mc-enter { color: #f4f1ff; background: linear-gradient(135deg, #6a51e0, #4f3ac2); }

.module-card.work-assets-module { --mc-accent: #e7ba71; --mc-border: rgba(231,186,113,.45); --mc-glow: rgba(218,166,85,.17); --mc-tint: rgba(231,186,113,.14); background: linear-gradient(150deg, rgba(231,186,113,.12), rgba(23,79,60,.08) 64%, rgba(255,255,255,.015)); }
.module-card.work-assets-module .mc-body p { color: #dbc9aa; }
.module-card.work-assets-module .mc-summary span { color: #c9b997; }
.module-card.work-assets-module .mc-enter { color: #20180b; background: linear-gradient(135deg, #efc783, #c98d39); }

.module-card.credit-module { --mc-accent: #9aa3b2; --mc-border: rgba(160,170,190,.35); --mc-glow: rgba(160,175,200,.10); --mc-tint: rgba(160,175,200,.12); background: linear-gradient(150deg, rgba(150,165,195,.09), rgba(150,165,195,.02) 60%, rgba(255,255,255,.01)); border-style: dashed; }
.module-card.credit-module .mc-body p { color: #b9c2d4; }
.module-card.credit-module .mc-summary span { color: #aab4c6; }
.module-card.credit-module .mc-enter { color: #aab4c6; background: linear-gradient(135deg, #39435a, #2a3448); }

.workspace-note { max-width: 820px; margin: 18px auto 0; color: #8f9fb8; text-align: center; font-size: 12px; }
.workspace-view .text-button { border-color: rgba(150,185,235,.35); color: #c4d6ee; }
.workspace-view .text-button:hover { background: rgba(150,185,235,.08); }
.workspace-view footer { color: #7f90ab; }

/* 今日焦点区（F1 欢迎词 + F3 今日一句话 + F4 三级建议卡 + F5 分步引导）：深色玻璃拟态，与 module-card 同语言，数据期变化才重渲染 */
.ws-focus { display: flex; flex-direction: column; gap: 10px; max-width: 820px; margin: 0 auto 16px; }

/* F1 角色化欢迎词：金色欢迎条 */
.ws-greeting-bar {
  padding: 11px 14px;
  border: 1px solid rgba(242,185,75,.28);
  border-left: 4px solid #f2b94b;
  border-radius: 10px;
  color: #ffd98f;
  background: linear-gradient(90deg, rgba(242,185,75,.10), rgba(242,185,75,.03));
  font-size: 13.5px;
  font-weight: 700;
  line-height: 1.6;
}

/* F3 今日一句话：级别色标签 + 文案 + 数据日期 */
.ws-todayline { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 9px 13px; border: 1px solid rgba(140,175,230,.16); border-radius: 10px; background: rgba(255,255,255,.03); font-size: 13px; line-height: 1.55; }
.ws-tl-label { flex: 0 0 auto; padding: 2px 9px; border-radius: 99px; color: #0a1424; background: #9db0ca; font-size: 10px; font-weight: 800; letter-spacing: .04em; }
.ws-tl-text { color: #dce7f5; font-weight: 600; }
.ws-tl-date { margin-left: auto; color: #7f90ab; font-size: 10.5px; white-space: nowrap; }
.ws-todayline.urgent { border-left: 4px solid #ff7a6e; } .ws-todayline.urgent .ws-tl-label { background: #ff7a6e; color: #3d0805; }
.ws-todayline.chance { border-left: 4px solid #f2b94b; } .ws-todayline.chance .ws-tl-label { background: #f2b94b; color: #3a2c05; }
.ws-todayline.growth { border-left: 4px solid #4f8cff; } .ws-todayline.growth .ws-tl-label { background: #4f8cff; color: #04122a; }
.ws-todayline.calm { border-left: 4px solid #3fd689; } .ws-todayline.calm .ws-tl-label { background: #3fd689; color: #032012; }

/* 新增破冰人员通知卡片 */
.ws-new-ice { border: 1px solid rgba(75,200,240,.18); border-left: 4px solid #4bc8f0; border-radius: 10px; background: rgba(75,200,240,.04); cursor: pointer; overflow: hidden; }
.ws-new-ice .ws-card-header { display: flex; align-items: center; gap: 8px; padding: 10px 14px; font-size: 13px; font-weight: 600; color: #b8e2f5; user-select: none; }
.ws-new-ice .ws-card-icon { font-size: 16px; }
.ws-new-ice .ws-card-badge { margin-left: auto; background: #4bc8f0; color: #041826; padding: 1px 9px; border-radius: 99px; font-size: 11px; font-weight: 700; }
.ws-new-ice .ws-card-body { padding: 0 14px 12px; font-size: 12.5px; color: #b0c8dd; }
.ws-new-ice .ws-card-subtitle { color: #7f90ab; font-size: 11px; margin-bottom: 8px; }
.ws-new-ice .ws-ice-person { display: flex; align-items: center; gap: 8px; padding: 5px 8px; border-radius: 6px; background: rgba(255,255,255,.04); margin-bottom: 4px; font-size: 12.5px; }
.ws-new-ice .ws-ice-person .ws-ip-name { color: #dce7f5; font-weight: 600; }
.ws-new-ice .ws-ice-person .ws-ip-dept { color: #7f90ab; font-size: 11px; margin-left: auto; }

/* F4 三级建议卡（最多 3 张，方块本身可点，优先级 urgent > chance > growth） */
.ws-suggestions { display: grid; gap: 10px; }
.ws-sug-card {
  position: relative;
  display: block;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.10);
  border-left: 4px solid #9db0ca;
  border-radius: 12px;
  padding: 13px 14px;
  color: #e8eef7;
  background: linear-gradient(150deg, rgba(255,255,255,.055), rgba(255,255,255,.02));
  box-shadow: 0 8px 22px rgba(0,0,0,.25), inset 0 1px 0 rgba(255,255,255,.05);
  cursor: pointer;
  transition: transform .15s, border-color .15s, box-shadow .15s;
}
.ws-sug-card:hover { transform: translateY(-1px); }
.ws-sug-card:focus-visible { outline: 3px solid #e1bc58; outline-offset: 2px; }
.ws-sug-card.urgent { border-left-color: #ff7a6e; box-shadow: 0 8px 22px rgba(0,0,0,.25), 0 0 22px rgba(255,90,70,.12), inset 0 1px 0 rgba(255,255,255,.05); }
.ws-sug-card.chance { border-left-color: #f2b94b; box-shadow: 0 8px 22px rgba(0,0,0,.25), 0 0 22px rgba(242,185,75,.12), inset 0 1px 0 rgba(255,255,255,.05); }
.ws-sug-card.growth { border-left-color: #4f8cff; box-shadow: 0 8px 22px rgba(0,0,0,.25), 0 0 22px rgba(79,140,255,.14), inset 0 1px 0 rgba(255,255,255,.05); }
.ws-sug-tag { display: inline-block; padding: 2px 9px; border-radius: 99px; font-size: 10px; font-weight: 800; }
.ws-sug-card.urgent .ws-sug-tag { color: #ffb3ab; background: rgba(255,90,70,.14); }
.ws-sug-card.chance .ws-sug-tag { color: #ffd98f; background: rgba(242,185,75,.14); }
.ws-sug-card.growth .ws-sug-tag { color: #9cc2ff; background: rgba(79,140,255,.16); }
.ws-sug-card h4 { margin: 7px 0 3px; color: #f2f6fc; font-size: 14.5px; font-weight: 800; }
.ws-sug-card p { margin: 0; color: #aebcd2; font-size: 12.5px; line-height: 1.6; }
.ws-sug-go { margin-top: 9px; padding: 5px 13px; border: 0; border-radius: 8px; color: #fff; background: linear-gradient(135deg, #5ba8ff, #2f7bff); font-size: 11.5px; font-weight: 800; cursor: pointer; }
.ws-sug-card.urgent .ws-sug-go { background: linear-gradient(135deg, #ff8a7d, #f0503c); }
.ws-sug-card.chance .ws-sug-go { color: #241303; background: linear-gradient(135deg, #ffc46b, #e8930c); }

/* F5 分步引导折叠区：外层 max-height 放开 + 内层滚动（数据随周更增长不裁内容） */
.ws-guidance { border: 1px solid rgba(140,120,255,.30); border-radius: 12px; background: linear-gradient(150deg, rgba(140,120,255,.08), rgba(140,120,255,.02)); overflow: hidden; }
.ws-gd-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; width: 100%; padding: 12px 14px; border: 0; color: #e8eef7; background: transparent; text-align: left; cursor: pointer; }
.ws-gd-title b { display: block; color: #d5ccff; font-size: 13.5px; font-weight: 800; }
.ws-gd-title small { display: block; margin-top: 3px; color: #9b92c9; font-size: 11px; }
.ws-gd-arrow { color: #b3a5ff; font-size: 13px; transition: transform .2s; }
.ws-gd-head.expanded .ws-gd-arrow { transform: rotate(180deg); }
.ws-gd-body { max-height: 0; overflow: hidden; transition: max-height .25s ease; }
.ws-gd-body.expanded { max-height: 3000px; }
.ws-gd-item { padding: 11px 14px; border-top: 1px solid rgba(140,120,255,.16); }
.ws-gd-item-head { display: flex; align-items: center; gap: 8px; }
.ws-gd-item-head b { color: #f2f0ff; font-size: 13.5px; }
.ws-gd-item-head span { color: #9b92c9; font-size: 11px; }
.ws-gd-item-head button { margin-left: auto; padding: 4px 11px; border: 0; border-radius: 7px; color: #f4f1ff; background: linear-gradient(135deg, #6a51e0, #4f3ac2); font-size: 11px; font-weight: 800; cursor: pointer; white-space: nowrap; }
.ws-gd-item > p { margin: 7px 0; color: #c4bce8; font-size: 12px; line-height: 1.6; }
.ws-gd-steps { display: flex; flex-wrap: wrap; gap: 6px; max-height: 520px; overflow-y: auto; padding-bottom: 2px; }
.ws-gd-step { padding: 3px 9px; border-radius: 99px; font-size: 10.5px; line-height: 1.5; white-space: nowrap; }
.ws-gd-step.done { color: #6fe3a0; background: rgba(63,214,137,.12); }
.ws-gd-step.pending { color: #ffd98f; background: rgba(242,185,75,.12); }
.ws-gd-step.todo { color: #8d99b0; background: rgba(255,255,255,.06); }

/* F2 破冰喜报弹窗（主工作台深色适配，结构/已读 key 与融智子页面同构） */
.rz-bullet-overlay { position: fixed; inset: 0; z-index: 99; display: flex; align-items: center; justify-content: center; padding: 20px; background: rgba(5,10,20,.66); backdrop-filter: blur(3px); animation: fadeIn .25s ease; }
@keyframes fadeIn { from { opacity: 0; } to { opacity: 1; } }
.rz-bullet-card { width: 100%; max-width: 400px; overflow: hidden; border: 1px solid rgba(140,175,230,.22); border-radius: 14px; background: #12224a; box-shadow: 0 18px 50px rgba(0,0,0,.5); }
.rz-bullet-head { padding: 14px 16px; font-size: 15px; font-weight: 800; color: #3a2c05; background: linear-gradient(120deg, #d9901e, #f2b94b); }
.rz-bullet-period { float: right; font: 700 10px sans-serif; color: rgba(58,44,5,.7); letter-spacing: .06em; line-height: 22px; }
.rz-bullet-body { padding: 12px 16px; max-height: 340px; overflow-y: auto; }
.rz-bullet-item { display: flex; align-items: baseline; gap: 6px; padding: 9px 0; border-bottom: 1px dashed rgba(255,255,255,.10); color: #eef3fb; font-size: 13px; line-height: 1.6; }
.rz-bullet-item:last-child { border-bottom: 0; }
.rz-bullet-item b { color: #f6f0de; }
.rz-bullet-close { display: block; width: 100%; padding: 13px 16px; border: 0; border-top: 1px solid rgba(255,255,255,.08); font-size: 14px; font-weight: 700; color: #f6f0de; background: #12224a; cursor: pointer; }
.rz-bullet-close:hover { background: #1a2e5e; }

/* 登录页保留赛事入场感，所有输入信息使用高对比度。 */
.login-view { position: relative; display: flex; flex-direction: column; min-height: 100vh; padding: max(24px, env(safe-area-inset-top)) 22px max(22px, env(safe-area-inset-bottom)); overflow: hidden; isolation: isolate; color: var(--white); background: linear-gradient(145deg, #071426, var(--navy) 54%, #102d50); }
.login-view::before { content: ""; position: absolute; inset: 0; z-index: -1; opacity: .32; background: linear-gradient(115deg, transparent 49.8%, rgba(255,255,255,.15) 50%, transparent 50.2%), repeating-linear-gradient(90deg, transparent 0 48px, rgba(255,255,255,.025) 48px 49px); }
.login-status { align-self: flex-end; color: #b8c9db; font: 700 10px monospace; letter-spacing: .1em; }
.login-status span { display: inline-block; width: 7px; height: 7px; margin-right: 6px; border-radius: 50%; background: #58d68d; }
.brand-mark { position: relative; align-self: center; margin-top: 26px; padding: 4px 14px 8px; color: #fff; font-family: Impact, "Arial Narrow", "PingFang SC", "Microsoft YaHei", sans-serif; font-size: clamp(36px, 11vw, 54px); font-weight: 950; font-style: italic; line-height: 1; letter-spacing: -.08em; transform: skewX(-5deg); text-shadow: 3px 3px 0 #1d5fa7, 6px 6px 0 rgba(0,0,0,.28); }
.brand-mark::before, .brand-mark::after { content: ""; position: absolute; height: 4px; transform: skewX(-24deg); }
.brand-mark::before { left: -5px; right: 42%; top: -6px; background: #7fb1e5; }
.brand-mark::after { left: 38%; right: -5px; bottom: -5px; background: #fff; }
.eyebrow { margin: 14px 0 6px; color: #9ac5ee; font: 700 10px/1.4 monospace; letter-spacing: .13em; }
.login-view > .eyebrow { text-align: center; }
.login-view h1 { margin: 6px 0 0; text-align: center; font-family: Impact, "Arial Narrow", "PingFang SC", "Microsoft YaHei", sans-serif; font-size: clamp(36px, 11vw, 56px); line-height: .98; font-weight: 950; font-style: italic; letter-spacing: -.08em; transform: skewX(-3deg); }
.login-view h1 span { color: #dbeafe; text-shadow: 2px 2px 0 rgba(29,95,167,.75); }
.login-welcome { min-height: 20px; margin: 8px auto 0; text-align: center; color: #ffd166; font-size: 12px; line-height: 1.6; }
.login-form { z-index: 2; width: min(430px,100%); margin: auto auto 0; }
.login-form label { display: block; margin: 0 0 6px 2px; color: #b8d9fa; font-size: 12px; font-weight: 700; }
.login-form .input-wrap + label { margin-top: 10px; }
.input-wrap { display: flex; padding: 3px; border-radius: 6px; background: var(--white); box-shadow: 0 8px 22px rgba(0,0,0,.2); }
.input-wrap::before { content: "ID"; align-self: center; padding-left: 10px; color: var(--blue); font: 800 11px monospace; }
.input-wrap input { min-width: 0; flex: 1; border: 0; outline: 0; padding: 13px 9px; color: var(--ink); background: var(--white); font-size: 17px; }
.input-wrap input::placeholder { color: #8a94a3; }
.login-submit { width: 100%; margin-top: 12px; border: 0; border-radius: 5px; padding: 13px; color: var(--white); background: var(--blue); font-size: 15px; font-weight: 800; }
.login-submit:disabled { opacity: .6; }
.setup-button { display: block; margin: 10px auto 0; padding: 8px 20px; border: 1px solid rgba(154, 197, 238, .55); border-radius: 999px; color: #b8d9fa; background: rgba(154, 197, 238, .08); font-size: 12px; text-decoration: none; transition: background .2s, border-color .2s; }
.setup-button:hover { background: rgba(154, 197, 238, .18); border-color: #9ac5ee; }
.register-form { margin-top: 30px; padding: 20px; border: 1px solid rgba(255,255,255,.2); border-radius: 8px; background: rgba(5,18,36,.6); }
.register-form h2 { margin: 0; font-size: 22px; }.register-form > p { margin: 7px 0 18px; color: #c3d0df; font-size: 12px; }
.pwd-rules { margin: 10px 0 18px; padding: 0; list-style: none; }
.pwd-rules li { position: relative; margin: 5px 0; padding-left: 24px; color: #8a94a3; font-size: 13px; line-height: 1.6; transition: color .15s; }
.pwd-rules li::before { content: ""; position: absolute; left: 0; top: 5px; width: 13px; height: 13px; border: 1.5px solid #7b8794; border-radius: 50%; background: transparent; transition: border-color .15s, background .15s; }
.pwd-rules li::after { content: ""; position: absolute; left: 3px; top: 9px; width: 6px; height: 3px; border-left: 1.5px solid #58d68d; border-bottom: 1.5px solid #58d68d; transform: rotate(-45deg); opacity: 0; transition: opacity .15s; }
.pwd-rules li.ok { color: #7ce3a4; }
.pwd-rules li.ok::before { border-color: #58d68d; background: rgba(88, 214, 141, .14); }
.pwd-rules li.ok::after { opacity: 1; }
.pwd-rules li.bad { color: #ff9aa0; }
.pwd-rules li.bad::before { border-color: #ff6b6b; background: rgba(255, 107, 107, .12); }
.pwd-rules li.bad::after { content: "✕"; border: 0; left: 1px; top: 1px; width: auto; height: auto; color: #ff6b6b; font-size: 12px; font-weight: 700; line-height: 1; transform: none; opacity: 1; }
.changepwd-hint { padding: 8px 10px; border: 1px solid rgba(255, 209, 102, .5); border-radius: 6px; background: rgba(255, 209, 102, .08); color: #ffd166; font-size: 12px; line-height: 1.7; }
.form-error { min-height: 22px; margin: 8px 2px; color: #ffb3b7; font-size: 13px; }
.sec-slogan { margin: 14px 0 16px; padding: 6px 10px; text-align: center; color: #ffd166; font: 700 12px/1.6 "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: .04em; border: 1px dashed rgba(255, 209, 102, .5); border-radius: 6px; background: rgba(255, 209, 102, .07); }
.sec-alert { display: flex; align-items: flex-start; gap: 10px; margin: 14px 0 5px; padding: 10px 14px; text-align: left; color: #ffd166; border: 1px solid rgba(255, 209, 102, .45); border-radius: 10px; background: rgba(255, 209, 102, .08); }
.sec-alert-icon { position: relative; flex: 0 0 18px; width: 18px; height: 15px; margin-top: 2px; border: 2px solid #ffd166; border-radius: 4px; }
.sec-alert-icon::before { content: ""; position: absolute; top: -9px; left: 3px; width: 9px; height: 10px; border: 2px solid #ffd166; border-bottom: none; border-radius: 6px 6px 0 0; }
.sec-alert-text b { display: block; margin-bottom: 2px; font-size: 12px; letter-spacing: .02em; }
.sec-alert-text p { margin: 0; color: #e8d9a8; font-size: 11px; line-height: 1.6; }
/* 数据检查：入口关闭横幅（mobile-first） */
.entrance-banner { display: flex; align-items: center; justify-content: center; gap: 8px; margin: 0 0 14px; padding: 10px 12px; text-align: center; color: #fecdd3; font-size: 13px; font-weight: 600; line-height: 1.55; border: 1px solid rgba(251, 113, 133, .5); border-radius: 10px; background: linear-gradient(135deg, rgba(190, 24, 60, .24), rgba(190, 24, 60, .10)); }
.entrance-banner::before { content: "⛔"; flex: 0 0 auto; font-size: 14px; line-height: 1; }
.entrance-banner[hidden] { display: none; }
.workspace-entrance-banner { margin: 10px 14px 0; font-size: 12px; }
@media (min-width: 768px) { .entrance-banner { font-size: 14px; } .workspace-entrance-banner { font-size: 13px; } }
.login-note { margin: 1px 0 0; text-align: center; color: #b8c9db; font-size: 10px; }
.login-note span { color: #9ac5ee; font-family: monospace; }
.forgot-link { display: block; margin: 8px auto 0; border: 0; background: none; color: #9ac5ee; font-size: 12px; text-decoration: underline; text-underline-offset: 2px; cursor: pointer; }
.forgot-link:hover { color: #dbeafe; }
.forgot-dialog-body { padding: 18px; }
.forgot-dialog-body p { margin: 0; color: #c3d0df; font-size: 14px; line-height: 1.9; }
.forgot-dialog-body p.tip { margin-top: 10px; color: #8a94a3; font-size: 12px; line-height: 1.7; }
.forgot-dialog-body label { display: block; margin: 16px 0 6px; color: #dbeafe; font-size: 12px; }
.forgot-input { width: 100%; box-sizing: border-box; padding: 12px 13px; color: #eef6ff; background: #101a2b; border: 1px solid #344866; border-radius: 8px; font-size: 16px; outline: none; }
.forgot-input:focus { border-color: #6ea8e0; box-shadow: 0 0 0 3px rgba(110,168,224,.14); }
.forgot-dialog-body .primary-button { width: 100%; margin-top: 14px; }
.forgot-result { min-height: 22px; margin-top: 10px !important; color: #ffd166 !important; font-size: 12px !important; line-height: 1.6 !important; }
.notice-badge { display: inline-flex; min-width: 18px; height: 18px; margin-left: 3px; padding: 0 5px; align-items: center; justify-content: center; color: #fff; background: #dc2626; border-radius: 99px; font-size: 10px; line-height: 1; }
.notice-badge[hidden] { display: none; }
footer { margin-top: 18px; text-align: center; color: var(--muted); font-size: 12px; letter-spacing: .14em; }
.login-view footer { color: #7f90ab; }
.login-view footer a { color: #7f90ab; text-decoration: underline; text-underline-offset: 2px; }
.login-view footer a:hover { color: #9ac5ee; }

/* 排名页采用体育赛事常用的白底信息表，优先保证姓名与数据可读。 */
.dashboard { max-width: 780px; margin: 0 auto; padding: max(18px, env(safe-area-inset-top)) 14px max(34px, env(safe-area-inset-bottom)); }
.topbar { position: sticky; top: 0; z-index: 12; display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 12px; margin: -18px -14px 0; padding: max(22px, env(safe-area-inset-top)) 16px 20px; color: var(--white); background: var(--navy); box-shadow: 0 3px 10px rgba(11,31,58,.18); }
.topbar .eyebrow { margin: 0 0 4px; color: #9ac5ee; }
.topbar .eyebrow i { display: inline-block; width: 7px; height: 7px; margin-right: 4px; border-radius: 50%; background: #58d68d; }
.topbar h2 { margin: 0; font-size: 21px; letter-spacing: -.03em; }
.topbar .back-workspace { padding: 6px 10px; font-size: 12px; white-space: nowrap; }
.text-button { border: 1px solid rgba(255,255,255,.35); padding: 8px 10px; border-radius: 4px; color: var(--white); background: transparent; font-size: 12px; }
.history-bar { display: flex; justify-content: space-between; align-items: center; margin: 0 -14px 14px; padding: 11px 16px; border-bottom: 1px solid var(--line); color: var(--muted); background: var(--white); font-size: 13px; }
.history-bar select { border: 0; outline: 0; color: var(--blue); background: var(--white); font-weight: 700; }
.hero-card, .section-card, .section-block, .rules { border: 1px solid var(--line); border-radius: 8px; background: var(--white); box-shadow: 0 4px 14px rgba(11,31,58,.05); }
.hero-card { position: relative; min-height: 278px; padding: 20px; overflow: hidden; border-top: 4px solid var(--blue); }
.hero-card::before { content: "MY RESULT"; position: absolute; right: 16px; top: 14px; color: #9aa7b7; font: 700 10px monospace; letter-spacing: .13em; }
.hero-card::after { content: attr(data-score); position: absolute; right: -4px; bottom: -42px; color: rgba(29,95,167,.05); font: 900 205px/1 Arial, sans-serif; }
.hero-card .hello { margin: 0; color: var(--blue); font-size: 13px; font-weight: 700; }
.hero-card h3 { margin: 6px 0 20px; color: var(--ink); font-size: 22px; }
.name-score { position: relative; z-index: 1; display: flex; align-items: baseline; justify-content: space-between; gap: 14px; margin: 19px 0 24px; }
.name-score h3 { min-width: 0; margin: 0; font-size: clamp(42px, 12vw, 72px); line-height: .95; font-weight: 900; letter-spacing: -.08em; }
.name-score .score-line { flex: 0 0 auto; }
.score-line { position: relative; z-index: 1; display: flex; align-items: baseline; gap: 9px; }
.score-line strong { color: var(--ink); font: 900 clamp(50px, 14vw, 82px)/.9 Arial, sans-serif; letter-spacing: -.07em; font-variant-numeric: tabular-nums; }
.score-line span { color: var(--muted); font-size: 13px; }
.score-line.score-high strong { color: #e54822; }
.score-line.score-first strong { color: transparent; background: linear-gradient(110deg,#d79a10,#f04b2f,#7c3aed,#1478d4); background-clip: text; -webkit-background-clip: text; }
.score-meta { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; margin-top: 27px; border: 1px solid var(--line); background: var(--line); }
.score-meta div { padding: 12px 9px; background: #f8fafc; }
.score-meta small { display: block; margin-bottom: 5px; color: var(--muted); font-size: 11px; }
.score-meta b { color: var(--ink); font-size: 15px; font-variant-numeric: tabular-nums; }
.section-card { margin-top: 11px; padding: 19px; border-left: 4px solid var(--blue); }
.branch-title { display: flex; justify-content: space-between; gap: 10px; }
.branch-title span { color: var(--blue); font-size: 11px; font-weight: 700; }
.branch-title h3 { margin: 5px 0 0; font-size: 21px; }
.rank-seal { display: flex; flex-direction: column; justify-content: center; width: 78px; height: 64px; flex: 0 0 78px; border: 1px solid #a8c5e5; border-radius: 6px; text-align: center; background: var(--blue-soft); }
.rank-seal small { color: var(--muted); font-size: 10px; }
.rank-seal b { margin-top: 3px; color: var(--blue); font-size: 18px; }
.rank-seal.rank-1 { border-color: #dfbc70; background: var(--gold-bg); }.rank-seal.rank-1 b { color: var(--gold); }
.rank-seal.rank-2 { border-color: #b7c0cc; background: var(--silver-bg); }.rank-seal.rank-2 b { color: var(--silver); }
.rank-seal.rank-3 { border-color: #d6a383; background: var(--bronze-bg); }.rank-seal.rank-3 b { color: var(--bronze); }
.branch-stats { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin: 22px 0 16px; border: 1px solid var(--line); background: var(--line); }
.branch-stats div { padding: 11px 7px; background: #f8fafc; }
.branch-stats small { display: block; color: var(--muted); font-size: 10px; }
.branch-stats b { display: block; margin-top: 5px; color: var(--ink); font-size: 14px; }
.primary-button { display: block; width: 100%; border: 0; border-radius: 5px; padding: 13px; color: var(--white); background: var(--blue); font-size: 14px; font-weight: 800; text-align: center; text-decoration: none; }
.branch-actions { display: grid; gap: 9px; }.branch-view-button { min-height: 46px; font-size: 15px; }.branch-export-row { display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }.export-button { min-height: 42px; border: 1px solid #9bbddd; border-radius: 5px; padding: 10px 8px; color: var(--blue); background: #f7fbff; font-size: 13px; font-weight: 800; }
.section-block { margin-top: 22px; padding: 16px; }
.section-heading { display: flex; align-items: end; justify-content: space-between; padding-bottom: 13px; border-bottom: 1px solid var(--line); }
.section-heading span, .dialog-head span { color: var(--blue); font: 700 10px monospace; letter-spacing: .12em; }
.section-heading h3, .dialog-head h3 { margin: 3px 0 0; font-size: 22px; }
.section-heading small { color: var(--muted); font-size: 11px; }
.ranking-list { padding-top: 6px; }
.ranking-row { position: relative; display: grid; grid-template-columns: 49px minmax(0,1fr) 55px 64px; align-items: center; gap: 8px; min-height: 67px; padding: 5px 7px; border-bottom: 1px solid var(--line); overflow: hidden; }
.ranking-row::after { content: ""; position: absolute; left: 55px; bottom: 0; width: var(--power,50%); height: 2px; background: #8bb4df; }
.ranking-row.mine { border-left: 4px solid var(--blue); background: var(--blue-soft); }
.rank-badge { display: flex; flex-direction: column; align-items: center; justify-content: center; width: 40px; height: 44px; border-radius: 5px; color: var(--muted); background: #eef2f6; }
.rank-badge b { font: 800 18px/1 Arial, sans-serif; }
.rank-badge small { margin-top: 3px; color: inherit; font-size: 9px; white-space: nowrap; }
.ranking-row .name { overflow: hidden; color: var(--ink); white-space: nowrap; text-overflow: ellipsis; font-size: 15px; font-weight: 700; }
.ranking-row small { display: block; margin-top: 4px; color: var(--muted); font-size: 11px; font-weight: 400; }
.ranking-row .value { color: var(--ink); text-align: right; font-size: 14px; font-weight: 800; font-variant-numeric: tabular-nums; }
.ranking-row.top-rank { min-height: 78px; margin-top: 6px; border: 1px solid; border-radius: 6px; }
.ranking-row.top-rank::after { display: none; }
.ranking-row.top-rank .rank-badge { width: 44px; height: 51px; }
.ranking-row.rank-1 { border-color: #dfbc70; background: var(--gold-bg); }.ranking-row.rank-1 .rank-badge { color: #fff; background: #b7791f; }
.ranking-row.rank-2 { border-color: #bcc5d0; background: var(--silver-bg); }.ranking-row.rank-2 .rank-badge { color: #fff; background: var(--silver); }
.ranking-row.rank-3 { border-color: #d5a17e; background: var(--bronze-bg); }.ranking-row.rank-3 .rank-badge { color: #fff; background: var(--bronze); }
.rank-change { display: inline-block; margin-left: 5px; font-size: 11px; font-weight: 800; white-space: nowrap; vertical-align: 1px; }.rank-change.rise { color: #d92d20; }.rank-change.fall { color: #16815a; }.rank-change.same,.rank-change.new { color: #7b8491; font-weight: 600; }
.branch-rank-change { margin: 8px 0 0; color: var(--muted); font-size: 11px; }.branch-rank-change .rank-change { margin-left: 2px; font-size: 13px; }
.score-meta .rank-change { display: block; margin: 5px 0 0; }
.ranking-row.top-rank .rank-badge { text-shadow: 0 1px 2px rgba(0,0,0,.35); }
.podium-list { display: grid; gap: 7px; margin-top: 13px; }
.podium-row { display: grid; grid-template-columns: 50px 1fr auto; align-items: center; min-height: 67px; padding: 12px; border: 1px solid var(--line); border-left: 4px solid var(--blue); border-radius: 6px; background: var(--white); }
.podium-row .medal { display: flex; flex-direction: column; align-items: center; color: var(--muted); }
.podium-row .medal b { font: 800 21px/1 Arial, sans-serif; }.podium-row .medal small { margin-top: 4px; font-size: 9px; }
.podium-row h4 { margin: 0; color: var(--ink); font-size: 15px; }
.podium-row p { margin: 5px 0 0; color: var(--muted); font-size: 11px; }
.podium-row strong { color: var(--navy); font: 900 25px Arial, sans-serif; font-variant-numeric: tabular-nums; }
.podium-row.top-rank { min-height: 80px; border-left-width: 6px; }
.podium-row.rank-1 { border-color: #dfbc70; background: var(--gold-bg); }.podium-row.rank-1 .medal,.podium-row.rank-1 strong { color: var(--gold); }
.podium-row.rank-2 { border-color: #bcc5d0; background: var(--silver-bg); }.podium-row.rank-2 .medal,.podium-row.rank-2 strong { color: var(--silver); }
.podium-row.rank-3 { border-color: #d5a17e; background: var(--bronze-bg); }.podium-row.rank-3 .medal,.podium-row.rank-3 strong { color: var(--bronze); }
.rules { margin-top: 12px; padding: 0 16px; }
.rules summary { padding: 16px 0; color: var(--ink); font-size: 13px; font-weight: 700; cursor: pointer; }
.rules div { padding-bottom: 9px; color: var(--muted); font-size: 13px; line-height: 1.75; }
.rules strong { color: var(--blue); }
dialog { width: min(100% - 20px,720px); max-height: 88vh; max-height: 88dvh; margin: auto auto 0; border: 0; border-radius: 10px 10px 0 0; padding: 0; color: var(--ink); background: var(--white); box-shadow: 0 -15px 60px rgba(11,31,58,.28); }
dialog[open] { position: fixed; inset: auto 10px 0; z-index: 40; overflow: auto; }
dialog::backdrop { background: rgba(11,31,58,.64); backdrop-filter: blur(3px); }
.dialog-head { position: sticky; top: 0; z-index: 2; display: flex; justify-content: space-between; align-items: center; padding: 18px; border-bottom: 1px solid var(--line); background: var(--white); }
.dialog-head button { border: 0; color: var(--navy); background: transparent; font-size: 30px; }
.member-list { padding: 0 18px 26px; }
.member-row { display: grid; grid-template-columns: 36px 1fr auto; gap: 9px; align-items: center; min-height: 66px; border-bottom: 1px solid var(--line); }
.member-row .rank { color: var(--blue); font-size: 17px; font-weight: 800; }
.member-row h4 { margin: 0; font-size: 14px; }.member-row p { margin: 4px 0 0; color: var(--muted); font-size: 11px; }
.member-row .result { text-align: right; }.member-row .result b { display: block; color: var(--navy); }.member-row .result small { color: var(--muted); font-size: 10px; }
.member-row.absent { opacity: .55; }
.toast { position: fixed; left: 50%; bottom: 24px; z-index: 50; transform: translate(-50%,20px); opacity: 0; pointer-events: none; padding: 11px 17px; border-radius: 5px; color: var(--white); background: var(--navy); font-size: 12px; transition: .2s; }.toast.show { transform: translate(-50%,0); opacity: 1; }
.loading-overlay{position:fixed;inset:0;z-index:65;display:flex;align-items:center;justify-content:center;padding:20px;background:rgba(7,20,38,.58)}.loading-overlay[hidden]{display:none}.loading-overlay>div{display:flex;align-items:center;gap:12px;padding:16px 20px;border-radius:8px;color:#fff;background:#102d28;box-shadow:0 12px 40px rgba(0,0,0,.28)}.loading-overlay i{width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top-color:#f0cf78;border-radius:50%;animation:loading-spin .8s linear infinite}.loading-overlay b{font-size:14px}@keyframes loading-spin{to{transform:rotate(360deg)}}

/* 管理员全量查询 */
.admin-dashboard { max-width: 980px; }
.admin-summary { display: grid; grid-template-columns: repeat(4,1fr); gap: 10px; margin-bottom: 12px; }
.admin-summary div { padding: 17px; border: 1px solid var(--line); border-radius: 7px; background: var(--white); }
.admin-summary small { display: block; color: var(--muted); font-size: 11px; }.admin-summary b { display: block; margin-top: 6px; color: var(--navy); font-size: 24px; }
.admin-tools { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 15px; border: 1px solid var(--line); border-radius: 8px; background: var(--white); }
.admin-export-actions { grid-column: 1 / -1; display: grid; grid-template-columns: 1fr 1fr; gap: 9px; }
.admin-tools label { color: var(--muted); font-size: 12px; font-weight: 700; }
.admin-tools input,.admin-tools select { display: block; width: 100%; height: 42px; margin-top: 7px; border: 1px solid var(--line); border-radius: 5px; padding: 0 11px; color: var(--ink); background: var(--white); font-size: 14px; }
.admin-people { margin-top: 6px; }
.admin-person { display: grid; grid-template-columns: 64px minmax(0,1fr) auto; align-items: center; gap: 10px; min-height: 70px; padding: 10px 5px; border-bottom: 1px solid var(--line); }
.person-rank { color: var(--blue); font-size: 13px; font-weight: 800; }.admin-person h4 { margin: 0; font-size: 15px; }.admin-person p { margin: 5px 0 0; color: var(--muted); font-size: 11px; }
.admin-person > div:last-child { text-align: right; }.admin-person > div:last-child b { display: block; color: var(--navy); font-size: 18px; }.admin-person > div:last-child small { color: var(--muted); font-size: 10px; }
.admin-person.absent { opacity: .55; }.empty { padding: 28px; color: var(--muted); text-align: center; }

/* 历史趋势固定使用0-13分坐标，避免视觉上夸大微小波动。 */
.history-analysis { margin-top: 11px; padding: 18px; border: 1px solid var(--line); border-radius: 8px; background: var(--white); box-shadow: 0 4px 14px rgba(11,31,58,.05); }
.history-head { display: flex; align-items: end; justify-content: space-between; gap: 10px; padding-bottom: 13px; border-bottom: 1px solid var(--line); }
.history-head span { color: var(--blue); font: 700 10px monospace; letter-spacing: .12em; }.history-head h3 { margin: 3px 0 0; font-size: 21px; }.history-head > small { color: var(--muted); font-size: 10px; }
.history-kpis { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin-top: 13px; border: 1px solid var(--line); background: var(--line); }
.history-kpis div { padding: 11px 8px; background: #f8fafc; }.history-kpis small { display: block; color: var(--muted); font-size: 10px; }.history-kpis b { display: block; margin-top: 5px; color: var(--navy); font-size: 17px; font-variant-numeric: tabular-nums; }
.history-kpis b.up { color: #16764a; }.history-kpis b.down { color: #bd352b; }
.trend-chart { margin-top: 13px; overflow-x: auto; }.trend-chart svg { display: block; width: 100%; min-width: 590px; height: auto; }
.grid-line { stroke: #dce4ed; stroke-width: 1; stroke-dasharray: 4 5; }.axis-text,.week-label { fill: #6b7584; font: 11px "PingFang SC",sans-serif; }.value-label { fill: var(--navy); font: 700 11px Arial,sans-serif; }
.trend-line { fill: none; stroke: var(--blue); stroke-width: 4; stroke-linecap: round; stroke-linejoin: round; }.trend-dot { fill: var(--white); stroke: var(--blue); stroke-width: 4; }.absent-dot { fill: #fff0f0; stroke: #c83d32; }
.image-dialog { width: 100%; max-width: none; max-height: none; border-radius: 0; box-shadow: none; background: #fff; }.image-dialog[open] { inset: 0; width: 100%; height: 100vh; height: 100dvh; margin: 0; overflow: auto; }.image-dialog::backdrop { background: transparent; backdrop-filter: none; }.image-dialog .dialog-head,.image-dialog .image-actions,.image-preview p { display: none; }.image-preview { padding: 0; background: #fff; }.image-preview img { display: block; width: 100%; height: auto; margin: 0; background: #fff; box-shadow: none; }

/* 摘星驾驶舱使用“星图档案”语言，先呈现结论，再呈现行动与口径。 */
.star-dashboard { min-height: 100vh; padding: 0 14px max(34px, env(safe-area-inset-bottom)); color: #18312b; background: #eef0e8; font-family: system-ui,-apple-system,"HarmonyOS Sans SC","Noto Sans CJK SC","PingFang SC","Microsoft YaHei",sans-serif; }
.star-topbar { position:sticky;top:0;z-index:12;display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 9px; margin: 0 -14px; padding: max(8px, env(safe-area-inset-top)) 12px 8px; color: #f6f0de; background: #102d28;box-shadow:0 3px 10px rgba(16,45,40,.18) }
.star-topbar p { margin: 0 0 2px; color: #a8c1b8; font: 700 8px monospace; letter-spacing: .08em; }.star-topbar h2 { margin: 0; font: 800 18px system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; }.star-topbar > span { color: #b8cbc4; font-size: 9px; }
.star-back { min-height:36px;border: 0; padding: 6px 0; color: #f6f0de; background: transparent; font-size: 12px; }
.star-hero { position: relative; margin: 10px auto 0; max-width: 820px; overflow: hidden; color: #f6f0de; background: #173f37; box-shadow: 0 10px 25px rgba(16,45,40,.16); }
.star-hero::after { content: "✦"; position: absolute; right: -8px; top: -46px; color: rgba(226,192,103,.12); font: 240px/1 Georgia,serif; }
.star-identity { position: relative; z-index: 1; padding: 24px 22px 17px; }.star-identity p { margin: 0 0 12px; color: #afc7bf; font-size: 11px; }.branch-name-star { display: flex; align-items: center; justify-content: space-between; gap: 14px; }.star-glyphs { flex: 0 0 auto; min-height: 0; margin: 0; padding: 9px 11px; border: 1px solid rgba(226,192,103,.35); color: #f0cf78; background: rgba(226,192,103,.09); font: 700 clamp(19px,6vw,27px)/1 Georgia,serif; letter-spacing: .06em; white-space: nowrap; }.star-identity h1 { min-width: 0; margin: 0; font: 900 clamp(29px,9vw,48px)/1.05 system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: -.06em; }.star-identity > span { display: block; margin-top: 12px; color: #bcd0c9; font-size: 12px; }
.star-total { position: relative; z-index: 1; display: flex; align-items: baseline; gap: 6px; padding: 17px 22px; border-top: 1px solid rgba(255,255,255,.14); }.star-total small { margin-right: auto; color: #afc7bf; }.star-total strong { color: #f3df9c; font: 900 35px Arial,sans-serif; }.star-total span { color: #afc7bf; font-size: 11px; }
.target-band { position: relative; z-index: 1; display: grid; grid-template-columns: 135px 1fr; gap: 14px; padding: 15px 22px; color: #24322e; background: #e7d69d; }.target-band small { display: block; font-size: 10px; }.target-band small b { margin-left: 4px; color: #725a1e; font-weight: 800; white-space: nowrap; }.target-band select { width: 100%; margin-top: 5px; border: 0; border-bottom: 2px solid #725a1e; border-radius: 0; padding: 5px 0; color: #233d36; background: transparent; font: 900 17px system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; }.target-band p { margin: 0; align-self: center; font-size: 11px; line-height: 1.6; }
.star-quota,.star-section,.star-policy { max-width: 820px; margin: 12px auto 0; border: 1px solid #d4d8cd; background: #fff; }
.star-quota { padding: 18px; }.quota-copy small,.star-section-head small { color: #678078; font: 700 9px monospace; letter-spacing: .12em; }.quota-copy h3 { margin: 5px 0; font: 900 21px system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; }.quota-copy p { margin: 0; color: #62716c; font-size: 11px; line-height: 1.6; }
.quota-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; margin-top: 15px; }.quota-item { padding: 11px 8px; border: 1px solid #e0e3db; background: #f7f8f4; }.quota-item.active { border-color: #b59438; background: #faf4df; }.quota-item span,.quota-item small { display: block; color: #66736e; font-size: 9px; }.quota-item b { display: block; margin: 6px 0 4px; color: #173f37; font: 900 20px Arial,sans-serif; }.quota-item b i { color: #7a8581; font-size: 10px; font-style: normal; }
.star-section { padding: 17px; }.star-section-head { display: flex; justify-content: space-between; align-items: end; gap: 12px; padding-bottom: 13px; border-bottom: 1px solid #e0e3db; }.star-section-head h3 { margin: 3px 0 0; font: 900 22px system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; }.star-section-head > span { color: #71807b; font-size: 10px; }.path-save-button{min-height:32px;border:1px solid #b89439;border-radius:3px;padding:6px 10px;color:#76570f;background:#fffaf0;font-size:11px;font-weight:800}
.expand-guide { margin: 12px 0 2px; padding: 9px 11px; color: #4f665f; background: #f0f5f1; font-size: 11px; line-height: 1.5; }.expand-guide::before { content: "↕"; margin-right: 6px; color: #a27b20; font-weight: 900; }.star-actions { padding-top: 5px; }.action-item { border-bottom: 1px solid #e2e5dd; }.action-item summary { display: grid; grid-template-columns: 47px minmax(0,1fr) auto 14px; align-items: center; gap: 9px; min-height: 69px; list-style: none; cursor: pointer; -webkit-tap-highlight-color: rgba(30,91,78,.12); }.action-item summary::-webkit-details-marker { display: none; }.detail-toggle { width: 8px; height: 8px; border-right: 2px solid #78857f; border-bottom: 2px solid #78857f; transform: rotate(45deg); transition: transform .18s; }.action-item[open] .detail-toggle,.department-row[open] .detail-toggle { transform: rotate(225deg); }.action-state { padding: 5px 4px; border-radius: 2px; color: #fff; background: #a64836; text-align: center; font-size: 9px; }.complete .action-state { background: #4e7469; }.action-item summary b { display: block; font-size: 14px; }.action-item summary small { display: block; margin-top: 5px; color: #71807b; font-size: 10px; }.action-item summary > strong { max-width: 100px; color: #a43e2e; text-align: right; font-size: 12px; }.complete summary > strong { color: #3d7164; font-size: 18px; }.action-detail { margin: 0 0 14px 57px; padding: 12px; border-left: 3px solid #d2bb70; background: #f7f5ed; }.action-detail p { margin: 12px 0 0; color: #55635f; font-size: 11px; line-height: 1.7; }.action-detail > span { display: block; margin-top: 9px; color: #265e52; font-size: 10px; font-weight: 800; }.score-source { display: grid; grid-template-columns: 1fr 1fr; gap: 5px; }.score-source span { padding: 7px; color: #29483f; background: #e8eee8; font-size: 10px; }.path-box { padding: 11px; border: 1px solid #e3cf8a; background: #fffaf0; }.path-box > b { color: #7d5a0d; font-size: 12px; }.path-box ol { margin: 8px 0 4px; padding-left: 20px; color: #3d4a46; font-size: 11px; line-height: 1.7; }.path-box small { color: #7d7460; font-size: 9px; }
.star-policy { padding: 0 17px; }.star-policy summary { padding: 16px 0; color: #29443d; font-size: 12px; font-weight: 800; cursor: pointer; }.star-policy div { padding-bottom: 9px; color: #5d6b66; font-size: 11px; line-height: 1.75; }.star-policy strong { color: #1f594d; }
.star-dashboard footer { color: #77847f; }
.goal-plan-section { border-top: 4px solid #b89439; }.goal-summary { margin-top: 13px; padding: 13px; color: #263c36; background: #faf3dc; }.goal-summary > b { font: 900 16px/1.5 system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; }.goal-summary > div { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; color: #6d6e62; font-size: 9px; }.goal-summary i { color: #b18b2e; font-style: normal; }.goal-plan > ol { margin: 12px 0 0; padding: 0; list-style: none; }.goal-plan > ol > li { display: grid; grid-template-columns: 25px 1fr; gap: 9px; padding: 11px 0; border-bottom: 1px solid #e0e3db; }.goal-plan > ol > li > span { display: flex; align-items: center; justify-content: center; width: 23px; height: 23px; border-radius: 50%; color: #fff; background: #1e5b4e; font: 800 10px Arial,sans-serif; counter-increment: plan-step; }.goal-plan > ol { counter-reset: plan-step; }.goal-plan > ol > li > span::after { content: counter(plan-step); }.goal-plan > ol > li b { color: #213a34; font-size: 13px; }.goal-plan > ol > li p { margin: 5px 0; color: #66736e; font-size: 10px; line-height: 1.6; }.goal-plan > ol > li ul { margin: 7px 0; padding: 9px 9px 9px 25px; color: #534d3d; background: #faf7ed; font-size: 10px; line-height: 1.7; }.goal-plan > ol > li small { color: #236052; font-size: 9px; font-weight: 800; }.goal-complete { padding: 18px 8px 4px; color: #26705f; font-size: 12px; text-align: center; }
.department-note { margin: 8px 0 5px; padding: 10px; color: #68756f; background: #f5f6f2; font-size: 9px; line-height: 1.65; }.department-row { border-bottom: 1px solid #e0e3db; }.department-row summary { display: grid; grid-template-columns: 28px minmax(0,1fr) auto 14px; align-items: center; gap: 9px; min-height: 67px; list-style: none; cursor: pointer; -webkit-tap-highlight-color: rgba(30,91,78,.12); }.department-row summary::-webkit-details-marker { display: none; }.department-row summary > span { color: #b08a31; font: 900 16px Arial,sans-serif; }.department-row summary b { font-size: 12px; }.department-row summary > strong { text-align: right; color: #183f36; font: 900 13px Arial,sans-serif; }.department-row summary > strong small { display: block; margin-top: 4px; color: #71807b; font-size: 9px; font-weight: 500; }.contribution-track { height: 4px; margin-top: 8px; overflow: hidden; background: #e5e8e1; }.contribution-track i { display: block; width: var(--contribution); height: 100%; background: #c09a3d; }.department-scores { display: grid; grid-template-columns: repeat(4,1fr); gap: 1px; margin: 0 0 10px 37px; background: #dde1d7; }.department-scores span { padding: 8px 5px; color: #71807b; background: #f7f8f4; font-size: 8px; }.department-scores b { display: block; margin-top: 4px; color: #29443d; font: 800 11px Arial,sans-serif; }

/* 管理员先看分行全貌，再进入重点支行。 */
.overview-hero { max-width: 820px; margin: 14px auto 0; overflow: hidden; color: #f6f0de; background: #173f37; box-shadow: 0 10px 25px rgba(16,45,40,.16); }.overview-title { padding: 25px 22px 20px; }.overview-title p { margin: 0 0 13px; color: #afc7bf; font-size: 11px; }.overview-title h1 { margin: 0; font: 900 clamp(28px,8vw,44px)/1.18 system-ui, -apple-system, "HarmonyOS Sans SC", "PingFang SC", "Microsoft YaHei", sans-serif; letter-spacing: -.05em; }.overview-title h1 strong { color: #f0cf78; font-size: 1.25em; }.overview-title > span { display: block; margin-top: 13px; color: #bed1ca; font-size: 11px; }.overview-star-counts { display: grid; grid-template-columns: repeat(3,1fr); border-top: 1px solid rgba(255,255,255,.14); background: rgba(0,0,0,.09); }.overview-star-counts div { padding: 12px; border-right: 1px solid rgba(255,255,255,.1); }.overview-star-counts small,.overview-star-counts span { color: #adc4bc; font-size: 9px; }.overview-star-counts b { margin: 0 3px 0 7px; color: #f2d889; font: 900 20px Arial,sans-serif; }
.position-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1px; margin-top: 13px; border: 1px solid #dde1d7; background: #dde1d7; }.position-grid div { min-height: 83px; padding: 13px; background: #f8f9f5; }.position-grid small,.position-grid span { display: block; color: #71807b; font-size: 10px; }.position-grid b { display: inline-block; margin: 7px 3px 2px 0; color: #173f37; font: 900 24px Arial,sans-serif; }.position-grid b.negative { color: #a64836; }.position-grid b.positive { color: #26705f; }
.overview-scores { padding-top: 7px; }.overview-score { display: flex; align-items: center; justify-content: space-between; gap: 14px; min-height: 62px; padding: 10px 4px; border-bottom: 1px solid #e2e5dd; }.overview-score b { font-size: 13px; }.overview-score small { display: block; margin-top: 5px; color: #73817c; font-size: 10px; }.overview-score strong { color: #a64836; font: 900 18px Arial,sans-serif; }.overview-score.strong strong { color: #26705f; }
.risk-section { border-top: 4px solid #9f4937; }.overview-conclusion { margin: 14px 0 0; padding: 12px; color: #493c32; background: #fff5e8; font-size: 12px; font-weight: 700; line-height: 1.7; }.risk-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 6px; margin-top: 9px; }.risk-grid div { padding: 11px 8px; border: 1px solid #e1d9ce; background: #faf7f2; }.risk-grid strong { display: block; color: #a34331; font: 900 24px Arial,sans-serif; }.risk-grid span,.risk-grid small { display: block; margin-top: 4px; color: #5f6965; font-size: 9px; line-height: 1.45; }
.candidate-list { padding-top: 7px; }.candidate-card { display: grid; grid-template-columns: 33px minmax(0,1fr) auto; align-items: center; gap: 9px; width: 100%; min-height: 87px; border: 0; border-bottom: 1px solid #e0e3db; padding: 10px 2px; color: #233b35; text-align: left; background: #fff; }.candidate-order { color: #b08b32; font: 900 18px Arial,sans-serif; }.candidate-card small { color: #74817d; font-size: 9px; }.candidate-card h4 { margin: 5px 0; font-size: 15px; }.candidate-card h4 i { margin-left: 5px; padding: 3px 5px; color: #7a590f; background: #f7edcb; font-size: 9px; font-style: normal; }.candidate-card p { margin: 0; color: #a14332; font-size: 10px; }.candidate-card > b { color: #1d5b4e; font-size: 10px; }
.overview-branches { display: grid; gap: 1px; padding-top: 9px; background: #e3e6df; }.overview-branches button { display: grid; grid-template-columns: 27px minmax(0,1fr) auto; align-items: center; gap: 9px; min-height: 58px; border: 0; padding: 9px 11px; color: #243b35; text-align: left; background: #fff; }.overview-branches button > span { color: #71807b; font: 800 12px Arial,sans-serif; }.overview-branches b { font-size: 12px; }.overview-branches small { display: block; margin-top: 4px; color: #76837e; font-size: 9px; }.overview-branches strong { color: #b28a2f; font: 700 11px Georgia,serif; }

@media (max-width: 480px) {
  .ranking-row { grid-template-columns: 47px minmax(0,1fr) 50px; }
  .ranking-row > .value:last-child { display: none; }
  .branch-stats { grid-template-columns: repeat(2,1fr); }
  .name-score h3 { font-size: 39px; }.name-score .score-line strong { font-size: 51px; }
  .admin-summary { grid-template-columns: repeat(2,1fr); }.admin-tools { grid-template-columns: 1fr; }
  .history-kpis { grid-template-columns: repeat(2,1fr); }.history-head { align-items: start; flex-direction: column; }
  .star-dashboard { padding-inline: 10px; }.star-topbar { grid-template-columns: auto minmax(0,1fr) auto; margin-inline: -10px; }.star-topbar p{display:none}.star-topbar h2{overflow:hidden;font-size:16px;white-space:nowrap;text-overflow:ellipsis}.star-topbar > span { grid-column:auto;white-space:nowrap; }.star-identity{padding:14px 16px 10px}.star-identity p{margin-bottom:6px;font-size:10px}.star-identity h1{font-size:27px}.star-glyphs{padding:6px 8px;font-size:18px}.star-identity>span{margin-top:7px;font-size:11px}.star-total{padding:9px 16px}.star-total strong{font-size:28px}.target-band { grid-template-columns: 128px minmax(0,1fr);gap:10px;padding:9px 16px }.target-band small{font-size:9px;white-space:nowrap}.target-band select{margin-top:2px;padding:3px 0;font-size:16px}.target-band p { font-size: 11px;line-height:1.45 }.risk-grid { grid-template-columns: 1fr; }.action-detail { margin-left: 0; }.star-section { padding: 14px 12px; }.star-section-head h3 { font-size: 20px; }.star-section-head > span { max-width: 92px; text-align: right; }.action-item summary { grid-template-columns: 46px minmax(0,1fr) auto 12px; gap: 7px; min-height: 76px; }.action-item summary small,.action-detail p,.path-box ol { font-size: 12px; }.action-item summary > strong { max-width: 72px; font-size: 11px; }.department-row summary { min-height: 74px; }.department-row summary b,.department-row summary > strong { font-size: 13px; }.department-scores { margin-left: 0; }.department-scores span { font-size: 10px; }.department-scores b { font-size: 13px; }.quota-item { padding-inline: 6px; }.quota-item small { min-height: 26px; line-height: 1.45; }
}
@media (min-width: 700px) {
  .login-view { max-width: 560px; min-height: 720px; margin: 32px auto; padding: 30px 45px; box-shadow: 0 35px 90px rgba(11,31,58,.35); }
  .dashboard { padding-inline: 24px; }.topbar { margin-inline: -24px; padding-inline: 24px; }.history-bar { margin-inline: -24px; padding-inline: 24px; }
  dialog { margin-bottom: auto; border-radius: 10px; }
  .module-grid { grid-template-columns: 1fr 1fr; }.star-dashboard { padding-inline: 24px; }.star-topbar { margin-inline: -24px; padding-inline: calc((100% - 820px) / 2 + 24px); }.star-picker { max-width: 820px; margin-inline: auto; }
}

@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior: auto !important; transition: none !important; } }
button:focus-visible,select:focus-visible,summary:focus-visible { outline: 3px solid #e1bc58; outline-offset: 2px; }
input:focus-visible { outline: 0; }

/* 月赛战报：暖金/橙系，区分周考深蓝与摘星墨绿。 */
.monthly-dashboard { padding-bottom: 40px; }
.monthly-dashboard .ranking-row { grid-template-columns: 47px minmax(0,1fr) 58px auto; align-items: center; }
.monthly-dashboard .ranking-row::after { display: none; }
.monthly-dashboard .ranking-row .value { text-align: right; }
.ranking-row.reward-row { border-color: #e6c96a; background: linear-gradient(90deg, #fffaf0, #fff); }
.monthly-label { margin: 0 0 12px; padding: 8px 12px; color: #6b4f12; background: #fff5db; font-size: 12px; font-weight: 700; border-radius: 3px; }
.monthly-me-card { margin-bottom: 14px; }
.monthly-me { display: flex; align-items: baseline; gap: 10px; padding: 13px 15px; border: 1px solid #e6c96a; background: #fffaf0; border-radius: 4px; }
.monthly-me span { color: #8a6d1f; font-size: 11px; font-weight: 700; }
.monthly-me b { margin-left: auto; color: #92551c; font: 900 26px Arial,sans-serif; }
.monthly-me small { color: #8a6d1f; font-size: 10px; }
.monthly-me.absent b { color: #8994a3; font-size: 16px; }
.match-list { display: grid; gap: 8px; padding-top: 6px; }
.match-row { display: grid; grid-template-columns: 50px 1fr auto 1fr auto; align-items: center; gap: 8px; padding: 11px 10px; border: 1px solid #efe3c1; background: #fffdf6; border-radius: 4px; }
.match-group { color: #a07812; font: 800 11px monospace; }
.match-side { min-width: 0; }
.match-side b { display: block; color: #2c2317; font-size: 13px; }
.match-side small { display: block; margin-top: 3px; color: #7a6a4a; font-size: 10px; }
.match-side.winner { padding-left: 8px; border-left: 3px solid #c8842a; }
.match-side.winner b { color: #92551c; }
.match-vs { color: #b89a52; font: 900 11px Arial,sans-serif; }
.match-winner { color: #92551c; font-size: 10px; font-weight: 800; text-align: right; white-space: nowrap; }
.match-winner.tie { color: #8994a3; }
.win-tag { display: inline-block; margin-left: 5px; padding: 1px 5px; color: #fff; background: #c8842a; font-size: 9px; font-style: normal; border-radius: 2px; }
.reward-tag { text-align: right; }
.reward-tag b { display: block; color: #a76f12; font: 900 16px Arial,sans-serif; }
.reward-tag small { color: #8a6d1f; font-size: 9px; }
.tea-reward { display: flex; align-items: center; gap: 10px; margin-top: 14px; padding: 11px 14px; border: 1px dashed #d9a23a; background: #fff6df; border-radius: 4px; }
.tea-reward strong { color: #92551c; font-size: 13px; white-space: nowrap; }
.tea-reward span { color: #7a5a18; font-size: 11px; line-height: 1.5; }
.history-honors { margin: 10px 0 0; padding: 9px 12px; border: 1px solid #e6c96a; background: #fffaf0; border-radius: 4px; }
.history-honors span { color: #6b4f12; font-size: 11px; font-weight: 700; }
.history-honors b { color: #92551c; font: 900 15px Arial,sans-serif; }
.manager-list { display: grid; gap: 6px; padding-top: 8px; }
.manager-row { display: grid; grid-template-columns: 1fr auto auto; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid #efe3c1; background: #fffdf6; border-radius: 4px; }
.manager-row span { color: #2c2317; font-size: 12px; }
.manager-row b { color: #92551c; font: 900 15px Arial,sans-serif; }
.manager-row small { color: #7a6a4a; font-size: 10px; }
@media (max-width: 480px) {
  .monthly-dashboard .ranking-row { grid-template-columns: 42px minmax(0,1fr) 50px auto; }
  .match-row { grid-template-columns: 42px 1fr auto 1fr; }
  .match-winner { grid-column: 1 / -1; text-align: left; }
}
