/* ============================================================
   Tailwind 兼容补丁层（v4 变量体系）
   背景：tailwind.min.css 为旧版页面预编译，后续新增的类大量缺失，
   导致广告弹窗、下载区、后台等处严重错位。此处按 Tailwind v4
   的 --color-* / --tw-gradient-* 变量体系补齐缺失工具类。
   本文件在 tailwind.min.css / style.css 之后加载，可安全覆盖。
   ============================================================ */

/* ---------- 调色板变量（缺失部分） ---------- */
:root {
  --color-pink-100:#eef2ff; --color-pink-200:#e0e7ff; --color-pink-300:#c7d2fe;
  --color-pink-400:#818cf8; --color-pink-600:#4f46e5;
  --color-purple-50:#eef2ff; --color-purple-100:#e0e7ff; --color-purple-200:#c7d2fe;
  --color-purple-400:#818cf8;
  --color-rose-50:#f8fafc; --color-rose-200:#e2e8f0; --color-rose-700:#475569;
  --color-sky-500:#0ea5e9; --color-sky-600:#0284c7;
  --color-violet-600:#4f46e5;
  --color-emerald-500:#10b981;
  --color-gray-500:#6b7280;
  --color-indigo-50:#eef2ff; --color-indigo-100:#e0e7ff; --color-indigo-500:#6366f1;
  --color-red-500:#ef4444;
  --color-amber-400:#fbbf24; --color-amber-500:#f59e0b;
  --color-fuchsia-300:#a5b4fc; --color-fuchsia-400:#818cf8; --color-fuchsia-500:#6366f1; --color-fuchsia-600:#4f46e5;
}

