/* =====================================================================
   cyber.css —— 赛格风主题（2026-10-06）
   开关式：只在 <html class="agh-cyber"> 时生效，左下角那颗「主题」一按就切回浅色。
   app.css / refine.css / 各视图代码一行不动。

   ⚠ 这个主题最难的地方不是配色，是"视图 JS 里写死了 282 处内联颜色"：
     内联样式优先级最高，普通选择器压不住 ⇒ 这里用属性选择器
     [style*="#F8F9FA" i] 定点顶掉。实测需要压的：
       浅底 9 种：#F8F9FA #EBFBEE #FFF4E6 #EEF2FF #E3E8F2 #E9ECEF #FFF
                  #FAFAFF #FAFBFF #F2FCF6 #F1F3F5 #FFF9F0 #FFF9DB
       暗字 4 种（暗底上会看不见）：#495057 #364FC7 #1971C2 #C92A2A #B08900 #9C6B00
     灰阶 #868E96 / #ADB5BD 在暗底上本来就够，不动它。
   红与"跳过"仍然一眼分得开：红 = 霓虹玫红 #FF4D6D，跳过 = 琥珀 #FFB020。
   ===================================================================== */

:root {
  --cy-bg: #070A12;
  --cy-bg2: #0B1020;
  --cy-panel: rgba(16, 22, 40, .82);
  --cy-panel2: rgba(12, 17, 32, .92);
  --cy-line: rgba(120, 160, 220, .18);
  --cy-line2: rgba(120, 190, 255, .34);
  --cy-text: #DCE6F5;
  --cy-dim: #8FA0BC;
  --cy-cyan: #22D3EE;
  --cy-blue: #4C8DFF;
  --cy-violet: #8B7BFF;
  --cy-pink: #FF3D9A;
  --cy-amber: #FFB020;
  --cy-red: #FF4D6D;
  --cy-green: #3DDC97;
  --cy-glow: 0 0 0 1px rgba(34, 211, 238, .22), 0 0 18px rgba(34, 211, 238, .12);
  --cy-mono: "Cascadia Code", "JetBrains Mono", Consolas, "Courier New", monospace;
}

html.agh-cyber { color-scheme: dark; }

/* ----------  画布：深空底 + 网格 + 两侧霓虹溢出光  ---------- */
html.agh-cyber body {
  background:
    radial-gradient(900px 520px at 8% -10%, rgba(34, 211, 238, .13) 0%, rgba(34, 211, 238, 0) 60%),
    radial-gradient(820px 480px at 100% 4%, rgba(255, 61, 154, .12) 0%, rgba(255, 61, 154, 0) 58%),
    linear-gradient(rgba(120, 170, 255, .045) 1px, transparent 1px) 0 0 / 100% 34px,
    linear-gradient(90deg, rgba(120, 170, 255, .045) 1px, transparent 1px) 0 0 / 34px 100%,
    var(--cy-bg) !important;
  color: var(--cy-text) !important;
}

/* 极淡的扫描线（动效关掉时也跟着关） */
html.agh-cyber body::after {
  content: ""; position: fixed; inset: 0; z-index: 9998; pointer-events: none;
  background: repeating-linear-gradient(180deg, rgba(255, 255, 255, .022) 0 1px, transparent 1px 3px);
  mix-blend-mode: overlay;
}
html.agh-cyber .agh-nomotion body::after,
html.agh-cyber.agh-nomotion body::after { display: none; }
@media (prefers-reduced-motion: reduce) {
  html.agh-cyber body::after { display: none; }
}

