/* ========== 字体缩放 / 关爱模式（后台全站） ========== */

/*
 * zoom 仅挂 .admin-main-wrap（主内容区），侧栏不参与 zoom。
 * 侧栏若在 zoom 容器内，Chrome 下 overflow 滚动会失效，底部菜单无法滚到。
 */
body.admin-body.admin-font-large {
  --admin-font-zoom: 1.12;
  --admin-sidebar-width: calc(248px * 1.12);
}
body.admin-body.admin-font-xlarge {
  --admin-font-zoom: 1.24;
  --admin-sidebar-width: calc(248px * 1.24);
}
body.admin-body.admin-font-care {
  --admin-font-zoom: 1.36;
  --admin-sidebar-width: calc(248px * 1.36);
}

body.admin-body.admin-font-large,
body.admin-body.admin-font-xlarge,
body.admin-body.admin-font-care {
  --admin-shade-left: var(--admin-sidebar-width);
  --admin-overlay-top: calc(var(--admin-topbar-height) * var(--admin-font-zoom));
  overflow: hidden;
  height: 100vh;
}

body.admin-body.admin-font-large .admin-app,
body.admin-body.admin-font-xlarge .admin-app,
body.admin-body.admin-font-care .admin-app {
  height: 100vh;
  min-height: 100vh;
  overflow: hidden;
}

body.admin-body.admin-font-large .admin-main-wrap,
body.admin-body.admin-font-xlarge .admin-main-wrap,
body.admin-body.admin-font-care .admin-main-wrap {
  zoom: var(--admin-font-zoom);
  /*
   * zoom 会放大视觉宽度但不改变 layout scrollWidth；补偿 layout 宽度避免 1366 收银机右侧裁切
   */
  width: calc((100vw - var(--admin-sidebar-width, 248px)) / var(--admin-font-zoom)) !important;
  max-width: calc((100vw - var(--admin-sidebar-width, 248px)) / var(--admin-font-zoom)) !important;
  flex: 0 0 auto !important;
  height: calc(100vh / var(--admin-font-zoom));
  max-height: calc(100vh / var(--admin-font-zoom));
  overflow-y: auto;
  overflow-x: hidden;
  margin-left: 0 !important;
  min-width: 0 !important;
  -webkit-overflow-scrolling: touch;
}

/*
 * 放大模式下 .admin-content 勿用 flex:1 + min-height:0，否则长页面内容被压进固定高度、
 * 无法撑开 .admin-main-wrap 的 scrollHeight，底部文案与页脚会被裁切。
 */
body.admin-body.admin-font-large .admin-content,
body.admin-body.admin-font-xlarge .admin-content,
body.admin-body.admin-font-care .admin-content {
  flex: 0 0 auto;
  min-height: auto;
  /*
   * 间距在 zoom 容器内会再次被放大；除以 zoom 保持视觉留白，并尽量收紧
   */
  padding: calc(6px / var(--admin-font-zoom)) calc(16px / var(--admin-font-zoom)) calc(12px / var(--admin-font-zoom)) !important;
}

/* 加载中临时恢复 flex 限高，与 admin.css admin-page-loading 配合，避免空白间隙 */
body.admin-body.admin-page-loading.admin-font-large .admin-content,
body.admin-body.admin-page-loading.admin-font-xlarge .admin-content,
body.admin-body.admin-page-loading.admin-font-care .admin-content {
  flex: 1 1 auto;
  min-height: 0;
  overflow: hidden;
}

/*
 * 侧栏不参与 zoom，且与主内容 flex 并排（sticky，不用 fixed + margin-left，避免中间空白带）
 */
body.admin-body.admin-font-large .admin-sidebar,
body.admin-body.admin-font-xlarge .admin-sidebar,
body.admin-body.admin-font-care .admin-sidebar {
  position: sticky !important;
  top: 0;
  left: auto !important;
  right: auto !important;
  bottom: auto !important;
  align-self: flex-start;
  flex-shrink: 0;
  width: var(--admin-sidebar-width);
  height: 100vh;
  max-height: 100vh;
  overflow: hidden;
  z-index: 1000;
}

body.admin-body.admin-font-large .sidebar-nav,
body.admin-body.admin-font-xlarge .sidebar-nav,
body.admin-body.admin-font-care .sidebar-nav {
  flex: 1 1 auto;
  min-height: 0;
  overflow-x: hidden;
  overflow-y: scroll;
  overscroll-behavior: contain;
  -webkit-overflow-scrolling: touch;
}

