/*
 * 业务备注：后台统一改为蓝色高反差主题，避免顶部和菜单文字对比不足。
 */
:root {
    --qypx-primary: #2563eb;
    --qypx-primary-dark: #1e3a8a;
    --qypx-primary-soft: #eff6ff;
    --qypx-ink: #0f172a;
    --qypx-muted: #64748b;
    --qypx-line: rgba(37,99,235,.16);
    --qypx-panel: rgba(255,255,255,.94);
}

body.inside-header,
body.inside-aside {
    color: var(--qypx-ink);
    background: linear-gradient(135deg, #f8fbff 0%, #eef6ff 48%, #f8fafc 100%) !important;
}

body.inside-header:before,
body.inside-aside:before {
    content: "";
    position: fixed;
    inset: 0;
    pointer-events: none;
    opacity: .26;
    background-image: linear-gradient(90deg, rgba(37,99,235,.08) 1px, transparent 1px), linear-gradient(rgba(37,99,235,.06) 1px, transparent 1px);
    background-size: 34px 34px;
}

.main-header .navbar,
.main-header .logo {
    background: linear-gradient(135deg, #1e40af, #2563eb) !important;
    border: 0 !important;
    color: #fff !important;
    box-shadow: 0 10px 30px rgba(37,99,235,.24);
}

.main-header .logo,
.main-header .logo:hover,
.main-header .navbar a,
.main-header .navbar .nav > li > a,
.main-header .navbar-custom-menu > .navbar-nav > li > a,
.main-header .navbar .sidebar-toggle {
    color: #fff !important;
}

.main-header .navbar a:hover,
.main-header .navbar .nav > li > a:hover,
.main-header .navbar .sidebar-toggle:hover {
    color: #dbeafe !important;
    background: rgba(255,255,255,.12) !important;
}

.main-sidebar,
.left-side {
    background: linear-gradient(180deg, #0f172a 0%, #1e3a8a 52%, #2563eb 100%) !important;
}

.user-panel > .info,
.user-panel > .info > a,
.sidebar-menu > li.header,
.sidebar-form input[type="text"],
.sidebar-form .btn {
    color: #fff !important;
}

.sidebar-menu > li > a,
.sidebar-menu .treeview-menu > li > a {
    color: rgba(255,255,255,.86) !important;
    border-left: 3px solid transparent;
}

.sidebar-menu > li.active > a,
.sidebar-menu > li:hover > a,
.sidebar-menu .treeview-menu > li.active > a,
.sidebar-menu .treeview-menu > li > a:hover {
    color: #fff !important;
    background: rgba(147,197,253,.18) !important;
    border-left-color: #93c5fd;
}

.content-wrapper,
.right-side,
.content {
    background: transparent !important;
}

/* 业务备注：后台选项卡切换时 iframe 尚未完成绘制，主体及页签固定浅色底，避免短暂透出侧栏深色背景。 */
body#tabs .content-wrapper.tab-addtabs,
body#tabs .content-wrapper.tab-addtabs > .tab-pane,
body#tabs .content-wrapper.tab-addtabs iframe {
    background: #f4f8fd !important;
}

.panel,
.box,
.bootstrap-table,
.fixed-table-container,
.qypx-panel.panel,
.qypx-form-card,
.qypx-detail-card,
.qypx-map-page,
.qypx-manage-card {
    border: 1px solid rgba(219,234,254,.9) !important;
    border-radius: 8px !important;
    background: var(--qypx-panel) !important;
    box-shadow: 0 16px 42px rgba(30,64,175,.10) !important;
    backdrop-filter: blur(12px);
}

.panel-heading,
.box-header,
.fixed-table-toolbar,
.toolbar {
    background: transparent !important;
}

/* 业务备注：列表展开高级搜索后需与表格容器顶部保持距离，避免首行筛选项紧贴边框。 */
.bootstrap-table > .commonsearch-table:not(.hidden) {
    padding: 14px 14px 0;
}

/* 业务备注：表格工具栏统一保留四周留白，并拉开刷新、搜索及视图按钮，避免控件贴住容器边缘。 */
.bootstrap-table > .fixed-table-toolbar {
    min-height: 54px;
    margin: 0;
    padding: 10px 14px;
}

.bootstrap-table > .fixed-table-toolbar .bs-bars,
.bootstrap-table > .fixed-table-toolbar .search,
.bootstrap-table > .fixed-table-toolbar .columns {
    margin-top: 0;
    margin-bottom: 0;
}

.bootstrap-table > .fixed-table-toolbar .search,
.bootstrap-table > .fixed-table-toolbar .columns {
    margin-left: 8px;
}

/* 业务备注：普通搜索按钮由插件生成独立 columns-right 容器，并自带行内上边距，必须单独覆盖才能和输入框、视图按钮同高对齐。 */
.bootstrap-table > .fixed-table-toolbar > .columns-right:not(.columns) {
    margin-top: 0 !important;
    margin-bottom: 0 !important;
    margin-left: 8px;
}

.bootstrap-table > .fixed-table-toolbar .toolbar > .btn,
.bootstrap-table > .fixed-table-toolbar .toolbar > .btn-group {
    margin-right: 6px;
}

/* 业务备注：分页两侧为浮动元素，直接设置两侧外边距，确保统计信息和页码不会紧贴卡片边缘。 */
.bootstrap-table > .fixed-table-pagination {
    padding-right: 0;
    padding-left: 0;
}

.bootstrap-table > .fixed-table-pagination > .pagination-detail {
    margin-left: 14px !important;
}

.bootstrap-table > .fixed-table-pagination > div.pagination {
    margin-right: 14px !important;
}

@media (max-width: 640px) {
    .bootstrap-table > .commonsearch-table:not(.hidden) {
        padding: 10px 10px 0;
    }

    .bootstrap-table > .fixed-table-toolbar {
        padding: 10px;
    }

    .bootstrap-table > .fixed-table-pagination {
        padding-right: 0;
        padding-left: 0;
    }

    .bootstrap-table > .fixed-table-pagination > .pagination-detail {
        margin-left: 10px !important;
    }

    .bootstrap-table > .fixed-table-pagination > div.pagination {
        margin-right: 10px !important;
    }

    .bootstrap-table > .fixed-table-toolbar .search,
    .bootstrap-table > .fixed-table-toolbar .columns {
        margin-top: 8px;
        margin-left: 6px;
    }
}

.table > thead > tr > th {
    background: #eff6ff;
    color: #1e3a8a;
    border-bottom-color: var(--qypx-line) !important;
}

.table-striped > tbody > tr:nth-of-type(odd) {
    background: rgba(248,250,252,.8);
}

.form-control,
.bootstrap-select .btn,
.input-group-addon {
    border-color: rgba(148,163,184,.34);
    border-radius: 6px;
    box-shadow: none;
}

.form-control:focus {
    border-color: rgba(37,99,235,.72);
    box-shadow: 0 0 0 3px rgba(37,99,235,.12);
}

.btn {
    border-radius: 6px;
}

.btn-primary,
.btn-primary:hover,
.btn-primary:focus {
    border-color: #1d4ed8;
    background: linear-gradient(135deg, #3b82f6, #1d4ed8) !important;
}

.qypx-form-card {
    padding: 24px 18px 70px;
}

.qypx-detail-page {
    padding: 14px;
}

.qypx-detail-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 18px;
    margin-bottom: 14px;
    border-radius: 8px;
    color: #fff;
    background: linear-gradient(135deg, #1e3a8a, #2563eb);
}

.qypx-detail-hero span { display: block; color: rgba(255,255,255,.78); }
.qypx-detail-hero strong { display: block; font-size: 30px; line-height: 1.1; }
.qypx-detail-actions { display: flex; flex-wrap: wrap; gap: 8px; }

.qypx-detail-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
}

.qypx-detail-card { padding: 18px; }
.qypx-detail-card h4 { margin: 0 0 16px; color: #1e40af; font-weight: 700; }
.qypx-detail-card dl,
.qypx-manage-grid,
.qypx-manage-user { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 10px 14px; margin: 0; }
.qypx-detail-card dt,
.qypx-manage-grid label,
.qypx-manage-user span { color: var(--qypx-muted); font-weight: 500; }
.qypx-detail-card dd,
.qypx-manage-grid b,
.qypx-manage-user b { margin: 0; color: var(--qypx-ink); word-break: break-all; }
.qypx-empty,
.qypx-manage-empty { padding: 28px 0; text-align: center; color: #94a3b8; }

.qypx-setting-title { margin: 0 0 22px; padding: 0 20px 18px; border-bottom: 1px solid var(--qypx-line); }
.qypx-setting-title h3 { margin: 0 0 8px; color: #1e40af; font-size: 20px; font-weight: 700; }
.qypx-setting-title p { margin: 0; color: var(--qypx-muted); }

.qypx-map-page {
    padding: 14px;
    min-height: calc(100vh - 120px);
}

.qypx-map-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    flex-wrap: wrap;
    margin-bottom: 12px;
}

.qypx-map-title strong { display: block; color: #1e40af; font-size: 20px; }
.qypx-map-title span { color: var(--qypx-muted); }
.qypx-map-actions { display: flex; gap: 8px; flex-wrap: wrap; }

.qypx-map-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 310px;
    gap: 14px;
    align-items: stretch;
}

.qypx-map-wrap {
    overflow: auto;
    cursor: grab;
    border-radius: 8px;
    border: 1px solid rgba(147,197,253,.52);
    background: #f8fbff;
}

.qypx-map-wrap.is-panning { cursor: grabbing; }

.qypx-map-canvas {
    position: relative;
    width: 4200px;
    height: 620px;
    min-width: 100%;
    overflow: visible;
    background:
        linear-gradient(90deg, rgba(37,99,235,.06) 1px, transparent 1px),
        linear-gradient(rgba(37,99,235,.06) 1px, transparent 1px),
        #ffffff;
    background-size: 30px 30px;
}

.qypx-map-canvas:before,
.qypx-map-canvas:after {
    content: none;
}

.qypx-map-canvas:after {
    content: attr(data-zoom);
    position: absolute;
    right: 14px;
    top: 12px;
    padding: 4px 10px;
    border-radius: 999px;
    color: #1d4ed8;
    background: #dbeafe;
    font-weight: 700;
}

.map-zone {
    position: absolute;
    z-index: 1;
    padding: 7px 12px;
    border-radius: 999px;
    color: #1e3a8a;
    background: #dbeafe;
    border: 1px solid #93c5fd;
    font-weight: 700;
}

.zone-west { left: 1%; top: 1.8%; }
.zone-main { left: 40%; top: 49%; }
.zone-east { right: 2%; top: 1.8%; }

.booth-cell {
    position: absolute;
    z-index: 3;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(37,99,235,.72);
    border-radius: 4px;
    background: linear-gradient(180deg, #ffffff, #eff6ff);
    color: #1e40af;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    box-shadow: 0 1px 0 rgba(255,255,255,.9) inset, 0 8px 18px rgba(30,64,175,.14);
}

.booth-cell:hover,
.booth-cell:focus {
    color: #1e40af;
    text-decoration: none;
    transform: translateY(-2px);
    box-shadow: 0 12px 24px rgba(37,99,235,.24);
}

.booth-cell.state-locked,
.booth-cell.state-paid,
.booth-cell.state-paused {
    color: #64748b;
    border-color: #94a3b8;
    background: #e2e8f0;
}

.booth-cell.state-paid { background: #cbd5e1; }
.booth-cell.state-paused { background: #f1f5f9; }
.booth-cell.selected { color: #fff; border-color: #f59e0b; background: #f59e0b; }

.qypx-manage-card {
    padding: 16px;
    min-height: 620px;
}

.qypx-manage-card h4 { margin: 0 0 14px; color: #1e40af; font-weight: 700; }
.qypx-manage-title { padding: 12px; margin-bottom: 12px; border-radius: 8px; color: #fff; background: linear-gradient(135deg, #1e40af, #2563eb); }
.qypx-manage-title span,
.qypx-manage-title strong { display: block; }

.qypx-map-legend {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    padding-top: 16px;
    color: #334155;
}

.qypx-map-legend i { display: inline-block; width: 12px; height: 12px; margin-right: 5px; vertical-align: -1px; border-radius: 2px; border: 1px solid rgba(15,23,42,.2); }
.qypx-map-legend .state-available { background: #fff; border-color: #2563eb; }
.qypx-map-legend .state-locked { background: #e2e8f0; }
.qypx-map-legend .state-paid { background: #cbd5e1; }
.qypx-map-legend .state-paused { background: #f1f5f9; }
.qypx-map-legend .state-selected { background: #f59e0b; }

.qypx-login-body { min-height: 100vh; overflow: hidden; background: #0f172a; }
.qypx-login-body:before { content: ""; position: fixed; inset: 0; background: radial-gradient(circle at 12% 14%, rgba(37,99,235,.38), transparent 28%), radial-gradient(circle at 88% 20%, rgba(14,165,233,.20), transparent 24%), linear-gradient(135deg, #0f172a 0%, #1e3a8a 54%, #020617 100%); }
.qypx-login-body:after { content: ""; position: fixed; inset: 0; opacity: .22; background-image: linear-gradient(90deg, rgba(255,255,255,.12) 1px, transparent 1px), linear-gradient(rgba(255,255,255,.12) 1px, transparent 1px); background-size: 42px 42px; }
.qypx-login-shell { position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.1fr) 430px; gap: 42px; align-items: center; width: min(1120px, calc(100vw - 40px)); min-height: 100vh; margin: 0 auto; }
.qypx-login-visual,
.qypx-login-card { border: 1px solid rgba(255,255,255,.18); border-radius: 8px; background: rgba(255,255,255,.10); box-shadow: 0 28px 80px rgba(0,0,0,.28); backdrop-filter: blur(18px); }
.qypx-login-visual { min-height: 520px; padding: 46px; color: #fff; }
.qypx-login-brand span { display: inline-block; padding: 6px 12px; margin-bottom: 16px; border: 1px solid rgba(255,255,255,.25); border-radius: 999px; color: #bfdbfe; }
.qypx-login-brand strong { display: block; max-width: 520px; font-size: 48px; line-height: 1.12; letter-spacing: 0; }
.qypx-login-mapcard { position: relative; margin-top: 54px; padding: 26px; height: 210px; border-radius: 8px; background: rgba(255,255,255,.12); overflow: hidden; }
.qypx-login-mapline { position: absolute; left: -4%; right: -4%; top: 52%; height: 70px; border-top: 2px solid rgba(255,255,255,.65); border-bottom: 2px solid rgba(96,165,250,.85); transform: rotate(-4deg); }
.qypx-login-mini-stalls { display: flex; gap: 8px; position: relative; z-index: 1; margin-top: 30px; }
.qypx-login-mini-stalls i { width: 28px; height: 54px; border: 1px solid #93c5fd; background: rgba(255,255,255,.78); }
.qypx-login-mapcard p { position: absolute; left: 26px; bottom: 22px; margin: 0; color: rgba(255,255,255,.82); }
.qypx-login-card { padding: 36px; background: rgba(255,255,255,.90); }
.qypx-login-card-head span { color: #2563eb; font-weight: 700; }
.qypx-login-card-head h1 { margin: 6px 0 6px; color: #111827; font-size: 30px; }
.qypx-login-card-head p { margin: 0 0 24px; color: #64748b; }
.qypx-login-field { margin-bottom: 16px; }
.qypx-login-field label { color: #334155; font-weight: 600; }
.qypx-login-field .input-group-addon,
.qypx-login-field .form-control { height: 46px; border-color: rgba(148,163,184,.38); background: rgba(255,255,255,.86); }
.qypx-login-field .captcha-addon { padding: 0; overflow: hidden; }
.qypx-login-check { color: #475569; }
.qypx-login-submit { height: 48px; margin-top: 10px; font-weight: 700; }

@media (max-width: 992px) {
    .qypx-login-shell,
    .qypx-map-layout { grid-template-columns: 1fr; }
    .qypx-login-visual { display: none; }
    .qypx-login-card { width: min(430px, 100%); margin: 0 auto; }
}

@media (max-width: 768px) {
    .qypx-detail-grid { grid-template-columns: 1fr; }
}

/* qypx-wipecache-contrast */
/* 业务备注：顶部清除缓存下拉菜单为白色毛玻璃底，单独提高文字和 hover 的反差度，避免白底白字。 */
.main-header .navbar .dropdown-menu.wipecache {
    min-width: 190px;
    padding: 8px;
    border: 1px solid rgba(37,99,235,.18);
    border-radius: 8px;
    background: rgba(255,255,255,.98) !important;
    box-shadow: 0 18px 38px rgba(15,23,42,.18);
}

.main-header .navbar .dropdown-menu.wipecache > li > a {
    color: #0f172a !important;
    background: transparent !important;
    border-radius: 6px;
    font-weight: 600;
    line-height: 28px;
}

.main-header .navbar .dropdown-menu.wipecache > li > a i {
    color: #2563eb !important;
}

.main-header .navbar .dropdown-menu.wipecache > li > a:hover,
.main-header .navbar .dropdown-menu.wipecache > li > a:focus {
    color: #fff !important;
    background: #2563eb !important;
}

.main-header .navbar .dropdown-menu.wipecache > li > a:hover i,
.main-header .navbar .dropdown-menu.wipecache > li > a:focus i {
    color: #fff !important;
}

.main-header .navbar .dropdown-menu.wipecache .divider {
    margin: 6px 0;
    background-color: rgba(37,99,235,.14);
}

/* qypx-map-search-locate */
/* 业务备注：摊位画布新增编号定位入口，搜索框保持紧凑，定位结果只闪烁提示，不长期占用选中态。 */
.qypx-map-search {
    display: flex;
    align-items: center;
    gap: 8px;
    flex: 0 0 auto;
}

.qypx-map-search .form-control {
    width: 190px;
    height: 32px;
    border-color: rgba(37,99,235,.24);
    background: rgba(255,255,255,.96);
}

.booth-cell.is-locating {
    z-index: 5;
    color: #fff;
    border-color: #f97316;
    background: linear-gradient(135deg, #f97316, #f59e0b);
    animation: qypx-booth-locate-flash 1.2s ease-in-out 1;
    box-shadow: 0 0 0 4px rgba(249,115,22,.22), 0 14px 28px rgba(249,115,22,.28);
}

@keyframes qypx-booth-locate-flash {
    0%, 100% { transform: translateY(0); box-shadow: 0 0 0 0 rgba(249,115,22,0); }
    30%, 70% { transform: translateY(-3px); box-shadow: 0 0 0 6px rgba(249,115,22,.24), 0 16px 30px rgba(249,115,22,.30); }
}

/* qypx-dashboard-overview */
/* 业务备注：系统首页统一为蓝色运营看板，核心指标、图表和最近缴费列表保持同一视觉密度并支持窄屏重排。 */
.qypx-dashboard {
    min-height: 100%;
    padding: 22px;
    color: #0f172a;
    background: #f4f8fd;
}

.qypx-dashboard-header {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 24px;
    margin-bottom: 20px;
}

.qypx-dashboard-kicker {
    display: block;
    margin-bottom: 5px;
    color: #2563eb;
    font-size: 11px;
    font-weight: 800;
    letter-spacing: 0;
}

.qypx-dashboard-header h1 {
    margin: 0;
    color: #0f172a;
    font-size: 26px;
    line-height: 1.25;
    font-weight: 800;
    letter-spacing: 0;
}

.qypx-dashboard-header p {
    margin: 6px 0 0;
    color: #64748b;
    font-size: 13px;
}

.qypx-dashboard-tools {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    flex-wrap: wrap;
    min-width: 0;
    gap: 12px;
}

/* 业务备注：当前扫码展示期数必须一眼可辨，避免管理员误把一期、二期切换状态看反。 */
.qypx-phase-control {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 10px 12px;
    border: 2px solid #2563eb;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(37, 99, 235, .12);
}

.qypx-phase-current span,
.qypx-phase-current strong {
    display: block;
    white-space: nowrap;
}

.qypx-phase-current span {
    color: #64748b;
    font-size: 11px;
}

.qypx-phase-current strong {
    margin-top: 3px;
    color: #1d4ed8;
    font-size: 16px;
}

#qypx-current-phase .btn {
    min-width: 58px;
    padding: 8px 12px;
    border-color: #bfdbfe;
    color: #475569;
    font-weight: 700;
}

#qypx-current-phase .btn.active {
    border-color: #2563eb;
    color: #fff;
    background: #2563eb;
    box-shadow: inset 0 2px 4px rgba(15, 23, 42, .16);
}

/* 业务备注：报名码在控制台首屏保持可扫描尺寸，窄屏时与统计时间纵向排列。 */
.qypx-registration-code {
    display: grid;
    grid-template-columns: 76px minmax(0, 1fr) 16px;
    align-items: center;
    gap: 12px;
    width: 292px;
    min-width: 0;
    padding: 10px 12px;
    border: 1px solid #dce7f4;
    border-radius: 8px;
    color: #334155;
    background: #fff;
    box-shadow: 0 8px 24px rgba(30, 64, 175, .07);
    font-family: inherit;
    text-align: left;
    cursor: zoom-in;
}

.qypx-registration-code:hover,
.qypx-registration-code:focus {
    border-color: #93c5fd;
    color: #1d4ed8;
    text-decoration: none;
}

.qypx-registration-qr {
    display: grid;
    place-items: center;
    width: 76px;
    height: 76px;
    padding: 4px;
    border: 1px solid #dbeafe;
    border-radius: 6px;
    background: #fff;
}

.qypx-registration-qr img {
    display: block;
    width: 66px;
    height: 66px;
    object-fit: contain;
}

.qypx-registration-copy { min-width: 0; }

.qypx-registration-copy small,
.qypx-registration-copy strong,
.qypx-registration-copy em {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qypx-registration-copy small {
    color: #64748b;
    font-size: 11px;
    font-style: normal;
}

.qypx-registration-copy strong {
    margin: 3px 0 5px;
    color: #172033;
    font-size: 15px;
    font-weight: 800;
}

.qypx-registration-copy em {
    color: #2563eb;
    font-size: 10px;
    font-style: normal;
}

.qypx-registration-code > i { color: #94a3b8; }

/* 业务备注：放大层仅用于现场扫码，二维码保持完整比例并保留实际报名地址便于核验。 */
.qypx-registration-modal .modal-dialog {
    width: 430px;
    max-width: calc(100% - 30px);
    margin: 50px auto;
}

.qypx-registration-modal .modal-content {
    overflow: hidden;
    border: 0;
    border-radius: 8px;
}
.qypx-registration-preview {
    padding: 24px 24px 20px;
    text-align: center;
    background: #fff;
}

.qypx-registration-preview > img {
    display: block;
    width: 100%;
    max-width: 320px;
    height: auto;
    margin: 0 auto 16px;
}

.qypx-registration-preview-url {
    display: block;
    color: #2563eb;
    font-size: 12px;
    font-weight: 600;
    line-height: 1.6;
    word-break: break-all;
}

.qypx-dashboard-time {
    display: grid;
    grid-template-columns: 32px auto;
    align-items: center;
    column-gap: 9px;
    min-width: 210px;
    color: #64748b;
}

.qypx-dashboard-time i {
    grid-row: 1 / 3;
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 6px;
    color: #2563eb;
    background: #dbeafe;
}

.qypx-dashboard-time span {
    font-size: 11px;
}

.qypx-dashboard-time strong {
    color: #334155;
    font-size: 13px;
    font-weight: 700;
}

.qypx-metric-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
}

.qypx-metric-card {
    position: relative;
    display: flex;
    align-items: center;
    gap: 14px;
    min-width: 0;
    min-height: 126px;
    padding: 20px;
    overflow: hidden;
    border: 1px solid #dce7f4;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(30, 64, 175, .07);
}

.qypx-metric-card:before {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    left: 0;
    width: 4px;
    background: currentColor;
}

.qypx-metric-icon {
    flex: 0 0 46px;
    display: grid;
    place-items: center;
    width: 46px;
    height: 46px;
    border-radius: 8px;
    font-size: 21px;
    background: currentColor;
}

.qypx-metric-icon i {
    color: #fff;
}

.qypx-metric-content {
    min-width: 0;
}

.qypx-metric-content > span {
    display: block;
    color: #64748b;
    font-size: 13px;
    font-weight: 600;
}

.qypx-metric-content strong {
    display: block;
    margin: 4px 0 3px;
    overflow: hidden;
    color: #0f172a;
    font-size: 28px;
    line-height: 1.15;
    font-weight: 800;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qypx-metric-content strong em {
    margin-right: 3px;
    font-size: 15px;
    font-style: normal;
    color: #64748b;
}

.qypx-metric-content small {
    display: block;
    overflow: hidden;
    color: #94a3b8;
    font-size: 11px;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qypx-metric-card.metric-blue { color: #2563eb; }
.qypx-metric-card.metric-green { color: #10b981; }
.qypx-metric-card.metric-orange { color: #f59e0b; }
.qypx-metric-card.metric-cyan { color: #0891b2; }

.qypx-quick-strip {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    margin: 14px 0;
    overflow: hidden;
    border: 1px solid #dce7f4;
    border-radius: 8px;
    background: #fff;
}

.qypx-quick-item {
    min-width: 0;
    padding: 13px 16px;
    border-right: 1px solid #e7eef7;
}

.qypx-quick-item:last-child {
    border-right: 0;
}

.qypx-quick-item span,
.qypx-quick-item strong {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qypx-quick-item span {
    color: #94a3b8;
    font-size: 11px;
}

.qypx-quick-item strong {
    margin-top: 3px;
    color: #1e3a8a;
    font-size: 17px;
    font-weight: 800;
}

.qypx-dashboard-grid {
    display: grid;
    align-items: stretch;
    gap: 14px;
    margin-top: 14px;
}

.qypx-dashboard-grid-main {
    grid-template-columns: minmax(0, 1.65fr) minmax(300px, .75fr);
}

.qypx-dashboard-grid-secondary {
    grid-template-columns: minmax(360px, .85fr) minmax(0, 1.4fr);
}

.qypx-dashboard-panel {
    display: flex;
    flex-direction: column;
    min-width: 0;
    height: 100%;
    overflow: hidden;
    padding: 18px;
    border: 1px solid #dce7f4;
    border-radius: 8px;
    background: #fff;
    box-shadow: 0 8px 24px rgba(30, 64, 175, .055);
}

.qypx-panel-heading {
    flex: 0 0 auto;
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 12px;
    min-height: 42px;
}

.qypx-panel-heading h2 {
    margin: 0;
    color: #172033;
    font-size: 15px;
    line-height: 1.35;
    font-weight: 800;
    letter-spacing: 0;
}

.qypx-panel-heading p {
    margin: 4px 0 0;
    color: #94a3b8;
    font-size: 11px;
}

.qypx-panel-badge,
.qypx-panel-total,
.qypx-refund-count {
    flex: 0 0 auto;
    color: #2563eb;
    font-size: 11px;
    font-weight: 800;
}

.qypx-panel-badge {
    padding: 4px 7px;
    border-radius: 4px;
    background: #eff6ff;
}

.qypx-panel-total {
    font-size: 16px;
}

.qypx-refund-count {
    color: #64748b;
}

/* 业务备注：图表面板统一伸缩规则，避免数据或页签宽度变化后互相挤压。 */
.qypx-dashboard-grid-main > .qypx-dashboard-panel {
    min-height: 390px;
}

.qypx-dashboard-grid-secondary > .qypx-dashboard-panel {
    min-height: 430px;
}

.qypx-chart {
    flex: 1 1 292px;
    width: 100%;
    min-width: 0;
    min-height: 292px;
    height: 292px;
}

.qypx-chart-wide {
    flex-basis: 306px;
    height: 306px;
}

.qypx-chart-capacity {
    flex-basis: 330px;
    height: 330px;
}

.qypx-dashboard-table-wrap {
    flex: 1 1 auto;
    min-height: 0;
    margin: 8px -6px -6px;
    overflow: auto;
}

.qypx-dashboard-table {
    margin: 0;
    table-layout: fixed;
}

.qypx-dashboard-table > thead > tr > th {
    padding: 9px 8px;
    border-bottom: 1px solid #e2e8f0;
    color: #94a3b8;
    background: transparent;
    font-size: 11px;
    font-weight: 700;
}

.qypx-dashboard-table > tbody > tr > td {
    padding: 9px 8px;
    border-top: 1px solid #edf2f7;
    color: #334155;
    vertical-align: middle;
}

.qypx-dashboard-table > tbody > tr:first-child > td {
    border-top: 0;
}

.qypx-dashboard-table td strong,
.qypx-dashboard-table td small {
    display: block;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.qypx-dashboard-table td strong {
    color: #172033;
    font-size: 12px;
}

.qypx-dashboard-table td small {
    margin-top: 2px;
    color: #94a3b8;
    font-size: 10px;
}

.qypx-term-tag {
    display: inline-block;
    min-width: 38px;
    padding: 3px 6px;
    border-radius: 4px;
    color: #1d4ed8;
    background: #eff6ff;
    text-align: center;
    font-size: 11px;
    font-weight: 700;
}

.qypx-dashboard-table .qypx-money {
    color: #047857;
    font-weight: 800;
}

.qypx-time-cell {
    color: #64748b !important;
    font-size: 11px;
    white-space: nowrap;
}

.qypx-empty-row {
    height: 190px;
    color: #94a3b8 !important;
    text-align: center;
}

@media (max-width: 1200px) {
    .qypx-dashboard-grid-main {
        grid-template-columns: 1fr;
    }

    .qypx-metric-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .qypx-quick-strip {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    .qypx-quick-item:nth-child(3) {
        border-right: 0;
    }

    .qypx-quick-item:nth-child(-n+3) {
        border-bottom: 1px solid #e7eef7;
    }

    .qypx-dashboard-grid-secondary {
        grid-template-columns: 1fr;
    }
}

@media (max-width: 980px) {
    .qypx-dashboard-grid-main {
        grid-template-columns: 1fr;
    }

    .qypx-dashboard-tools {
        align-items: flex-end;
        flex-direction: column;
        gap: 10px;
    }
}

@media (max-width: 640px) {
    .qypx-dashboard {
        padding: 14px;
    }

    .qypx-dashboard-header {
        align-items: flex-start;
        flex-direction: column;
    }

    .qypx-dashboard-time {
        min-width: 0;
    }

    .qypx-dashboard-tools {
        align-items: stretch;
        width: 100%;
    }

    .qypx-phase-control {
        justify-content: space-between;
    }

    .qypx-registration-code {
        width: 100%;
    }

    .qypx-metric-grid {
        grid-template-columns: 1fr;
    }

    .qypx-quick-strip {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .qypx-quick-item,
    .qypx-quick-item:nth-child(3) {
        border-right: 1px solid #e7eef7;
        border-bottom: 1px solid #e7eef7;
    }

    .qypx-quick-item:nth-child(even) {
        border-right: 0;
    }

    .qypx-quick-item:nth-last-child(-n+2) {
        border-bottom: 0;
    }

    .qypx-dashboard-panel {
        padding: 14px;
    }
}


/* 业务备注：订单详情使用半透明玻璃层分组展示全字段，长单号允许换行且兼容窄屏弹窗。 */
.qypx-order-detail {
    min-height: 100%;
    padding: 18px;
    color: #203044;
    background: #edf3f9;
}

.qypx-order-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 22px 24px;
    border: 1px solid rgba(255, 255, 255, .88);
    border-radius: 8px;
    background: rgba(255, 255, 255, .74);
    box-shadow: 0 14px 32px rgba(31, 58, 91, .12), inset 0 1px 0 rgba(255, 255, 255, .92);
    backdrop-filter: blur(18px) saturate(125%);
    -webkit-backdrop-filter: blur(18px) saturate(125%);
}

.qypx-order-eyebrow {
    display: block;
    margin-bottom: 7px;
    color: #61758b;
    font-size: 12px;
}

.qypx-order-hero h2 {
    max-width: 560px;
    margin: 0;
    color: #17283d;
    font-size: 21px;
    line-height: 1.35;
    overflow-wrap: anywhere;
}

.qypx-order-hero p {
    margin: 8px 0 0;
    color: #526980;
}

.qypx-order-hero-side {
    display: grid;
    justify-items: end;
    gap: 9px;
    flex: 0 0 auto;
}

.qypx-order-hero-side > strong {
    color: #b5252c;
    font-size: 25px;
    font-weight: 700;
}

.qypx-order-status {
    display: inline-block;
    padding: 3px 9px;
    border-radius: 4px;
    color: #fff;
    font-size: 12px;
    line-height: 20px;
    background: #7b8794;
}

.qypx-order-status.status-pending { background: #b7791f; }
.qypx-order-status.status-paid { background: #198754; }
.qypx-order-status.status-refunded { background: #2878a8; }
.qypx-order-status.status-failed { background: #6b7280; }

.qypx-order-section {
    margin-top: 14px;
    padding: 18px 22px 20px;
    border: 1px solid rgba(255, 255, 255, .86);
    border-radius: 8px;
    background: rgba(255, 255, 255, .66);
    box-shadow: 0 8px 24px rgba(31, 58, 91, .08), inset 0 1px 0 rgba(255, 255, 255, .9);
    backdrop-filter: blur(15px) saturate(120%);
    -webkit-backdrop-filter: blur(15px) saturate(120%);
}

.qypx-order-section h4 {
    margin: 0 0 15px;
    color: #223b57;
    font-size: 15px;
    font-weight: 700;
}

.qypx-order-section h4 i {
    width: 20px;
    color: #c42b32;
}

.qypx-order-fields {
    display: grid;
    grid-template-columns: 112px minmax(0, 1fr) 112px minmax(0, 1fr);
    margin: 0;
    border-top: 1px solid rgba(99, 122, 148, .16);
}

.qypx-order-fields dt,
.qypx-order-fields dd {
    min-width: 0;
    margin: 0;
    padding: 11px 10px;
    border-bottom: 1px solid rgba(99, 122, 148, .13);
    line-height: 20px;
}

.qypx-order-fields dt {
    color: #6a7b8e;
    font-weight: 500;
}

.qypx-order-fields dd {
    color: #203044;
    font-weight: 600;
    overflow-wrap: anywhere;
}

.qypx-order-fields dt.is-wide { grid-column: 1 / 2; }
.qypx-order-fields dd.is-wide { grid-column: 2 / -1; }

@media (max-width: 720px) {
    .qypx-order-detail { padding: 12px; }
    .qypx-order-hero { align-items: flex-start; padding: 18px; }
    .qypx-order-hero-side { justify-items: start; }
    .qypx-order-fields { grid-template-columns: 104px minmax(0, 1fr); }
    .qypx-order-fields dt.is-wide { grid-column: 1 / 2; }
    .qypx-order-fields dd.is-wide { grid-column: 2 / 3; }
}

@media (max-width: 520px) {
    .qypx-order-hero { flex-direction: column; }
    .qypx-order-section { padding: 16px 12px; }
}

/* 业务备注：巡检详情使用统一蓝色后台体系，信息卡、图片证据和处理轨迹便于快速核对。 */
.inspection-detail {
    min-height: 100%;
    padding: 18px;
    color: #21354d;
    background-color: #eef4fa;
    background-image: linear-gradient(rgba(57, 112, 171, .055) 1px, transparent 1px), linear-gradient(90deg, rgba(57, 112, 171, .055) 1px, transparent 1px);
    background-size: 28px 28px;
}

.inspection-hero {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 20px 22px;
    border: 1px solid rgba(255, 255, 255, .9);
    border-radius: 8px;
    background: rgba(255, 255, 255, .76);
    box-shadow: 0 12px 30px rgba(28, 66, 105, .1);
    backdrop-filter: blur(16px) saturate(125%);
    -webkit-backdrop-filter: blur(16px) saturate(125%);
}

.inspection-hero span,
.inspection-hero p {
    color: #6c8198;
}

.inspection-hero h2 {
    margin: 5px 0;
    color: #173353;
    font-size: 22px;
    line-height: 1.35;
}

.inspection-hero p {
    margin: 0;
}

.inspection-status {
    flex: 0 0 auto;
    padding: 6px 12px;
    border-radius: 4px;
    color: #fff;
    font-size: 13px;
}

.inspection-status.status-pending_rectification { background: #d94c4c; }
.inspection-status.status-pending_review { background: #c78614; }
.inspection-status.status-rectified { background: #178d68; }

.inspection-card-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-top: 14px;
}

.inspection-card {
    margin-top: 14px;
    padding: 18px 20px;
    border: 1px solid rgba(255, 255, 255, .92);
    border-radius: 8px;
    background: rgba(255, 255, 255, .72);
    box-shadow: 0 8px 24px rgba(28, 66, 105, .08);
    backdrop-filter: blur(14px) saturate(120%);
    -webkit-backdrop-filter: blur(14px) saturate(120%);
}

.inspection-card-grid .inspection-card { margin-top: 0; }

.inspection-card h4 {
    margin: 0 0 14px;
    color: #1b456f;
    font-size: 15px;
    font-weight: 700;
}

.inspection-card h4 i {
    width: 22px;
    color: #2879c9;
}

.inspection-fields {
    display: grid;
    grid-template-columns: 92px minmax(0, 1fr);
    margin: 0;
}

.inspection-fields dt,
.inspection-fields dd {
    min-width: 0;
    margin: 0;
    padding: 9px 6px;
    border-bottom: 1px solid #e6edf5;
    line-height: 20px;
}

.inspection-fields dt { color: #718399; font-weight: 500; }
.inspection-fields dd { color: #20364e; font-weight: 600; overflow-wrap: anywhere; }

.inspection-copy {
    min-height: 42px;
    padding: 12px 14px;
    border-left: 3px solid #4b91d3;
    color: #314a64;
    line-height: 1.75;
    white-space: pre-wrap;
    background: rgba(232, 242, 252, .7);
}

.inspection-gallery {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(110px, 1fr));
    gap: 10px;
    margin-top: 14px;
}

.inspection-photo {
    display: block;
    aspect-ratio: 4 / 3;
    overflow: hidden;
    border: 1px solid #d8e5f1;
    border-radius: 6px;
    background: #f4f7fa;
}

.inspection-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    transition: transform .18s ease;
}

.inspection-photo:hover img { transform: scale(1.035); }
.inspection-gallery.is-compact { grid-template-columns: repeat(auto-fill, 82px); }

.inspection-timeline article {
    position: relative;
    margin-left: 8px;
    padding: 0 0 20px 25px;
    border-left: 1px solid #cbdced;
}

.inspection-timeline article:last-child { padding-bottom: 0; }

.inspection-timeline article > i {
    position: absolute;
    top: 3px;
    left: -5px;
    width: 9px;
    height: 9px;
    border: 2px solid #fff;
    border-radius: 50%;
    background: #2879c9;
    box-shadow: 0 0 0 2px #9bc4eb;
}

.inspection-timeline article > div:first-of-type {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
}

.inspection-timeline article strong { color: #234665; }
.inspection-timeline article span { color: #7c8ea2; font-size: 12px; }
.inspection-timeline article p { margin: 8px 0 0; color: #405970; white-space: pre-wrap; }

@media (max-width: 760px) {
    .inspection-card-grid { grid-template-columns: 1fr; }
    .inspection-hero { align-items: flex-start; flex-direction: column; }
    .inspection-timeline article > div:first-of-type { align-items: flex-start; flex-direction: column; gap: 3px; }
}

/* 业务备注：商家详情把管理员、铺位凭证和巡检状态组合成清晰的信息卡，沿用后台蓝色主题。 */
.merchant-staff-count {
    flex: 0 0 auto;
    padding: 7px 11px;
    border: 1px solid #bdd8f1;
    border-radius: 5px;
    color: #195f9e;
    background: #eef7ff;
}

.merchant-summary-fields {
    grid-template-columns: 92px minmax(0, 1fr) 92px minmax(0, 1fr);
}

.merchant-booth-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}

.merchant-booth-heading span:first-child {
    color: #718399;
    font-size: 12px;
}

.merchant-booth-heading h3 {
    margin: 3px 0 0;
    color: #173f68;
    font-size: 22px;
}

.merchant-booth-body {
    display: grid;
    grid-template-columns: minmax(260px, .8fr) minmax(320px, 1.2fr);
    gap: 22px;
    align-items: start;
}

/* 业务备注：缴费凭证只展示可核对的支付字段，不再渲染或加载二维码图片。 */
.merchant-payment-card {
    overflow: hidden;
    border: 1px solid #c9def2;
    border-radius: 8px;
    background: #f8fbff;
    box-shadow: 0 8px 20px rgba(30, 82, 132, .08);
}

.merchant-payment-card__head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 11px 14px;
    color: #245a8d;
    background: #eaf4fe;
}

.merchant-payment-card__head span { font-weight: 700; }
.merchant-payment-card__head strong { color: #178d68; font-size: 12px; }

.merchant-payment-card__amount {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 16px;
    padding: 16px 14px 12px;
}

.merchant-payment-card__amount small { color: #718399; }
.merchant-payment-card__amount b { color: #173f68; font-size: 22px; }

.merchant-payment-card dl {
    display: grid;
    grid-template-columns: 72px minmax(0, 1fr);
    margin: 0;
    padding: 0 14px 13px;
}

.merchant-payment-card dt,
.merchant-payment-card dd {
    min-width: 0;
    margin: 0;
    padding: 5px 0;
    line-height: 20px;
}

.merchant-payment-card dt { color: #718399; font-weight: 500; }
.merchant-payment-card dd { color: #2d4964; overflow-wrap: anywhere; }

/* 业务备注：证照按铺位分组展示，固定预览比例避免不同尺寸图片撑乱详情卡片。 */
.merchant-document-section {
    margin-top: 20px;
    padding-top: 16px;
    border-top: 1px solid #dfeaf5;
}

.merchant-document-section h4 {
    margin: 0 0 12px;
    color: #234b72;
    font-size: 14px;
}

.merchant-document-section h4 i {
    width: 20px;
    color: #2879c9;
}

.merchant-document-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 220px));
    gap: 16px;
}

.merchant-document-item > strong {
    display: block;
    margin-bottom: 8px;
    color: #526a82;
    font-size: 12px;
}

.merchant-document-photo,
.merchant-document-empty {
    width: 100%;
    height: 132px;
    aspect-ratio: auto;
}

.merchant-document-photo { cursor: zoom-in; }
.merchant-document-photo img { object-fit: contain; background: #fff; }

.merchant-document-empty {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-direction: column;
    gap: 7px;
    border: 1px dashed #c9d9e8;
    border-radius: 6px;
    color: #8da0b4;
    background: #f6f9fc;
}

.merchant-document-empty i { font-size: 24px; }
.merchant-document-empty span { font-size: 12px; }

.merchant-inspection-list {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid #dfeaf5;
}

.merchant-inspection-list article {
    position: relative;
    min-height: 62px;
    padding: 11px 108px 11px 12px;
    border-bottom: 1px solid #e6eef6;
}

.merchant-inspection-list article:last-child { border-bottom: 0; }

.merchant-inspection-list article > div {
    display: flex;
    align-items: center;
    gap: 12px;
}

.merchant-inspection-list article strong { color: #1f609b; }
.merchant-inspection-list article span { color: #7b8da1; font-size: 12px; }
.merchant-inspection-list article p { margin: 5px 0 0; color: #455c73; }

.merchant-inspection-list .merchant-record-detail {
    position: absolute;
    top: 16px;
    right: 8px;
}

.merchant-staff-table { margin-bottom: 0; }
.merchant-staff-table th { color: #234b72; background: #edf6ff; }

.inspection-status.status-repair-pending { background: #c78614; }
.inspection-status.status-repair-replied { background: #178d68; }

/* 业务备注：停业提报详情沿用统一卡片体系，仅通过状态色区分待审核、通过和驳回。 */
.inspection-status.status-suspension-pending { background: #c78614; }
.inspection-status.status-suspension-pass { background: #178d68; }
.inspection-status.status-suspension-reject { background: #d94c4c; }

/* 业务备注：续费详情沿用卡片体系，状态色和关联订单表保持清晰可扫读。 */
.inspection-status.status-renewal-pending { background: #c78614; }
.inspection-status.status-renewal-quoted,
.inspection-status.status-renewal-paying { background: #2563eb; }
.inspection-status.status-renewal-paid { background: #178d68; }
.inspection-status.status-renewal-refunded { background: #64748b; }

.qypx-related-orders {
    margin-bottom: 0;
    background: #fff;
}

.qypx-related-orders > thead > tr > th {
    border-color: #dce7f4;
    color: #234b72;
    background: #edf6ff;
}

.qypx-payment-orders {
    margin-top: 14px;
}

.repair-remark {
    margin: 12px 0 0;
    padding: 10px 12px;
    color: #526a82;
    background: #f5f8fb;
}

@media (max-width: 720px) {
    .merchant-summary-fields { grid-template-columns: 92px minmax(0, 1fr); }
    .merchant-booth-body { grid-template-columns: 1fr; }
    .merchant-document-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .merchant-inspection-list article { padding-right: 12px; }
    .merchant-inspection-list .merchant-record-detail { position: static; margin-top: 8px; }
}