/* ---------- 渐变色标 ---------- */
.from-pink-100{--tw-gradient-from:var(--color-pink-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.from-purple-50{--tw-gradient-from:var(--color-purple-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.from-purple-100{--tw-gradient-from:var(--color-purple-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.from-purple-400{--tw-gradient-from:var(--color-purple-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.from-fuchsia-500{--tw-gradient-from:var(--color-fuchsia-500);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.from-sky-50{--tw-gradient-from:var(--color-sky-50);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.from-transparent{--tw-gradient-from:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.to-pink-100{--tw-gradient-to:var(--color-pink-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.to-purple-100{--tw-gradient-to:var(--color-purple-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.to-purple-400{--tw-gradient-to:var(--color-purple-400);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.to-transparent{--tw-gradient-to:transparent;--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}

/* ---------- 颜色工具类 ---------- */
.bg-pink-100{background-color:var(--color-pink-100)}
.bg-pink-400{background-color:var(--color-pink-400)}
.bg-pink-600{background-color:var(--color-pink-600)}
.bg-purple-50{background-color:var(--color-purple-50)}
.bg-rose-50{background-color:var(--color-rose-50)}
.bg-slate-800{background-color:var(--color-slate-800)}
.bg-amber-500{background-color:var(--color-amber-500)}
.bg-black\/50{background-color:rgba(0,0,0,.5)}
.bg-black\/60{background-color:rgba(0,0,0,.6)}
.bg-black\/30{background-color:rgba(0,0,0,.3)}
.bg-pink-50\/50{background-color:rgba(252,231,243,.5)}
.bg-white\/15{background-color:rgba(255,255,255,.15)}
.bg-white\/20{background-color:rgba(255,255,255,.2)}
.bg-white\/60{background-color:rgba(255,255,255,.6)}
.bg-white\/95{background-color:rgba(255,255,255,.95)}
.text-pink-200{color:var(--color-pink-200)}
.text-pink-300{color:var(--color-pink-300)}
.text-pink-400{color:var(--color-pink-400)}
.text-pink-500{color:var(--color-pink-500)}
.text-pink-600{color:var(--color-pink-600)}
.text-purple-400{color:var(--color-purple-400)}
.text-purple-600{color:var(--color-purple-600)}
.text-rose-700{color:var(--color-rose-700)}
.text-sky-500{color:var(--color-sky-500)}
.text-sky-600{color:var(--color-sky-600)}
.text-slate-200{color:var(--color-slate-200)}
.text-violet-600{color:var(--color-violet-600)}
.text-emerald-500{color:var(--color-emerald-500)}
.text-gray-500{color:var(--color-gray-500)}
.text-white\/85{color:rgba(255,255,255,.85)}
.text-white\/90{color:rgba(255,255,255,.9)}
.border-pink-200{border-color:var(--color-pink-200)}
.border-pink-300{border-color:var(--color-pink-300)}
.border-pink-500{border-color:var(--color-pink-500)}
.border-purple-100{border-color:var(--color-purple-100)}
.border-purple-200{border-color:var(--color-purple-200)}
.border-rose-200{border-color:var(--color-rose-200)}
.border-slate-300{border-color:var(--color-slate-300)}
.border-white\/40{border-color:rgba(255,255,255,.4)}
.border-dashed{border-style:dashed}
.ring-black\/5{--tw-ring-color:rgba(0,0,0,.05)}
.accent-pink-500{accent-color:var(--color-pink-500)}

/* ---------- 尺寸 / 间距 / 布局 ---------- */
.h-1\.5{height:.375rem}
.w-1\.5{width:.375rem}
.h-3\.5{height:.875rem}
.w-3\.5{width:.875rem}
.h-12{height:3rem}
.h-28{height:7rem}
.h-40{height:10rem}
.h-64{height:16rem}
.h-auto{height:auto}
.w-16{width:4rem}
.w-fit{width:fit-content}
.max-h-24{max-height:6rem}
.max-h-32{max-height:8rem}
.max-h-56{max-height:14rem}
.max-h-64{max-height:16rem}
.max-w-lg{max-width:32rem}
.max-w-full{max-width:100%}
.min-h-10{min-height:2.5rem}
.col-span-2{grid-column:span 2/span 2}
.gap-1\.5{gap:.375rem}
.mb-0\.5{margin-bottom:.125rem}
.mb-1\.5{margin-bottom:.375rem}
.mt-0\.5{margin-top:.125rem}
.-mt-0\.5{margin-top:-.125rem}
.mt-1\.5{margin-top:.375rem}
.mt-12{margin-top:3rem}
.mr-1{margin-right:.25rem}
.my-1{margin-top:.25rem;margin-bottom:.25rem}
.ml-auto{margin-left:auto}
.p-2\.5{padding:.625rem}
.p-1{padding:.25rem}
.px-2\.5{padding-left:.625rem;padding-right:.625rem}
.px-1\.5{padding-left:.375rem;padding-right:.375rem}
.px-3\.5{padding-left:.875rem;padding-right:.875rem}
.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}
.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}
.pr-12{padding-right:3rem}
.pt-1{padding-top:.25rem}
.pt-2{padding-top:.5rem}
.top-0\.5{top:.125rem}
.top-2{top:.5rem}
.right-0\.5{right:.125rem}
.right-3{right:.75rem}
.space-y-0\.5>:not([hidden])~:not([hidden]){margin-top:.125rem}
.space-y-1>:not([hidden])~:not([hidden]){margin-top:.25rem}
.space-y-2>:not([hidden])~:not([hidden]){margin-top:.5rem}
.space-y-3>:not([hidden])~:not([hidden]){margin-top:.75rem}
.overflow-auto{overflow:auto}
.select-none{user-select:none}
.touch-none{touch-action:none}
.whitespace-nowrap{white-space:nowrap}
.cursor-move{cursor:move}
.rounded-sm{border-radius:.125rem}
.object-contain{object-fit:contain}
.underline{text-decoration-line:underline}
.list-decimal{list-style-type:decimal}
.list-disc{list-style-type:disc}
.list-inside{list-style-position:inside}
.leading-snug{line-height:1.375}
.opacity-90{opacity:.9}
.opacity-20{opacity:.2}
.animate-pulse{animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}
@keyframes pulse{50%{opacity:.5}}
.text-\[10px\]{font-size:10px}
.text-\[11px\]{font-size:11px}
.w-\[200px\]{width:200px}
.w-\[280px\]{width:280px}
.w-\[320px\]{width:320px}
.w-\[380px\]{width:380px}
.max-w-\[200px\]{max-width:200px}
.max-w-\[280px\]{max-width:280px}
.max-w-\[320px\]{max-width:320px}
.max-w-\[380px\]{max-width:380px}
.h-\[40vh\]{height:40vh}
.max-h-\[40vh\]{max-height:40vh}
.z-\[55\]{z-index:55}

/* 首页玩法示例图：按原图真实比例撑开容器，配合 object-contain 保证整图完整显示不被裁切 */
.aspect-\[1200\/674\]{aspect-ratio:1200/674}
.aspect-\[522\/542\]{aspect-ratio:522/542}
.aspect-\[528\/679\]{aspect-ratio:528/679}
.aspect-\[530\/672\]{aspect-ratio:530/672}
.aspect-\[1080\/1200\]{aspect-ratio:1080/1200}
.aspect-\[1200\/1848\]{aspect-ratio:1200/1848}
.max-w-\[150px\]{max-width:150px}
.max-w-\[240px\]{max-width:240px}
.self-center{align-self:center}

/* ---------- 过渡 / 阴影 / 缩放 ---------- */
.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}
.transition-opacity{transition-property:opacity;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}
.transition-shadow{transition-property:box-shadow;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}
.shadow-xl{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}
.hover\:shadow-md:hover{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}
.hover\:shadow-lg:hover{--tw-shadow:0 10px 15px -3px var(--tw-shadow-color,#0000001a),0 4px 6px -4px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}
.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px var(--tw-shadow-color,#0000001a),0 8px 10px -6px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}
.hover\:scale-105:hover{scale:105%}
.hover\:-translate-y-0\.5:hover{translate:0 -.125rem}

/* ---------- 响应式 / 状态变体 ---------- */
@media (min-width:640px){
  .sm\:block{display:block}
  .sm\:inline{display:inline}
  .sm\:flex-row{flex-direction:row}
  .sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
  .sm\:col-span-2{grid-column:span 2/span 2}
  .sm\:text-right{text-align:right}
  .sm\:text-xl{font-size:1.25rem;line-height:1.75rem}
  .sm\:text-3xl{font-size:1.875rem;line-height:2.25rem}
  .sm\:text-6xl{font-size:3.75rem;line-height:1}
  .sm\:p-10{padding:2.5rem}
}
@media (min-width:1024px){
  .lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}
  .lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}
}
.last\:mb-0:last-child{margin-bottom:0}
.hover\:underline:hover{text-decoration-line:underline}
.hover\:bg-pink-50:hover{background-color:var(--color-pink-50)}
.hover\:bg-pink-100:hover{background-color:var(--color-pink-100)}
.hover\:bg-pink-700:hover{background-color:var(--color-pink-700)}
.hover\:bg-purple-50:hover{background-color:var(--color-purple-50)}
.hover\:bg-slate-50:hover{background-color:var(--color-slate-50)}
.hover\:bg-slate-100:hover{background-color:var(--color-slate-100)}
.hover\:bg-indigo-50:hover{background-color:var(--color-indigo-50)}
.hover\:bg-white\/25:hover{background-color:rgba(255,255,255,.25)}
.hover\:bg-white\/30:hover{background-color:rgba(255,255,255,.3)}
.hover\:bg-white\/80:hover{background-color:rgba(255,255,255,.8)}
.active\:bg-white\/30:active{background-color:rgba(255,255,255,.3)}
.group:hover .group-hover\:bg-white\/30{background-color:rgba(255,255,255,.3)}
.group:hover .group-hover\:shadow-md{--tw-shadow:0 4px 6px -1px var(--tw-shadow-color,#0000001a),0 2px 4px -2px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}
.hover\:border-pink-300:hover{border-color:var(--color-pink-300)}
.hover\:border-pink-400:hover{border-color:var(--color-pink-400)}
.hover\:border-purple-100:hover{border-color:var(--color-purple-100)}
.hover\:border-indigo-100:hover{border-color:var(--color-indigo-100)}
.hover\:border-white\/60:hover{border-color:rgba(255,255,255,.6)}
.hover\:text-purple-500:hover{color:var(--color-purple-500)}
.hover\:text-purple-600:hover{color:var(--color-purple-600)}
.\!text-purple-600{color:var(--color-purple-600)!important}
.hover\:text-indigo-500:hover{color:var(--color-indigo-500)}
.hover\:text-red-500:hover{color:var(--color-red-500)}
.hover\:text-slate-600:hover{color:var(--color-slate-600)}
.hover\:text-white:hover{color:var(--color-white)}
.hover\:opacity-90:hover{opacity:.9}
.hover\:opacity-100:hover{opacity:1}
.hover\:from-purple-100:hover{--tw-gradient-from:var(--color-purple-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}
.hover\:to-pink-100:hover{--tw-gradient-to:var(--color-pink-100);--tw-gradient-stops:var(--tw-gradient-via-stops,var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-to) var(--tw-gradient-to-position))}

/* ============================================================
   V4 中性化配色覆盖层（2026-08-29）
   把页面/JS 仍在使用的 Tailwind 紫粉工具类统一映射为
   中性灰蓝(slate) + 品牌靛蓝(indigo)，实现全站中性化。
   本段在文件末尾最后加载，覆盖 tailwind.min.css 的硬编码定义。
   ============================================================ */
/* 文字色 */
.text-pink-700{color:#475569}
.text-pink-600,.text-purple-600,.text-violet-600,.\!text-purple-600{color:#4f46e5}
.text-pink-500,.text-purple-500,.text-fuchsia-500{color:#6366f1}
.text-pink-400,.text-purple-400{color:#818cf8}
.text-pink-300{color:#a5b4fc}
.text-pink-200{color:#c7d2fe}
.text-purple-700{color:#4338ca}
.text-rose-700{color:#475569}
.text-rose-600,.text-rose-500{color:#64748b}
/* 背景 */
.bg-pink-50,.bg-purple-50{background-color:#eef2ff}
.bg-pink-100{background-color:#e0e7ff}
.bg-pink-200{background-color:#c7d2fe}
.bg-pink-400,.bg-fuchsia-400{background-color:#818cf8}
.bg-pink-500,.bg-purple-500,.bg-fuchsia-500{background-color:#6366f1}
.bg-pink-600,.bg-purple-600,.bg-fuchsia-600{background-color:#4f46e5}
.bg-pink-700{background-color:#4338ca}
.bg-rose-50{background-color:#f8fafc}
.bg-pink-50\/50{background-color:rgba(238,242,255,.5)}
/* 边框 */
.border-pink-100,.border-purple-100{ border-color:#e0e7ff}
.border-pink-200,.border-purple-200{ border-color:#c7d2fe}
.border-pink-300{ border-color:#a5b4fc}
.border-pink-400{ border-color:#818cf8}
.border-pink-500{ border-color:#6366f1}
.border-rose-200{ border-color:#e2e8f0}
/* 渐变（Tailwind v4 变量体系） */
.from-pink-50{--tw-gradient-from:#eef2ff}
.to-pink-50,.to-violet-50{--tw-gradient-to:#eef2ff}
.from-pink-100,.from-purple-100{--tw-gradient-from:#e0e7ff}
.to-pink-100,.to-purple-100{--tw-gradient-to:#e0e7ff}
.from-purple-400,.from-fuchsia-400{--tw-gradient-from:#818cf8}
.to-purple-400,.to-fuchsia-400{--tw-gradient-to:#818cf8}
.from-pink-500,.from-purple-500,.from-fuchsia-500{--tw-gradient-from:#6366f1}
.to-pink-500,.to-purple-500,.to-fuchsia-500{--tw-gradient-to:#6366f1}
/* hover 变体 */
.hover\:bg-pink-50:hover,.hover\:bg-purple-50:hover{background-color:#eef2ff}
.hover\:bg-pink-100:hover{background-color:#e0e7ff}
.hover\:bg-pink-700:hover{background-color:#4338ca}
.hover\:border-pink-300:hover{ border-color:#a5b4fc}
.hover\:border-pink-400:hover{ border-color:#818cf8}
.hover\:border-purple-100:hover{ border-color:#e0e7ff}
.hover\:text-purple-500:hover{color:#6366f1}
.hover\:text-purple-600:hover{color:#4f46e5}
.hover\:from-purple-100:hover{--tw-gradient-from:#e0e7ff}
.hover\:to-pink-100:hover{--tw-gradient-to:#e0e7ff}

/* ============================================================
   全站审计补漏（2026-09-17）
   ① .via-indigo-200 原缺失 → 顶栏菜单那两条 from-transparent/via/to-transparent
      分隔线两端都是透明，整条线不可见。按 v4 变量体系补齐（与 .via-purple-200 同式）。
   ② 页脚 / 公告弹窗用到、但三份 CSS 都没定义的工具类：
      导致页脚信息区两列零间距、统计卡无底色、≥1024px 仍挤 3 列、公告弹窗贴顶。
   ============================================================ */
.via-indigo-200{--tw-gradient-via:#c7d2fe;--tw-gradient-via-stops:var(--tw-gradient-position),var(--tw-gradient-from) var(--tw-gradient-from-position),var(--tw-gradient-via) var(--tw-gradient-via-position),var(--tw-gradient-to) var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-via-stops)}

.gap-8{gap:2rem}
.gap-x-4{column-gap:1rem}
.gap-y-1\.5{row-gap:.375rem}
.pb-8{padding-bottom:2rem}
.py-7{padding-top:1.75rem;padding-bottom:1.75rem}
.px-0\.5{padding-left:.125rem;padding-right:.125rem}
.mt-16{margin-top:4rem}
.m-auto{margin:auto}
.tabular-nums{font-variant-numeric:tabular-nums}
.bg-slate-800\/50{background-color:rgba(30,41,59,.5)}
.overscroll-contain{overscroll-behavior:contain}
@media (min-width:640px){ .sm\:gap-4{gap:1rem} }
@media (min-width:1024px){ .lg\:grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))} }
