/* 巨鲸商家后台：仅视觉增强。保留 AdminLTE / Bootstrap / FastAdmin 的布局及事件。 */
body.jj-admin-login,
body.jj-admin-shell,
body.jj-admin-page {
    --jj-primary: #246bce;
    --jj-primary-hover: #1956ab;
    --jj-sidebar: #14263e;
    --jj-ink: #20334b;
    --jj-muted: #607187;
    --jj-line: #e1e8f1;
    --jj-background: #f5f7fb;
    --jj-shadow: 0 6px 22px rgba(29, 57, 98, .045);
    color: var(--jj-ink);
    background-color: var(--jj-background);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    font-size: 14px;
    line-height: 1.6;
}

/* 登录：真实表单和原账号头像槽不改变；品牌插画只由模板放入一次。 */
body.jj-admin-login { min-height: 100vh; background-size: cover; background-position: center; }
body.jj-admin-login .jj-login-wrapper { width: 100%; max-width: 1140px; margin: 0 auto; padding: 26px 24px; }
body.jj-admin-login .jj-login-top { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 26px; }
body.jj-admin-login .jj-login-brand { color: #244b7f; font-size: 24px; font-weight: 700; letter-spacing: .04em; }
body.jj-admin-login .jj-login-brand small,
body.jj-admin-login .jj-login-brand > span { display: inline-block; margin-left: 16px; padding-left: 16px; border-left: 1px solid #cdd9e8; color: var(--jj-muted); font-size: 14px; font-weight: 400; letter-spacing: 0; }
body.jj-admin-login .login-screen { max-width: none; margin: 0; padding: 0; }
body.jj-admin-login .jj-login-card { display: grid; grid-template-columns: 1.05fr 1fr; min-height: 570px; margin: 0; padding: 0; background: #fff; border: 1px solid var(--jj-line); border-radius: 16px; box-shadow: 0 20px 65px rgba(36, 75, 127, .08); }
body.jj-admin-login .jj-login-visual { min-width: 0; padding: 38px 36px 28px; border-radius: 15px 0 0 15px; background: linear-gradient(145deg, #dfeeff, #edf6ff 60%, #e6effb); }
body.jj-admin-login .jj-login-eyebrow { margin-bottom: 14px; color: #4a729d; font-size: 14px; font-weight: 600; letter-spacing: .08em; }
body.jj-admin-login .jj-login-visual h1 { margin: 0 0 14px; color: #24496f; font-size: 32px; font-weight: 650; line-height: 1.45; }
body.jj-admin-login .jj-login-visual p { color: #536e89; margin: 0; line-height: 1.85; }
body.jj-admin-login .jj-login-whale-stage { min-height: 270px; display: flex; align-items: center; justify-content: center; margin: 6px 0; }
body.jj-admin-login .jj-login-whale { display: block; width: 280px; max-width: 100%; height: 280px; object-fit: contain; }
body.jj-admin-login .jj-login-pills { display: flex; flex-wrap: wrap; justify-content: center; gap: 8px; }
body.jj-admin-login .jj-login-pills span { padding: 5px 12px; border: 1px solid #fff; border-radius: 20px; color: #4d6a87; background: rgba(255, 255, 255, .7); font-size: 14px; }
body.jj-admin-login .jj-login-panel { min-width: 0; padding: 46px 40px 32px; border-radius: 0 15px 15px 0; background: #fff; }
body.jj-admin-login .jj-login-welcome h2 { margin: 0 0 10px; color: var(--jj-ink); font-size: 27px; font-weight: 650; line-height: 1.4; }
body.jj-admin-login .jj-login-welcome p { color: var(--jj-muted); margin: 0 0 24px; }
body.jj-admin-login .jj-login-welcome > span { display: block; color: #536f91; margin-bottom: 8px; }
body.jj-admin-login .jj-login-profile { text-align: center; }
body.jj-admin-login .jj-login-profile .profile-img-card { width: 56px; height: 56px; margin: 0 auto 10px; border: 3px solid #eef4fc; border-radius: 50%; }
body.jj-admin-login .jj-login-profile .profile-name-card { margin-bottom: 12px; color: var(--jj-ink); }
body.jj-admin-login #login-form { margin-top: 20px; }
body.jj-admin-login #login-form .input-group { margin-bottom: 18px; }
body.jj-admin-login .jj-login-field { margin-bottom: 7px; font-weight: 500; color: #425970; }
body.jj-admin-login #login-form .form-control { height: 44px; padding: 10px 12px; font-size: 15px; color: var(--jj-ink); border-color: #cfdae8; box-shadow: none; background: #fbfcfe; }
body.jj-admin-login #login-form .input-group-addon { padding: 10px 12px; color: #617b98; background: #f3f7fc; border-color: #cfdae8; }
body.jj-admin-login #login-form .input-group > :first-child { border-radius: 8px 0 0 8px; }
body.jj-admin-login #login-form .input-group > :last-child { border-radius: 0 8px 8px 0; }
body.jj-admin-login #login-form .checkbox { margin-top: 8px; margin-bottom: 20px; color: #52677e; }
body.jj-admin-login #login-form .jj-login-submit { min-height: 46px; padding: 10px 18px; border: 1px solid var(--jj-primary); border-radius: 8px; background: var(--jj-primary); color: #fff; font-size: 16px; font-weight: 600; box-shadow: 0 4px 10px rgba(36, 107, 206, .12); }
body.jj-admin-login #login-form .jj-login-submit:hover { background: var(--jj-primary-hover); border-color: var(--jj-primary-hover); }
body.jj-admin-login .jj-login-note { padding-top: 18px; margin-top: 24px; border-top: 1px solid var(--jj-line); color: var(--jj-muted); font-size: 14px; line-height: 1.8; }
body.jj-admin-login .jj-login-footer { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 20px; padding-top: 20px; color: #61748c; font-size: 14px; }
body.jj-admin-login #errtips:not(.hide) { margin-bottom: 16px; padding: 10px 12px; border: 1px solid #efc3c5; border-radius: 8px; background: #fff3f3; color: #a53137; overflow-wrap: anywhere; }

/* 主壳：不覆写侧栏宽度、顶栏高度、iframe 高度和折叠显示规则。 */
body.jj-admin-shell .wrapper,
body.jj-admin-shell .content-wrapper { background: var(--jj-background); }
body.jj-admin-shell .main-sidebar { background: var(--jj-sidebar); }
body.jj-admin-shell .main-header .logo { color: #fff; background: var(--jj-sidebar); border-bottom: 1px solid rgba(255, 255, 255, .08); }
body.jj-admin-shell .main-header .logo:hover { background: #19314f; }
body.jj-admin-shell .jj-brand .jj-brand-mark { display: inline-block; width: 31px; height: 31px; margin-right: 8px; border-radius: 9px; background: rgba(114, 174, 244, .16); color: #cde3ff; font-size: 19px; line-height: 31px; text-align: center; vertical-align: middle; }
body.jj-admin-shell .jj-brand .jj-brand-copy { display: inline-block; vertical-align: middle; text-align: left; line-height: 1.25; }
body.jj-admin-shell .jj-brand .jj-brand-copy strong { display: block; color: #f5f9ff; font-size: 18px; font-weight: 600; }
body.jj-admin-shell .jj-brand .jj-brand-copy small { display: block; margin-top: 3px; color: #b3c7df; font-size: 12px; font-weight: 400; }
body.jj-admin-shell .main-header .navbar { background: #fff; border-bottom: 1px solid var(--jj-line); box-shadow: 0 1px 4px rgba(29, 57, 98, .025); }
body.jj-admin-shell .main-header .navbar .sidebar-toggle,
body.jj-admin-shell .main-header .navbar .nav > li > a { color: #465e78; }
body.jj-admin-shell .main-header .navbar .sidebar-toggle:hover,
body.jj-admin-shell .main-header .navbar .nav > li > a:hover,
body.jj-admin-shell .main-header .navbar .nav > .open > a { color: var(--jj-primary); background-color: #f0f5fc; }
body.jj-admin-shell .main-header .nav-addtabs > li.active > a { color: var(--jj-primary); background: #f1f6fe; border-top-color: var(--jj-primary); }
body.jj-admin-shell #secondnav { background: #fff; border-top: 1px solid #edf1f7; }
body.jj-admin-shell .jj-sidebar-user { margin: 10px 0 8px; }
body.jj-admin-shell .jj-sidebar-user > .info,
body.jj-admin-shell .jj-sidebar-user > .info > a { color: #d8e4f4; }
body.jj-admin-shell .jj-sidebar-user > .info > p { font-size: 14px; font-weight: 600; }
body.jj-admin-shell .jj-sidebar-caption { margin: 18px 16px 8px; color: #a6bdd8; font-size: 14px; }
body.jj-admin-shell .sidebar-form { border-color: #344b66; border-radius: 8px; }
body.jj-admin-shell .sidebar-form .form-control,
body.jj-admin-shell .sidebar-form .btn { color: #dce8f7; background: #20364f; border-color: #344b66; }
body.jj-admin-shell .sidebar-form .form-control::placeholder { color: #b0c3db; opacity: 1; }
body.jj-admin-shell .sidebar-form .form-control:focus { background: #263e5a; color: #fff; }
body.jj-admin-shell .sidebar-form .menuresult { background: #fff; }
body.jj-admin-shell .sidebar-form .menuresult .list-group-item { color: #344d68; border-color: var(--jj-line); background: #fff; }
body.jj-admin-shell .sidebar-menu > li > a { margin: 3px 8px; border-radius: 8px; color: #c3d2e5; font-size: 14px; }
body.jj-admin-shell .sidebar-menu > li:hover > a,
body.jj-admin-shell .sidebar-menu > li.menu-open > a { color: #fff; background: #203954; }
body.jj-admin-shell .sidebar-menu > li.active > a { color: #fff; background: #255f9f; border-left-color: #8cc4ff; }
body.jj-admin-shell .sidebar-menu > li > .treeview-menu { margin: 0 8px; padding-bottom: 5px; border-radius: 8px; background: #102239; }
body.jj-admin-shell .sidebar-menu .treeview-menu > li > a { padding-top: 9px; padding-bottom: 9px; color: #b9cee6; font-size: 14px; }
body.jj-admin-shell .sidebar-menu .treeview-menu > li.active > a,
body.jj-admin-shell .sidebar-menu .treeview-menu > li > a:hover { color: #fff; background: #1b3857; }
body.jj-admin-shell .sidebar-menu > li.header { color: #afc5e0; background: transparent; }
body.jj-admin-shell .jj-sidebar-footer { margin: 24px 16px 16px; padding-top: 15px; border-top: 1px solid #30435d; color: #adc1da; font-size: 14px; line-height: 1.8; }
body.jj-admin-shell.sidebar-collapse .jj-sidebar-caption,
body.jj-admin-shell.sidebar-collapse .jj-sidebar-footer { visibility: hidden; }
body.jj-admin-shell .navbar-nav > .user-menu > .dropdown-menu > .user-header { background: #edf4fe; }
body.jj-admin-shell .navbar-nav > .user-menu > .dropdown-menu > .user-header > p { color: #345779; }
body.jj-admin-shell .dropdown-menu { border-color: var(--jj-line); border-radius: 8px; box-shadow: 0 10px 30px rgba(25, 50, 84, .12); }

/* 业务页面：颜色、留白、边框统一，不重设 table / toolbar / 表单插件 display。 */
/* 原外层 row 没有 container 包裹；只消除这一层的负边距，保留业务内层栅格。 */
body.jj-admin-page .jj-page-main > .tab-content > #content > .row { margin-left: 0; margin-right: 0; }
body.jj-admin-page .jj-page-main > .tab-content > #content > .row > .col-xs-12 { padding-left: 0; padding-right: 0; }
body.jj-admin-page .jj-page-content { padding: 20px; }
body.jj-admin-page.is-dialog .jj-page-content { padding: 16px; }
body.jj-admin-page #ribbon { background: #fff; border-bottom: 1px solid var(--jj-line); color: var(--jj-muted); }
body.jj-admin-page #ribbon .breadcrumb { font-size: 14px; }
body.jj-admin-page #ribbon .breadcrumb > li > a { color: #4b6787; }
body.jj-admin-page .panel { border-color: var(--jj-line); border-radius: 12px; box-shadow: var(--jj-shadow); }
body.jj-admin-page .panel > .panel-heading { background: #f9fbfe; border-color: var(--jj-line); border-radius: 11px 11px 0 0; color: var(--jj-ink); padding: 14px 18px; }
body.jj-admin-page .panel > .panel-body { padding: 18px; }
body.jj-admin-page .panel > .panel-footer { background: #f9fbfe; border-color: var(--jj-line); border-radius: 0 0 11px 11px; }
body.jj-admin-page .panel-title { color: #2f4965; font-size: 16px; font-weight: 600; }
body.jj-admin-page .nav-tabs { border-bottom-color: var(--jj-line); }
body.jj-admin-page .nav-tabs > li > a { color: #5b718b; border-radius: 7px 7px 0 0; }
body.jj-admin-page .nav-tabs > li.active > a,
body.jj-admin-page .nav-tabs > li.active > a:hover,
body.jj-admin-page .nav-tabs > li.active > a:focus { color: var(--jj-primary); border-color: var(--jj-line); border-bottom-color: #fff; background: #fff; }
body.jj-admin-page .table { color: #2c435d; font-size: 14px; }
body.jj-admin-page .table > thead > tr > th { background: #f5f8fc; color: #425b78; border-color: var(--jj-line); font-weight: 600; }
body.jj-admin-page .table > tbody > tr > td,
body.jj-admin-page .table > tbody > tr > th { border-color: #e8edf4; vertical-align: middle; }
body.jj-admin-page .table > thead > tr > th,
body.jj-admin-page .table > tbody > tr > td { padding-top: 11px; padding-bottom: 11px; }
body.jj-admin-page .table-condensed > thead > tr > th,
body.jj-admin-page .table-condensed > tbody > tr > td { padding-top: 7px; padding-bottom: 7px; }
body.jj-admin-page .table-striped > tbody > tr:nth-of-type(odd) { background-color: #fbfcfe; }
body.jj-admin-page .table-hover > tbody > tr:hover { background-color: #f0f6ff; }
body.jj-admin-page .fixed-table-container { border-color: var(--jj-line); border-radius: 8px; }
body.jj-admin-page .fixed-table-toolbar { margin-bottom: 8px; }
body.jj-admin-page .fixed-table-toolbar .bs-bars .btn,
body.jj-admin-page .toolbar > .btn,
body.jj-admin-page #toolbar > .btn { margin-top: 3px; margin-bottom: 3px; }
body.jj-admin-page .fixed-table-pagination { color: var(--jj-muted); font-size: 14px; }
body.jj-admin-page .pagination > li > a,
body.jj-admin-page .pagination > li > span { border-color: var(--jj-line); color: #405f84; }
body.jj-admin-page .pagination > .active > a,
body.jj-admin-page .pagination > .active > span { border-color: var(--jj-primary); background: var(--jj-primary); color: #fff; }
body.jj-admin-page .form-control { color: var(--jj-ink); border-color: #ced9e7; border-radius: 7px; font-size: 14px; box-shadow: none; }
body.jj-admin-page .form-control::placeholder,
body.jj-admin-login .form-control::placeholder { color: #718298; opacity: 1; }
body.jj-admin-page .form-control:focus,
body.jj-admin-login #login-form .form-control:focus { border-color: #5b94dc; box-shadow: 0 0 0 3px rgba(36, 107, 206, .12); }
body.jj-admin-page .control-label { color: #405975; font-weight: 600; font-size: 14px; }
body.jj-admin-page .help-block { color: var(--jj-muted); font-size: 14px; line-height: 1.7; }
body.jj-admin-page .has-error .help-block,
body.jj-admin-page .has-error .control-label { color: #b52f39; }
body.jj-admin-page .has-error .form-control { border-color: #cf626a; }
body.jj-admin-page .form-control[disabled],
body.jj-admin-page .form-control[readonly] { color: #5c6d81; background: #f1f4f8; }
body.jj-admin-page .input-group-addon { color: #56708e; background: #f5f8fc; border-color: #ced9e7; }
body.jj-admin-page .select2-container--default .select2-selection--single,
body.jj-admin-page .select2-container--default .select2-selection--multiple,
body.jj-admin-page .sp_container .sp_input { border-color: #ced9e7; border-radius: 7px; color: var(--jj-ink); }
body.jj-admin-page .select2-dropdown,
body.jj-admin-page .sp_result_area { border-color: #ced9e7; box-shadow: 0 6px 20px rgba(29, 57, 98, .1); }
body.jj-admin-page .btn,
body.jj-admin-shell .btn { border-radius: 7px; font-size: 14px; }
body.jj-admin-page .btn:not(.btn-xs):not(.btn-sm):not(.btn-lg) { min-height: 34px; padding: 6px 12px; }
body.jj-admin-page .btn-primary,
body.jj-admin-shell .btn-primary { color: #fff; background: var(--jj-primary); border-color: var(--jj-primary); }
body.jj-admin-page .btn-primary:hover,
body.jj-admin-shell .btn-primary:hover { background: var(--jj-primary-hover); border-color: var(--jj-primary-hover); }
body.jj-admin-page .btn-default,
body.jj-admin-shell .btn-default { color: #435c78; background: #fff; border-color: #ced9e7; }
body.jj-admin-page .btn-default:hover,
body.jj-admin-shell .btn-default:hover { color: #264f81; background: #f0f5fc; border-color: #b9cde6; }
body.jj-admin-page .btn-success { color: #fff; background: #258064; border-color: #258064; }
body.jj-admin-page .btn-success:hover { background: #1c6951; border-color: #1c6951; }
body.jj-admin-page .btn-danger,
body.jj-admin-shell .btn-danger { color: #fff; background: #c34048; border-color: #c34048; }
body.jj-admin-page .btn-danger:hover,
body.jj-admin-shell .btn-danger:hover { background: #a42f38; border-color: #a42f38; }
body.jj-admin-page .btn-warning { color: #352707; background: #efc35d; border-color: #dbac42; }
body.jj-admin-page .btn-warning:hover { background: #e3b349; border-color: #ce9a2e; }
body.jj-admin-page .btn[disabled],
body.jj-admin-page .btn.disabled,
body.jj-admin-login .btn[disabled],
body.jj-admin-shell .btn[disabled] { cursor: not-allowed; opacity: .6; }
body.jj-admin-page .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle),
body.jj-admin-shell .btn-group > .btn:not(:first-child):not(:last-child):not(.dropdown-toggle) { border-radius: 0; }
body.jj-admin-page .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle),
body.jj-admin-shell .btn-group > .btn:first-child:not(:last-child):not(.dropdown-toggle) { border-top-right-radius: 0; border-bottom-right-radius: 0; }
body.jj-admin-page .btn-group > .btn:last-child:not(:first-child),
body.jj-admin-page .btn-group > .dropdown-toggle:not(:first-child),
body.jj-admin-shell .btn-group > .btn:last-child:not(:first-child),
body.jj-admin-shell .btn-group > .dropdown-toggle:not(:first-child) { border-top-left-radius: 0; border-bottom-left-radius: 0; }
body.jj-admin-page .text-muted { color: var(--jj-muted); }
body.jj-admin-page .layui-layer,
body.jj-admin-shell .layui-layer { border-radius: 10px; box-shadow: 0 14px 50px rgba(20, 38, 62, .2); }
body.jj-admin-page .layui-layer-title,
body.jj-admin-shell .layui-layer-title { color: #304b69; background: #f5f8fd; border-color: var(--jj-line); border-radius: 10px 10px 0 0; font-size: 15px; }

/* 工作台：新语义容器可布局，旧 Bootstrap 数据/图表节点仍由原脚本维护。 */
body.jj-admin-page .jj-dashboard { max-width: 1500px; margin: 0 auto; }
body.jj-admin-page .jj-page-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px 20px; margin-bottom: 24px; }
body.jj-admin-page .jj-page-heading h1 { margin: 6px 0 8px; color: #29435f; font-size: 27px; font-weight: 650; line-height: 1.5; }
body.jj-admin-page .jj-page-heading p { margin: 0; color: var(--jj-muted); font-size: 14px; }
body.jj-admin-page .jj-eyebrow,
body.jj-admin-page .jj-page-heading .jj-eyebrow { color: #527397; font-size: 14px; letter-spacing: .04em; }
body.jj-admin-page .jj-date { padding: 7px 11px; border: 1px solid var(--jj-line); border-radius: 8px; color: #556d87; background: #fff; font-size: 14px; white-space: nowrap; }
body.jj-admin-page .jj-dashboard-hero { display: grid; grid-template-columns: 1.1fr 1fr; align-items: center; gap: 24px; margin-bottom: 20px; padding: 28px 30px; border: 1px solid #dae7f7; border-radius: 16px; background: linear-gradient(115deg, #eaf3ff, #f5f9ff); box-shadow: var(--jj-shadow); }
body.jj-admin-page .jj-dashboard-intro { min-width: 0; }
body.jj-admin-page .jj-dashboard-intro h1,
body.jj-admin-page .jj-dashboard-intro h2 { margin: 8px 0 12px; color: #244b78; font-size: 29px; font-weight: 650; line-height: 1.4; }
body.jj-admin-page .jj-dashboard-intro p { margin: 0 0 16px; color: #536d89; font-size: 15px; line-height: 1.8; }
body.jj-admin-page .jj-dashboard-intro .btn { margin: 4px 8px 4px 0; }
body.jj-admin-page .jj-dashboard-kicker { color: #466f9d; font-size: 14px; letter-spacing: .05em; }
body.jj-admin-page .jj-dashboard-scene { min-width: 0; text-align: center; }
body.jj-admin-page .jj-dashboard-scene img { display: block; width: 100%; max-width: 450px; height: auto; max-height: 275px; margin: 0 auto; object-fit: contain; border-radius: 12px; }
body.jj-admin-page .jj-dashboard-scene figcaption { margin-top: 8px; color: #586f88; font-size: 14px; }
body.jj-admin-page .jj-shortcut-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 14px; margin-bottom: 20px; }
body.jj-admin-page .jj-shortcut { display: flex; align-items: center; gap: 14px; min-width: 0; min-height: 88px; padding: 18px; border: 1px solid var(--jj-line); border-radius: 12px; color: #345571; background: #fff; box-shadow: var(--jj-shadow); text-decoration: none; }
body.jj-admin-page .jj-shortcut:hover { color: var(--jj-primary); border-color: #a9c9ee; background: #fbfdff; }
body.jj-admin-page .jj-shortcut > .fa:first-child { flex: 0 0 auto; width: 42px; height: 42px; border-radius: 11px; background: #edf4fe; color: #386faa; font-size: 20px; line-height: 42px; text-align: center; }
body.jj-admin-page .jj-shortcut > span { min-width: 0; }
body.jj-admin-page .jj-shortcut > .fa:last-child { flex: 0 0 auto; margin-left: auto; color: #6d8eb6; font-size: 16px; }
body.jj-admin-page .jj-shortcut strong { display: block; color: #304e6d; font-size: 16px; font-weight: 600; }
body.jj-admin-page .jj-shortcut small { display: block; margin-top: 5px; color: #60748c; font-size: 14px; line-height: 1.6; }
body.jj-admin-page .jj-metric-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 14px; margin-bottom: 20px; }
body.jj-admin-page .jj-metric { min-width: 0; padding: 20px; border: 1px solid var(--jj-line); border-radius: 12px; background: #fff; box-shadow: var(--jj-shadow); }
body.jj-admin-page .jj-metric strong,
body.jj-admin-page .jj-metric .jj-metric-value { display: block; margin: 8px 0 5px; color: #294f7b; font-size: 28px; font-weight: 600; line-height: 1.3; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
body.jj-admin-page .jj-metric small,
body.jj-admin-page .jj-metric .jj-metric-label { color: #60748b; font-size: 14px; }
body.jj-admin-page .jj-metric .fa { color: #6b8fb9; }
body.jj-admin-page .jj-dashboard-grid { display: grid; grid-template-columns: 1.2fr 1fr; align-items: start; gap: 20px; }
body.jj-admin-page .jj-panel { min-width: 0; margin-bottom: 20px; border: 1px solid var(--jj-line); border-radius: 12px; background: #fff; box-shadow: var(--jj-shadow); }
body.jj-admin-page .jj-panel-head { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; padding: 18px 20px; border-bottom: 1px solid #e9eef5; }
body.jj-admin-page .jj-panel-head h2,
body.jj-admin-page .jj-panel-head h3 { margin: 0; color: #344f6b; font-size: 17px; line-height: 1.5; font-weight: 600; }
body.jj-admin-page .jj-panel-head p { margin: 5px 0 0; color: var(--jj-muted); font-size: 14px; }
body.jj-admin-page .jj-panel-body { padding: 20px; }
body.jj-admin-page .jj-handover-scene { flex: 0 0 auto; width: 128px; max-width: 32%; height: auto; object-fit: contain; border-radius: 8px; }
body.jj-admin-page .jj-handover-scene img { display: block; width: 100%; height: auto; object-fit: contain; border-radius: 8px; }
body.jj-admin-page .jj-operating-list { margin: 0; padding: 6px 20px 16px 40px; }
body.jj-admin-page .jj-panel-body .jj-operating-list { padding: 0 0 0 20px; }
body.jj-admin-page .jj-operating-list > li::marker { color: #4975a8; font-weight: 600; }
body.jj-admin-page .jj-operating-list > li { padding: 14px 0; border-bottom: 1px solid #e9eef5; color: #4f6680; line-height: 1.8; }
body.jj-admin-page .jj-operating-list > li:last-child { border-bottom: 0; }
body.jj-admin-page .jj-operating-list strong { color: #304d6c; font-weight: 600; }
body.jj-admin-page .jj-operating-list p { margin: 5px 0 0; }
body.jj-admin-page .jj-system-info > summary { padding: 16px 20px; color: #4a6481; font-size: 14px; font-weight: 600; cursor: pointer; }
body.jj-admin-page .jj-system-info > summary > .fa { margin-left: 10px; color: #6a829e; }
body.jj-admin-page .jj-system-info[open] > summary { border-bottom: 1px solid var(--jj-line); }
body.jj-admin-page .jj-system-info[open] > summary > .fa { transform: rotate(180deg); }
body.jj-admin-page .jj-system-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px 22px; margin: 0; }
body.jj-admin-page .jj-system-grid > div { min-width: 0; }
body.jj-admin-page .jj-system-grid dt { margin-bottom: 6px; color: var(--jj-muted); font-size: 14px; font-weight: 400; }
body.jj-admin-page .jj-system-grid dd { color: #365473; font-size: 16px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }

/* 键盘焦点保留清晰边界；不改变插件 disabled / validation 的语义。 */
body.jj-admin-login a:focus-visible,
body.jj-admin-login button:focus-visible,
body.jj-admin-login input:focus-visible,
body.jj-admin-shell a:focus-visible,
body.jj-admin-shell button:focus-visible,
body.jj-admin-shell input:focus-visible,
body.jj-admin-page a:focus-visible,
body.jj-admin-page button:focus-visible,
body.jj-admin-page input:focus-visible,
body.jj-admin-page select:focus-visible,
body.jj-admin-page textarea:focus-visible,
body.jj-admin-page summary:focus-visible,
body.jj-admin-page [tabindex]:focus-visible { outline: 3px solid #7badeb; outline-offset: 3px; }

@media (max-width: 1100px) {
    body.jj-admin-page .jj-dashboard-hero { padding: 24px; gap: 20px; }
    body.jj-admin-page .jj-dashboard-intro h1,
    body.jj-admin-page .jj-dashboard-intro h2 { font-size: 26px; }
    body.jj-admin-page .jj-dashboard-grid { grid-template-columns: 1fr; }
    body.jj-admin-page .jj-metric { padding: 16px; }
}
@media (max-width: 767px) {
    body.jj-admin-login .jj-login-wrapper { padding: 20px 16px; }
    body.jj-admin-login .jj-login-top { margin-bottom: 18px; }
    body.jj-admin-login .jj-login-brand { font-size: 21px; }
    body.jj-admin-login .jj-login-brand small,
    body.jj-admin-login .jj-login-brand > span { margin-left: 10px; padding-left: 10px; }
    body.jj-admin-login .jj-login-top { align-items: flex-start; flex-wrap: wrap; gap: 8px; }
    body.jj-admin-login .jj-login-card { grid-template-columns: 1fr; min-height: 0; }
    body.jj-admin-login .jj-login-visual { display: none; }
    body.jj-admin-login .jj-login-visual h1 { font-size: 26px; }
    body.jj-admin-login .jj-login-whale-stage { min-height: 160px; }
    body.jj-admin-login .jj-login-whale { width: 175px; height: 175px; }
    body.jj-admin-login .jj-login-panel { padding: 28px 24px 22px; border-radius: 15px; }
    body.jj-admin-page .jj-page-content { padding: 14px; }
    body.jj-admin-page .panel > .panel-heading,
    body.jj-admin-page .panel > .panel-body { padding: 14px; }
    body.jj-admin-page .jj-dashboard-hero { grid-template-columns: 1fr; padding: 22px; gap: 12px; }
    body.jj-admin-page .jj-dashboard-scene img { max-width: 340px; max-height: 215px; }
    body.jj-admin-page .jj-metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    body.jj-admin-page .jj-shortcut-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
    body.jj-admin-page .jj-shortcut { padding: 14px; gap: 10px; min-height: 96px; }
    body.jj-admin-page .jj-shortcut > .fa:first-child { width: 34px; height: 34px; line-height: 34px; font-size: 18px; }
    body.jj-admin-page .jj-shortcut strong { font-size: 15px; }
    body.jj-admin-page .jj-panel-head { padding: 16px; }
    body.jj-admin-page .jj-panel-body { padding: 16px; }
    body.jj-admin-page .jj-page-heading h1 { font-size: 24px; }
    body.jj-admin-page .jj-system-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
    body.jj-admin-page .fixed-table-toolbar .search { max-width: 100%; }
    body.jj-admin-page .toolbar .btn,
    body.jj-admin-page #toolbar .btn { margin-bottom: 6px; }
}
@media (max-width: 420px) {
    body.jj-admin-login .jj-login-brand small,
    body.jj-admin-login .jj-login-brand > span { display: block; margin: 5px 0 0; padding: 0; border: 0; }
    body.jj-admin-page .jj-shortcut-grid { grid-template-columns: 1fr; }
    body.jj-admin-page .jj-metric { padding: 14px; }
    body.jj-admin-page .jj-metric strong,
    body.jj-admin-page .jj-metric .jj-metric-value { font-size: 24px; }
    body.jj-admin-page .jj-dashboard-intro h1,
    body.jj-admin-page .jj-dashboard-intro h2 { font-size: 24px; }
}
@media (prefers-reduced-motion: reduce) {
    body.jj-admin-login *,
    body.jj-admin-login *::before,
    body.jj-admin-login *::after,
    body.jj-admin-shell *,
    body.jj-admin-shell *::before,
    body.jj-admin-shell *::after,
    body.jj-admin-page *,
    body.jj-admin-page *::before,
    body.jj-admin-page *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
}

/* 经营页面：新增语义块，原表格及 Vue/表单节点继续使用原事件。 */
body.jj-admin-page .jj-order-heading,
body.jj-admin-page .jj-goods-heading,
body.jj-admin-page .jj-concert-head { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; flex-wrap: wrap; margin-bottom: 20px; }
body.jj-admin-page .jj-order-heading h1,
body.jj-admin-page .jj-order-detail-heading h1,
body.jj-admin-page .jj-goods-heading h1,
body.jj-admin-page .jj-concert-head h1 { margin: 0 0 8px; color: var(--jj-ink); font-size: 25px; font-weight: 650; line-height: 1.5; }
body.jj-admin-page .jj-order-help,
body.jj-admin-page .jj-goods-intro,
body.jj-admin-page .jj-concert-head p { margin: 0; color: var(--jj-muted); font-size: 14px; line-height: 1.8; }
body.jj-admin-page .jj-order-status-tabs { display: flex; flex-wrap: wrap; gap: 4px 2px; }
body.jj-admin-page .jj-order-status-tabs > li { float: none; }
body.jj-admin-page .panel-heading .jj-order-status-tabs > li > a { padding: 10px 13px; white-space: nowrap; }
body.jj-admin-page .jj-order-cell,
body.jj-admin-page .jj-order-device { display: block; min-width: 100px; max-width: 240px; text-align: left; white-space: normal; line-height: 1.7; overflow-wrap: anywhere; }
body.jj-admin-page .jj-order-cell > strong,
body.jj-admin-page .jj-order-device > strong { display: block; color: #294966; font-weight: 600; }
body.jj-admin-page .jj-order-subline { display: block; margin-top: 4px; color: var(--jj-muted); font-size: 13px; line-height: 1.6; }
body.jj-admin-page .jj-order-money,
body.jj-admin-page .jj-goods-money { font-variant-numeric: tabular-nums; font-weight: 600; color: #294f7b; white-space: nowrap; }
body.jj-admin-page .jj-order-status,
body.jj-admin-page .jj-goods-status,
body.jj-admin-page .jj-goods-type { display: inline-block; margin: 3px 2px 2px 0; padding: 3px 8px; border-radius: 6px; background: #edf3fa; color: #3f5e7d; font-size: 13px; line-height: 1.5; white-space: nowrap; }
body.jj-admin-page .jj-order-detail-heading { padding: 0 0 18px; margin-bottom: 18px; border-bottom: 1px solid var(--jj-line); }
body.jj-admin-page .jj-order-section-label,
body.jj-admin-page .jj-goods-section-head { margin: 24px 0 14px; color: #365775; font-size: 17px; font-weight: 600; line-height: 1.6; }
body.jj-admin-page .jj-order-section,
body.jj-admin-page .jj-goods-section { margin-bottom: 24px; }
body.jj-admin-page .jj-order-table-scroll { max-width: 100%; overflow-x: auto; }
body.jj-admin-page .jj-order-note,
body.jj-admin-page .jj-goods-notice { padding: 12px 16px; margin: 14px 0; border-left: 3px solid #8bb6e7; border-radius: 0 7px 7px 0; background: #f0f6ff; color: #526b86; line-height: 1.8; }
body.jj-admin-page .jj-goods-product { display: flex; align-items: center; gap: 12px; min-width: 230px; max-width: 330px; white-space: normal; text-align: left; }
body.jj-admin-page .jj-goods-product img { width: 50px; height: 58px; object-fit: contain; border-radius: 7px; background: #f6f8fb; }
body.jj-admin-page .jj-goods-product-copy { min-width: 0; }
body.jj-admin-page .jj-goods-product-name { display: block; color: #2f4c6c; font-weight: 600; line-height: 1.7; overflow-wrap: anywhere; }
body.jj-admin-page .jj-goods-product-meta { display: block; color: var(--jj-muted); font-size: 13px; line-height: 1.7; margin-top: 4px; }
body.jj-admin-page .jj-goods-quantity { font-weight: 600; font-variant-numeric: tabular-nums; }
body.jj-admin-page .jj-goods-tabs { margin-bottom: 24px; }
body.jj-admin-page .panel-heading .jj-goods-tabs > li > a { padding: 12px 18px; }
body.jj-admin-page .panel-heading .jj-order-status-tabs > li > a,
body.jj-admin-page .panel-heading .jj-goods-tabs > li > a { color: #506782; background: #edf2f8; }
body.jj-admin-page .panel-heading .jj-order-status-tabs > li > a:hover,
body.jj-admin-page .panel-heading .jj-goods-tabs > li > a:hover { color: #245c9b; background: #e4eefb; }
body.jj-admin-page .panel-heading .jj-order-status-tabs > li.active > a,
body.jj-admin-page .panel-heading .jj-goods-tabs > li.active > a { color: #245c9b; background: #fff; font-weight: 600; }
body.jj-admin-page .jj-goods-toolbar { padding-bottom: 4px; }
body.jj-admin-page .jj-concert-workspace { max-width: 1600px; margin: 0 auto; }
body.jj-admin-page .jj-concert-toolbar,
body.jj-admin-page .jj-concert-filter,
body.jj-admin-page .jj-concert-order-filters { display: flex; align-items: center; flex-wrap: wrap; gap: 10px; }
body.jj-admin-page .jj-concert-toolbar { margin-bottom: 16px; }
body.jj-admin-page .jj-concert-rules { padding: 12px 16px; margin-bottom: 20px; border: 1px solid var(--jj-line); border-radius: 8px; background: #fafcfe; color: var(--jj-muted); line-height: 1.8; }
body.jj-admin-page .jj-concert-rules > summary { cursor: pointer; color: #456481; font-weight: 600; }
body.jj-admin-page .jj-concert-section-heading { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 12px; margin: 0 0 18px; }
body.jj-admin-page .jj-concert-section-heading h2 { margin: 0; font-size: 20px; font-weight: 600; color: #345571; }
body.jj-admin-page .jj-concert-selected-event,
body.jj-admin-page .jj-concert-editor-context { padding: 14px 18px; border: 1px solid #d7e5f7; border-radius: 9px; background: #eef5ff; color: #3d5c7b; margin-bottom: 18px; }
body.jj-admin-page .jj-concert-card-date { color: #295c97; font-size: 18px; font-weight: 650; line-height: 1.6; }
body.jj-admin-page .jj-concert-card-meta { color: #526c88; font-size: 14px; line-height: 1.7; }
body.jj-admin-page .jj-concert-card-facts { color: var(--jj-muted); font-size: 13px; line-height: 1.8; }
body.jj-admin-page .jj-concert-card-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }
body.jj-admin-page .jj-concert-stock-number { font-variant-numeric: tabular-nums; font-weight: 600; color: #315d8c; }
body.jj-admin-page .jj-concert-form-section { margin-bottom: 20px; padding: 16px 18px; border: 1px solid var(--jj-line); border-radius: 9px; background: #fcfdff; }
body.jj-admin-page .jj-concert-form-section > h4 { margin: 0 0 14px; font-size: 16px; font-weight: 600; color: #355978; }
@media (max-width: 767px) {
    body.jj-admin-page .jj-order-heading h1,
    body.jj-admin-page .jj-order-detail-heading h1,
    body.jj-admin-page .jj-goods-heading h1,
    body.jj-admin-page .jj-concert-head h1 { font-size: 22px; }
    body.jj-admin-page .jj-order-status-tabs,
    body.jj-admin-page .jj-goods-tabs { display: flex; flex-wrap: nowrap; overflow-x: auto; }
    body.jj-admin-page .jj-order-status-tabs > li,
    body.jj-admin-page .jj-goods-tabs > li { flex: 0 0 auto; float: none; }
    body.jj-admin-page .jj-concert-form-section { padding: 14px; }
    body.jj-admin-page .jj-concert-filter .form-control,
    body.jj-admin-page .jj-concert-order-filters .form-control { max-width: 100%; }
}
body.jj-admin-page .jj-goods-heading p { margin: 0; color: var(--jj-muted); line-height: 1.8; }
body.jj-admin-page .jj-goods-section-head { margin: 0 0 14px; }
body.jj-admin-page .jj-goods-section-head h2 { margin: 0 0 6px; font-size: 17px; line-height: 1.6; font-weight: 600; }
body.jj-admin-page .jj-goods-section-head p { margin: 0; color: var(--jj-muted); font-size: 14px; font-weight: 400; }
body.jj-admin-page .jj-goods-type { background: transparent; padding: 0; text-align: left; }
body.jj-admin-page .jj-goods-type strong { display: block; font-weight: 600; }
body.jj-admin-page .jj-goods-type small { display: block; margin-top: 5px; color: var(--jj-muted); font-size: 13px; }
body.jj-admin-page .jj-goods-money small { margin-left: 4px; font-size: 12px; font-weight: 400; color: var(--jj-muted); }
body.jj-admin-page .jj-goods-status-ok { background: #e8f5ef; color: #227052; }
body.jj-admin-page .jj-goods-status-neutral { background: #edf1f6; color: #536b86; }
body.jj-admin-page .jj-goods-status-pending { background: #fff3d9; color: #8a621b; }
body.jj-admin-page .jj-goods-status-danger { background: #fcebed; color: #a63a45; }
body.jj-admin-page .jj-goods-empty { color: var(--jj-muted); }
body.jj-admin-page .jj-goods-quantity-zero { color: #906718; }
body.jj-admin-page .jj-concert-head h3 { margin: 0 0 8px; color: var(--jj-ink); font-size: 25px; font-weight: 650; }
body.jj-admin-page .jj-concert-row-actions { display: flex; justify-content: flex-start; gap: 7px; flex-wrap: wrap; }
body.jj-admin-page .jj-concert-filter-note { color: var(--jj-muted); font-size: 13px; line-height: 1.7; }
body.jj-admin-page .jj-concert-eyebrow { margin: 0 0 6px; color: #527397; font-size: 13px; }
body.jj-admin-page .jj-concert-image-empty { display: inline-flex; align-items: center; justify-content: center; width: 48px; height: 48px; border-radius: 8px; background: #eef3f9; color: #6e849c; }
body.jj-admin-page .jj-concert-card-meta { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
body.jj-admin-page .jj-concert-card-facts { display: grid; grid-template-columns: auto 1fr; gap: 6px 14px; margin: 14px 0 0; }
body.jj-admin-page .jj-concert-card-facts dt { font-weight: 400; color: var(--jj-muted); }
body.jj-admin-page .jj-concert-card-facts dd { color: #476480; }
body.jj-admin-page .jj-concert-form-section.wide { margin: 10px 0 0; padding: 10px 0 7px; border: 0; border-bottom: 1px solid var(--jj-line); border-radius: 0; background: transparent; font-size: 16px; font-weight: 600; color: #355978; }
@media (max-width: 767px) {
    body.jj-admin-page .jj-order-page .card-view,
    body.jj-admin-page .jj-goods-index .card-view { display: flex; align-items: flex-start; gap: 12px; padding: 7px 0; white-space: normal; }
    body.jj-admin-page .jj-order-page .card-view .title,
    body.jj-admin-page .jj-goods-index .card-view .title { min-width: 94px; max-width: 100px; color: var(--jj-muted); font-size: 13px; }
    body.jj-admin-page .jj-order-page .card-view .value,
    body.jj-admin-page .jj-goods-index .card-view .value { min-width: 0; flex: 1; margin: 0; white-space: normal; }
    body.jj-admin-page .jj-order-page .card-view .jj-order-cell { min-width: 0; }
    body.jj-admin-page .jj-goods-index .card-view .jj-goods-product { min-width: 0; gap: 8px; }
    body.jj-admin-page .jj-goods-index .card-view .jj-goods-product img { flex: 0 0 auto; width: 38px; height: 46px; }
}
/* 场次工作区以操作为先，收紧原宣传式大标题与重复留白。 */
body.jj-admin-page .jj-concert-head { padding: 0; border-radius: 0; background: transparent; color: var(--jj-ink); margin-bottom: 14px; }
body.jj-admin-page .jj-concert-head h2 { margin: 0 0 7px; font-size: 25px; color: var(--jj-ink); font-weight: 650; line-height: 1.5; }
body.jj-admin-page .jj-concert-head .concert-label { color: #50769d; margin-bottom: 5px; letter-spacing: .04em; }
body.jj-admin-page .jj-concert-head p { opacity: 1; color: var(--jj-muted); }
body.jj-admin-page .jj-concert-workspace .concert-toolbar { margin: 14px 0; }
body.jj-admin-page .jj-concert-workspace #concert-checkout-state { padding: 10px 14px; margin-bottom: 12px; font-size: 13px; color: #536d88; }
body.jj-admin-page .jj-concert-stats { margin: 12px 0 14px; gap: 12px; }
body.jj-admin-page .jj-concert-stats .concert-stat { padding: 12px 16px; display: flex; align-items: center; gap: 12px; }
body.jj-admin-page .jj-concert-stats .concert-stat strong { font-size: 24px; color: #315e91; font-variant-numeric: tabular-nums; }
body.jj-admin-page .jj-concert-tabs { margin-bottom: 12px; }
body.jj-admin-page .jj-concert-tabs button { padding: 10px 16px; color: #59708b; }
body.jj-admin-page .jj-concert-tabs button.active { color: var(--jj-primary); border-bottom-color: var(--jj-primary); }
body.jj-admin-page .jj-concert-rules { padding: 9px 14px; margin-bottom: 18px; }
body.jj-admin-page .jj-concert-selected-event { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 16px; margin-top: 12px; }
body.jj-admin-page .jj-concert-selected-event h4 { margin: 3px 0 5px; font-size: 16px; font-weight: 600; }
body.jj-admin-page .jj-concert-selected-event p { margin: 0; font-size: 13px; }
body.jj-admin-page .jj-concert-event-filter { margin-bottom: 0; }
body.jj-admin-page .jj-concert-section-heading h3 { margin: 0 0 6px; font-size: 20px; font-weight: 600; color: #345571; }
body.jj-admin-page .jj-concert-section-heading p { margin: 0; color: var(--jj-muted); font-size: 14px; }
@media(max-width: 767px) {
    body.jj-admin-page .jj-concert-stats { grid-template-columns: 1fr 1fr; gap: 8px; }
    body.jj-admin-page .jj-concert-stats .concert-stat { padding: 10px 12px; gap: 8px; }
    body.jj-admin-page .jj-concert-stats .concert-stat span { font-size: 13px; }
    body.jj-admin-page .jj-concert-head h2 { font-size: 22px; }
}