/* ----------  面板：半透明深色 + 冷光描边  ---------- */
html.agh-cyber .card {
  background: linear-gradient(180deg, rgba(20, 27, 48, .92) 0%, rgba(13, 18, 34, .94) 100%) !important;
  border: 1px solid var(--cy-line) !important;
  box-shadow: inset 0 1px 0 rgba(150, 200, 255, .07), 0 10px 28px rgba(0, 0, 0, .45) !important;
  color: var(--cy-text) !important;
}
html.agh-cyber .card:hover {
  border-color: var(--cy-line2) !important;
  box-shadow: inset 0 1px 0 rgba(150, 200, 255, .1), var(--cy-glow), 0 14px 34px rgba(0, 0, 0, .5) !important;
}
html.agh-cyber .tag {
  background: rgba(34, 211, 238, .1) !important;
  border-color: rgba(34, 211, 238, .3) !important;
  color: #9EEAF7 !important;
}
html.agh-cyber b, html.agh-cyber h1, html.agh-cyber h2, html.agh-cyber h3 { color: #F2F6FF !important; }
html.agh-cyber .small, html.agh-cyber .hint { color: var(--cy-dim) !important; }
html.agh-cyber a { color: var(--cy-cyan) !important; }

/* ----------  表单：暗玻璃输入框  ---------- */
html.agh-cyber input, html.agh-cyber select, html.agh-cyber textarea {
  background: rgba(8, 12, 24, .8) !important;
  border: 1px solid var(--cy-line) !important;
  color: var(--cy-text) !important;
  border-radius: 9px !important;
}
html.agh-cyber input::placeholder, html.agh-cyber textarea::placeholder { color: #6C7E9B !important; }
html.agh-cyber input:focus, html.agh-cyber select:focus, html.agh-cyber textarea:focus {
  border-color: rgba(34, 211, 238, .6) !important;
  box-shadow: 0 0 0 3px rgba(34, 211, 238, .16) !important;
}

/* ----------  按钮：主按钮走"通电渐变 + 悬停辉光"  ---------- */
html.agh-cyber .btn-primary {
  background: linear-gradient(120deg, #0EA5C6 0%, #4C8DFF 42%, #8B7BFF 72%, #FF3D9A 100%) !important;
  background-size: 220% 100% !important;
  border: 1px solid rgba(180, 220, 255, .35) !important;
  color: #04070E !important;
  font-weight: 700 !important;
  letter-spacing: .02em;
  text-shadow: 0 1px 0 rgba(255, 255, 255, .25);
  box-shadow: 0 0 18px rgba(76, 141, 255, .3), inset 0 1px 0 rgba(255, 255, 255, .3) !important;
  animation: cy-flow 9s linear infinite;
}
html.agh-cyber .btn-primary:hover { filter: brightness(1.1) saturate(1.15); box-shadow: 0 0 26px rgba(34, 211, 238, .45) !important; }
@keyframes cy-flow { to { background-position: 220% 0; } }

html.agh-cyber .btn-soft, html.agh-cyber .btn-ghost2 {
  background: rgba(18, 26, 46, .9) !important;
  border: 1px solid var(--cy-line2) !important;
  color: #BFE9F7 !important;
}
html.agh-cyber .btn-soft:hover, html.agh-cyber .btn-ghost2:hover {
  background: rgba(26, 38, 66, .95) !important;
  color: #EAF9FF !important;
  box-shadow: 0 0 14px rgba(34, 211, 238, .22) !important;
}

/* ----------  弹窗与 toast  ---------- */
html.agh-cyber .modal-mask { background: rgba(3, 6, 14, .72) !important; backdrop-filter: blur(6px); }
html.agh-cyber .modal-mask > * {
  background: linear-gradient(180deg, #0E1426 0%, #0A0F1E 100%) !important;
  border: 1px solid rgba(34, 211, 238, .3) !important;
  box-shadow: 0 0 0 1px rgba(34, 211, 238, .1), 0 30px 80px rgba(0, 0, 0, .66), 0 0 40px rgba(76, 141, 255, .12) !important;
}
html.agh-cyber .agh-toast, html.agh-cyber #agh-toast-host > * {
  background: rgba(10, 15, 30, .96) !important;
  border: 1px solid var(--cy-line2) !important;
  color: var(--cy-text) !important;
  box-shadow: 0 18px 44px rgba(0, 0, 0, .6), 0 0 22px rgba(34, 211, 238, .16) !important;
}

/* ----------  压掉内联浅底（这是暗色主题能不能成立的关键）  ---------- */
/* ⚠ 这里一律写成 background:#xxx —— 上一版我用了裸 [style*="#fff" i]，
   那会把"只是文字白色、底色是彩色"的徽章也一起洗掉（子串匹配太宽）。
   只压背景，不碰只写了 color 的元素。 */
html.agh-cyber [style*="background:#F8F9FA" i], html.agh-cyber [style*="background: #F8F9FA" i],
html.agh-cyber [style*="background:#F8FAFF" i], html.agh-cyber [style*="background: #F8FAFF" i],
html.agh-cyber [style*="background:#FAFAFF" i], html.agh-cyber [style*="background:#FAFBFF" i],
html.agh-cyber [style*="background:#EEF2FF" i], html.agh-cyber [style*="background:#E3E8F2" i],
html.agh-cyber [style*="background:#E9ECEF" i], html.agh-cyber [style*="background:#F1F3F5" i],
html.agh-cyber [style*="background:#FFF9F0" i], html.agh-cyber [style*="background:#fff" i],
html.agh-cyber [style*="background: #fff" i], html.agh-cyber [style*="background:#FFF" i] {
  background: rgba(18, 26, 46, .86) !important;
  border-color: var(--cy-line) !important;
}
/* 语义底色：绿=成功、黄=提示、橙=跳过、红=危险，各自压深并留一点同色光 */
html.agh-cyber [style*="background:#EBFBEE" i] { background: rgba(61, 220, 151, .12) !important; border-color: rgba(61, 220, 151, .34) !important; }
html.agh-cyber [style*="background:#F2FCF6" i] { background: rgba(61, 220, 151, .1) !important; border-color: rgba(61, 220, 151, .3) !important; }
html.agh-cyber [style*="background:#FFF9DB" i] { background: rgba(255, 176, 32, .12) !important; border-color: rgba(255, 176, 32, .34) !important; }
html.agh-cyber [style*="background:#FFF4E6" i] { background: rgba(255, 176, 32, .1) !important; border-color: rgba(255, 176, 32, .32) !important; }
html.agh-cyber [style*="background:#FFF0EB" i], html.agh-cyber [style*="background:#FFF6F5" i] {
  background: rgba(255, 77, 109, .12) !important; border-color: rgba(255, 77, 109, .34) !important;
}
html.agh-cyber [style*="background:#E6FCF5" i] { background: rgba(34, 211, 238, .12) !important; border-color: rgba(34, 211, 238, .34) !important; }

/* 暗底上会"看不见"的深色文字，逐色提亮（只改颜色，不改语义） */
html.agh-cyber [style*="#495057" i] { color: #C6D3E8 !important; }
html.agh-cyber [style*="#364FC7" i] { color: #8FB0FF !important; }
html.agh-cyber [style*="#1971C2" i] { color: #56C8F5 !important; }
html.agh-cyber [style*="#C92A2A" i] { color: var(--cy-red) !important; }
html.agh-cyber [style*="#E03131" i] { color: var(--cy-red) !important; }
html.agh-cyber [style*="#E8590C" i] { color: var(--cy-amber) !important; }
html.agh-cyber [style*="#B08900" i], html.agh-cyber [style*="#9C6B00" i],
html.agh-cyber [style*="#B08A2E" i] { color: var(--cy-amber) !important; }
html.agh-cyber [style*="#2B8A3E" i], html.agh-cyber [style*="#2F9E44" i],
html.agh-cyber [style*="#0B7285" i], html.agh-cyber [style*="#087F5B" i] { color: var(--cy-green) !important; }
html.agh-cyber [style*="#7048E8" i] { color: var(--cy-violet) !important; }
html.agh-cyber [style*="#868E96" i], html.agh-cyber [style*="#ADB5BD" i] { color: #9BB0CC !important; }

/* 内联写死白字的（在浅底上写的 #fff），暗底上反而太刺：收一点 */
html.agh-cyber [style*="color:#fff" i], html.agh-cyber [style*="color: #fff" i] { color: #E9F2FF !important; }

/* ----------  数字用等宽：赛格感一半来自对齐  ---------- */
html.agh-cyber .tag, html.agh-cyber .stat-num, html.agh-cyber .big-num,
html.agh-cyber .num, html.agh-cyber td, html.agh-cyber .countdown-days {
  font-family: var(--cy-mono);
  letter-spacing: .01em;
}

/* ----------  滚动条与右下角按钮  ---------- */
html.agh-cyber *::-webkit-scrollbar-thumb { background: rgba(34, 211, 238, .34); background-clip: content-box; }
html.agh-cyber *::-webkit-scrollbar-thumb:hover { background: rgba(34, 211, 238, .55); background-clip: content-box; }
html.agh-cyber #agh-top {
  background: rgba(12, 18, 34, .9); border-color: var(--cy-line2); color: var(--cy-cyan);
  box-shadow: 0 0 18px rgba(34, 211, 238, .22);
}
html.agh-cyber #agh-kbd {
  background: rgba(10, 15, 30, .82); border-color: var(--cy-line); color: var(--cy-dim);
}
html.agh-cyber #agh-kbd kbd { background: rgba(24, 34, 58, .9); border-color: var(--cy-line2); color: #BFE9F7; }
html.agh-cyber #agh-kbd .agh-chip { background: rgba(24, 34, 58, .9) !important; border-color: var(--cy-line2) !important; color: #BFE9F7 !important; }

/* ----------  粘性筛选条在暗色下的毛玻璃  ---------- */
html.agh-cyber .agh-sticky.agh-stuck {
  background: rgba(8, 12, 24, .78) !important;
  box-shadow: 0 8px 24px rgba(0, 0, 0, .5), 0 1px 0 rgba(34, 211, 238, .18) !important;
}

/* ----------  动效关掉时：通电渐变与辉光都停  ---------- */
html.agh-cyber.agh-nomotion .btn-primary { animation: none !important; }
html.agh-cyber.agh-nomotion .card:hover { box-shadow: 0 10px 28px rgba(0, 0, 0, .45) !important; }
/* =====================================================================
/* 上一版撤 color 撤过头：档案卡标题（深色字）压在深底上几乎看不见。
   正解是按语义分开：被改了底色的那些类补回亮字，带状态语义的类
   （数字、标签、价格、天数）一律不碰字色 —— 作者口径：红与跳过必须长得不一样。 */

   这里按 app.css 实际扫出来的类名逐条压底色。⚠ 不要顺手加 color: !important ——
   第一版加了，结果看板上 6/1/2/37 那四个状态色（玫红/蓝/绿/灰）被压成一片白，
   正好撞作者定的「红与跳过必须长得不一样」。底色转深后原来的浅灰字本来就够读。
   ===================================================================== */
html.agh-cyber /* Arena Growth Hub — 统一视觉 */
:root {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 顶栏 ---------- */
.topbar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .brand {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .brand span {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .nav-item {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .nav-item:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .userbox {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .user-name {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .ghost {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .ghost:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 布局 ---------- */
/* ⚠️ 防横向溢出的三条（少一条就会出现"左边空一块、右边要拖着看"）：
   1) 长网址/长单词必须能断行（情报出处全是 https://…，不断行就把容器顶宽）；
   2) 栅格与弹性子项允许收缩（grid/flex 子项默认 min-width:auto，会被内容撑住）；
   3) 容器宽度按视口收（min(1440px {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber 100%)）并居中，宽屏不靠左不靠右。            */
.container {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .grid>* {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .row>* {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .card {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .card * {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .modal * {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .small {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .table-scroll {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 弹窗打开时 <html> 会 overflow:hidden，竖向滚动条一消失，整页内容会横向抖 ~15px。
   钉住这条槽位，开/关弹窗时页面宽度不动（配合 ui.js 的记住/恢复滚动位置，
   关掉详情才不会"跳回顶部 + 闪一下"）。 */
html {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ⚠️ 元素长这样：<div class="modal" id="modal-box">。以前写的是 .modal-box（class 选择器），
   从来没有匹配到任何东西 —— 于是 openModal( {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber ) 那种**内联宽度**没有上界，
   窗口比它窄时弹窗直接横向溢出、右边的按钮掉到屏幕外（就是用户说的"往右拉还超屏"）。
   改成给 .modal 本身兜底：内联宽度仍然生效，但永远不会超过视口。 */
.modal {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .view h1.page-title {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .page-sub {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .grid {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .grid.cols-2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .grid.cols-3 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .grid.cols-4 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 手机端（作者：「能够通过手机进行账号登录」，2026-09-29）----------
   三条各治一个实测症状：
   1) 输入框 font-size 必须 ≥16px —— iOS Safari 看到小于 16px 会**自动放大整页**，
      一放大就出现"输完密码看不见自己在打什么、要左右拖"；
   2) 按钮要有最小高度，手指点不准不是"体验差"，是"登不进来"；
   3) 登录卡片与容器按屏宽收窄，别把 420px 的卡片顶出 375px 的屏。            */
.auth-card input {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-forgot {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-forgot a {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .forgot-panel {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .forgot-panel label {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .forgot-panel input {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .container {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-card {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .btn-primary {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .btn-ghost2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .topbar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-tabs .tab {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .card h3 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .card h3 .more {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 徽章/状态 ---------- */
.badge {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 卡片头部那行：状态徽标不许被标题挤成竖排（实测「🔥 报名倒计时」变成一列字盖到内容上），
   标题让位、可折行；两者都装不下时整行换行。 */
.comp-card .row.between {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .row.between > div {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .badge {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .badge.upcoming {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 按钮 ---------- */
.btn-primary {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .btn-soft {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .btn-danger {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .btn-primary:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .btn-ghost2:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .block {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 输入 ---------- */
.field {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .field label {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .inline {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .inline>* {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .hint {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .toolbar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .searchbox {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .searchbox input {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .searchbox::before {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 登录 ---------- */
.auth-screen {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-logo {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-sub {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-card label {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-card input {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-card .error {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-card #auth-submit {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .auth-demo {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .hidden {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 比赛卡片 ---------- */
.comp-card {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-title {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-title a {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-title a:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-org {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-dates {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .countdown {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .countdown.red {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .countdown.blue {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .progress>i {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .progress.warn>i {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 倒计时条 */
.countdown-strip {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .cd-item {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .cd-item .cd-title {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .cd-item .cd-days {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .cd-item.urgent .cd-days {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 表格 ---------- */
table {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 模态 ---------- */
.mask {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .modal-head h2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .modal-body {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .modal-foot {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-row.active {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-row.done .stage-idx {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-main {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-label {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-hint {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-notes {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stage-notes .row2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .coord b {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mini-text {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mini-text:focus {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .evidence {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .filechip span {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .del-x {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .slider-row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .slider-row input {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .slider-row output {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 情绪与复盘的字段 */
.journal-field {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .journal-field .jf-label {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .journal-field textarea {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .journal-field textarea:focus {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 分析页 ---------- */
.stat-tile {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stat-tile .num {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .stat-tile .lbl {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .chart-box {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .chart-box img {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .captain {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .captain h4 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 履历 ---------- */
.portfolio-pick {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .portfolio-pick:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .portfolio-pick.checked {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .portfolio-pick input {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .portfolio-pick .pp-title {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .portfolio-pick .pp-meta {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .summary-cut {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- toast ---------- */
.toasts {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .toast {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .toast.ok {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .toast.warn {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 空态 / misc ---------- */
.empty {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .empty .big {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .chip-filter {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .chip.active {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .chip:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .center {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mt8 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mt12 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mt16 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mb8 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mb12 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mb16 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .flex {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .between {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .gap8 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .gap16 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .wrap {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .loading {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .spin {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .winbar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .modal-foot:empty {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber )）：只是版式靠右、内部自己滚。
   ⚠️ 遮罩照常接事件（别再加 pointer-events:none）—— 用户明确要求：
   弹窗打开时滚轮不能带动背后的页面。背景锁定见下面 .noscroll。 */
.mask.side {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .mask.side .modal {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 弹窗一开就锁背景滚动：滚轮只作用于弹窗内部；关闭时解锁，滚动位置由浏览器保留不会跳顶 */
html.noscroll {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 只在"外层滚动面"这一层截住滚动链：滚轮不会漏到背后的页面。
   ⚠️ 这里曾经把弹窗盒子连同它的**全部后代**（选择器末尾带一个 `*` 通配）
   一起加了 contain，带 `*` 会把弹窗内部每一个小滚动区（例如「➕ 添加比赛
   档案」里那个赛事候选列表）也截断：鼠标停在列表上、它滚到底之后链本该
   交给外层，外层却被自己那条 contain 挡死 —— 表现就是"有时候划不动，
   得把鼠标挪到别处才能滚"。内部小滚动区要用的是默认的自然接力。
   health_report.py 里有一条反向断言盯着这里别再加回盒子层。 */
.mask {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 证据播放器覆盖层：刻意不复用 .mask/#modal-box —— 共用弹窗会把上一个
   弹窗的清理钩子排空执行（见 records.js 的 mediaOverlay 注释），
   在档案里播视频就会顺手 revoke 掉刚取到的 blob。 */
.lb-mask {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .lb-box video {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ---------- 赛事卡片：修"字重叠、空间挤"（作者 2026-09-30） ---------- */
/* ① 按钮行必须能换行：卡片里 6 颗按钮都是 white-space:nowrap，
      窄卡片（三列时约 300px）装不下就横向溢出，字压到相邻元素上。 */
.comp-card .row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ② 全局 .btn-ghost2/.btn-primary/.btn-soft 是 min-height:40px（给正常表单用的），
      卡片上那些 11.5px 的小按钮被顶成 40px 高：小字坐在高框里，又挤又空。 */
.comp-card .btn-ghost2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .btn-primary {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .btn-soft {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ③ 长标题要能折行：flex 子项默认 min-width:auto，不写 0 就撑破父容器 */
.comp-title {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .tag {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .countdown {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .info-badge {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ④ 卡片内所有文字块都不许压到兄弟元素上；标签行允许换行 */
.comp-card {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card > div {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .small {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ⑤ 倒计时/信息那一行的数字与文字之间留口气（先前贴在一起像重叠） */
.comp-card .row.gap8 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 按钮那一坨自己占一行（作者 2026-09-30：「读通知那颗被挤到最右边，字都没显示全」）。
   根因：那个 span 带内联 flex-shrink:0 —— 它不许变窄，于是撑破卡片，
   再被我上一轮加的 overflow:hidden 裁掉，表现就是最右边那颗按钮文字缺失。
   必须用 !important 才压得住内联样式。 */
.comp-card .row.between {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .row.between > span.row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 按钮文字不许被截：宁可换一行也不裁字 */
.comp-card .btn-ghost2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 标题那行给按钮让出位置后，自己也要能收缩折行 */
.comp-card .row.between > div {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 筛选条那颗「🔥 报名倒计时」被压成一列竖字、还盖到卡片上（作者截图）：
   chip 没有 white-space:nowrap，容器一挤就一个字一行；
   它又是绝对/浮动定位的话会飘到列表上 —— 这里先保证它绝不竖排、且随条换行。 */
.chip {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .row.wrap {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .countdown-strip {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 卡片里的按钮同理：宁可换行，不许把字压成竖排或裁掉 */
.comp-card .btn-ghost2 {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ── 三列布局下卡片底部那行（作者：「我这边三个卡片并列，宽度没你预期的那么宽」）──
   .footer-bar 里塞了三样：状态徽标 + 来源(旧库导入/手动录入) + 6 颗 nowrap 按钮。
   450px 宽的卡片装不下 → 来源那几个字被压成"旧""入"竖排残字。
   之前我写的规则挂在 .row.between 上，容器其实叫 .footer-bar —— 所以完全没生效。 */
.footer-bar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar > span.row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar > span.small {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 徽标与来源同一行放得下就同行，放不下各自换行，绝不再挤成竖排 */
.footer-bar .badge {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* ── 卡片底部排版（作者：「优化一下排版」）──────────────────────────────
   上一版让按钮自己换行了，但 6 颗右对齐 → 最后一颗「读赛项」孤零零挂在右下角，
   而且每颗宽窄不一。改成三列网格：6 颗正好整齐两行，窄屏两列也不会错位。 */
.footer-bar > span.row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar > span.row > button {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 徽标 + 来源那一行与按钮块之间给一条明确的间隔，别像散字飘着 */
.footer-bar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar > .badge {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 来源文字（旧库导入/手动录入）跟在徽标后面，字号降一档、颜色压暗：
   它是次要信息，先前和徽标一样重，看着抢 */
.footer-bar > span.small {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 三列卡片时每张只有 ~450px：按钮两列更好读，最后一颗不会单独悬着 */
  .footer-bar > span.row {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card:focus-within {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 标题是卡片唯一的主角：字号略升、字重收紧，其余全部降一档 */
.comp-title {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card .tag.diff {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 主办方 / 日期：靠灰度和字号退到第二层，不靠颜色 */
.comp-card .comp-org {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 资料进度条：只把圆角收干净，不加渐变 */
.comp-card > div[style*="border-radius"] {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card > div[style*="border-radius"] > div {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 底部：一条极轻的分隔；按钮保持安静填充，主按钮只比别的重一点点 */
.footer-bar {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar .btn-primary {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .footer-bar .btn-primary:hover {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber /* 删除：平时灰、悬停红 —— 这条与配色无关，是防误点，保留 */
.footer-bar .btn-ghost2[style*="C92A2A"] {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}
html.agh-cyber .comp-card {
  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* Arena Growth Hub — 统一视觉 */
:root {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 顶栏 ---------- */
.topbar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .brand {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .brand span {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .nav-item {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .nav-item:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .userbox {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .user-name {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .ghost {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .ghost:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 布局 ---------- */
/* ⚠️ 防横向溢出的三条（少一条就会出现"左边空一块、右边要拖着看"）：
   1) 长网址/长单词必须能断行（情报出处全是 https://…，不断行就把容器顶宽）；
   2) 栅格与弹性子项允许收缩（grid/flex 子项默认 min-width:auto，会被内容撑住）；
   3) 容器宽度按视口收（min(1440px {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber 100%)）并居中，宽屏不靠左不靠右。            */
.container {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .grid>* {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .row>* {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .card {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .card * {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .modal * {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .small {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .table-scroll {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 弹窗打开时 <html> 会 overflow:hidden，竖向滚动条一消失，整页内容会横向抖 ~15px。
   钉住这条槽位，开/关弹窗时页面宽度不动（配合 ui.js 的记住/恢复滚动位置，
   关掉详情才不会"跳回顶部 + 闪一下"）。 */
html {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ⚠️ 元素长这样：<div class="modal" id="modal-box">。以前写的是 .modal-box（class 选择器），
   从来没有匹配到任何东西 —— 于是 openModal( {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber ) 那种**内联宽度**没有上界，
   窗口比它窄时弹窗直接横向溢出、右边的按钮掉到屏幕外（就是用户说的"往右拉还超屏"）。
   改成给 .modal 本身兜底：内联宽度仍然生效，但永远不会超过视口。 */
.modal {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .view h1.page-title {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .page-sub {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .grid {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .grid.cols-2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .grid.cols-3 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .grid.cols-4 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 手机端（作者：「能够通过手机进行账号登录」，2026-09-29）----------
   三条各治一个实测症状：
   1) 输入框 font-size 必须 ≥16px —— iOS Safari 看到小于 16px 会**自动放大整页**，
      一放大就出现"输完密码看不见自己在打什么、要左右拖"；
   2) 按钮要有最小高度，手指点不准不是"体验差"，是"登不进来"；
   3) 登录卡片与容器按屏宽收窄，别把 420px 的卡片顶出 375px 的屏。            */
.auth-card input {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-forgot {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-forgot a {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .forgot-panel {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .forgot-panel label {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .forgot-panel input {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .container {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-card {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .btn-primary {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .btn-ghost2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .topbar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-tabs .tab {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .card h3 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .card h3 .more {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 徽章/状态 ---------- */
.badge {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* 卡片头部那行：状态徽标不许被标题挤成竖排（实测「🔥 报名倒计时」变成一列字盖到内容上），
   标题让位、可折行；两者都装不下时整行换行。 */
.comp-card .row.between {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .row.between > div {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .badge {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .badge.upcoming {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* ---------- 按钮 ---------- */
.btn-primary {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .btn-soft {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .btn-danger {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .btn-primary:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .btn-ghost2:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .block {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 输入 ---------- */
.field {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .field label {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .inline {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .inline>* {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .hint {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .toolbar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .searchbox {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .searchbox input {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .searchbox::before {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 登录 ---------- */
.auth-screen {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-logo {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-sub {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-card label {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-card input {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-card .error {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-card #auth-submit {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .auth-demo {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .hidden {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 比赛卡片 ---------- */
.comp-card {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-title {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-title a {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-title a:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-org {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-dates {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .countdown {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .countdown.red {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .countdown.blue {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .footer-bar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .progress>i {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .progress.warn>i {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* 倒计时条 */
.countdown-strip {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .cd-item {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .cd-item .cd-title {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .cd-item .cd-days {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .cd-item.urgent .cd-days {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* ---------- 表格 ---------- */
table {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 模态 ---------- */
.mask {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .modal-head h2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .modal-body {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .modal-foot {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .stage-row.active {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stage-row.done .stage-idx {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stage-main {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stage-label {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stage-hint {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stage-notes {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stage-notes .row2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .coord b {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mini-text {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mini-text:focus {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .evidence {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .filechip span {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .del-x {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .slider-row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .slider-row input {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .slider-row output {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 情绪与复盘的字段 */
.journal-field {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .journal-field .jf-label {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .journal-field textarea {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .journal-field textarea:focus {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 分析页 ---------- */
.stat-tile {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stat-tile .num {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .stat-tile .lbl {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .chart-box {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .chart-box img {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .captain {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .captain h4 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 履历 ---------- */
.portfolio-pick {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .portfolio-pick:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .portfolio-pick.checked {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .portfolio-pick input {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .portfolio-pick .pp-title {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .portfolio-pick .pp-meta {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .summary-cut {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- toast ---------- */
.toasts {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .toast {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .toast.ok {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .toast.warn {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* ---------- 空态 / misc ---------- */
.empty {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .empty .big {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .chip-filter {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .chip.active {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .chip:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .center {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mt8 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mt12 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mt16 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mb8 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mb12 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mb16 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .flex {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .between {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .gap8 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .gap16 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .wrap {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .loading {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .spin {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .winbar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .modal-foot:empty {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber )）：只是版式靠右、内部自己滚。
   ⚠️ 遮罩照常接事件（别再加 pointer-events:none）—— 用户明确要求：
   弹窗打开时滚轮不能带动背后的页面。背景锁定见下面 .noscroll。 */
.mask.side {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .mask.side .modal {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 弹窗一开就锁背景滚动：滚轮只作用于弹窗内部；关闭时解锁，滚动位置由浏览器保留不会跳顶 */
html.noscroll {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 只在"外层滚动面"这一层截住滚动链：滚轮不会漏到背后的页面。
   ⚠️ 这里曾经把弹窗盒子连同它的**全部后代**（选择器末尾带一个 `*` 通配）
   一起加了 contain，带 `*` 会把弹窗内部每一个小滚动区（例如「➕ 添加比赛
   档案」里那个赛事候选列表）也截断：鼠标停在列表上、它滚到底之后链本该
   交给外层，外层却被自己那条 contain 挡死 —— 表现就是"有时候划不动，
   得把鼠标挪到别处才能滚"。内部小滚动区要用的是默认的自然接力。
   health_report.py 里有一条反向断言盯着这里别再加回盒子层。 */
.mask {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 证据播放器覆盖层：刻意不复用 .mask/#modal-box —— 共用弹窗会把上一个
   弹窗的清理钩子排空执行（见 records.js 的 mediaOverlay 注释），
   在档案里播视频就会顺手 revoke 掉刚取到的 blob。 */
.lb-mask {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .lb-box video {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ---------- 赛事卡片：修"字重叠、空间挤"（作者 2026-09-30） ---------- */
/* ① 按钮行必须能换行：卡片里 6 颗按钮都是 white-space:nowrap，
      窄卡片（三列时约 300px）装不下就横向溢出，字压到相邻元素上。 */
.comp-card .row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ② 全局 .btn-ghost2/.btn-primary/.btn-soft 是 min-height:40px（给正常表单用的），
      卡片上那些 11.5px 的小按钮被顶成 40px 高：小字坐在高框里，又挤又空。 */
.comp-card .btn-ghost2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .btn-primary {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .btn-soft {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ③ 长标题要能折行：flex 子项默认 min-width:auto，不写 0 就撑破父容器 */
.comp-title {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .tag {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .comp-card .countdown {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber .comp-card .info-badge {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* ④ 卡片内所有文字块都不许压到兄弟元素上；标签行允许换行 */
.comp-card {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card > div {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .small {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ⑤ 倒计时/信息那一行的数字与文字之间留口气（先前贴在一起像重叠） */
.comp-card .row.gap8 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 按钮那一坨自己占一行（作者 2026-09-30：「读通知那颗被挤到最右边，字都没显示全」）。
   根因：那个 span 带内联 flex-shrink:0 —— 它不许变窄，于是撑破卡片，
   再被我上一轮加的 overflow:hidden 裁掉，表现就是最右边那颗按钮文字缺失。
   必须用 !important 才压得住内联样式。 */
.comp-card .row.between {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .row.between > span.row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 按钮文字不许被截：宁可换一行也不裁字 */
.comp-card .btn-ghost2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 标题那行给按钮让出位置后，自己也要能收缩折行 */
.comp-card .row.between > div {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 筛选条那颗「🔥 报名倒计时」被压成一列竖字、还盖到卡片上（作者截图）：
   chip 没有 white-space:nowrap，容器一挤就一个字一行；
   它又是绝对/浮动定位的话会飘到列表上 —— 这里先保证它绝不竖排、且随条换行。 */
.chip {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .row.wrap {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .countdown-strip {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* 卡片里的按钮同理：宁可换行，不许把字压成竖排或裁掉 */
.comp-card .btn-ghost2 {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* ── 三列布局下卡片底部那行（作者：「我这边三个卡片并列，宽度没你预期的那么宽」）──
   .footer-bar 里塞了三样：状态徽标 + 来源(旧库导入/手动录入) + 6 颗 nowrap 按钮。
   450px 宽的卡片装不下 → 来源那几个字被压成"旧""入"竖排残字。
   之前我写的规则挂在 .row.between 上，容器其实叫 .footer-bar —— 所以完全没生效。 */
.footer-bar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .footer-bar > span.row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .footer-bar > span.small {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 徽标与来源同一行放得下就同行，放不下各自换行，绝不再挤成竖排 */
.footer-bar .badge {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* ── 卡片底部排版（作者：「优化一下排版」）──────────────────────────────
   上一版让按钮自己换行了，但 6 颗右对齐 → 最后一颗「读赛项」孤零零挂在右下角，
   而且每颗宽窄不一。改成三列网格：6 颗正好整齐两行，窄屏两列也不会错位。 */
.footer-bar > span.row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .footer-bar > span.row > button {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 徽标 + 来源那一行与按钮块之间给一条明确的间隔，别像散字飘着 */
.footer-bar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .footer-bar > .badge {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* 来源文字（旧库导入/手动录入）跟在徽标后面，字号降一档、颜色压暗：
   它是次要信息，先前和徽标一样重，看着抢 */
.footer-bar > span.small {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 三列卡片时每张只有 ~450px：按钮两列更好读，最后一颗不会单独悬着 */
  .footer-bar > span.row {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card:focus-within {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 标题是卡片唯一的主角：字号略升、字重收紧，其余全部降一档 */
.comp-title {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card .tag.diff {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
}

html.agh-cyber /* 主办方 / 日期：靠灰度和字号退到第二层，不靠颜色 */
.comp-card .comp-org {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 资料进度条：只把圆角收干净，不加渐变 */
.comp-card > div[style*="border-radius"] {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card > div[style*="border-radius"] > div {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 底部：一条极轻的分隔；按钮保持安静填充，主按钮只比别的重一点点 */
.footer-bar {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .footer-bar .btn-primary {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .footer-bar .btn-primary:hover {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber /* 删除：平时灰、悬停红 —— 这条与配色无关，是防误点，保留 */
.footer-bar .btn-ghost2[style*="C92A2A"] {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

html.agh-cyber .comp-card {

  background: linear-gradient(180deg, rgba(20,27,48,.92) 0%, rgba(13,18,34,.94) 100%) !important;
  border-color: var(--cy-line) !important;
  color: var(--cy-text) !important;
}

/* ── 筛选 chip 的选中态必须真的「亮」起来（作者 2026-10-11 反馈：点筛选没反应）──
   原来这一段是整站刷深色时批量替换留下的：.chip / .chip.active / .chip:hover
   四条规则拿到了**完全相同**的 background 与 border-color ⇒ 点下去毫无视觉反馈 ✗
   实测（1280 桌面 · 赛格主题）：选中与未选中的计算样式一模一样（同渐变、同边框、无阴影）
   ★ 只动 cyber.css：浅色主题本来就有 --brand 实心高亮，那是另一份实现，不去碰它 ✓
   ★ 选中态用霓虹青：跟这个主题的"亮"语言一致（顶栏徽标、倒计时都是这套）✓ */
html.agh-cyber .chip.active{background:linear-gradient(180deg,rgba(34,211,238,.26) 0%,rgba(76,141,255,.16) 100%) !important;border-color:var(--cy-cyan) !important;color:#EAF9FF !important;box-shadow:0 0 0 1px rgba(34,211,238,.30),0 0 14px rgba(34,211,238,.30) !important;font-weight:700}
html.agh-cyber .chip:hover{border-color:var(--cy-line2) !important}
html.agh-cyber .chip-filter{border-color:var(--cy-line) !important}

/* 页脚备案号在赛格主题下的配色：深底上原来的浅灰太暗看不清 ⇒ 换成主题里的 dim 色 */
html.agh-cyber .icp{color:var(--cy-dim) !important}
html.agh-cyber .icp a{color:var(--cy-dim) !important;border-bottom-color:rgba(143,160,188,.4)}
html.agh-cyber .icp a:hover{color:var(--cy-cyan) !important}