/*
 * 侧栏字号随档位放大（不用 zoom，避免滚动失效）
 * 一级分组菜单文字在 .sidebar-group-main 内写死了 14px，须单独覆盖。
 */
body.admin-body.admin-font-large .admin-sidebar .sidebar-brand,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-brand,
body.admin-body.admin-font-care .admin-sidebar .sidebar-brand {
  padding: calc(20px * var(--admin-font-zoom)) calc(18px * var(--admin-font-zoom));
  gap: calc(12px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-logo,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-logo,
body.admin-body.admin-font-care .admin-sidebar .sidebar-logo {
  width: calc(46px * var(--admin-font-zoom));
  height: calc(46px * var(--admin-font-zoom));
  border-radius: calc(6px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-logo-img,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-logo-img,
body.admin-body.admin-font-care .admin-sidebar .sidebar-logo-img {
  border-radius: calc(6px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-brand-text,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-brand-text,
body.admin-body.admin-font-care .admin-sidebar .sidebar-brand-text {
  gap: calc(4px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .brand-name-row,
body.admin-body.admin-font-xlarge .admin-sidebar .brand-name-row,
body.admin-body.admin-font-care .admin-sidebar .brand-name-row {
  gap: calc(8px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .brand-name,
body.admin-body.admin-font-xlarge .admin-sidebar .brand-name,
body.admin-body.admin-font-care .admin-sidebar .brand-name {
  font-size: calc(17px * var(--admin-font-zoom));
  line-height: 1.2;
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-brand-desc,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-brand-desc,
body.admin-body.admin-font-care .admin-sidebar .sidebar-brand-desc {
  font-size: calc(10px * var(--admin-font-zoom));
  line-height: 1.4;
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-link,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-link,
body.admin-body.admin-font-care .admin-sidebar .sidebar-link,
body.admin-body.admin-font-large .admin-sidebar .sidebar-group-title,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-group-title,
body.admin-body.admin-font-care .admin-sidebar .sidebar-group-title,
body.admin-body.admin-font-large .admin-sidebar .sidebar-group-main,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-group-main,
body.admin-body.admin-font-care .admin-sidebar .sidebar-group-main,
body.admin-body.admin-font-large .admin-sidebar .sidebar-group-main span,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-group-main span,
body.admin-body.admin-font-care .admin-sidebar .sidebar-group-main span,
body.admin-body.admin-font-large .admin-sidebar .sidebar-link span,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-link span,
body.admin-body.admin-font-care .admin-sidebar .sidebar-link span {
  font-size: calc(14px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-link,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-link,
body.admin-body.admin-font-care .admin-sidebar .sidebar-link,
body.admin-body.admin-font-large .admin-sidebar .sidebar-group-title,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-group-title,
body.admin-body.admin-font-care .admin-sidebar .sidebar-group-title {
  padding: calc(10px * var(--admin-font-zoom)) calc(14px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-link .layui-icon,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-link .layui-icon,
body.admin-body.admin-font-care .admin-sidebar .sidebar-link .layui-icon,
body.admin-body.admin-font-large .admin-sidebar .sidebar-group-main .layui-icon,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-group-main .layui-icon,
body.admin-body.admin-font-care .admin-sidebar .sidebar-group-main .layui-icon {
  font-size: calc(18px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-group-arrow,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-group-arrow,
body.admin-body.admin-font-care .admin-sidebar .sidebar-group-arrow {
  font-size: calc(12px * var(--admin-font-zoom)) !important;
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-sublink,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-sublink,
body.admin-body.admin-font-care .admin-sidebar .sidebar-sublink {
  font-size: calc(13px * var(--admin-font-zoom));
  padding: calc(8px * var(--admin-font-zoom)) calc(14px * var(--admin-font-zoom)) calc(8px * var(--admin-font-zoom)) calc(28px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-sidebar .sidebar-version,
body.admin-body.admin-font-xlarge .admin-sidebar .sidebar-version,
body.admin-body.admin-font-care .admin-sidebar .sidebar-version {
  font-size: calc(12px * var(--admin-font-zoom));
}

/*
 * 顶栏保持在文档流内 sticky，避免 fixed + zoom 产生左侧空白块与双重占位
 */
body.admin-body.admin-font-large .admin-topbar,
body.admin-body.admin-font-xlarge .admin-topbar,
body.admin-body.admin-font-care .admin-topbar {
  position: sticky;
  top: 0;
  left: auto;
  width: 100%;
  right: auto;
  max-width: 100%;
  z-index: 900;
  box-sizing: border-box;
  min-width: 0;
}

body.admin-body.admin-topbar-compact .admin-topbar {
  grid-template-columns: minmax(0, 1fr) auto;
  grid-template-areas: "left right";
  column-gap: 10px;
  padding-left: 14px;
  padding-right: 14px;
}

/*
 * 列表表头：zoom 下 CSS sticky 失效，改由 JS is-head-fixed 吸顶
 */
body.admin-body.admin-font-large .data-table-sticky-bar.data-table-head-bar,
body.admin-body.admin-font-xlarge .data-table-sticky-bar.data-table-head-bar,
body.admin-body.admin-font-care .data-table-sticky-bar.data-table-head-bar {
  position: static;
  top: auto;
}

body.admin-body.admin-font-large .data-table-sticky-bar.data-table-head-bar.is-head-fixed,
body.admin-body.admin-font-xlarge .data-table-sticky-bar.data-table-head-bar.is-head-fixed,
body.admin-body.admin-font-care .data-table-sticky-bar.data-table-head-bar.is-head-fixed {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  z-index: 860;
  background: #f8fafc;
  border-bottom: 1px solid var(--border-color);
  box-shadow: 0 4px 14px rgba(15, 23, 42, 0.06);
}

body.admin-body.admin-topbar-compact .topbar-left {
  overflow: hidden;
}

body.admin-body.admin-topbar-compact .topbar-breadcrumb .breadcrumb-item:not(.is-current),
body.admin-body.admin-topbar-compact .topbar-breadcrumb .breadcrumb-sep,
body.admin-body.admin-topbar-compact .topbar-breadcrumb .breadcrumb-home {
  display: none;
}

body.admin-body.admin-topbar-compact .topbar-center,
body.admin-body.admin-topbar-compact .topbar-clock {
  display: none;
}

body.admin-body.admin-topbar-compact .topbar-right {
  gap: 6px;
  flex-shrink: 0;
}

body.admin-body.admin-topbar-compact .topbar-actions {
  gap: 6px;
}

body.admin-body.admin-topbar-compact .topbar-user.layui-nav {
  max-width: none;
}

body.admin-body.admin-topbar-compact .user-meta {
  display: none;
}

body.admin-body.admin-font-large .admin-main-wrap > .admin-content,
body.admin-body.admin-font-xlarge .admin-main-wrap > .admin-content,
body.admin-body.admin-font-care .admin-main-wrap > .admin-content {
  margin-top: 0;
}

/* 与标准模式一致：加载遮罩从顶栏下方开始，不遮挡面包屑 */
body.admin-body.admin-font-large .admin-content-loading,
body.admin-body.admin-font-xlarge .admin-content-loading,
body.admin-body.admin-font-care .admin-content-loading {
  top: var(--admin-topbar-height);
}

/* 放大模式：页面块间距统一由 #adminContentBody gap 控制，避免 margin + padding 叠加 */
body.admin-body.admin-font-large #adminContentBody,
body.admin-body.admin-font-xlarge #adminContentBody,
body.admin-body.admin-font-care #adminContentBody {
  display: flex;
  flex-direction: column;
  gap: calc(6px / var(--admin-font-zoom)) !important;
}

body.admin-body.admin-font-large #adminContentBody > .page-header,
body.admin-body.admin-font-xlarge #adminContentBody > .page-header,
body.admin-body.admin-font-care #adminContentBody > .page-header {
  margin-bottom: 0;
}

body.admin-body.admin-font-large #adminContentBody > .panel-card,
body.admin-body.admin-font-xlarge #adminContentBody > .panel-card,
body.admin-body.admin-font-care #adminContentBody > .panel-card {
  margin: 0;
}

body.admin-body.admin-font-large .page-header,
body.admin-body.admin-font-xlarge .page-header,
body.admin-body.admin-font-care .page-header {
  margin-bottom: 0;
  padding: calc(12px / var(--admin-font-zoom)) calc(16px / var(--admin-font-zoom));
  gap: calc(10px / var(--admin-font-zoom));
}

body.admin-body.admin-font-large .panel-card-body,
body.admin-body.admin-font-xlarge .panel-card-body,
body.admin-body.admin-font-care .panel-card-body {
  padding: calc(12px / var(--admin-font-zoom)) calc(16px / var(--admin-font-zoom)) calc(16px / var(--admin-font-zoom));
}

body.admin-body.admin-font-large .panel-card-header,
body.admin-body.admin-font-xlarge .panel-card-header,
body.admin-body.admin-font-care .panel-card-header {
  padding: calc(12px / var(--admin-font-zoom)) calc(16px / var(--admin-font-zoom)) 0;
}

body.admin-body.admin-font-large .filter-bar,
body.admin-body.admin-font-xlarge .filter-bar,
body.admin-body.admin-font-care .filter-bar,
body.admin-body.admin-font-large .toolbar-form,
body.admin-body.admin-font-xlarge .toolbar-form,
body.admin-body.admin-font-care .toolbar-form {
  margin-bottom: calc(12px / var(--admin-font-zoom));
  padding: calc(8px / var(--admin-font-zoom)) calc(10px / var(--admin-font-zoom));
  gap: calc(8px / var(--admin-font-zoom)) calc(12px / var(--admin-font-zoom));
}

body.admin-body.admin-font-large .admin-footer,
body.admin-body.admin-font-xlarge .admin-footer,
body.admin-body.admin-font-care .admin-footer {
  padding: calc(4px / var(--admin-font-zoom)) calc(16px / var(--admin-font-zoom)) calc(10px / var(--admin-font-zoom));
}

/* 固定表头克隆表已在 .admin-main-wrap zoom 内，勿再单独放大（会与正文列宽不一致） */

/* 图片预览：全屏遮罩不 zoom，只放大关闭按钮/提示文字 */
body.admin-body.admin-font-large .image-viewer-close,
body.admin-body.admin-font-xlarge .image-viewer-close,
body.admin-body.admin-font-care .image-viewer-close {
  font-size: calc(40px * var(--admin-font-zoom));
  top: calc(20px * var(--admin-font-zoom));
  right: calc(30px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .image-viewer-hint,
body.admin-body.admin-font-xlarge .image-viewer-hint,
body.admin-body.admin-font-care .image-viewer-hint {
  font-size: calc(14px * var(--admin-font-zoom));
  bottom: calc(30px * var(--admin-font-zoom));
}

/*
 * 弹窗不用 zoom（会破坏 Layui 居中，与标准模式不一致）
 * 改用字号/间距同比放大，居中算法与标准模式完全相同
 */
body.admin-body.admin-font-large .layui-layer:not(.layui-layer-msg):not(.layui-layer-tips):not(.layui-layer-hui),
body.admin-body.admin-font-xlarge .layui-layer:not(.layui-layer-msg):not(.layui-layer-tips):not(.layui-layer-hui),
body.admin-body.admin-font-care .layui-layer:not(.layui-layer-msg):not(.layui-layer-tips):not(.layui-layer-hui) {
  font-size: calc(14px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer:not(.layui-layer-msg) .layui-layer-title,
body.admin-body.admin-font-xlarge .layui-layer:not(.layui-layer-msg) .layui-layer-title,
body.admin-body.admin-font-care .layui-layer:not(.layui-layer-msg) .layui-layer-title {
  height: calc(52px * var(--admin-font-zoom));
  line-height: calc(52px * var(--admin-font-zoom));
  font-size: calc(15px * var(--admin-font-zoom));
  padding: 0 calc(20px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer.admin-dialog-confirm .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.admin-dialog-confirm .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.admin-dialog-confirm .layui-layer-content {
  padding: calc(22px * var(--admin-font-zoom)) calc(24px * var(--admin-font-zoom));
  font-size: calc(14px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer.admin-dialog-credential .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.admin-dialog-credential .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.admin-dialog-credential .layui-layer-content {
  padding: calc(20px * var(--admin-font-zoom)) calc(24px * var(--admin-font-zoom)) calc(8px * var(--admin-font-zoom));
  font-size: calc(15px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer .layui-layer-btn,
body.admin-body.admin-font-xlarge .layui-layer .layui-layer-btn,
body.admin-body.admin-font-care .layui-layer .layui-layer-btn {
  padding: calc(14px * var(--admin-font-zoom)) calc(20px * var(--admin-font-zoom)) calc(18px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer .layui-layer-btn a,
body.admin-body.admin-font-xlarge .layui-layer .layui-layer-btn a,
body.admin-body.admin-font-care .layui-layer .layui-layer-btn a {
  min-width: calc(108px * var(--admin-font-zoom));
  height: calc(36px * var(--admin-font-zoom));
  line-height: calc(36px * var(--admin-font-zoom));
  font-size: calc(14px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer .layui-layer-btn1,
body.admin-body.admin-font-xlarge .layui-layer .layui-layer-btn1,
body.admin-body.admin-font-care .layui-layer .layui-layer-btn1 {
  min-width: calc(88px * var(--admin-font-zoom));
  line-height: calc(34px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .layui-layer-msg.admin-dialog-toast,
body.admin-body.admin-font-xlarge .layui-layer-msg.admin-dialog-toast,
body.admin-body.admin-font-care .layui-layer-msg.admin-dialog-toast {
  font-size: calc(14px * var(--admin-font-zoom)) !important;
  padding: calc(10px * var(--admin-font-zoom)) calc(18px * var(--admin-font-zoom)) !important;
}

/* 拒绝/内容/累计消费等业务弹窗 */
body.admin-body.admin-font-large .layui-layer.admin-dialog-reject .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.admin-dialog-reject .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.admin-dialog-reject .layui-layer-content,
body.admin-body.admin-font-large .layui-layer.admin-dialog-content .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.admin-dialog-content .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.admin-dialog-content .layui-layer-content,
body.admin-body.admin-font-large .layui-layer.admin-dialog-text .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.admin-dialog-text .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.admin-dialog-text .layui-layer-content,
body.admin-body.admin-font-large .layui-layer.user-spent-layer .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.user-spent-layer .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.user-spent-layer .layui-layer-content,
body.admin-body.admin-font-large .layui-layer.audit-reject-layer .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.audit-reject-layer .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.audit-reject-layer .layui-layer-content,
body.admin-body.admin-font-large .layui-layer.audit-approve-layer .layui-layer-content,
body.admin-body.admin-font-xlarge .layui-layer.audit-approve-layer .layui-layer-content,
body.admin-body.admin-font-care .layui-layer.audit-approve-layer .layui-layer-content {
  font-size: calc(14px * var(--admin-font-zoom));
}

/* 表格「更多」挂到 body，不在 zoom 内，字号单独跟上档位 */
body.admin-body.admin-font-large .table-action-more-menu--portal,
body.admin-body.admin-font-xlarge .table-action-more-menu--portal,
body.admin-body.admin-font-care .table-action-more-menu--portal {
  min-width: calc(108px * var(--admin-font-zoom));
}

body.admin-body.admin-font-large .table-action-more-menu--portal .table-action-more-item,
body.admin-body.admin-font-xlarge .table-action-more-menu--portal .table-action-more-item,
body.admin-body.admin-font-care .table-action-more-menu--portal .table-action-more-item,
body.admin-body.admin-font-large .table-action-more-menu--portal .table-action-more-menu-row .link-btn,
body.admin-body.admin-font-xlarge .table-action-more-menu--portal .table-action-more-menu-row .link-btn,
body.admin-body.admin-font-care .table-action-more-menu--portal .table-action-more-menu-row .link-btn {
  font-size: calc(14px * var(--admin-font-zoom));
  padding: calc(8px * var(--admin-font-zoom)) calc(14px * var(--admin-font-zoom));
}

/* Layui 挂 body 的下拉/日期等（不在 .admin-app zoom 内） */
body.admin-body.admin-font-large .layui-laydate,
body.admin-body.admin-font-xlarge .layui-laydate,
body.admin-body.admin-font-care .layui-laydate,
body.admin-body.admin-font-large .layui-form-select dl,
body.admin-body.admin-font-xlarge .layui-form-select dl,
body.admin-body.admin-font-care .layui-form-select dl,
body.admin-body.admin-font-large .layui-menu,
body.admin-body.admin-font-xlarge .layui-menu,
body.admin-body.admin-font-care .layui-menu {
  font-size: calc(14px * var(--admin-font-zoom));
}

/* 表格宽度随 .admin-main-wrap zoom 同比放大，勿再乘 zoom 避免横向溢出 */
body.admin-body.admin-font-large .data-table .col-check,
body.admin-body.admin-font-xlarge .data-table .col-check,
body.admin-body.admin-font-care .data-table .col-check {
  white-space: nowrap;
}

body.admin-body.admin-font-large form.batch-table-form .data-table th:nth-child(2),
body.admin-body.admin-font-large form.batch-table-form .data-table td:nth-child(2),
body.admin-body.admin-font-xlarge form.batch-table-form .data-table th:nth-child(2),
body.admin-body.admin-font-xlarge form.batch-table-form .data-table td:nth-child(2),
body.admin-body.admin-font-care form.batch-table-form .data-table th:nth-child(2),
body.admin-body.admin-font-care form.batch-table-form .data-table td:nth-child(2),
body.admin-body.admin-font-large .batch-table-form:not(form) .data-table th:first-child,
body.admin-body.admin-font-large .batch-table-form:not(form) .data-table td:first-child,
body.admin-body.admin-font-xlarge .batch-table-form:not(form) .data-table th:first-child,
body.admin-body.admin-font-xlarge .batch-table-form:not(form) .data-table td:first-child,
body.admin-body.admin-font-care .batch-table-form:not(form) .data-table th:first-child,
body.admin-body.admin-font-care .batch-table-form:not(form) .data-table td:first-child {
  white-space: nowrap;
}

@supports not (zoom: 1) {
  body.admin-body.admin-font-large .admin-main-wrap,
  body.admin-body.admin-font-xlarge .admin-main-wrap,
  body.admin-body.admin-font-care .admin-main-wrap {
    zoom: 1;
    transform: scale(var(--admin-font-zoom));
    transform-origin: top left;
    flex: 0 0 auto !important;
    width: calc((100vw - var(--admin-sidebar-width, 248px)) / var(--admin-font-zoom)) !important;
    max-width: calc((100vw - var(--admin-sidebar-width, 248px)) / var(--admin-font-zoom)) !important;
    min-width: 0 !important;
    margin-left: 0 !important;
    height: calc(100vh / var(--admin-font-zoom));
    min-height: calc(100vh / var(--admin-font-zoom));
    overflow-x: hidden;
  }

}

/*
 * 1366 收银机等窄屏 + 放大模式：分页换行、列表卡片不裁切（Win7 旧 Chrome 无 :has）
 */
@media (max-width: 1480px) {
  body.admin-body.admin-font-large .panel-card-has-table,
  body.admin-body.admin-font-xlarge .panel-card-has-table,
  body.admin-body.admin-font-care .panel-card-has-table {
    overflow: visible;
  }

  body.admin-body.admin-font-large .panel-card-has-table > .panel-card-body,
  body.admin-body.admin-font-xlarge .panel-card-has-table > .panel-card-body,
  body.admin-body.admin-font-care .panel-card-has-table > .panel-card-body {
    padding-left: calc(10px / var(--admin-font-zoom));
    padding-right: calc(10px / var(--admin-font-zoom));
  }

  body.admin-body.admin-font-large .table-pager-wrap,
  body.admin-body.admin-font-xlarge .table-pager-wrap,
  body.admin-body.admin-font-care .table-pager-wrap {
    flex-direction: column;
    align-items: stretch;
    gap: calc(10px / var(--admin-font-zoom));
  }

  body.admin-body.admin-font-large .pager-controls,
  body.admin-body.admin-font-xlarge .pager-controls,
  body.admin-body.admin-font-care .pager-controls {
    justify-content: center;
    flex-wrap: wrap;
    gap: calc(8px / var(--admin-font-zoom));
  }

  body.admin-body.admin-font-large .pager-jump,
  body.admin-body.admin-font-xlarge .pager-jump,
  body.admin-body.admin-font-care .pager-jump {
    padding-left: 0;
    border-left: none;
    flex-wrap: wrap;
    justify-content: center;
  }

  body.admin-body.admin-font-large .data-table,
  body.admin-body.admin-font-xlarge .data-table,
  body.admin-body.admin-font-care .data-table {
    min-width: 1120px;
  }

  body.admin-body.admin-font-care .data-table {
    min-width: 1200px;
  }

  body.admin-body.admin-font-large .data-table-body-scroll,
  body.admin-body.admin-font-xlarge .data-table-body-scroll,
  body.admin-body.admin-font-care .data-table-body-scroll {
    overflow-x: scroll;
  }
}

/* 登录页 */
body.login-page.admin-font-large .login-shell { zoom: 1.12; }
body.login-page.admin-font-xlarge .login-shell { zoom: 1.24; }
body.login-page.admin-font-care .login-shell { zoom: 1.36; }

@supports not (zoom: 1) {
  body.login-page.admin-font-large .login-shell {
    transform: scale(1.12);
    transform-origin: top center;
    width: calc(100% / 1.12);
    margin: 0 auto;
  }
  body.login-page.admin-font-xlarge .login-shell {
    transform: scale(1.24);
    transform-origin: top center;
    width: calc(100% / 1.24);
    margin: 0 auto;
  }
  body.login-page.admin-font-care .login-shell {
    transform: scale(1.36);
    transform-origin: top center;
    width: calc(100% / 1.36);
    margin: 0 auto;
  }
}

body.login-page.admin-font-large,
body.login-page.admin-font-xlarge,
body.login-page.admin-font-care {
  overflow: auto;
}

/*
 * 收银顾客屏：zoom 挂在页面根容器上并反算宽高，避免 body 级 zoom 导致底部被裁切
 */
body.admin-display-body.admin-font-large { --cd-font-zoom: 1.12; }
body.admin-display-body.admin-font-xlarge { --cd-font-zoom: 1.24; }
body.admin-display-body.admin-font-care { --cd-font-zoom: 1.36; }

body.admin-display-body.admin-font-large .cashier-display-page,
body.admin-display-body.admin-font-xlarge .cashier-display-page,
body.admin-display-body.admin-font-care .cashier-display-page,
body.admin-display-body.admin-font-large .cashier-display-invalid,
body.admin-display-body.admin-font-xlarge .cashier-display-invalid,
body.admin-display-body.admin-font-care .cashier-display-invalid {
  zoom: var(--cd-font-zoom);
  height: calc(100vh / var(--cd-font-zoom));
  max-height: calc(100vh / var(--cd-font-zoom));
  width: calc(100vw / var(--cd-font-zoom));
  max-width: calc(100vw / var(--cd-font-zoom));
}

body.admin-display-body.admin-font-large .cashier-display-invalid,
body.admin-display-body.admin-font-xlarge .cashier-display-invalid,
body.admin-display-body.admin-font-care .cashier-display-invalid {
  min-height: calc(100vh / var(--cd-font-zoom));
}

@supports not (zoom: 1) {
  body.admin-display-body.admin-font-large .cashier-display-page,
  body.admin-display-body.admin-font-xlarge .cashier-display-page,
  body.admin-display-body.admin-font-care .cashier-display-page,
  body.admin-display-body.admin-font-large .cashier-display-invalid,
  body.admin-display-body.admin-font-xlarge .cashier-display-invalid,
  body.admin-display-body.admin-font-care .cashier-display-invalid {
    zoom: unset;
    transform: scale(var(--cd-font-zoom));
    transform-origin: top left;
  }
}

/* 小票预览（屏幕放大；打印恢复标准规格） */
body.admin-receipt-body.admin-font-large { zoom: 1.12; }
body.admin-receipt-body.admin-font-xlarge { zoom: 1.24; }
body.admin-receipt-body.admin-font-care { zoom: 1.36; }

@media print {
  body.admin-receipt-body,
  body.admin-receipt-body.admin-font-large,
  body.admin-receipt-body.admin-font-xlarge,
  body.admin-receipt-body.admin-font-care {
    zoom: 1 !important;
    transform: none !important;
    width: auto !important;
    min-height: 0 !important;
  }
  .admin-font-scale-floating,
  .receipt-font-scale,
  .font-scale-panel-inline {
    display: none !important;
  }
}

/* ---------- 顶栏下拉 / 内联选项 ---------- */
.topbar-font-scale-wrap {
  position: relative;
}

.font-scale-panel {
  display: none;
  position: absolute;
  top: calc(100% + 10px);
  right: 0;
  width: 240px;
  padding: 12px;
  background: #fff;
  border: 1px solid #e8edf5;
  border-radius: 12px;
  box-shadow: 0 16px 40px rgba(15, 23, 42, 0.14);
  z-index: 1200;
}

.font-scale-panel.is-open {
  display: block;
}

.font-scale-panel-head {
  padding: 4px 6px 10px;
  font-size: 14px;
  font-weight: 600;
  color: #171717;
}

.font-scale-options {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.font-scale-option {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 2px;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid #e8edf5;
  border-radius: 10px;
  background: #fff;
  cursor: pointer;
  text-align: left;
  transition: border-color 0.15s ease, background 0.15s ease;
}

.font-scale-option strong {
  font-size: 14px;
  color: #171717;
}

.font-scale-option span {
  font-size: 12px;
  color: #8f92a1;
}

.font-scale-option:hover {
  border-color: #ffcdd2;
  background: #fff8f8;
}

.font-scale-option.is-active {
  border-color: #E53935;
  background: #fff5f5;
  box-shadow: inset 0 0 0 1px rgba(229, 57, 53, 0.08);
}

.font-scale-option.is-active strong {
  color: #C62828;
}

.font-scale-panel-inline {
  display: block;
  position: static;
  width: auto;
  padding: 0;
  border: none;
  border-radius: 0;
  box-shadow: none;
  background: transparent;
}

.font-scale-preview {
  margin: 14px 0 0;
  padding: 12px 14px;
  border-radius: 12px;
  background: #fff5f5;
  font-size: 15px;
  line-height: 1.6;
  color: #44403c;
}

/* 顾客屏 · 右下角浮层 */
.admin-font-scale-floating {
  position: fixed;
  right: 16px;
  bottom: 16px;
  z-index: 9999;
  width: min(220px, calc(100vw - 32px));
  padding: 12px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.96);
  border: 1px solid rgba(229, 57, 53, 0.12);
  box-shadow: 0 12px 32px rgba(15, 23, 42, 0.12);
  backdrop-filter: blur(8px);
}

.admin-font-scale-floating-head {
  display: flex;
  align-items: center;
  gap: 8px;
  margin-bottom: 10px;
  font-size: 13px;
  font-weight: 600;
  color: #333;
}

.admin-font-scale-floating-head svg {
  width: 18px;
  height: 18px;
  fill: #E53935;
  flex-shrink: 0;
}

/* 小票页 · 工具栏内 */
.receipt-font-scale {
  max-width: 420px;
  margin: 0 auto 12px;
  padding: 12px 14px;
  border-radius: 10px;
  background: #fff;
  border: 1px solid #ddd;
  text-align: left;
}

.receipt-font-scale-title {
  margin: 0 0 10px;
  font-size: 13px;
  font-weight: 600;
  color: #333;
}

/* ---------- 设置弹窗（登录页等） ---------- */
.font-scale-modal {
  display: none;
  position: fixed;
  inset: 0;
  z-index: 10000;
  align-items: center;
  justify-content: center;
  padding: 24px;
  box-sizing: border-box;
}

.font-scale-modal.is-open {
  display: flex;
}

.font-scale-modal-mask {
  position: absolute;
  inset: 0;
  background: rgba(28, 25, 23, 0.45);
  backdrop-filter: blur(2px);
}

.font-scale-modal-sheet {
  position: relative;
  z-index: 1;
  width: min(420px, 100%);
  max-height: calc(100vh - 48px);
  overflow: auto;
  padding: 24px;
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 24px 64px rgba(15, 23, 42, 0.18);
  box-sizing: border-box;
}

.font-scale-modal-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  margin-bottom: 18px;
}

.font-scale-modal-head-main {
  display: flex;
  align-items: center;
  gap: 12px;
  min-width: 0;
  flex: 1;
}

.font-scale-modal-icon {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: #fff5f5;
  color: #e53935;
  line-height: 0;
}

.font-scale-modal-icon svg {
  display: block;
  width: 20px;
  height: 20px;
  flex-shrink: 0;
}

.font-scale-modal-head-text {
  min-width: 0;
}

.font-scale-modal-head-text strong {
  display: block;
  font-size: 16px;
  font-weight: 600;
  color: #1c1917;
  line-height: 1.35;
}

.font-scale-modal-desc {
  display: block;
  margin-top: 4px;
  font-size: 12px;
  color: #78716c;
  line-height: 1.45;
}

.font-scale-modal-x {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border: none;
  border-radius: 8px;
  background: #f5f5f4;
  color: #78716c;
  font-size: 22px;
  line-height: 1;
  cursor: pointer;
}

.font-scale-modal-x:hover {
  background: #fff5f5;
  color: #e53935;
}

.font-scale-modal-preview {
  margin-top: 14px;
}

.font-scale-modal-done {
  display: block;
  width: 100%;
  margin-top: 18px;
  padding: 12px 16px;
  border: none;
  border-radius: 12px;
  font-size: 15px;
  font-weight: 600;
  color: #fff;
  background: linear-gradient(180deg, #ef5350 0%, #e53935 48%, #c62828 100%);
  cursor: pointer;
  box-shadow: 0 8px 20px rgba(229, 57, 53, 0.22);
}

.font-scale-modal-done:hover {
  opacity: 0.92;
}
