/* ========== 通用样式代码（原样嵌入）========== */
.textEllipsis { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
.pressBtn { cursor: pointer; transition: opacity 0.3s; }
.pressBtn:hover { opacity: 0.9; }
.pressBtn:active { opacity: 0.8; }
.ul li a { transition: opacity 0.3s; }
.ul li a:hover { opacity: 0.9; }
.ul li a:active { opacity: 0.8; }
.flex { display: flex; gap: 5px; }
.flex > .main { flex: 1; }
.flex-column { flex-direction: column; gap: 0; }
.flex-items-center { align-items: center; }
.flex-space-between { justify-content: space-between; }
.inline-center { text-align: center; }
.success { color: #52c41a; }
.error { color: #ff4d4f; }
.vWrap { height: 100%; }
.vContainer, .vPage { display: flex; }
.vContainer > .main, .vPage > .main { flex: 1; }
.vContainer, .vPage { flex-direction: column; height: 100%; }
.vContainer > .main, .vPage > .main { overflow-y: auto; overflow-x: hidden; }
.vPage { height: 100vh; }
.vScroll { height: 100%; overflow: hidden auto; }
.required::before { content: "*"; color: #ee0000; }
.noWrap { white-space: nowrap; }
.overHidden { overflow: hidden; }
.iconAndTitle { display: flex; }
.iconAndTitle > .main { flex: 1; }
.iconAndTitle { flex-direction: row; align-items: center; gap: 5px; }
.iconAndTitle svg, .iconAndTitle img { width: 20px; }
.iconAndTitle span { font-size: inherit; }
.iconWrap { display: block; padding: 2px; }
.iconWrap svg { display: block; }
.cardV { width: 300px; height: 300px; background-color: var(--bg-color); }
.grid { display: flex; }
.grid > .main { flex: 1; }
.grid { flex-direction: row; flex-wrap: wrap; justify-content: center; margin-left: -15px; margin-right: -15px; }
.grid > .cardV { margin: 15px; }
.cardH { display: flex; }
.cardH > .main { flex: 1; }
.cardH { flex-direction: row; align-items: center; height: 150px; background-color: var(--bg-color); color: var(--text-color); }
.list { margin-top: 20px; }
.list > .cardH { margin-bottom: 20px; }
.alinkBtn { outline: none; text-decoration: none; }
.btnlinkBtn { padding: 0; background-color: transparent; border: 0; font: inherit; }
.kv { display: flex; }
.kv > .main { flex: 1; }
.kv { flex-direction: column; gap: 5px; }
.kv > * { text-overflow: ellipsis; overflow: hidden; white-space: nowrap; }
@media (min-width: 1200px) { .kv { flex-direction: row; } }
.float-btn { float: left; padding: 10px; }
.float-btn::after { content: ""; display: block; height: 0; clear: both; visibility: hidden; }


.text-bold {
  font-weight: bold;
}

/* PC 端 (基准 2560) */
.text-xxl { font-size: 1.5rem; }
.text-xl { font-size: 0.72rem; }
.text-lg { font-size: 0.40rem; }
.text-md { font-size: 0.22rem; }
.text-sm { font-size: 0.16rem; }
.text-xs { font-size: 0.14rem; }

/* Tablet Landscape (900px - 1199px) 
   补偿系数: ~1.3 - 1.5
*/
@media (min-width: 900px) and (max-width: 1199px) {
    .text-xxl { font-size: 3.2rem; }
    .text-xl { font-size: 1.53rem; }
    .text-lg { font-size: 0.85rem; }
    .text-md { font-size: 0.47rem; }
    .text-sm { font-size: 0.34rem; }
    .text-xs { font-size: 0.3rem; }
}

/* Tablet Portrait (600px - 899px) 
   补偿系数: ~1.6 - 1.7 (大于 Landscape)
*/
@media (min-width: 600px) and (max-width: 899px) {
    .text-xxl { font-size: 4.25rem; }
    .text-xl { font-size: 2.04rem; }
    .text-lg { font-size: 1.13rem; }
    .text-md { font-size: 0.62rem; }
    .text-sm { font-size: 0.45rem; }
    .text-xs { font-size: 0.40rem; }
}

/* Mobile (< 600px) 
   补偿系数: ~1.7 - 1.8 (大于 Portrait)
*/
@media (max-width: 599px) {
    .text-xxl { font-size: 6.37rem; }
    .text-xl { font-size: 3.06rem; }
    .text-lg { font-size: 1.7rem; }
    .text-md { font-size: 0.93rem; }
    .text-sm { font-size: 0.68rem; }
    .text-xs { font-size: 0.6rem; }
}
