/* PM frontend styles extracted from pm_frontend.html */
        :root {
            --bg-page: #eef2f7;
            --bg-card: #ffffff;
            --bg-muted: #f8fafc;
            --border: #e2e8f0;
            --text: #0f172a;
            --text-muted: #64748b;
            --primary: #0f766e;
            --primary-light: #ccfbf1;
            --accent: #c2410c;
            --success: #16a34a;
            --radius: 14px;
            --radius-sm: 10px;
            --shadow: 0 4px 24px rgba(15, 23, 42, 0.06);
            --shadow-lg: 0 12px 40px rgba(15, 23, 42, 0.1);
            --sidebar-w: clamp(300px, 24vw, 380px);
            --topbar-h: 56px;
            --nav-rail-w: 216px;
            --nav-rail-w-collapsed: 68px;
            --side-label-w: 52px;
            --side-btn-w: 52px;
            --side-ctrl-h: 34px;
            --ui-breakpoint: 900px;
        }

        body.ui-mode-switching .app-header,
        body.ui-mode-switching .nav-rail,
        body.ui-mode-switching .app-body,
        body.ui-mode-switching .submit-actions-sticky {
            transition: padding 0.28s ease, bottom 0.28s ease, width 0.28s ease, opacity 0.2s ease;
        }

        * {
            margin: 0;
            padding: 0;
            box-sizing: border-box;
        }
        
        html { height: 100%; overflow: hidden; }
        
        body {
            font-family: 'Segoe UI', 'Microsoft YaHei', system-ui, sans-serif;
            background: var(--bg-page);
            background-image:
                radial-gradient(ellipse 80% 50% at 0% -10%, rgba(15, 118, 110, 0.12), transparent),
                radial-gradient(ellipse 60% 40% at 100% 0%, rgba(14, 116, 144, 0.1), transparent);
            height: 100%;
            height: 100dvh;
            overflow: hidden;
            color: var(--text);
            display: flex;
            flex-direction: column;
        }
        
        .container {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            width: 100%;
            max-width: none;
            opacity: 0;
            transition: opacity 0.35s ease;
        }

        body.app-ready .container {
            opacity: 1;
        }

        /* ========== 启动加载界面 ========== */
        .boot-screen {
            position: fixed;
            inset: 0;
            z-index: 2000;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 18px;
            padding: 24px;
            background:
                radial-gradient(ellipse 70% 50% at 20% 10%, rgba(15, 118, 110, 0.4), transparent),
                radial-gradient(ellipse 60% 45% at 90% 80%, rgba(14, 116, 144, 0.28), transparent),
                linear-gradient(160deg, #0f172a 0%, #134e4a 48%, #0c4a6e 100%);
            color: #f8fafc;
            transition: opacity 0.45s ease, visibility 0.45s ease;
        }

        .boot-screen.is-hiding {
            opacity: 0;
            visibility: hidden;
            pointer-events: none;
        }

        .boot-screen.is-gone {
            display: none;
        }

        .boot-logo {
            width: 88px;
            height: 88px;
            border-radius: 22px;
            object-fit: contain;
            background: rgba(255, 255, 255, 0.12);
            padding: 12px;
            box-shadow: 0 16px 40px rgba(0, 0, 0, 0.35);
            animation: bootPulse 1.8s ease-in-out infinite;
        }

        @keyframes bootPulse {
            0%, 100% { transform: scale(1); box-shadow: 0 16px 40px rgba(0, 0, 0, 0.35); }
            50% { transform: scale(1.04); box-shadow: 0 20px 48px rgba(15, 118, 110, 0.45); }
        }

        .boot-title {
            font-size: 1.45rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            text-align: center;
        }

        .boot-subtitle {
            margin-top: -8px;
            font-size: 0.88rem;
            color: rgba(226, 232, 240, 0.75);
            text-align: center;
        }

        .boot-progress-wrap {
            width: min(280px, 72vw);
            display: flex;
            flex-direction: column;
            gap: 8px;
            align-items: stretch;
        }

        .boot-progress-track {
            height: 6px;
            border-radius: 999px;
            background: rgba(255, 255, 255, 0.14);
            overflow: hidden;
        }

        .boot-progress-bar {
            height: 100%;
            width: 8%;
            border-radius: 999px;
            background: linear-gradient(90deg, #2dd4bf, #38bdf8, #67e8f9);
            transition: width 0.35s ease;
        }

        .boot-status {
            font-size: 0.82rem;
            color: rgba(226, 232, 240, 0.85);
            text-align: center;
            min-height: 1.2em;
        }

        .boot-hint {
            position: absolute;
            bottom: 28px;
            font-size: 0.72rem;
            color: rgba(148, 163, 184, 0.85);
            letter-spacing: 0.02em;
        }

        /* ========== 登录页 ========== */
        .login-screen {
            position: fixed;
            inset: 0;
            z-index: 2100;
            display: none;
            align-items: center;
            justify-content: center;
            padding: calc(24px + env(safe-area-inset-top, 0px))
                calc(16px + env(safe-area-inset-right, 0px))
                calc(24px + env(safe-area-inset-bottom, 0px))
                calc(16px + env(safe-area-inset-left, 0px));
            overflow: auto;
            background: #0b1220;
        }

        .login-screen.is-open {
            display: flex;
        }

        .login-screen__bg {
            position: absolute;
            inset: 0;
            background:
                linear-gradient(160deg, rgba(11, 18, 32, 0.55) 0%, rgba(15, 118, 110, 0.28) 48%, rgba(12, 74, 110, 0.45) 100%),
                url("/assets/web/bg/login_bg.jpg?v=4") center / cover no-repeat;
            transform: scale(1.02);
            filter: saturate(1.05);
            pointer-events: none;
        }

        .login-screen__veil {
            position: absolute;
            inset: 0;
            background:
                radial-gradient(ellipse 70% 55% at 50% 42%, rgba(15, 23, 42, 0.18) 0%, rgba(15, 23, 42, 0.62) 100%);
            pointer-events: none;
        }

        .login-card {
            position: relative;
            z-index: 1;
            width: min(400px, 100%);
            background: rgba(255, 255, 255, 0.92);
            backdrop-filter: blur(16px);
            -webkit-backdrop-filter: blur(16px);
            border: 1px solid rgba(255, 255, 255, 0.55);
            border-radius: 18px;
            box-shadow:
                0 24px 64px rgba(2, 8, 23, 0.45),
                0 0 0 1px rgba(15, 118, 110, 0.08);
            padding: 34px 30px 26px;
            color: var(--text);
            text-align: center;
            animation: loginCardIn 0.45s ease-out;
        }

        @keyframes loginCardIn {
            from { opacity: 0; transform: translateY(12px) scale(0.98); }
            to { opacity: 1; transform: translateY(0) scale(1); }
        }

        .login-card__brand {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 8px;
            margin-bottom: 22px;
        }

        .login-card__logo,
        .login-card__brand img {
            width: 72px;
            height: 72px;
            border-radius: 18px;
            object-fit: cover;
            box-shadow: 0 10px 28px rgba(15, 23, 42, 0.28);
        }

        .login-card__org {
            margin-top: 4px;
            font-size: 0.78rem;
            font-weight: 600;
            color: #0f766e;
            letter-spacing: 0.18em;
            text-transform: none;
        }

        .login-card__title {
            font-size: clamp(1.05rem, 2.6vw, 1.28rem);
            font-weight: 750;
            letter-spacing: 0.04em;
            color: #0f172a;
            line-height: 1.35;
        }

        .login-card__modules {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 6px;
            margin-top: 10px;
        }

        .login-card__modules span {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 46px;
            padding: 4px 10px;
            border-radius: 999px;
            font-size: 0.72rem;
            font-weight: 700;
            color: #0f766e;
            background: rgba(15, 118, 110, 0.1);
            border: 1px solid rgba(15, 118, 110, 0.18);
            letter-spacing: 0.04em;
        }

        .login-field {
            display: flex;
            flex-direction: column;
            gap: 6px;
            margin-bottom: 14px;
            text-align: left;
        }

        .login-field label {
            font-size: 0.8rem;
            font-weight: 600;
            color: #475569;
        }

        .login-field input {
            height: 44px;
            border: 1px solid #dbe3ee;
            border-radius: 10px;
            padding: 0 14px;
            font: inherit;
            background: rgba(255, 255, 255, 0.95);
            width: 100%;
            transition: border-color 0.15s ease, box-shadow 0.15s ease;
        }

        .login-field input::placeholder {
            color: #94a3b8;
        }

        .login-field input:focus {
            outline: none;
            border-color: #0f766e;
            box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.16);
        }

        .login-error {
            min-height: 1.15em;
            margin: 0 0 8px;
            font-size: 0.8rem;
            color: #b91c1c;
            text-align: left;
        }

        .login-actions .btn {
            width: 100%;
            height: 46px;
            border-radius: 10px;
            background: linear-gradient(135deg, #0f766e 0%, #0e7490 100%);
            border: none;
            font-weight: 700;
            letter-spacing: 0.06em;
            box-shadow: 0 10px 24px rgba(15, 118, 110, 0.35);
        }

        .login-actions .btn:hover {
            filter: brightness(1.06);
        }

        .login-card__foot {
            margin: 16px 0 0;
            font-size: 0.72rem;
            color: #94a3b8;
            letter-spacing: 0.08em;
        }

        .app-header__user-name {
            font-size: 0.78rem;
            color: rgba(248, 250, 252, 0.9);
            max-width: 180px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .btn-logout {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 4px;
            border: 1px solid rgba(255, 255, 255, 0.32);
            background: rgba(255, 255, 255, 0.08);
            color: #fff;
            border-radius: 999px;
            padding: 4px 10px;
            min-height: 28px;
            font: inherit;
            font-size: 0.72rem;
            font-weight: 600;
            line-height: 1;
            cursor: pointer;
            white-space: nowrap;
            flex-shrink: 0;
            position: relative;
            z-index: 6;
            pointer-events: auto;
            transition: background 0.15s ease, border-color 0.15s ease;
        }

        .btn-logout__icon {
            display: inline-flex;
            width: 14px;
            height: 14px;
            opacity: 0.92;
        }

        .btn-logout__icon svg {
            width: 100%;
            height: 100%;
            display: block;
        }

        .btn-logout:hover {
            background: rgba(255, 255, 255, 0.16);
            border-color: rgba(255, 255, 255, 0.45);
        }

        .btn-logout:active {
            transform: scale(0.96);
            background: rgba(255, 255, 255, 0.22);
        }

        body.login-locked .container {
            visibility: hidden;
        }

        body.auth-checking .container {
            visibility: hidden;
        }
        
        /* ========== 应用壳层 ========== */
        .app-header {
            flex-shrink: 0;
            height: var(--topbar-h);
            padding: 0 18px 0 20px;
            background: linear-gradient(90deg, #0f172a 0%, #134e4a 55%, #0e7490 100%);
            color: white;
            box-shadow: 0 2px 12px rgba(15, 23, 42, 0.15);
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            min-width: 0;
            position: relative;
        }

        .app-header__brand {
            display: flex;
            align-items: center;
            gap: 10px;
            min-width: 0;
            position: relative;
            z-index: 1;
        }

        .app-header__back {
            display: none;
            align-items: center;
            gap: 4px;
            flex-shrink: 0;
            margin: 0;
            padding: 6px 10px 6px 6px;
            border: 1px solid rgba(255, 255, 255, 0.22);
            border-radius: 8px;
            background: rgba(255, 255, 255, 0.1);
            color: #f8fafc;
            font-size: 0.82rem;
            font-weight: 600;
            cursor: pointer;
            line-height: 1;
            z-index: 2;
        }

        .app-header__back.is-visible {
            display: inline-flex;
        }

        .app-header__back:hover {
            background: rgba(255, 255, 255, 0.18);
        }

        .app-header__back:active {
            transform: scale(0.98);
        }

        .app-header__back-icon {
            width: 16px;
            height: 16px;
            display: block;
        }

        .app-header__titles {
            display: none;
        }

        .app-header__center {
            position: absolute;
            left: 50%;
            top: 50%;
            transform: translate(-50%, -50%);
            text-align: center;
            min-width: 0;
            max-width: min(68vw, 720px);
            padding: 0 8px;
            pointer-events: none;
            z-index: 0;
        }

        .app-header__name {
            font-size: clamp(0.78rem, 1.15vw, 1.05rem);
            font-weight: 700;
            letter-spacing: 0.01em;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .app-header__tag {
            margin-top: 2px;
            font-size: 0.72rem;
            color: rgba(226, 232, 240, 0.78);
        }

        .app-header__chip {
            flex-shrink: 0;
            padding: 4px 10px;
            border-radius: 999px;
            background: rgba(255, 255, 255, 0.12);
            border: 1px solid rgba(255, 255, 255, 0.18);
            font-size: 0.72rem;
            color: rgba(248, 250, 252, 0.92);
        }

        .app-header__user {
            display: flex;
            align-items: center;
            gap: 10px;
            flex-shrink: 0;
            position: relative;
            z-index: 5;
            margin-left: auto;
            pointer-events: auto;
        }

        .app-body {
            flex: 1;
            min-height: 0;
            display: grid;
            grid-template-columns: minmax(0, 1fr) var(--nav-rail-w);
            overflow: visible;
            transition: grid-template-columns 0.22s ease;
        }

        /* 首页 / 系统级页面不显示 PM 右侧导航 */
        .container.is-home .app-body,
        .container.is-system .app-body {
            grid-template-columns: minmax(0, 1fr);
        }

        .container.is-home .nav-rail,
        .container.is-system .nav-rail {
            display: none;
        }

        /* 一线员工首页仍保留导航，避免回首页后无法进入提交/我的任务 */
        body.role-field .container.is-home .app-body {
            grid-template-columns: minmax(0, 1fr) var(--nav-rail-w);
        }

        body.role-field .container.is-home .nav-rail {
            display: flex;
        }

        /* 窄屏底栏导航：不要再给右侧留导航列，否则首页会大片留白 */
        @media (max-width: 900px) {
            body.role-field .container.is-home .app-body,
            .container.is-field-home.is-home .app-body {
                grid-template-columns: minmax(0, 1fr) !important;
            }
        }

        .app-main {
            min-width: 0;
            min-height: 0;
            overflow: hidden;
            display: flex;
            flex-direction: column;
        }

        .view {
            display: none;
            flex: 1;
            min-height: 0;
            flex-direction: column;
            overflow: hidden;
        }

        .view.is-active {
            display: flex;
        }

        /* 右侧菜单 */
        .nav-rail {
            position: relative;
            border-left: 1px solid rgba(226, 232, 240, 0.95);
            background:
                linear-gradient(180deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 250, 252, 0.96) 100%);
            box-shadow: inset 1px 0 0 rgba(255, 255, 255, 0.7);
            display: flex;
            flex-direction: column;
            padding: 12px 10px 10px;
            gap: 0;
            overflow: visible;
            width: var(--nav-rail-w);
            box-sizing: border-box;
            transition: width 0.22s ease, padding 0.22s ease;
        }

        .nav-rail__scroll {
            flex: 1;
            min-height: 0;
            overflow: auto;
            display: flex;
            flex-direction: column;
            gap: 2px;
            padding-right: 2px;
            -webkit-overflow-scrolling: touch;
        }

        .nav-rail__group {
            display: flex;
            flex-direction: column;
            gap: 2px;
            margin-bottom: 6px;
        }

        .nav-rail__group[hidden] {
            display: none !important;
        }

        /* 贴在导航栏左缘、垂直居中的细条把手 */
        .nav-rail__toggle {
            position: absolute;
            left: 0;
            top: 50%;
            z-index: 30;
            display: flex;
            align-items: center;
            justify-content: center;
            width: 16px;
            height: 52px;
            margin: 0;
            padding: 0;
            border: 1px solid #e2e8f0;
            border-right: 0;
            border-radius: 8px 0 0 8px;
            background: #fff;
            color: #64748b;
            cursor: pointer;
            font: inherit;
            line-height: 1;
            flex-shrink: 0;
            transform: translate(-100%, -50%);
            box-shadow: -2px 1px 6px rgba(15, 23, 42, 0.06);
            transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
        }

        .nav-rail__toggle-icon {
            width: 12px;
            height: 12px;
            display: block;
        }

        .nav-rail__toggle:hover {
            background: var(--primary-light);
            color: #0f766e;
            border-color: #99f6e4;
            box-shadow: -2px 2px 8px rgba(15, 118, 110, 0.12);
        }

        .nav-rail__toggle:focus-visible {
            outline: 2px solid #0f766e;
            outline-offset: 2px;
        }

        body.nav-rail-collapsed {
            --nav-rail-w: var(--nav-rail-w-collapsed);
        }

        body.nav-rail-collapsed .nav-rail {
            padding: 10px 8px;
            align-items: stretch;
        }

        body.nav-rail-collapsed .nav-rail__label,
        body.nav-rail-collapsed .nav-rail__foot,
        body.nav-rail-collapsed .nav-item__text {
            display: none !important;
        }

        body.nav-rail-collapsed .nav-item {
            justify-content: center;
            padding: 10px 8px;
            gap: 0;
        }

        body.nav-rail-collapsed .nav-item__icon {
            width: 32px;
            height: 32px;
        }

        body.nav-rail-collapsed .nav-item__badge {
            top: 4px;
            right: 4px;
            min-width: 16px;
            height: 16px;
            padding: 0 4px;
            font-size: 0.58rem;
            line-height: 16px;
        }

        .nav-rail__label {
            margin: 4px 10px 6px;
            font-size: 0.66rem;
            font-weight: 700;
            letter-spacing: 0.1em;
            color: #94a3b8;
            text-transform: uppercase;
        }

        .nav-item {
            display: flex;
            align-items: center;
            gap: 10px;
            width: 100%;
            border: 0;
            background: transparent;
            color: #334155;
            text-align: left;
            padding: 9px 10px;
            border-radius: 12px;
            cursor: pointer;
            font: inherit;
            font-size: 0.88rem;
            transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease, transform 0.12s ease;
            position: relative;
        }

        /* 防止 display:flex 把 [hidden] 顶掉（员工端会误显示全部入口） */
        .nav-item[hidden],
        .home-mod[hidden],
        .home-zone--users[hidden],
        .home-zone[hidden],
        .home-panel[hidden] {
            display: none !important;
        }

        .nav-item:hover {
            background: rgba(204, 251, 241, 0.55);
            color: #0f766e;
        }

        .nav-item:hover .nav-item__icon {
            background: rgba(15, 118, 110, 0.1);
            color: #0f766e;
        }

        .nav-item.is-active {
            background: rgba(15, 118, 110, 0.1);
            color: #0f766e;
            box-shadow: inset 3px 0 0 #0f766e;
            font-weight: 600;
        }

        .nav-item.is-active .nav-item__icon {
            background: linear-gradient(145deg, #0f766e, #0e7490);
            color: #fff;
            box-shadow: 0 4px 10px rgba(15, 118, 110, 0.28);
        }

        .nav-item.is-active .nav-item__sub {
            color: rgba(15, 118, 110, 0.72);
            opacity: 1;
        }

        .nav-item__icon {
            width: 30px;
            height: 30px;
            border-radius: 9px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            flex-shrink: 0;
            background: #f1f5f9;
            color: #64748b;
            transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
        }

        .nav-item__icon svg {
            width: 16px;
            height: 16px;
            display: block;
        }

        .nav-item__text {
            min-width: 0;
            flex: 1;
            display: flex;
            flex-direction: column;
            gap: 1px;
            line-height: 1.2;
        }

        .nav-item__title {
            display: block;
            font-weight: 600;
            letter-spacing: 0.01em;
        }

        .nav-item__sub {
            display: block;
            font-size: 0.68rem;
            font-weight: 500;
            color: #94a3b8;
            opacity: 1;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .nav-item__badge {
            position: absolute;
            top: 6px;
            right: 8px;
            min-width: 18px;
            height: 18px;
            padding: 0 5px;
            border-radius: 999px;
            background: #dc2626;
            color: #fff;
            font-size: 0.64rem;
            font-weight: 700;
            line-height: 18px;
            text-align: center;
            box-sizing: border-box;
            box-shadow: 0 0 0 2px #fff;
        }

        .nav-item__badge[hidden] {
            display: none !important;
        }

        .mine-notify-banner {
            margin: 0 0 10px;
            padding: 10px 12px;
            border-radius: 10px;
            border: 1px solid #fcd34d;
            background: #fffbeb;
            color: #92400e;
            font-size: 0.78rem;
            font-weight: 600;
            line-height: 1.45;
        }

        .mine-notify-banner[hidden] {
            display: none !important;
        }

        .mine-notify-banner strong {
            font-weight: 750;
            color: #78350f;
        }

        .nav-item.is-soon,
        .nav-item:disabled {
            opacity: 0.55;
            cursor: not-allowed;
        }

        body.role-field .nav-item.is-soon {
            display: none;
        }

        .nav-rail__foot {
            margin-top: 8px;
            flex-shrink: 0;
            padding: 10px 10px 6px;
            border-top: 1px solid #eef2f7;
            font-size: 0.66rem;
            font-weight: 600;
            letter-spacing: 0.04em;
            color: #94a3b8;
            line-height: 1.35;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        /* 首页：顶部系统名 + 居中左 1/3「点检/PM」 */
        .home-view {
            height: 100%;
            min-height: 0;
            padding: 20px 24px;
            overflow: auto;
            display: flex;
            align-items: center;
            -webkit-overflow-scrolling: touch;
        }

        .home-stage {
            width: 100%;
            display: grid;
            grid-template-columns: minmax(280px, 1fr) minmax(0, 2fr);
            gap: 18px;
            align-items: stretch;
            min-height: min(380px, 62vh);
        }

        .home-zone {
            min-width: 0;
            min-height: 0;
        }

        .home-zone--left {
            display: flex;
            align-items: stretch;
        }

        .home-zone--right-wrap {
            display: grid;
            grid-template-columns: minmax(0, 2fr) minmax(160px, 1fr);
            gap: 18px;
            min-width: 0;
            min-height: 0;
            align-items: stretch;
        }

        .home-zone--right {
            border: 1px dashed #cbd5e1;
            border-radius: 12px;
            background:
                linear-gradient(135deg, rgba(248, 250, 252, 0.9), rgba(240, 253, 250, 0.55));
            display: flex;
            align-items: center;
            justify-content: center;
            color: #94a3b8;
            font-size: 0.88rem;
            letter-spacing: 0.04em;
            min-width: 0;
        }

        .home-zone--right::before {
            content: '其他模块预留';
        }

        .home-zone--users {
            display: flex;
            align-items: stretch;
            min-width: 0;
        }

        .home-zone--users .home-panel {
            width: 100%;
        }

        .home-zone--users .home-mod-row {
            grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        .home-mod__icon--users {
            color: #0f766e;
            background: #ecfdf5;
        }

        .home-mod__icon--database {
            color: #1d4ed8;
            background: #eff6ff;
        }

        .home-mod__icon--backup {
            color: #b45309;
            background: #fffbeb;
        }

        /* ========== 系统备份恢复（铺满阵列） ========== */
        .backup-view {
            display: flex;
            flex-direction: column;
            height: 100%;
            min-height: 0;
            gap: 12px;
        }

        .backup-view > .jobs-head {
            flex-wrap: wrap;
            gap: 10px 14px;
        }

        .backup-nav {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            padding: 3px;
            border-radius: 10px;
            background: #e2e8f0;
            border: 1px solid #cbd5e1;
        }

        .backup-nav__btn {
            appearance: none;
            border: 0;
            background: transparent;
            color: #475569;
            font: inherit;
            font-size: 0.9rem;
            font-weight: 600;
            padding: 8px 16px;
            border-radius: 8px;
            cursor: pointer;
            line-height: 1.2;
        }

        .backup-nav__btn:hover {
            color: #0f172a;
            background: rgba(255, 255, 255, 0.55);
        }

        .backup-nav__btn.is-active {
            color: #0f172a;
            background: #fff;
            box-shadow: 0 1px 2px rgba(15, 23, 42, 0.08);
        }

        .backup-pane {
            flex: 1 1 auto;
            min-height: 0;
            display: none;
            flex-direction: column;
        }

        .backup-pane.is-active {
            display: flex;
        }

        .backup-layout {
            flex: 1 1 auto;
            min-height: 0;
            display: grid;
            grid-template-rows: auto auto minmax(0, 1fr);
            gap: 12px;
        }

        .backup-pane[data-backup-pane="update"] .backup-layout {
            grid-template-rows: auto minmax(0, 1fr) minmax(0, 1fr);
        }

        .backup-action-grid {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 12px;
        }

        .backup-action-grid--3 {
            grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        .backup-tile {
            display: flex;
            flex-direction: column;
            align-items: flex-start;
            justify-content: center;
            gap: 8px;
            min-height: 88px;
            padding: 16px 18px;
            border: 1px solid #cbd5e1;
            border-radius: 12px;
            background: #fff;
            text-align: left;
            cursor: pointer;
            box-sizing: border-box;
            width: 100%;
            font: inherit;
            color: inherit;
        }

        .backup-tile:hover {
            border-color: #94a3b8;
            background: #f8fafc;
        }

        .backup-tile--primary {
            border-color: #5eead4;
            background: linear-gradient(180deg, #f0fdfa 0%, #fff 100%);
        }

        .backup-tile--warn {
            border-color: #fdba74;
            background: linear-gradient(180deg, #fff7ed 0%, #fff 100%);
        }

        .backup-tile--info {
            cursor: default;
            border-color: #93c5fd;
            background: linear-gradient(180deg, #eff6ff 0%, #fff 100%);
        }

        .backup-tile--muted {
            cursor: default;
            background: #f8fafc;
        }

        .backup-tile__title {
            font-size: 16px;
            font-weight: 700;
            color: #0f172a;
        }

        .backup-tile__value {
            font-size: 14px;
            line-height: 1.4;
            color: #334155;
            word-break: break-word;
        }

        .backup-tile__desc {
            display: none;
        }

        .backup-progress {
            display: flex;
            flex-direction: column;
            gap: 8px;
            padding: 12px 14px;
            border: 1px solid #99f6e4;
            border-radius: 12px;
            background: linear-gradient(180deg, #f0fdfa 0%, #fff 100%);
        }

        .backup-progress[hidden] {
            display: none !important;
        }

        .backup-progress.is-error {
            border-color: #fca5a5;
            background: linear-gradient(180deg, #fef2f2 0%, #fff 100%);
        }

        .backup-progress.is-done {
            border-color: #86efac;
            background: linear-gradient(180deg, #f0fdf4 0%, #fff 100%);
        }

        .backup-progress__head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
        }

        .backup-progress__title {
            font-size: 14px;
            font-weight: 700;
            color: #0f172a;
        }

        .backup-progress__pct {
            font-size: 13px;
            font-weight: 700;
            color: #0f766e;
            font-variant-numeric: tabular-nums;
        }

        .backup-progress.is-error .backup-progress__pct {
            color: #b91c1c;
        }

        .backup-progress__track {
            height: 10px;
            border-radius: 999px;
            background: #e2e8f0;
            overflow: hidden;
        }

        .backup-progress__bar {
            height: 100%;
            width: 0%;
            border-radius: inherit;
            background: linear-gradient(90deg, #14b8a6 0%, #0d9488 100%);
            transition: width 0.2s ease;
        }

        .backup-progress.is-error .backup-progress__bar {
            background: linear-gradient(90deg, #f87171 0%, #dc2626 100%);
        }

        .backup-progress.is-done .backup-progress__bar {
            background: linear-gradient(90deg, #4ade80 0%, #16a34a 100%);
        }

        .backup-progress__msg {
            font-size: 12px;
            line-height: 1.45;
            color: #475569;
            word-break: break-word;
        }

        .backup-list-panel {
            min-height: 0;
            display: flex;
            flex-direction: column;
            border: 1px solid #cbd5e1;
            border-radius: 12px;
            background: #fff;
            overflow: hidden;
        }

        .backup-list-panel__head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            padding: 10px 14px;
            border-bottom: 1px solid #e2e8f0;
            background: #f8fafc;
            flex-shrink: 0;
        }

        .backup-list-panel__title {
            font-weight: 700;
            color: #1e293b;
        }

        .backup-list-panel__meta {
            font-size: 12px;
            color: #64748b;
        }

        .backup-list-shell {
            flex: 1 1 auto;
            min-height: 240px;
            overflow: auto;
        }

        .backup-table {
            min-width: 860px;
            width: 100%;
        }

        .backup-table .col-act {
            width: 200px;
        }

        .container.is-system #view-backup.is-active {
            display: flex;
            flex-direction: column;
            height: 100%;
            min-height: 0;
        }

        @media (max-width: 1100px) {
            .backup-action-grid {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
        }

        @media (max-width: 900px) {
            .backup-action-grid,
            .backup-action-grid--3 {
                grid-template-columns: 1fr;
            }
            .backup-tile {
                min-height: 88px;
            }
            .backup-view > .jobs-head {
                flex-direction: column;
                align-items: stretch;
            }
            .backup-nav {
                width: 100%;
            }
            .backup-nav__btn {
                flex: 1 1 0;
                text-align: center;
            }
        }

        .database-empty-panel {
            flex: 1;
            min-height: 280px;
            margin-top: 8px;
            border: 1px dashed #cbd5e1;
            border-radius: 14px;
            background: linear-gradient(180deg, #f8fafc 0%, #fff 100%);
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 8px;
            padding: 32px 20px;
            text-align: center;
        }

        .database-empty-panel__title {
            font-size: 1.15rem;
            font-weight: 750;
            color: #0f172a;
        }

        .database-empty-panel__hint {
            font-size: 0.86rem;
            color: #94a3b8;
        }

        .pm-db-layout {
            display: grid;
            grid-template-columns: 240px minmax(0, 1fr);
            gap: 12px;
            margin-top: 4px;
            min-height: 520px;
        }

        .pm-db-side {
            background: #fff;
            border: 1px solid #d7e3ec;
            border-radius: 14px;
            box-shadow: 0 8px 22px rgba(15, 23, 42, 0.05);
            padding: 12px;
            display: flex;
            flex-direction: column;
            gap: 8px;
            max-height: calc(100vh - 180px);
            overflow: auto;
        }

        .pm-db-side__title {
            font-size: 0.78rem;
            font-weight: 750;
            color: #64748b;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            padding: 2px 4px 6px;
        }

        .pm-db-table-btn {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            width: 100%;
            border: 1px solid transparent;
            background: #f8fafc;
            border-radius: 10px;
            padding: 10px 11px;
            text-align: left;
            cursor: pointer;
            font: inherit;
            color: #0f172a;
        }

        .pm-db-table-btn:hover {
            border-color: #cbd5e1;
            background: #fff;
        }

        .pm-db-table-btn.is-active {
            border-color: rgba(15, 118, 110, 0.35);
            background: rgba(15, 118, 110, 0.08);
        }

        .pm-db-table-btn__name {
            font-size: 0.84rem;
            font-weight: 650;
            line-height: 1.3;
        }

        .pm-db-table-btn__meta {
            font-size: 0.72rem;
            color: #64748b;
            white-space: nowrap;
        }

        .pm-db-main {
            background: #fff;
            border: 1px solid #d7e3ec;
            border-radius: 14px;
            box-shadow: 0 8px 22px rgba(15, 23, 42, 0.05);
            display: flex;
            flex-direction: column;
            min-width: 0;
            min-height: 520px;
            max-height: calc(100vh - 180px);
            overflow: hidden;
        }

        .pm-db-toolbar {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 8px 10px;
            padding: 12px 14px;
            border-bottom: 1px solid #eef2f7;
        }

        .pm-db-toolbar__title {
            font-size: 0.95rem;
            font-weight: 750;
            color: #0f172a;
            margin-right: auto;
        }

        .pm-db-toolbar input[type="search"] {
            min-width: 180px;
            border: 1px solid #d5dee8;
            border-radius: 9px;
            padding: 8px 11px;
            font: inherit;
            font-size: 0.86rem;
            background: #f8fafc;
        }

        .pm-db-status {
            padding: 8px 14px;
            font-size: 0.78rem;
            color: #64748b;
            border-bottom: 1px solid #eef2f7;
            background: #f8fafc;
        }

        .pm-db-status.is-ok { color: #0f766e; }
        .pm-db-status.is-err { color: #b91c1c; }

        .pm-db-table-wrap {
            flex: 1;
            overflow: auto;
        }

        .pm-db-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.8rem;
        }

        .pm-db-table th,
        .pm-db-table td {
            border-bottom: 1px solid #eef2f7;
            padding: 8px 10px;
            text-align: left;
            vertical-align: top;
            white-space: nowrap;
            max-width: 280px;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .pm-db-table th {
            position: sticky;
            top: 0;
            background: #f1f5f9;
            color: #475569;
            font-weight: 700;
            z-index: 1;
        }

        .pm-db-table tr:hover td {
            background: #f8fafc;
        }

        .pm-db-empty {
            padding: 48px 20px;
            text-align: center;
            color: #94a3b8;
            font-size: 0.9rem;
        }

        .pm-db-pager {
            display: flex;
            align-items: center;
            justify-content: flex-end;
            gap: 8px;
            padding: 10px 14px;
            border-top: 1px solid #eef2f7;
        }

        .pm-db-pager__info {
            font-size: 0.78rem;
            color: #64748b;
            margin-right: auto;
        }

        @media (max-width: 900px) {
            .pm-db-layout {
                grid-template-columns: 1fr;
            }
            .pm-db-side,
            .pm-db-main {
                max-height: none;
            }
        }

        .database-hub-grid {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 14px;
            margin-top: 8px;
        }

        .database-hub-grid .home-mod {
            min-height: 148px;
        }

        .home-mod__icon--db-pm { color: #0f766e; background: #ecfdf5; }
        .home-mod__icon--db-tpm { color: #b45309; background: #fffbeb; }
        .home-mod__icon--db-fire { color: #b91c1c; background: #fef2f2; }
        .home-mod__icon--db-spare { color: #6d28d9; background: #f5f3ff; }
        .home-mod__icon--db-user { color: #1d4ed8; background: #eff6ff; }
        .home-mod__icon--db-config { color: #334155; background: #f1f5f9; }

        .mysql-config-layout {
            display: grid;
            grid-template-columns: minmax(0, 1.15fr) minmax(260px, 0.85fr);
            gap: 12px;
            margin-top: 4px;
            align-items: stretch;
        }

        .mysql-config-card {
            background: #fff;
            border: 1px solid #d7e3ec;
            border-radius: 14px;
            box-shadow: 0 8px 22px rgba(15, 23, 42, 0.05);
            overflow: hidden;
            display: flex;
            flex-direction: column;
            min-height: 100%;
        }

        .mysql-config-card__banner {
            display: flex;
            align-items: center;
            gap: 12px;
            padding: 12px 16px;
            background:
                radial-gradient(120% 140% at 0% 0%, rgba(20, 184, 166, 0.22), transparent 55%),
                linear-gradient(120deg, #0f766e 0%, #0e7490 58%, #155e75 100%);
            color: #fff;
        }

        .mysql-config-card__icon {
            width: 38px;
            height: 38px;
            border-radius: 10px;
            display: grid;
            place-items: center;
            background: rgba(255, 255, 255, 0.16);
            border: 1px solid rgba(255, 255, 255, 0.22);
            flex-shrink: 0;
        }

        .mysql-config-card__icon svg {
            width: 18px;
            height: 18px;
        }

        .mysql-config-card__banner-text {
            min-width: 0;
        }

        .mysql-config-card__title {
            font-size: 0.98rem;
            font-weight: 750;
            letter-spacing: 0.01em;
            margin: 0 0 3px;
        }

        .mysql-config-card__hint {
            margin: 0;
            font-size: 0.74rem;
            line-height: 1.4;
            color: rgba(255, 255, 255, 0.86);
        }

        .mysql-config-card__body {
            padding: 14px 16px 16px;
            flex: 1;
        }

        .mysql-config-section {
            margin-bottom: 12px;
        }

        .mysql-config-section:last-child {
            margin-bottom: 0;
        }

        .mysql-config-section__label {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.7rem;
            font-weight: 750;
            letter-spacing: 0.06em;
            text-transform: uppercase;
            color: #64748b;
            margin-bottom: 8px;
        }

        .mysql-config-section__label::after {
            content: "";
            flex: 1;
            height: 1px;
            background: linear-gradient(90deg, #e2e8f0, transparent);
        }

        .mysql-config-grid {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 10px 12px;
        }

        .mysql-config-field {
            display: flex;
            flex-direction: column;
            gap: 5px;
            min-width: 0;
        }

        .mysql-config-field.is-full {
            grid-column: 1 / -1;
        }

        .mysql-config-field label {
            font-size: 0.74rem;
            font-weight: 650;
            color: #475569;
        }

        .mysql-config-field input,
        .mysql-config-field textarea {
            width: 100%;
            box-sizing: border-box;
            border: 1px solid #d5dee8;
            border-radius: 9px;
            padding: 8px 11px;
            font: inherit;
            font-size: 0.88rem;
            color: #0f172a;
            background: #f8fafc;
            transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
        }

        .mysql-config-field textarea {
            min-height: 56px;
            max-height: 110px;
            resize: vertical;
            font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
            font-size: 0.72rem;
            line-height: 1.4;
        }

        .mysql-config-field input:hover,
        .mysql-config-field textarea:hover {
            background: #fff;
            border-color: #b7c7d6;
        }

        .mysql-config-field input:focus,
        .mysql-config-field textarea:focus {
            outline: none;
            background: #fff;
            border-color: #14b8a6;
            box-shadow: 0 0 0 3px rgba(20, 184, 166, 0.18);
        }

        .mysql-config-options {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 8px;
        }

        .mysql-config-check {
            display: flex;
            align-items: center;
            gap: 8px;
            margin: 0;
            padding: 9px 11px;
            border-radius: 9px;
            border: 1px solid #e2e8f0;
            background: #f8fafc;
            font-size: 0.84rem;
            color: #334155;
            cursor: pointer;
            user-select: none;
        }

        .mysql-config-check input {
            width: 15px;
            height: 15px;
            accent-color: #0f766e;
        }

        .mysql-config-actions {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 8px;
            margin-top: 2px;
        }

        .mysql-config-side {
            display: flex;
            flex-direction: column;
            gap: 10px;
            min-height: 100%;
        }

        .mysql-status-card {
            background: #fff;
            border: 1px solid #d7e3ec;
            border-radius: 14px;
            box-shadow: 0 8px 22px rgba(15, 23, 42, 0.05);
            overflow: hidden;
            flex: 1;
            display: flex;
            flex-direction: column;
            min-height: 0;
        }

        .mysql-status-card__head {
            padding: 12px 14px 9px;
            border-bottom: 1px solid #eef2f7;
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
        }

        .mysql-status-card__title {
            font-size: 0.86rem;
            font-weight: 750;
            color: #0f172a;
        }

        .mysql-status-pill {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            padding: 4px 10px;
            border-radius: 999px;
            font-size: 0.7rem;
            font-weight: 700;
            background: #f1f5f9;
            color: #64748b;
        }

        .mysql-status-pill::before {
            content: "";
            width: 7px;
            height: 7px;
            border-radius: 50%;
            background: currentColor;
        }

        .mysql-config-status {
            flex: 1;
            margin: 0;
            padding: 12px 14px 14px;
            font-size: 0.82rem;
            line-height: 1.5;
            color: #475569;
            white-space: pre-wrap;
            word-break: break-word;
            background: linear-gradient(180deg, #f8fafc 0%, #fff 48%);
        }

        .mysql-status-card.is-ok .mysql-status-pill {
            background: #ecfdf5;
            color: #0f766e;
        }

        .mysql-status-card.is-err .mysql-status-pill {
            background: #fef2f2;
            color: #b91c1c;
        }

        .mysql-status-card.is-ok .mysql-config-status {
            color: #065f46;
            background: linear-gradient(180deg, #f0fdfa 0%, #fff 55%);
        }

        .mysql-status-card.is-err .mysql-config-status {
            color: #991b1b;
            background: linear-gradient(180deg, #fef2f2 0%, #fff 55%);
        }

        .mysql-status-metrics {
            display: grid;
            gap: 7px;
            margin-top: 8px;
        }

        .mysql-status-metric {
            display: grid;
            grid-template-columns: 64px 1fr;
            gap: 8px;
            align-items: start;
            padding: 7px 9px;
            border-radius: 9px;
            background: rgba(15, 118, 110, 0.06);
            border: 1px solid rgba(15, 118, 110, 0.1);
        }

        .mysql-status-card.is-err .mysql-status-metric {
            background: rgba(185, 28, 28, 0.05);
            border-color: rgba(185, 28, 28, 0.12);
        }

        .mysql-status-metric__k {
            font-size: 0.7rem;
            font-weight: 700;
            color: #64748b;
        }

        .mysql-status-metric__v {
            font-size: 0.82rem;
            font-weight: 650;
            color: #0f172a;
            word-break: break-all;
        }

        .mysql-quick-tips {
            padding: 12px 14px;
            border-radius: 14px;
            border: 1px solid #dbe4ee;
            background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
            flex-shrink: 0;
        }

        .mysql-quick-tips__title {
            font-size: 0.82rem;
            font-weight: 750;
            color: #0f172a;
            margin-bottom: 6px;
        }

        .mysql-quick-tips ul {
            margin: 0;
            padding-left: 16px;
            color: #64748b;
            font-size: 0.74rem;
            line-height: 1.5;
        }

        @media (max-width: 980px) {
            .mysql-config-layout {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 720px) {
            .mysql-config-grid,
            .mysql-config-options {
                grid-template-columns: 1fr;
            }
        }

        @media (max-width: 1100px) {
            .database-hub-grid {
                grid-template-columns: repeat(3, minmax(0, 1fr));
            }
        }

        @media (max-width: 640px) {
            .database-hub-grid {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
        }

        .home-panel {
            width: 100%;
            border: 1px solid var(--border);
            background: var(--bg-card);
            border-radius: 12px;
            box-shadow: var(--shadow);
            padding: 16px 16px 18px;
            display: flex;
            flex-direction: column;
            gap: 14px;
        }

        .home-panel__title {
            font-size: 1.05rem;
            font-weight: 700;
            color: #0f172a;
            letter-spacing: 0.02em;
            padding-bottom: 10px;
            border-bottom: 1px solid #e2e8f0;
            text-align: center;
        }

        .home-mod-row {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 10px;
            flex: 1;
            align-content: center;
        }

        .home-mod-row--4 {
            grid-template-columns: repeat(4, minmax(0, 1fr));
        }

        .home-mod {
            border: 1px solid var(--border);
            background: #fff;
            border-radius: 10px;
            padding: 16px 10px 14px;
            min-height: 124px;
            display: flex;
            flex-direction: column;
            align-items: center;
            justify-content: center;
            gap: 6px;
            cursor: pointer;
            font: inherit;
            color: inherit;
            transition: transform 0.15s ease, border-color 0.15s ease, box-shadow 0.15s ease;
        }

        .home-mod:hover:not(:disabled) {
            transform: translateY(-2px);
            border-color: #5eead4;
            box-shadow: 0 8px 20px rgba(15, 118, 110, 0.12);
        }

        .home-mod__icon {
            width: 40px;
            height: 40px;
            border-radius: 12px;
            display: grid;
            place-items: center;
            margin-bottom: 2px;
            flex-shrink: 0;
        }

        .home-mod__icon svg {
            width: 22px;
            height: 22px;
            display: block;
        }

        .home-mod__icon--pm {
            background: #ecfdf5;
            color: #0f766e;
        }

        .home-mod__icon--submit {
            background: #eff6ff;
            color: #1d4ed8;
        }

        .home-mod--submit {
            border-color: #93c5fd;
            background: linear-gradient(180deg, #ffffff 0%, #f8fbff 100%);
        }

        .home-mod--submit.is-featured {
            order: -1;
            border-color: #0f766e;
            box-shadow: 0 0 0 2px rgba(15, 118, 110, 0.18);
        }

        body.role-field .home-mod.is-soon {
            display: none !important;
        }

        body.role-lead .home-zone--users {
            display: none !important;
        }

        /* ========== PC 首页布局冻结（≥901px）：原版三区；左右图标同一水平行 ========== */
        @media (min-width: 901px) {
            /* 移动端整行不占位，否则会把左侧图标顶上去，与「用户管理」错行 */
            #view-home .home-mod-row--mobile {
                display: none !important;
            }

            #view-home .home-view {
                display: flex !important;
                align-items: center !important;
                justify-content: stretch !important;
                padding: 20px 24px !important;
                height: 100% !important;
                overflow: auto !important;
            }

            #view-home .home-stage {
                display: grid !important;
                grid-template-columns: minmax(280px, 1fr) minmax(0, 2fr) !important;
                gap: 18px !important;
                width: 100% !important;
                max-width: none !important;
                min-height: min(380px, 62vh) !important;
                height: auto !important;
                align-items: stretch !important;
                flex: none !important;
            }

            #view-home .home-zone--left,
            #view-home .home-zone--right-wrap,
            #view-home .home-zone--right,
            #view-home .home-zone--users {
                min-height: 0 !important;
                height: auto !important;
                align-self: stretch !important;
            }

            #view-home .home-zone--left,
            #view-home .home-zone--users {
                display: flex !important;
            }

            #view-home .home-zone--right-wrap {
                display: grid !important;
                grid-template-columns: minmax(0, 2fr) minmax(160px, 1fr) !important;
                gap: 18px !important;
                align-items: stretch !important;
            }

            body.role-field .home-zone--right-wrap,
            .container.is-field-home.is-home .home-zone--right-wrap {
                display: grid !important;
            }

            #view-home .home-panel {
                width: 100% !important;
                height: 100% !important;
                min-height: min(380px, 62vh) !important;
                display: flex !important;
                flex-direction: column !important;
                gap: 14px !important;
                box-sizing: border-box !important;
            }

            #view-home .home-panel__title {
                flex-shrink: 0 !important;
            }

            #view-home .home-mod-row--pc,
            #view-home .home-zone--users .home-mod-row {
                display: grid !important;
                flex: 1 1 auto !important;
                align-content: center !important;
                align-items: stretch !important;
                min-height: 0 !important;
                height: auto !important;
                width: 100% !important;
                gap: 10px !important;
            }

            #view-home .home-mod-row--pc {
                grid-template-columns: repeat(4, minmax(0, 1fr)) !important;
                grid-template-rows: none !important;
            }

            #view-home .home-zone--users .home-mod-row {
                grid-template-columns: repeat(3, minmax(0, 1fr)) !important;
            }

            #view-home .home-mod {
                min-height: 124px !important;
                height: auto !important;
                max-width: none !important;
            }

            .container.is-field-home.is-home .home-stage,
            .container.is-lead-home.is-home .home-stage,
            .container.is-admin-home.is-home .home-stage {
                display: grid !important;
                grid-template-columns: minmax(280px, 1fr) minmax(0, 2fr) !important;
            }
        }

        /* ========== 移动端首页（≤900px）：对齐 PC 模块结构，仅改窄屏 ========== */
        @media (max-width: 900px) {
            /* 主管/管理员：显示与 PC 相同的四格；一线仍用作业快捷行 */
            #view-home .home-mod-row--pc {
                display: none !important;
            }

            body.role-lead #view-home .home-mod-row--pc,
            body.role-admin #view-home .home-mod-row--pc,
            .container.is-lead-home #view-home .home-mod-row--pc,
            .container.is-admin-home #view-home .home-mod-row--pc {
                display: grid !important;
                grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
                grid-template-rows: none !important;
                gap: 10px !important;
                flex: 0 0 auto !important;
                height: auto !important;
                align-content: start !important;
            }

            body.role-lead #view-home .home-mod-row--mobile,
            body.role-admin #view-home .home-mod-row--mobile,
            .container.is-lead-home #view-home .home-mod-row--mobile,
            .container.is-admin-home #view-home .home-mod-row--mobile {
                display: none !important;
            }

            body.role-field #view-home .home-mod-row--mobile {
                display: grid !important;
            }

            body.role-field .home-zone--users,
            body.role-field .home-zone--right-wrap {
                display: none !important;
            }

            body.role-field .container.is-home #view-home.is-active,
            body.role-lead .container.is-home #view-home.is-active,
            body.role-admin .container.is-home #view-home.is-active {
                display: flex !important;
                flex-direction: column !important;
                flex: 1 1 auto !important;
                min-height: 0 !important;
                height: 100% !important;
                overflow: hidden !important;
            }

            #view-home .home-view {
                flex: 1 1 auto !important;
                display: flex !important;
                flex-direction: column !important;
                width: 100% !important;
                max-width: none !important;
                min-height: 0 !important;
                height: 100% !important;
                padding: 12px !important;
                box-sizing: border-box !important;
                overflow: auto !important;
                -webkit-overflow-scrolling: touch;
                align-items: stretch !important;
                justify-content: flex-start !important;
            }

            #view-home .home-stage {
                display: flex !important;
                flex-direction: column !important;
                grid-template-columns: 1fr !important;
                gap: 12px !important;
                width: 100% !important;
                max-width: none !important;
                min-height: 0 !important;
                height: auto !important;
                flex: 0 0 auto !important;
            }

            #view-home .home-zone--left,
            #view-home .home-zone--left .home-panel,
            #view-home .home-zone--users,
            #view-home .home-zone--users .home-panel {
                display: flex !important;
                flex-direction: column !important;
                width: 100% !important;
                height: auto !important;
                min-height: 0 !important;
                flex: 0 0 auto !important;
            }

            #view-home .home-panel {
                gap: 12px !important;
                padding: 14px 12px 12px !important;
                border-radius: 12px !important;
                background: #fff !important;
                border: 1px solid #dbe4ee !important;
                box-shadow: var(--shadow) !important;
                box-sizing: border-box !important;
            }

            #view-home .home-panel__title {
                flex-shrink: 0 !important;
                font-size: 0.9rem !important;
                font-weight: 750 !important;
                color: #0f172a !important;
                text-align: left !important;
                padding: 0 2px 8px !important;
                margin: 0 !important;
                border-bottom: 1px solid #eef2f7 !important;
            }

            #view-home .home-zone--right-wrap {
                display: flex !important;
                flex-direction: column !important;
                gap: 12px !important;
                width: 100% !important;
            }

            #view-home .home-zone--right {
                display: none !important;
            }

            /* 压过上方 #view-home … { display:flex !important }，避免一线误显「系统管理」空壳 */
            body.role-field #view-home .home-zone--right-wrap,
            body.role-field #view-home .home-zone--users,
            body.role-lead #view-home .home-zone--right-wrap,
            .container.is-field-home #view-home .home-zone--right-wrap,
            .container.is-field-home #view-home .home-zone--users,
            #view-home .home-zone--right-wrap[hidden],
            #view-home .home-zone--users[hidden],
            #view-home .home-zone[hidden],
            #view-home .home-panel[hidden] {
                display: none !important;
            }

            body.role-admin #view-home .home-zone--users,
            .container.is-admin-home #view-home .home-zone--users {
                display: flex !important;
            }

            body.role-admin #view-home .home-zone--users[hidden],
            .container.is-admin-home #view-home .home-zone--users[hidden] {
                display: none !important;
            }

            #view-home .home-zone--users .home-mod-row {
                display: grid !important;
                grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
                gap: 10px !important;
                flex: 0 0 auto !important;
                height: auto !important;
            }

            #view-home .home-mod {
                min-height: 108px !important;
                height: auto !important;
                max-width: none !important;
                padding: 14px 10px 12px !important;
                border-radius: 10px !important;
                gap: 6px !important;
            }

            #view-home .home-mod__name {
                font-size: 0.88rem !important;
                font-weight: 750 !important;
                color: #0f766e !important;
                line-height: 1.25 !important;
            }

            #view-home .home-mod__desc {
                font-size: 0.68rem !important;
                font-weight: 600 !important;
                color: #94a3b8 !important;
                line-height: 1.3 !important;
            }

            #view-home .home-mod__icon {
                width: 40px !important;
                height: 40px !important;
                border-radius: 12px !important;
                margin-bottom: 2px !important;
            }

            /* 一线：保留作业快捷入口铺满 */
            body.role-field .container.is-home .home-view {
                overflow: hidden !important;
                padding: 8px !important;
            }

            body.role-field .container.is-home .home-stage,
            body.role-field .container.is-home .home-zone--left,
            body.role-field .container.is-home .home-zone--left .home-panel {
                flex: 1 1 auto !important;
                height: 100% !important;
                min-height: 0 !important;
            }

            body.role-field .container.is-home .home-mod-row--mobile {
                display: grid !important;
                flex: 1 1 auto !important;
                grid-template-columns: 1fr 1fr !important;
                grid-template-rows: 1.25fr 1fr !important;
                gap: 10px !important;
                height: 100% !important;
                width: 100% !important;
            }

            body.role-field .container.is-home .home-mod--submit.is-featured {
                grid-column: 1 / -1 !important;
                grid-row: 1 !important;
                min-height: 0 !important;
            }

            .container.is-field-home.is-home #view-home .home-zone--right-wrap,
            .container.is-field-home.is-home #view-home .home-zone--users {
                display: none !important;
            }
        }

        .home-mod__icon--tpm {
            background: #eff6ff;
            color: #1d4ed8;
        }

        .home-mod__icon--fire {
            background: #fff1f2;
            color: #be123c;
        }

        .home-mod__icon--parts {
            background: #fff7ed;
            color: #c2410c;
        }

        .home-mod__name {
            font-size: 1.15rem;
            font-weight: 700;
            color: #0f766e;
        }

        .home-mod__desc {
            font-size: 0.75rem;
            color: var(--text-muted);
            text-align: center;
            line-height: 1.35;
        }

        .home-mod.is-soon,
        .home-mod:disabled {
            cursor: not-allowed;
            opacity: 0.72;
            background: #f8fafc;
        }

        .home-mod.is-soon .home-mod__name {
            color: #64748b;
        }

        .home-mod.is-soon .home-mod__icon {
            opacity: 0.85;
        }

        /* ========== PM 作业提交 ========== */
        .submit-view {
            --submit-sec-border: #e8eef5;
            --submit-sec-head-bg: #f8fafc;
            --submit-sec-r: 12px;
            --submit-sec-pad-x: 14px;
            --submit-sec-pad-y: 10px;
            --submit-sec-head-min-h: 44px;
            --submit-sec-title-fs: 0.9rem;
            --submit-sec-title-w: 700;
            --submit-sec-title-c: #0f172a;
            --submit-sec-gap: 8px;
            height: 100%;
            min-height: 0;
            padding: 14px 16px 0;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            gap: 0;
            box-sizing: border-box;
            -webkit-overflow-scrolling: touch;
        }

        /* 上滚下定：选设备/明细变高时，「签字提交」始终留在底部 */
        .submit-view__scroll {
            flex: 1 1 auto;
            min-height: 0;
            overflow-x: hidden;
            overflow-y: auto;
            display: flex;
            flex-direction: column;
            gap: var(--submit-sec-gap);
            padding: 0 0 12px;
            -webkit-overflow-scrolling: touch;
            touch-action: pan-y;
        }

        .submit-view > .submit-actions-row,
        .submit-view > .submit-actions-sticky {
            flex: 0 0 auto;
            margin: 0;
            padding: 10px 0 12px;
            background: #fff;
            border-top: 1px solid #e8eef5;
            z-index: 5;
        }

        /* 工单预览 / PM作业明细 / 提交信息：统一标题 */
        .submit-view .submit-section-title,
        .submit-view .submit-work-overview__title,
        .submit-view .submit-detail-card__title,
        .submit-view .submit-form-grid__head,
        .submit-view .submit-form-grid__headbar .submit-form-grid__head {
            flex: 0 0 auto;
            margin: 0 !important;
            padding: 0 !important;
            border: 0 !important;
            background: transparent !important;
            font-size: var(--submit-sec-title-fs) !important;
            font-weight: var(--submit-sec-title-w) !important;
            color: var(--submit-sec-title-c) !important;
            letter-spacing: 0 !important;
            line-height: 1.3 !important;
            white-space: nowrap;
        }

        /* 三区统一卡片外壳：弱化描边，减少线条杂乱感 */
        .submit-view .submit-section,
        .submit-view .submit-work-overview,
        .submit-view .submit-detail-card,
        .submit-view .submit-form-grid {
            border: 1px solid var(--submit-sec-border) !important;
            border-radius: var(--submit-sec-r) !important;
            background: #fff !important;
            box-shadow: none;
            box-sizing: border-box;
        }

        .submit-view .submit-pick-card {
            border-color: var(--submit-sec-border);
            box-shadow: none;
        }

        /* 三区统一标题栏：同高、同左右内边距；底部分割线改淡 */
        .submit-view .submit-section__head,
        .submit-view .submit-work-overview__bar,
        .submit-view .submit-detail-card__head,
        .submit-view .submit-form-grid__headbar {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px 10px;
            flex-wrap: nowrap;
            min-height: var(--submit-sec-head-min-h);
            margin: 0 !important;
            padding: var(--submit-sec-pad-y) var(--submit-sec-pad-x) !important;
            border: 0 !important;
            border-bottom: 1px solid #f1f5f9 !important;
            background: var(--submit-sec-head-bg) !important;
            box-sizing: border-box;
        }

        .submit-mode-bar,
        .submit-makeup-bar {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 10px 14px;
            margin-bottom: 0;
            padding: 10px 12px;
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 10px;
            box-shadow: var(--shadow);
            flex-shrink: 0;
        }

        .submit-makeup-bar {
            flex-direction: column;
            align-items: stretch;
            gap: 10px;
            padding: 12px 14px;
        }

        .submit-makeup-bar[hidden] {
            display: none !important;
        }

        .submit-makeup-bar__head {
            display: flex;
            align-items: baseline;
            justify-content: space-between;
            gap: 8px;
            min-width: 0;
        }

        .submit-makeup-bar__title {
            font-size: 0.86rem;
            font-weight: 750;
            color: #0f172a;
            white-space: nowrap;
        }

        .submit-makeup-bar__hint {
            font-size: 0.7rem;
            color: #94a3b8;
            line-height: 1.3;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .submit-mode-tabs {
            display: inline-flex;
            gap: 4px;
            padding: 3px;
            background: #f1f5f9;
            border-radius: 8px;
        }

        .submit-mode-tab {
            border: 0;
            background: transparent;
            color: #475569;
            font: inherit;
            font-size: 0.8rem;
            font-weight: 650;
            padding: 6px 12px;
            border-radius: 6px;
            cursor: pointer;
        }

        .submit-mode-tab.is-active {
            background: #fff;
            color: #0f766e;
            box-shadow: 0 1px 3px rgba(15, 23, 42, 0.08);
        }

        .submit-makeup-filters {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
            gap: 10px 12px;
            width: 100%;
        }

        .submit-makeup-field {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
        }

        .submit-makeup-field label {
            display: block !important;
            margin: 0 !important;
            font-size: 0.68rem !important;
            color: #94a3b8 !important;
            font-weight: 650 !important;
            letter-spacing: 0.02em;
        }

        .submit-makeup-field select,
        .submit-makeup-filters select {
            display: block !important;
            width: 100% !important;
            min-width: 0 !important;
            height: 36px !important;
            min-height: 36px !important;
            padding: 0 28px 0 10px !important;
            border: 1px solid #e2e8f0 !important;
            border-radius: 8px !important;
            font-size: 0.82rem !important;
            font-weight: 550 !important;
            color: #0f172a !important;
            background-color: #f8fafc !important;
            appearance: none !important;
            background-image: linear-gradient(45deg, transparent 50%, #94a3b8 50%), linear-gradient(135deg, #94a3b8 50%, transparent 50%) !important;
            background-position: calc(100% - 14px) calc(50% - 2px), calc(100% - 10px) calc(50% - 2px) !important;
            background-size: 4px 4px, 4px 4px !important;
            background-repeat: no-repeat !important;
            box-sizing: border-box !important;
        }

        .submit-makeup-field select:focus {
            outline: none !important;
            border-color: #94a3b8 !important;
            background-color: #fff !important;
        }

        .submit-mode-hint {
            flex: 1 1 220px;
            font-size: 0.72rem;
            color: #64748b;
            line-height: 1.4;
        }

        .submit-pick-item.is-makeup .submit-pick-item__tag {
            background: #b45309;
            color: #fff;
        }

        .submit-pick-card {
            border: 1px solid var(--border);
            border-radius: 12px;
            background: #fff;
            padding: 0;
            margin-bottom: 0;
            box-shadow: var(--shadow);
            display: grid;
            grid-template-columns: minmax(0, 1fr) 148px;
            grid-template-areas: "left right";
            align-items: stretch;
            overflow: hidden;
            flex-shrink: 0;
        }

        .submit-pick-col {
            min-width: 0;
            padding: 10px 12px;
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 6px;
        }

        .submit-pick-col--left {
            grid-area: left;
            background: #f8fafc;
            border-right: 1px solid #e2e8f0;
            gap: 0;
        }

        .submit-pick-col--mid {
            display: none !important;
        }

        .submit-pick-col--right {
            grid-area: right;
            border-left: 1px solid #e2e8f0;
            background: #fafbfc;
            gap: 6px;
            justify-content: center;
        }

        .submit-pick-side-btns {
            display: flex;
            flex-direction: column;
            gap: 6px;
            width: 100%;
        }

        .submit-pick-side-btn {
            width: 100%;
            min-height: 30px !important;
            height: 30px !important;
            padding: 0 8px !important;
            font-size: 0.72rem !important;
            font-weight: 650;
        }

        /* 未选设备：隐藏工单预览与 PM 作业明细（PC / 移动端共用） */
        #view-submit.is-no-device .submit-work-overview,
        #view-submit.is-no-device .submit-detail-card,
        .submit-view.is-no-device .submit-work-overview,
        .submit-view.is-no-device .submit-detail-card {
            display: none !important;
        }

        .submit-work-overview {
            display: block;
            width: 100%;
            box-sizing: border-box;
            padding: 0 0 10px;
            overflow: hidden;
            flex-shrink: 0;
        }

        .submit-work-overview.is-empty {
            padding-bottom: 10px;
        }

        .submit-work-overview__tools {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            flex: 0 0 auto;
        }

        .submit-work-overview__tools .submit-chips-clear {
            min-height: 28px !important;
            height: 28px !important;
            padding: 0 10px !important;
            font-size: 0.72rem !important;
            border-radius: 7px !important;
            line-height: 1;
        }

        .submit-work-overview.is-empty .submit-work-overview__title {
            color: var(--submit-sec-title-c, #0f172a);
        }

        .submit-work-overview__body {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
            padding: 8px var(--submit-sec-pad-x, 14px) 0;
        }

        .submit-work-overview .submit-selected-empty {
            padding: 8px var(--submit-sec-pad-x, 14px) 0;
        }

        .submit-work-overview__name {
            font-size: 0.88rem;
            font-weight: 750;
            color: #0f172a;
            line-height: 1.25;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-work-overview__meta {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 4px 6px;
            min-width: 0;
        }

        .submit-work-overview__code {
            flex: 1 1 auto;
            min-width: 0;
            font-size: 0.7rem;
            font-weight: 600;
            color: #64748b;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 100%;
        }

        .submit-work-overview__scale {
            flex: 0 0 auto;
            font-size: 0.68rem;
            font-weight: 650;
            color: #0f766e;
            white-space: nowrap;
            line-height: 1.2;
        }

        .submit-work-overview__freq,
        .submit-work-overview__due-tag {
            display: inline-flex;
            align-items: center;
            min-height: 18px;
            padding: 0 6px;
            border-radius: 999px;
            font-size: 0.62rem;
            font-weight: 700;
            white-space: nowrap;
            line-height: 1;
        }

        .submit-work-overview__freq {
            background: #f1f5f9;
            border: 1px solid #e2e8f0;
            color: #334155;
        }

        .submit-work-overview__due-tag {
            background: #ecfdf5;
            border: 1px solid #a7f3d0;
            color: #047857;
            max-width: 100%;
        }

        .submit-work-overview__due-tag.is-warn {
            background: #fff7ed;
            border-color: #fed7aa;
            color: #c2410c;
        }

        .submit-work-overview__due-tag.is-late {
            background: #fef2f2;
            border-color: #fecaca;
            color: #b91c1c;
        }

        /* 兼容旧结构类名（防止缓存未刷新时空白） */
        .submit-work-overview__head {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 8px;
            margin: 0;
        }

        .submit-work-overview__main {
            flex: 1 1 auto;
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .submit-work-overview__side {
            flex: 0 0 auto;
            display: flex;
            flex-direction: column;
            align-items: flex-end;
            gap: 3px;
            max-width: 48%;
        }

        .submit-work-overview__rows {
            display: flex;
            flex-direction: column;
            gap: 2px;
            min-width: 0;
        }

        .submit-work-overview__row {
            display: flex;
            align-items: baseline;
            gap: 6px;
            min-width: 0;
            line-height: 1.2;
        }

        .submit-work-overview__k {
            flex: 0 0 auto;
            width: 2.4em;
            font-size: 0.58rem;
            font-weight: 650;
            color: #94a3b8;
        }

        .submit-work-overview__v {
            flex: 1 1 auto;
            min-width: 0;
            font-size: 0.78rem;
            font-weight: 700;
            color: #0f172a;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-work-overview__v.is-muted {
            font-size: 0.7rem;
            font-weight: 600;
            color: #475569;
        }

        .submit-work-overview__tags {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: flex-end;
            gap: 3px;
        }

        .submit-detail-block__due {
            flex: 0 0 auto;
            min-height: 18px;
            padding: 0 6px;
            border-radius: 999px;
            background: #eff6ff;
            border: 1px solid #bfdbfe;
            color: #1d4ed8;
            font-size: 0.56rem;
            font-weight: 700;
            line-height: 18px;
            white-space: nowrap;
        }

        .submit-detail-block__due.is-warn {
            background: #fff7ed;
            border-color: #fed7aa;
            color: #c2410c;
        }

        .submit-detail-block__due.is-late {
            background: #fef2f2;
            border-color: #fecaca;
            color: #b91c1c;
        }

        .submit-date-grid {
            display: grid;
            grid-template-columns: 44px minmax(0, 1fr);
            gap: 4px 8px;
            align-items: center;
        }

        .submit-date-grid__k {
            font-size: 0.7rem;
            color: #94a3b8;
            font-weight: 600;
        }

        .submit-date-grid__v {
            font-size: 0.82rem;
            color: #0f172a;
            font-weight: 700;
            line-height: 1.25;
            word-break: break-all;
        }

        .submit-date-grid__v.is-accent {
            color: #0f766e;
            font-size: 0.92rem;
            font-weight: 800;
        }

        .submit-date-label {
            font-size: 0.68rem;
            font-weight: 700;
            letter-spacing: 0.06em;
            color: #64748b;
            margin-bottom: 6px;
        }
        
        .submit-stat-row {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 6px;
            width: 100%;
        }

        .submit-stat {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: space-between;
            gap: 6px;
            min-height: 0;
            padding: 5px 8px;
            border-radius: 8px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            font-size: 0.68rem;
            color: #64748b;
            box-sizing: border-box;
        }

        .submit-stat strong {
            color: #0f172a;
            font-size: 0.95rem;
            font-weight: 800;
            line-height: 1;
        }

        .submit-stat.is-pending {
            background: #fff7ed;
            border-color: #fed7aa;
        }
        .submit-stat.is-pending strong { color: #c2410c; }

        .submit-stat.is-done {
            background: #ecfdf5;
            border-color: #a7f3d0;
        }
        .submit-stat.is-done strong { color: #047857; }

        .submit-stat.is-selected {
            background: #f0fdfa;
            border-color: #99f6e4;
        }
        .submit-stat.is-selected strong { color: #0f766e; }

        .submit-meta {
            font-size: 0.82rem;
            color: var(--text-muted);
        }

        .submit-selected-bar {
            display: flex;
            flex-direction: column;
            gap: 6px;
            width: 100%;
            min-height: 0;
            padding: 0;
            border-radius: 0;
            background: transparent;
            border: 0;
            box-sizing: border-box;
        }

        .submit-selected-bar.is-empty {
            background: transparent;
            border: 0;
            justify-content: center;
            min-height: 0;
            padding: 0;
        }

        .submit-selected-metrics {
            display: none !important;
        }

        .submit-metric {
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 0;
            min-width: 0;
            min-height: 0;
            padding: 5px 8px;
            border-radius: 8px;
            background: #fff;
            border: 1px solid #e2e8f0;
            box-shadow: none;
        }

        .submit-metric.is-pick {
            border-color: #99f6e4;
            background: linear-gradient(180deg, #f0fdfa, #fff);
        }

        .submit-metric.is-work {
            border-color: #a7f3d0;
            background: linear-gradient(180deg, #ecfdf5, #fff);
        }

        .submit-metric__k {
            font-size: 0.62rem;
            font-weight: 700;
            letter-spacing: 0.03em;
            color: #64748b;
            line-height: 1.2;
        }

        .submit-metric__v {
            font-size: 0.9rem;
            font-weight: 800;
            color: #0f172a;
            line-height: 1.2;
            word-break: break-word;
        }

        .submit-metric.is-pick .submit-metric__v,
        .submit-metric.is-work .submit-metric__v {
            color: #0f766e;
        }

        .submit-metric__v small {
            font-size: 0.66rem;
            font-weight: 650;
            color: #64748b;
            margin-left: 2px;
        }

        .submit-metric__s {
            font-size: 0.64rem;
            color: #64748b;
            line-height: 1.2;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .submit-selected-empty {
            grid-column: 1 / -1;
            display: flex;
            align-items: center;
            justify-content: center;
            min-height: 28px;
            padding: 4px 10px;
            border-radius: 8px;
            border: 1px dashed #cbd5e1;
            background: #f8fafc;
            color: #94a3b8;
            font-size: 0.76rem;
            text-align: center;
        }

        .submit-selected-chips {
            display: none;
            flex-direction: column;
            gap: 6px;
            width: 100%;
            min-width: 0;
            margin-top: 6px;
        }

        .submit-selected-chips.is-visible {
            display: flex;
        }

        .submit-selected-chips__list {
            display: grid;
            grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
            gap: 4px;
            width: 100%;
            max-height: 88px;
            overflow: auto;
            min-width: 0;
        }

        .submit-selected-chips__list:empty {
            display: none;
        }

        .submit-selected-chips__tools {
            display: flex;
            align-items: center;
            justify-content: flex-end;
            gap: 6px;
        }

        .submit-chips-clear {
            min-height: 28px !important;
            height: 28px;
            padding: 0 10px !important;
            font-size: 0.72rem !important;
            border-radius: 8px !important;
        }

        .submit-chip {
            display: flex;
            align-items: center;
            gap: 6px;
            width: 100%;
            min-width: 0;
            padding: 4px 8px;
            border-radius: 8px;
            background: #fff;
            border: 1px solid #99f6e4;
            box-shadow: none;
            font-size: 0.72rem;
            color: #115e59;
            box-sizing: border-box;
        }

        .submit-chip__extra {
            color: #0f766e;
            font-weight: 700;
            flex: 0 0 auto;
            padding: 1px 5px;
            border-radius: 999px;
            background: #f0fdfa;
            border: 1px solid #99f6e4;
            font-size: 0.64rem;
            max-width: 5.5em;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .submit-chip > span:first-of-type {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            flex: 1;
            min-width: 0;
            font-weight: 650;
        }

        .submit-chip button {
            border: 0;
            background: #f1f5f9;
            color: #64748b;
            cursor: pointer;
            font: inherit;
            line-height: 1;
            width: 18px;
            height: 18px;
            border-radius: 999px;
            flex-shrink: 0;
        }

        .submit-chip button:hover {
            background: #e2e8f0;
            color: #0f172a;
        }

        .submit-pick-col--right .btn {
            width: 100%;
            min-height: 34px;
            white-space: nowrap;
            margin: 0;
            padding-top: 6px;
            padding-bottom: 6px;
        }

        @media (max-width: 960px) {
            .submit-pick-card {
                grid-template-columns: 1fr;
                grid-template-areas: "right";
            }
            .submit-pick-col--left {
                display: none;
            }
            .submit-pick-col--right {
                border: 0;
                border-bottom: 1px solid #eef2f7;
                display: grid;
                /* 导出工单已隐藏，仅主按钮 + 刷新 */
                grid-template-columns: minmax(0, 1fr) auto;
                align-items: center;
                background: #fff;
                padding: 8px 12px;
                gap: 8px;
            }
            .submit-pick-col--right .btn-primary,
            .submit-pick-col--right .submit-pick-main-btn {
                width: 100%;
                min-width: 0;
                min-height: 36px;
                height: 36px;
                padding: 0 10px;
                font-size: 0.82rem;
                font-weight: 650;
                border-radius: 8px;
                box-shadow: none;
            }
            .submit-pick-side-btns {
                display: contents;
            }
            .submit-pick-side-btn {
                width: auto !important;
                min-width: 64px;
                min-height: 36px !important;
                height: 36px !important;
                padding: 0 10px !important;
                font-size: 0.78rem !important;
                border-radius: 8px !important;
            }
            /* 导出工单仅 PC 端显示 */
            #submitExportWorkBtn {
                display: none !important;
            }
            .submit-pick-col--mid {
                display: none !important;
            }
            .submit-selected-metrics {
                display: none;
            }
            .submit-selected-bar {
                padding: 0;
                border: 0;
                background: transparent;
                min-height: 0;
            }
            .submit-selected-bar.is-empty {
                min-height: 0;
                padding: 0;
            }
            .submit-selected-empty {
                font-size: 0.7rem;
                padding: 2px 0 0;
                color: #94a3b8;
            }
            /* 与工单概览重复的已选芯片列表：窄屏不展示 */
            .submit-selected-chips__list {
                display: none !important;
            }
            .submit-selected-chips.is-visible {
                display: flex;
                margin-top: 4px;
            }
            .submit-selected-chips__tools {
                width: 100%;
                justify-content: flex-end;
            }
            .submit-stat-row {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
        }

        @media (max-width: 520px) {
            .submit-stat-row {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
            .submit-selected-metrics {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }
            .submit-selected-chips__list {
                grid-template-columns: 1fr;
                max-height: 72px;
            }
        }

        /* 小屏手机：避免提交区控件挤成一团 */
        @media (max-width: 430px) {
            .submit-view {
                --submit-ctrl-h: 40px;
                gap: 6px;
            }

            .submit-makeup-bar__head {
                flex-direction: column;
                align-items: flex-start;
                gap: 2px;
            }

            .submit-makeup-bar__hint {
                max-width: 100%;
                white-space: normal;
                font-size: 0.62rem;
            }

            .submit-makeup-filters {
                grid-template-columns: 1fr;
                gap: 8px;
            }

            .submit-pick-col--right {
                grid-template-columns: minmax(0, 1fr) auto !important;
                gap: 6px !important;
                padding: 8px 10px !important;
            }

            .submit-pick-col--right .submit-pick-main-btn,
            .submit-pick-col--right .btn-primary {
                font-size: 0.78rem !important;
                padding: 0 8px !important;
                letter-spacing: 0;
            }

            .submit-pick-side-btn {
                min-width: 56px !important;
                padding: 0 8px !important;
                font-size: 0.74rem !important;
            }

            .submit-work-overview__bar {
                margin: 0 0 4px;
                gap: 6px;
            }

            .submit-work-overview__body {
                gap: 3px;
            }

            .submit-work-overview__name {
                font-size: 0.86rem !important;
                line-height: 1.2 !important;
            }

            .submit-work-overview__meta {
                gap: 3px 5px;
            }

            .submit-detail-card__head {
                flex-wrap: wrap !important;
                gap: 8px !important;
                padding: 10px 10px 8px !important;
            }

            .submit-detail-tools:not([hidden]) {
                margin-left: auto;
            }

            .submit-detail-item__head {
                flex-wrap: wrap;
                align-items: stretch;
                min-height: 0;
            }

            .submit-detail-item__toggle {
                flex: 1 1 100%;
                width: 100%;
                padding: 8px 10px 6px !important;
            }

            .submit-detail-item__top {
                flex-wrap: wrap;
                row-gap: 4px;
            }

            .submit-detail-item__badges {
                flex-wrap: wrap;
                max-width: 100%;
            }

            .submit-detail-item__head-status {
                width: 100% !important;
                min-width: 0 !important;
                max-width: none !important;
                flex: 1 1 100% !important;
                padding: 0 10px 8px !important;
            }

            .submit-detail-item__head-status .submit-status-select {
                min-height: 36px !important;
                height: 36px !important;
                font-size: 0.78rem !important;
                padding: 0 8px !important;
            }

            .submit-form-grid {
                grid-template-columns: repeat(2, minmax(0, 1fr)) !important;
                gap: 10px 8px !important;
                padding: 0 10px 14px !important;
            }

            .submit-form-grid .submit-field--workshop-sign,
            .submit-form-grid .submit-field--photos {
                grid-column: 1 / -1;
            }

            .submit-form-grid .submit-field--started,
            .submit-form-grid .submit-field--finished,
            .submit-form-grid .submit-field--result,
            .submit-form-grid .submit-field--sign,
            .submit-form-grid .submit-field--workshop,
            .submit-form-grid .submit-field--remark {
                grid-column: auto;
                min-width: 0;
                width: auto;
                align-items: stretch;
            }

            .submit-form-grid .submit-field--workshop .submit-workshop-select,
            .submit-form-grid .submit-field--remark .submit-remark-btn,
            .submit-form-grid .submit-field--remark #submitRemarkBtn,
            .submit-form-grid .submit-field--result .submit-result-select,
            .submit-form-grid .submit-field--sign .submit-sign-btn,
            .submit-form-grid .submit-field--sign #openSignBtn {
                width: 100% !important;
                max-width: none !important;
                flex: none !important;
                align-self: stretch !important;
            }

            .submit-form-grid__headbar {
                flex-wrap: nowrap !important;
                align-items: center !important;
                gap: 8px !important;
            }

            .submit-form-grid__head-wrap {
                flex: 1 1 auto;
                width: auto;
                min-width: 0;
            }

            .submit-operator-chip {
                flex: 0 1 auto !important;
                margin-left: auto !important;
                max-width: min(62%, 210px) !important;
                width: auto !important;
                height: 28px !important;
                justify-content: flex-start !important;
                padding: 0 8px 0 6px !important;
            }

            .submit-operator-chip__v,
            .submit-operator-chip input.submit-operator-chip__v {
                max-width: 7em !important;
                flex: 1 1 auto;
                text-align: left !important;
            }

            .submit-form-grid .submit-field--workshop-sign,
            .submit-form-grid .submit-field--photos {
                grid-column: 1 / -1;
            }

            .submit-form-grid .submit-field--started,
            .submit-form-grid .submit-field--finished,
            .submit-form-grid .submit-field--result,
            .submit-form-grid .submit-field--sign,
            .submit-form-grid .submit-field--workshop,
            .submit-form-grid .submit-field--remark {
                grid-column: auto;
                min-width: 0;
                width: auto;
                align-items: stretch;
            }

            .submit-form-grid .submit-field--workshop .submit-workshop-select,
            .submit-form-grid .submit-field--remark .submit-remark-btn,
            .submit-form-grid .submit-field--remark #submitRemarkBtn,
            .submit-form-grid .submit-field--result .submit-result-select,
            .submit-form-grid .submit-field--sign .submit-sign-btn,
            .submit-form-grid .submit-field--sign #openSignBtn {
                width: 100% !important;
                max-width: none !important;
                flex: none !important;
                align-self: stretch !important;
            }

            .submit-datetime-face {
                font-size: 0.8rem !important;
                padding: 0 8px !important;
                justify-content: flex-start !important;
                text-align: left !important;
            }

            .submit-prep-panel {
                padding-left: 10px;
                padding-right: 10px;
            }

            .submit-prep-item {
                align-items: flex-start;
                white-space: normal;
                line-height: 1.35;
            }

            .submit-photos__actions {
                flex-wrap: wrap;
                gap: 8px;
            }

            .submit-photos__actions .btn,
            .submit-photo-btn {
                flex: 1 1 auto;
                min-width: 0;
            }

            .submit-pick-tools .btn {
                flex: 1 1 calc(50% - 6px);
                min-width: 0;
            }
        }

        @media (max-width: 360px) {
            .submit-pick-col--right {
                grid-template-columns: 1fr !important;
            }

            .submit-pick-col--right .submit-pick-main-btn,
            .submit-pick-col--right .btn-primary,
            .submit-pick-side-btn {
                width: 100% !important;
            }

            .submit-pick-side-btns {
                display: grid !important;
                grid-template-columns: 1fr;
                gap: 6px;
            }

            #submitExportWorkBtn {
                display: none !important;
            }
        }

        .submit-detail-card {
            margin-bottom: 0;
            overflow: hidden;
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }

        .submit-detail-card__head {
            flex-shrink: 0;
            justify-content: flex-start;
            min-width: 0;
        }

        .submit-detail-card__title {
            flex: 0 0 auto;
            white-space: nowrap;
        }

        #submitDetailMeta {
            flex: 1 1 auto;
            min-width: 0;
            line-height: 1.3;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-detail-wrap {
            flex: 1 1 auto;
            min-height: 0;
            max-height: none;
            overflow: auto;
            -webkit-overflow-scrolling: touch;
        }

        .submit-pick-card,
        .submit-mode-bar,
        .submit-makeup-bar,
        .submit-form-grid,
        .submit-actions-row {
            flex-shrink: 0;
        }

        .submit-detail-block {
            border-bottom: 1px solid #f1f5f9;
            padding: 10px 12px 12px;
        }

        .submit-detail-block:last-child {
            border-bottom: 0;
        }

        .submit-detail-block__head {
            display: flex;
            flex-wrap: wrap;
            gap: 6px 8px;
            align-items: center;
            margin-bottom: 8px;
            font-size: 0.84rem;
            cursor: pointer;
            user-select: none;
            border-radius: 8px;
            padding: 4px 6px;
            margin-left: -6px;
            margin-right: -6px;
            transition: background 0.15s ease;
        }

        .submit-detail-block__head:hover {
            background: #f8fafc;
        }

        .submit-detail-block__toggle {
            flex: 0 0 auto;
            width: 22px;
            height: 22px;
            border: 1px solid #e2e8f0;
            border-radius: 6px;
            background: #fff;
            color: #64748b;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            padding: 0;
            cursor: pointer;
            font: inherit;
            line-height: 1;
        }

        .submit-detail-block__toggle::before {
            content: '';
            width: 0;
            height: 0;
            border-left: 5px solid transparent;
            border-right: 5px solid transparent;
            border-top: 6px solid currentColor;
            transform: rotate(0deg);
            transition: transform 0.18s ease;
        }

        .submit-detail-block.is-collapsed .submit-detail-block__toggle::before {
            transform: rotate(-90deg);
        }

        .submit-detail-block.is-collapsed .submit-detail-block__head {
            margin-bottom: 0;
        }

        .submit-detail-block.is-collapsed .submit-detail-table-scroll,
        .submit-detail-block.is-collapsed .submit-detail-cards {
            display: none !important;
        }

        .submit-detail-block__head strong,
        .submit-detail-block__line {
            color: #0f172a;
            font-weight: 700;
        }

        .submit-detail-block__station {
            color: #334155;
            font-weight: 550;
            min-width: 0;
        }

        .submit-detail-block__freq,
        .submit-detail-block__match {
            display: inline-flex;
            align-items: center;
            min-height: 20px;
            padding: 0 7px;
            border-radius: 999px;
            font-size: 0.68rem;
            font-weight: 650;
            background: #f1f5f9;
            color: #64748b;
        }

        .submit-detail-block__match.is-ok {
            background: #f0fdfa;
            color: #0f766e;
        }

        .submit-detail-block__match.is-warn {
            background: #fff7ed;
            color: #c2410c;
        }

        .submit-detail-table {
            --submit-excel-line: #c5cdd8;
            --submit-excel-head: #e8eef5;
            /* 前两列合计 = 可视区宽：内容列吃满剩余，结果列尽量窄（扣 2px 边框，避免第三列露边） */
            --submit-col-status-w: 76px;
            --submit-col-content-w: calc(100cqw - var(--submit-col-status-w) - 2px);
            width: max-content;
            min-width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            font-size: 0.78rem;
            background: #fff;
            table-layout: fixed;
        }

        .submit-detail-table th,
        .submit-detail-table td {
            border-right: 1px solid var(--submit-excel-line);
            border-bottom: 1px solid var(--submit-excel-line);
            padding: 7px 8px;
            text-align: left;
            vertical-align: middle;
            word-break: break-word;
            overflow-wrap: anywhere;
            background: #fff;
            box-sizing: border-box;
        }

        .submit-detail-table th:first-child,
        .submit-detail-table td:first-child {
            border-left: 1px solid var(--submit-excel-line);
        }

        .submit-detail-table thead th {
            border-top: 1px solid var(--submit-excel-line);
            background: var(--submit-excel-head);
            color: #334155;
            font-weight: 700;
            white-space: nowrap;
            position: sticky;
            top: 0;
            z-index: 3;
        }

        .submit-detail-table td.is-gap,
        .submit-detail-table tr.is-gap-row td {
            color: #b45309;
            background: #fffbeb;
        }

        .submit-detail-table .col-content {
            width: var(--submit-col-content-w);
            min-width: var(--submit-col-content-w);
            max-width: var(--submit-col-content-w);
        }

        .submit-detail-table th.col-status,
        .submit-detail-table td.status-cell,
        .submit-detail-table .col-status {
            width: var(--submit-col-status-w);
            min-width: var(--submit-col-status-w);
            max-width: var(--submit-col-status-w);
            padding: 3px 3px;
            vertical-align: middle;
        }

        .submit-detail-table .status-cell .submit-status-select {
            width: 100%;
            min-width: 0;
            height: 30px;
            min-height: 30px;
            padding: 0 2px;
            font-size: 0.7rem;
            border-radius: 6px;
        }

        .submit-detail-table .col-code { width: 100px; min-width: 88px; }
        .submit-detail-table .col-std { width: 140px; min-width: 120px; }
        .submit-detail-table .col-tool { width: 110px; min-width: 96px; }
        .submit-detail-table .col-mat { width: 110px; min-width: 96px; }
        .submit-detail-table .col-grade { width: 72px; min-width: 64px; white-space: nowrap; }
        .submit-detail-table .col-mins { width: 56px; min-width: 48px; white-space: nowrap; text-align: center; }

        /* 列表整表左右自由滑动，前两列不冻结；合计刚好沾满可视区 */
        .submit-detail-table tr.is-gap-row td.col-content,
        .submit-detail-table tr.is-gap-row td.status-cell {
            background: #fffbeb;
        }

        .submit-detail-table-scroll {
            container-type: inline-size;
            container-name: submit-detail-scroll;
            overflow: auto;
            -webkit-overflow-scrolling: touch;
            border: 1px solid var(--submit-excel-line, #c5cdd8);
            border-radius: 0;
            background: #fff;
            max-height: min(52vh, 480px);
        }

        /* PC：作业提交一体布局——整页纵向滚动；明细随内容撑开；内容列收窄保证执行结果可选 */
        @media (min-width: 901px) {
            #view-submit.is-active {
                overflow: hidden;
                min-height: 0;
            }

            #view-submit .submit-view {
                height: 100%;
                min-height: 0;
                overflow-x: hidden;
                overflow-y: auto;
                display: flex;
                flex-direction: column;
                gap: 0;
                padding: 14px 16px 16px;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior-y: contain;
            }

            #view-submit .submit-view__scroll {
                flex: 0 0 auto;
                min-height: 0;
                height: auto;
                overflow: visible;
                display: flex;
                flex-direction: column;
                gap: var(--submit-sec-gap, 8px);
                padding: 0 0 10px;
            }

            #view-submit .submit-view > .submit-actions-row,
            #view-submit .submit-view > .submit-actions-sticky {
                position: static;
                flex: 0 0 auto;
                margin: 0;
                padding: 12px 0 4px;
                background: #fff;
                border-top: 1px solid #e8eef5;
                z-index: auto;
            }

            #view-submit .submit-detail-card {
                flex: 0 0 auto;
                min-height: 0;
                overflow: visible;
            }

            #view-submit .submit-detail-wrap {
                flex: 0 0 auto;
                min-height: 0;
                max-height: none;
                overflow: visible;
            }

            #view-submit .submit-detail-table-scroll {
                max-height: none !important;
                height: auto;
                overflow-x: auto;
                overflow-y: visible;
                -webkit-overflow-scrolling: touch;
            }

            #view-submit .submit-detail-table {
                /* 固定内容列宽，避免吃满可视区把执行结果挤没 */
                --submit-col-status-w: 118px;
                --submit-col-content-w: 280px;
            }

            #view-submit .submit-detail-table .col-content {
                width: var(--submit-col-content-w);
                min-width: 220px;
                max-width: 320px;
            }

            #view-submit .submit-detail-table th.col-status,
            #view-submit .submit-detail-table td.status-cell,
            #view-submit .submit-detail-table .col-status {
                width: var(--submit-col-status-w);
                min-width: var(--submit-col-status-w);
                max-width: var(--submit-col-status-w);
                padding: 4px 6px;
            }

            #view-submit .submit-detail-table .status-cell .submit-status-select {
                width: 100%;
                min-width: 104px;
                max-width: 100%;
                height: 32px;
                min-height: 32px;
                padding: 0 4px;
                font-size: 0.78rem;
                border-radius: 6px;
            }

            #view-submit .submit-hero-card,
            #view-submit .submit-form-grid,
            #view-submit .submit-actions-row {
                flex-shrink: 0;
            }

            /* PC：本周作业 + 工单预览融合为单卡三栏 */
            #view-submit .submit-hero-card {
                display: grid;
                grid-template-columns: minmax(168px, 220px) minmax(0, 1fr) 148px;
                align-items: stretch;
                border: 1px solid var(--submit-sec-border, #e8eef5);
                border-radius: 12px;
                background: #fff;
                overflow: hidden;
                box-sizing: border-box;
            }

            #view-submit.is-no-device .submit-hero-card,
            #view-submit .submit-view.is-no-device .submit-hero-card {
                grid-template-columns: minmax(168px, 1fr) 148px;
            }

            #view-submit .submit-pick-card {
                display: contents;
                border: 0 !important;
                box-shadow: none !important;
                background: transparent !important;
                margin: 0 !important;
                padding: 0 !important;
            }

            #view-submit .submit-pick-col--left {
                grid-column: 1;
                grid-row: 1;
                border-right: 1px solid #e2e8f0;
                background: #f8fafc;
                padding: 12px 14px;
                justify-content: center;
            }

            #view-submit.is-no-device .submit-pick-col--left,
            #view-submit .submit-view.is-no-device .submit-pick-col--left {
                grid-column: 1;
            }

            #view-submit .submit-pick-col--right {
                grid-column: 3;
                grid-row: 1;
                border-left: 1px solid #e2e8f0;
                background: #fafbfc;
                padding: 12px;
                justify-content: center;
            }

            #view-submit.is-no-device .submit-pick-col--right,
            #view-submit .submit-view.is-no-device .submit-pick-col--right {
                grid-column: 2;
            }

            #view-submit .submit-work-overview {
                grid-column: 2;
                grid-row: 1;
                display: grid !important;
                grid-template-columns: minmax(0, 1fr) auto;
                grid-template-rows: auto auto;
                align-content: center;
                column-gap: 10px;
                row-gap: 6px;
                min-width: 0;
                margin: 0 !important;
                padding: 12px 14px !important;
                border: 0 !important;
                border-radius: 0 !important;
                box-shadow: none !important;
                background: #fff !important;
                overflow: hidden;
                box-sizing: border-box;
            }

            #view-submit.is-no-device .submit-work-overview,
            #view-submit .submit-view.is-no-device .submit-work-overview {
                display: none !important;
            }

            #view-submit .submit-work-overview__bar {
                grid-column: 2;
                grid-row: 1 / span 2;
                align-self: center;
                flex: 0 0 auto;
                min-height: 0 !important;
                margin: 0 !important;
                padding: 0 !important;
                border: 0 !important;
                border-bottom: 0 !important;
                background: transparent !important;
                justify-content: flex-end;
            }

            #view-submit .submit-work-overview__title {
                display: none !important;
            }

            #view-submit .submit-work-overview__tools {
                margin: 0;
                flex-direction: column;
                align-items: stretch;
                gap: 6px;
            }

            #view-submit .submit-work-overview__tools .submit-chips-clear {
                min-width: 56px;
            }

            #view-submit .submit-work-overview__body {
                grid-column: 1;
                grid-row: 1 / span 2;
                display: flex;
                flex-direction: column;
                justify-content: center;
                gap: 6px;
                padding: 0 !important;
                min-width: 0;
            }

            #view-submit .submit-work-overview.is-empty .submit-selected-empty {
                grid-column: 1 / -1;
                padding: 0 !important;
            }

            #view-submit .submit-work-overview__name {
                font-size: 1rem !important;
                font-weight: 750 !important;
                line-height: 1.3 !important;
            }

            #view-submit .submit-work-overview__meta {
                gap: 6px 8px;
            }

            #view-submit .submit-work-overview__code {
                flex: 1 1 auto;
                max-width: none;
            }
        }

        /* 移动端：包装层透明穿透，保持原两卡布局 */
        .submit-hero-card {
            display: contents;
        }

        .submit-detail-cards {
            display: none !important;
        }

        .submit-detail-item {
            border: 1px solid #eef2f7;
            border-radius: 12px;
            background: #fff;
            padding: 0;
            display: flex;
            flex-direction: column;
            gap: 0;
            overflow: hidden;
        }

        .submit-detail-item.is-gap {
            border-color: #fcd34d;
            background: #fffbeb;
        }

        .submit-detail-item__head {
            display: flex;
            align-items: center;
            gap: 4px;
            min-width: 0;
            min-height: 0;
        }

        .submit-detail-item__toggle {
            flex: 1;
            min-width: 0;
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 6px 8px;
            border: 0;
            background: transparent;
            text-align: left;
            cursor: pointer;
            font: inherit;
            color: inherit;
        }

        .submit-detail-item__toggle:hover {
            background: #f8fafc;
        }

        .submit-detail-item__chevron {
            display: none !important;
        }

        .submit-detail-item.is-collapsed .submit-detail-item__chevron {
            display: none !important;
        }

        .submit-detail-item__head-main {
            flex: 1;
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .submit-detail-item__top {
            display: flex;
            align-items: center;
            gap: 6px;
            min-width: 0;
        }

        .submit-detail-item__code {
            min-width: 0;
            font-size: 0.78rem;
            font-weight: 700;
            color: #0f766e;
            line-height: 1.25;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-detail-item__top .submit-detail-item__code {
            flex: 1;
        }

        .submit-detail-item__preview {
            display: none;
            font-size: 0.68rem;
            line-height: 1.25;
            color: #64748b;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .submit-detail-item.is-collapsed .submit-detail-item__preview {
            display: block;
        }

        .submit-detail-item__badges {
            display: flex;
            flex-wrap: wrap;
            gap: 4px;
            align-items: center;
            max-width: 100%;
        }

        .submit-detail-item__top .submit-detail-item__badges {
            flex-wrap: nowrap;
            flex-shrink: 0;
            max-width: 48%;
            overflow: hidden;
        }

        .submit-detail-item__badge {
            display: inline-flex;
            align-items: center;
            min-height: 18px;
            max-width: 100%;
            padding: 0 6px;
            border-radius: 999px;
            background: #f1f5f9;
            color: #475569;
            font-size: 0.62rem;
            font-weight: 650;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-detail-item__head-status {
            flex-shrink: 0;
            width: 68px;
            padding: 4px 8px 4px 0;
            display: flex;
            align-items: center;
        }

        .submit-detail-item__head-status .submit-status-select {
            width: 100%;
            min-height: 26px;
            height: 26px;
            font-size: 0.66rem;
            padding: 0 2px;
            border-radius: 6px;
        }

        .submit-detail-item:not(.is-collapsed) {
            border-color: #e2e8f0;
            box-shadow: none;
            background: #fff;
        }

        .submit-detail-item:not(.is-collapsed) .submit-detail-item__head {
            background: #f8fafc;
            border-bottom: 1px solid #eef2f7;
        }

        .submit-detail-item:not(.is-collapsed) .submit-detail-item__chevron {
            display: none !important;
        }

        .submit-detail-item__panel {
            display: flex;
            flex-direction: column;
            gap: 8px;
            padding: 10px 12px 12px;
            margin: 0;
            border-radius: 0;
            background: #fff;
            border: 0;
        }

        .submit-detail-item.is-collapsed .submit-detail-item__panel {
            display: none;
        }

        .submit-detail-tools {
            display: none;
            gap: 6px;
            flex-wrap: nowrap;
            align-items: center;
            flex: 0 0 auto;
            margin-left: auto;
        }

        .submit-detail-tools[hidden] {
            display: none !important;
        }

        .submit-detail-tools:not([hidden]) {
            display: inline-flex;
        }

        .submit-detail-tools .btn {
            min-height: 28px;
            height: 28px;
            padding: 0 10px;
            font-size: 0.72rem;
            border-radius: 6px;
            box-shadow: none;
        }

        .submit-detail-item__content {
            font-size: 0.88rem;
            line-height: 1.5;
            color: #0f172a;
            white-space: pre-wrap;
            word-break: break-word;
        }

        .submit-detail-item__body {
            display: flex;
            flex-direction: column;
            gap: 4px;
            padding: 10px 12px;
            border-radius: 8px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            box-shadow: none;
        }

        .submit-detail-item__label {
            font-size: 0.68rem;
            font-weight: 700;
            letter-spacing: 0.04em;
            color: #0f766e;
        }

        .submit-detail-item__body .submit-detail-item__content {
            font-size: 0.95rem;
            line-height: 1.55;
            font-weight: 500;
            color: #0f172a;
        }

        .submit-detail-item__meta-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 6px;
        }

        .submit-detail-item__meta-chip {
            min-width: 0;
            padding: 7px 8px;
            border-radius: 8px;
            background: #fff;
            border: 1px solid #a7f3d0;
            font-size: 0.72rem;
            line-height: 1.35;
            color: #334155;
        }

        .submit-detail-item__meta-chip em {
            display: block;
            font-style: normal;
            font-size: 0.62rem;
            font-weight: 700;
            color: #0f766e;
            margin-bottom: 2px;
        }

        .submit-detail-item__kv {
            display: none;
        }

        .submit-detail-item__kv dt {
            color: #64748b;
            font-weight: 600;
        }

        .submit-detail-item__kv dd {
            margin: 0;
            color: #334155;
            word-break: break-word;
        }

        .submit-detail-item__status {
            display: none;
        }

        .submit-detail-item__status label {
            font-size: 0.75rem;
            font-weight: 650;
            color: #475569;
        }

        .submit-detail-item__status .submit-status-select {
            min-height: 42px;
            height: 42px;
            font-size: 0.9rem;
        }

        .submit-status-select,
        .submit-result-select {
            width: 100%;
            height: 34px;
            border: 1px solid var(--border);
            border-radius: 8px;
            padding: 0 8px;
            font: inherit;
            font-size: 0.78rem;
            font-weight: 700;
            box-sizing: border-box;
            cursor: pointer;
        }

        .submit-status-select.is-done,
        .submit-result-select.is-ok {
            background: #ecfdf5;
            border-color: #6ee7b7;
            color: #047857;
        }

        .submit-status-select.is-fail,
        .submit-result-select.is-fail {
            background: #fff7ed;
            border-color: #fdba74;
            color: #c2410c;
        }

        .submit-status-select.is-na {
            background: #f1f5f9;
            border-color: #cbd5e1;
            color: #64748b;
        }

        .submit-result-select.is-warn {
            background: #fffbeb;
            border-color: #fcd34d;
            color: #b45309;
        }

        .submit-result-select.is-partial {
            background: #eff6ff;
            border-color: #93c5fd;
            color: #1d4ed8;
        }

        .submit-result-select.is-critical {
            background: #fef2f2;
            border-color: #fca5a5;
            color: #b91c1c;
        }

        .submit-form-grid {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
            gap: 12px 14px;
            margin-bottom: 0;
            padding: 0 var(--submit-sec-pad-x, 14px) 14px;
            box-sizing: border-box;
            flex-shrink: 0;
            overflow: hidden;
        }

        .submit-form-grid__head {
            grid-column: 1 / -1;
        }

        .submit-form-grid__headbar {
            grid-column: 1 / -1;
            /* 标题栏拉满卡片左右，与另两区对齐 */
            margin-left: calc(-1 * var(--submit-sec-pad-x, 14px)) !important;
            margin-right: calc(-1 * var(--submit-sec-pad-x, 14px)) !important;
            width: auto;
        }

        .submit-form-grid__head-wrap {
            display: flex;
            align-items: center;
            gap: 10px;
            min-width: 0;
            flex: 1 1 auto;
        }

        .submit-form-grid__headbar .submit-form-grid__head {
            grid-column: auto;
            flex: 0 0 auto;
            white-space: nowrap;
        }

        .submit-form-grid__photo-hint {
            display: flex;
            flex-direction: column;
            justify-content: center;
            gap: 1px;
            min-width: 0;
            flex: 1 1 auto;
            max-width: 16em;
            font-size: 0.62rem;
            font-weight: 600;
            color: #94a3b8;
            line-height: 1.25;
        }

        .submit-form-grid__photo-hint span {
            display: block;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-form-grid__photo-hint.is-required {
            color: #b45309;
            font-weight: 650;
        }

        .submit-operator-chip {
            flex: 0 0 auto;
            margin-left: auto;
            display: inline-flex;
            align-items: center;
            justify-content: flex-start;
            gap: 5px;
            min-width: 0;
            max-width: min(46vw, 240px);
            width: auto;
            height: 30px;
            padding: 0 10px 0 8px;
            border: 1px solid #e2e8f0;
            border-radius: 999px;
            background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
            box-shadow: 0 1px 0 rgba(15, 23, 42, 0.04);
            box-sizing: border-box;
            white-space: nowrap;
        }

        .submit-operator-chip__ico {
            flex: 0 0 auto;
            width: 16px;
            height: 16px;
            border-radius: 50%;
            background:
                radial-gradient(circle at 50% 38%, #64748b 0 3px, transparent 3.5px),
                radial-gradient(circle at 50% 78%, #94a3b8 0 5.5px, transparent 6px);
            background-color: #e2e8f0;
            opacity: 0.95;
        }

        .submit-operator-chip__k {
            flex: 0 0 auto;
            margin: 0;
            padding: 0;
            font-size: 0.68rem !important;
            font-weight: 650 !important;
            color: #94a3b8 !important;
            white-space: nowrap;
            letter-spacing: 0;
            line-height: 1;
        }

        .submit-operator-chip__sep {
            display: none !important;
        }

        .submit-operator-chip__v,
        .submit-operator-chip input.submit-operator-chip__v {
            flex: 1 1 auto !important;
            display: inline-block;
            min-width: 2.5em !important;
            width: auto !important;
            max-width: 9em !important;
            height: auto !important;
            min-height: 0 !important;
            max-height: none !important;
            margin: 0 !important;
            padding: 0 !important;
            border: 0 !important;
            border-radius: 0 !important;
            background: transparent !important;
            font-size: 0.78rem !important;
            font-weight: 700 !important;
            color: #0f172a !important;
            box-shadow: none !important;
            text-align: left;
            line-height: 1.2;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-operator-chip__v::placeholder {
            color: #cbd5e1;
            font-weight: 600;
        }

        .submit-operator-chip__v:read-only {
            background: transparent !important;
            color: #0f172a !important;
            pointer-events: none;
        }

        .submit-form-grid .submit-workshop-select.is-signed {
            border-color: #99f6e4;
            background: #ecfdf5;
            color: #0f766e;
            font-weight: 700;
        }

        .submit-remark-btn {
            width: 100%;
            justify-content: center;
            text-align: center;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .submit-remark-btn.has-remark {
            border-color: #99f6e4 !important;
            background: #ecfdf5 !important;
            color: #0f766e !important;
            font-weight: 700;
        }

        /* 签字 / 备注：与下拉、时间控件同高同圆角，覆盖全局 .btn 胶囊尺寸 */
        .submit-form-grid .submit-sign-btn,
        .submit-form-grid .submit-remark-btn,
        .submit-view .submit-form-grid .btn.submit-sign-btn,
        .submit-view .submit-form-grid .btn.submit-remark-btn {
            display: flex !important;
            align-items: center !important;
            justify-content: center !important;
            box-sizing: border-box !important;
            width: 100% !important;
            max-width: none !important;
            min-width: 0 !important;
            height: var(--submit-ctrl-h, 36px) !important;
            min-height: var(--submit-ctrl-h, 36px) !important;
            max-height: var(--submit-ctrl-h, 36px) !important;
            margin: 0 !important;
            padding: 0 10px !important;
            border: 1px solid var(--submit-ctrl-border, #e2e8f0) !important;
            border-radius: var(--submit-ctrl-radius, 10px) !important;
            background: #fff !important;
            color: var(--submit-c-body, #0f172a) !important;
            font: inherit !important;
            font-size: var(--submit-fs-body, 0.84rem) !important;
            font-weight: 600 !important;
            line-height: 1.2 !important;
            box-shadow: none !important;
            transform: none !important;
            cursor: pointer;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            align-self: stretch !important;
        }

        .submit-form-grid .submit-sign-btn.is-signed,
        .submit-view .submit-form-grid .btn.submit-sign-btn.is-signed {
            border-color: #99f6e4 !important;
            background: #ecfdf5 !important;
            color: #0f766e !important;
            font-weight: 700 !important;
        }

        .submit-form-grid .submit-remark-btn.has-remark,
        .submit-view .submit-form-grid .btn.submit-remark-btn.has-remark {
            border-color: #99f6e4 !important;
            background: #ecfdf5 !important;
            color: #0f766e !important;
            font-weight: 700 !important;
        }

        .submit-remark-modal-label {
            display: block;
            margin: 0 0 8px;
            font-size: 0.82rem;
            font-weight: 650;
            color: #475569;
        }

        .submit-remark-modal-input {
            width: 100%;
            min-height: 120px;
            padding: 10px 12px;
            border: 1px solid #cbd5e1;
            border-radius: 10px;
            font: inherit;
            font-size: 0.92rem;
            line-height: 1.45;
            color: #0f172a;
            background: #fff;
            resize: vertical;
            box-sizing: border-box;
        }

        .submit-form-grid .submit-field--remark,
        .submit-form-grid .submit-field--workshop,
        .submit-form-grid .submit-field--workshop-sign,
        .submit-form-grid .submit-field--result,
        .submit-form-grid .submit-field--sign,
        .submit-form-grid .submit-field--started,
        .submit-form-grid .submit-field--finished {
            grid-column: auto;
            min-width: 0;
            align-items: stretch;
        }

        .submit-form-grid.is-workshop-sign .submit-field--remark {
            grid-column: auto;
        }

        .submit-form-grid .submit-field--photos {
            grid-column: 1 / -1;
        }

        .submit-field--workshop-sign[hidden] {
            display: none !important;
        }

        .submit-form-grid .submit-field--remark .submit-remark-btn,
        .submit-form-grid .submit-field--remark #submitRemarkBtn,
        .submit-view .submit-form-grid .submit-field--remark .btn.submit-remark-btn,
        .submit-form-grid .submit-field--sign .submit-sign-btn,
        .submit-form-grid .submit-field--sign #openSignBtn {
            display: flex !important;
            width: 100% !important;
            max-width: none !important;
            min-width: 0 !important;
            flex: 0 0 auto !important;
            align-self: stretch !important;
        }

        /* 极窄屏：两列改为单列，避免操作按钮互相挤压 */
        @media (max-width: 380px) {
            .submit-view .submit-form-grid {
                grid-template-columns: minmax(0, 1fr) !important;
                gap: 10px !important;
            }
            .submit-view .submit-form-grid .submit-field--started,
            .submit-view .submit-form-grid .submit-field--finished,
            .submit-view .submit-form-grid .submit-field--result,
            .submit-view .submit-form-grid .submit-field--sign,
            .submit-view .submit-form-grid .submit-field--workshop,
            .submit-view .submit-form-grid .submit-field--remark,
            .submit-view .submit-form-grid .submit-field--photos,
            .submit-view .submit-form-grid .submit-field--workshop-sign {
                grid-column: 1 / -1 !important;
            }
        }

        /* 中等窄屏：两列保留，略缩字号/间距减轻挤压 */
        @media (min-width: 381px) and (max-width: 430px) {
            .submit-view .submit-form-grid {
                gap: 8px 6px !important;
            }
            .submit-view .submit-form-grid .submit-field label {
                font-size: 0.68rem !important;
            }
            .submit-view .submit-form-grid .submit-field select,
            .submit-view .submit-form-grid .submit-sign-btn,
            .submit-view .submit-form-grid .submit-remark-btn,
            .submit-view .submit-form-grid .btn.submit-sign-btn,
            .submit-view .submit-form-grid .btn.submit-remark-btn {
                font-size: 0.78rem !important;
                padding-left: 6px !important;
                padding-right: 6px !important;
            }
        }

        /* 结果下拉：整框底色填充（保留原字体色），避免只变线框 */
        .submit-view .submit-form-grid .submit-field select.submit-result-select.is-ok {
            background-color: #ecfdf5 !important;
            border-color: #6ee7b7 !important;
            color: #047857 !important;
        }
        .submit-view .submit-form-grid .submit-field select.submit-result-select.is-warn {
            background-color: #fffbeb !important;
            border-color: #fcd34d !important;
            color: #b45309 !important;
        }
        .submit-view .submit-form-grid .submit-field select.submit-result-select.is-partial {
            background-color: #eff6ff !important;
            border-color: #93c5fd !important;
            color: #1d4ed8 !important;
        }
        .submit-view .submit-form-grid .submit-field select.submit-result-select.is-critical {
            background-color: #fef2f2 !important;
            border-color: #fca5a5 !important;
            color: #b91c1c !important;
        }
        .submit-view .submit-form-grid .submit-field select.submit-result-select.is-fail {
            background-color: #fff7ed !important;
            border-color: #fdba74 !important;
            color: #c2410c !important;
        }

        .submit-view .submit-sign-btn.is-signed {
            background: #ecfdf5 !important;
            border-color: #99f6e4 !important;
            color: #0f766e !important;
        }

        .submit-view .submit-remark-btn.has-remark {
            background: #f0f9ff !important;
            border-color: #bae6fd !important;
            color: #0369a1 !important;
        }

        /* 提交信息：PC / 移动端共用视觉规范 */
        .submit-view {
            --submit-fs-title: 0.9rem;
            --submit-fs-body: 0.84rem;
            --submit-fs-label: 0.72rem;
            --submit-fs-meta: 0.72rem;
            --submit-fs-btn: 0.84rem;
            --submit-c-title: #0f172a;
            --submit-c-body: #0f172a;
            --submit-c-label: #64748b;
            --submit-c-meta: #64748b;
            --submit-ctrl-h: 36px;
            --submit-ctrl-radius: 10px;
            --submit-ctrl-border: #e2e8f0;
        }

        .submit-form-grid .submit-field label {
            font-size: var(--submit-fs-label);
            font-weight: 650;
            color: var(--submit-c-label);
            line-height: 1.3;
            letter-spacing: 0;
        }

        .submit-form-grid .submit-field select,
        .submit-form-grid .submit-field input,
        .submit-form-grid .submit-sign-btn,
        .submit-form-grid .submit-remark-btn {
            width: 100%;
            height: var(--submit-ctrl-h);
            min-height: var(--submit-ctrl-h);
            max-height: var(--submit-ctrl-h);
            border: 1px solid var(--submit-ctrl-border);
            border-radius: var(--submit-ctrl-radius);
            padding: 0 10px;
            font: inherit;
            font-size: var(--submit-fs-body);
            font-weight: 600;
            background: #fff;
            color: var(--submit-c-body);
            box-sizing: border-box;
            line-height: 1.2;
            box-shadow: none;
        }

        .submit-form-grid .submit-field input:focus,
        .submit-form-grid .submit-field select:focus,
        .submit-form-grid .submit-sign-btn:focus,
        .submit-form-grid .submit-remark-btn:focus,
        .submit-photo-btn:focus {
            outline: none;
            border-color: #94a3b8;
            background: #fff;
            box-shadow: none;
        }

        .submit-datetime-wrap {
            position: relative;
            width: 100%;
            min-width: 0;
        }

        .submit-datetime-wrap input[type="datetime-local"] {
            width: 100%;
        }

        .submit-datetime-face {
            display: none;
        }

        @media (max-width: 900px) {
            .submit-datetime-wrap input[type="datetime-local"] {
                color: transparent !important;
                -webkit-text-fill-color: transparent !important;
                caret-color: transparent;
                position: relative;
                z-index: 2;
                background: transparent !important;
            }

            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-fields-wrapper,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-text,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-month-field,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-day-field,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-year-field,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-hour-field,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-minute-field,
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-datetime-edit-ampm-field {
                color: transparent !important;
            }

            /* 避免原生日历图标叠在 MM/DD HH:mm 面层上 */
            .submit-datetime-wrap input[type="datetime-local"]::-webkit-calendar-picker-indicator {
                opacity: 0;
                position: absolute;
                inset: 0;
                width: 100%;
                height: 100%;
                margin: 0;
                padding: 0;
                cursor: pointer;
            }

            .submit-datetime-face {
                display: flex;
                align-items: center;
                justify-content: center;
                position: absolute;
                left: 1px;
                right: 1px;
                top: 1px;
                bottom: 1px;
                z-index: 1;
                padding: 0 10px;
                font-size: 0.8rem;
                font-weight: 600;
                color: #0f172a;
                background: #fff;
                border-radius: 9px;
                box-sizing: border-box;
                pointer-events: none;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                text-align: center;
            }

            .submit-datetime-face.is-empty {
                color: #94a3b8;
            }
        }

        .submit-form-grid .submit-field input[type="datetime-local"] {
            padding-right: 8px;
            font-variant-numeric: tabular-nums;
            color-scheme: light;
        }

        .submit-form-grid .submit-field select {
            appearance: none;
            background-image: linear-gradient(45deg, transparent 50%, #64748b 50%), linear-gradient(135deg, #64748b 50%, transparent 50%);
            background-position: calc(100% - 16px) calc(50% - 3px), calc(100% - 11px) calc(50% - 3px);
            background-size: 5px 5px, 5px 5px;
            background-repeat: no-repeat;
            padding-right: 28px;
        }

        .submit-field--photos {
            grid-column: 1 / -1;
        }

        .submit-photos__labelrow {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            min-width: 0;
        }

        .submit-photos__labelrow label {
            margin: 0;
            flex: 0 0 auto;
        }

        .submit-photos {
            display: flex;
            flex-direction: column;
            gap: 8px;
            width: 100%;
            min-width: 0;
        }

        .submit-prep-panel {
            margin: 0 0 10px;
            padding: 10px 12px;
            border: 1px solid #e2e8f0;
            border-radius: 10px;
            background: #f8fafc;
        }

        .submit-prep-panel[hidden] {
            display: none !important;
        }

        .submit-prep-panel__head {
            display: flex;
            flex-direction: column;
            align-items: stretch;
            gap: 6px;
            margin-bottom: 8px;
        }

        .submit-prep-panel__title-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
        }

        .submit-prep-panel__title {
            font-size: 0.82rem;
            font-weight: 750;
            color: #0f172a;
        }

        .submit-prep-kit-chip {
            flex: 0 0 auto;
            display: inline-flex;
            align-items: center;
            min-height: 22px;
            padding: 0 8px;
            border-radius: 999px;
            font-size: 0.66rem;
            font-weight: 700;
            letter-spacing: 0.02em;
            border: 1px solid #fcd34d;
            background: #fffbeb;
            color: #b45309;
        }

        .submit-prep-kit-chip.is-ok {
            border-color: #6ee7b7;
            background: #ecfdf5;
            color: #047857;
        }

        .submit-prep-kit-chip.is-warn {
            border-color: #fcd34d;
            background: #fffbeb;
            color: #b45309;
        }

        .submit-prep-kit-chip[hidden] {
            display: none !important;
        }

        .submit-prep-panel__hint {
            font-size: 0.68rem;
            color: #64748b;
            font-weight: 600;
        }

        .submit-prep-panel__hint.is-warn {
            color: #b45309;
        }

        .submit-prep-list {
            display: flex;
            flex-wrap: wrap;
            gap: 8px 12px;
        }

        .submit-prep-item {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            min-height: 32px;
            padding: 4px 10px;
            border-radius: 8px;
            border: 1px solid #e2e8f0;
            background: #fff;
            font-size: 0.74rem;
            color: #334155;
            cursor: pointer;
            user-select: none;
        }

        .submit-prep-item input {
            width: 16px;
            height: 16px;
            margin: 0;
        }

        .submit-prep-item__kind {
            font-size: 0.62rem;
            font-weight: 700;
            color: #64748b;
            letter-spacing: 0.02em;
        }

        .submit-measure-cell,
        .submit-detail-item__measure {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
        }

        .submit-measure-cell input,
        .submit-detail-item__measure input {
            width: 100%;
            min-height: 32px;
            box-sizing: border-box;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            padding: 4px 8px;
            font-size: 0.78rem;
        }

        .submit-measure-cell input.is-bad,
        .submit-detail-item__measure input.is-bad {
            border-color: #f59e0b;
            background: #fffbeb;
        }

        .submit-measure-hint {
            font-size: 0.62rem;
            color: #64748b;
            line-height: 1.3;
        }

        .submit-measure-points {
            display: flex;
            flex-direction: column;
            gap: 6px;
            min-width: 0;
        }

        .submit-measure-point {
            display: grid;
            grid-template-columns: minmax(2.5rem, auto) minmax(4.5rem, 1fr);
            gap: 4px 6px;
            align-items: center;
        }

        .submit-measure-point__label {
            font-size: 0.68rem;
            font-weight: 650;
            color: #334155;
            white-space: nowrap;
        }

        .submit-measure-point__hint {
            grid-column: 1 / -1;
            font-size: 0.58rem;
            color: #64748b;
            line-height: 1.25;
        }

        .submit-measure-cell.is-multi,
        .submit-detail-item__measure.is-multi {
            min-width: 140px;
        }

        .submit-detail-table th.col-measure,
        .submit-detail-table td.col-measure {
            min-width: 110px;
        }

        .submit-detail-table td.col-measure:has(.is-multi) {
            min-width: 160px;
        }

        .mine-card__acts button.is-start,
        .archive-table .cell-act button.is-start {
            background: #0f766e;
            color: #fff;
            border: 0;
        }

        .submit-photos__hint {
            display: none;
            margin: 0;
            font-size: 0.68rem;
            font-weight: 600;
            color: #94a3b8;
            line-height: 1.35;
        }

        .submit-photos__hint.is-required {
            color: #b45309;
            font-weight: 650;
        }

        .submit-photos__actions {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
            gap: 8px;
            align-items: stretch;
            width: 100%;
        }

        .submit-photo-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            width: 100%;
            height: var(--submit-ctrl-h, 36px);
            min-height: var(--submit-ctrl-h, 36px);
            max-height: var(--submit-ctrl-h, 36px);
            margin: 0;
            padding: 0 10px;
            border: 1px solid var(--submit-ctrl-border, #e2e8f0);
            border-radius: var(--submit-ctrl-radius, 10px);
            background: #fff;
            color: #334155;
            font: inherit;
            font-size: var(--submit-fs-body, 0.84rem);
            font-weight: 650;
            line-height: 1;
            box-shadow: none;
            cursor: pointer;
            box-sizing: border-box;
            white-space: nowrap;
        }

        .submit-photo-btn:hover {
            border-color: #94a3b8;
            background: #fff;
            color: #0f172a;
        }

        .submit-photo-btn:focus {
            outline: none;
            border-color: #94a3b8;
        }

        .submit-photos__count {
            display: inline-flex;
            align-items: center;
            justify-content: flex-end;
            min-width: 2.8em;
            padding: 0;
            font-size: var(--submit-fs-meta, 0.72rem);
            font-weight: 650;
            color: var(--submit-c-meta, #64748b);
            line-height: 1;
            white-space: nowrap;
            flex: 0 0 auto;
        }

        .submit-photos__list {
            display: flex;
            flex-wrap: wrap;
            gap: 8px;
        }

        .submit-photos__list:empty {
            display: none;
        }

        .submit-photo-thumb {
            position: relative;
            width: 72px;
            height: 72px;
            border-radius: var(--submit-ctrl-radius, 10px);
            overflow: hidden;
            border: 1px solid var(--submit-ctrl-border, #e2e8f0);
            background: #f8fafc;
        }

        .submit-photo-thumb img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }

        .submit-photo-thumb__remove {
            position: absolute;
            top: 2px;
            right: 2px;
            width: 28px;
            height: 28px;
            border: none;
            border-radius: 999px;
            background: rgba(15, 23, 42, 0.72);
            color: #fff;
            font-size: 16px;
            line-height: 1;
            cursor: pointer;
            padding: 0;
            display: inline-flex;
            align-items: center;
            justify-content: center;
        }

        .jobs-photo-grid {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            margin: 0 0 12px;
        }

        .jobs-photo-grid a {
            display: block;
            width: 96px;
            height: 96px;
            border-radius: 10px;
            overflow: hidden;
            border: 1px solid #e2e8f0;
            background: #f8fafc;
        }

        .jobs-photo-grid img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }

        .archive-table .col-photo { width: 44px; text-align: center; }

        .submit-form-grid .submit-sign-btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            cursor: pointer;
            white-space: nowrap;
            margin: 0;
            text-align: center;
        }

        .submit-form-grid .submit-sign-btn span,
        .submit-form-grid .submit-remark-btn span {
            display: block;
            width: 100%;
            text-align: center;
        }

        /* 提交信息：签字/备注/照片/下拉等操作控件文字居中 */
        .submit-form-grid .submit-sign-btn,
        .submit-form-grid .submit-remark-btn,
        .submit-form-grid .submit-photo-btn,
        .submit-photo-btn,
        .submit-form-grid .submit-field select,
        .submit-form-grid .submit-field select.submit-result-select,
        .submit-form-grid .submit-field select.submit-workshop-select,
        .submit-actions-row .btn,
        .submit-actions-sticky .btn {
            text-align: center !important;
            justify-content: center !important;
            align-items: center !important;
        }

        .submit-form-grid .submit-field select {
            text-align-last: center;
            -moz-text-align-last: center;
            padding-left: 24px;
            padding-right: 24px;
        }

        .submit-datetime-face {
            justify-content: center;
            text-align: center;
            padding-left: 18px;
            padding-right: 18px;
        }

        .submit-sign-btn.is-signed {
            border-color: #99f6e4;
            background: #ecfdf5;
            color: #0f766e;
            font-weight: 700;
        }

        .submit-form-grid .submit-field select.submit-result-select.is-ok {
            background: #ecfdf5;
            border-color: #6ee7b7;
            color: #047857;
            font-weight: 700;
        }
        .submit-form-grid .submit-field select.submit-result-select.is-warn {
            background: #fffbeb;
            border-color: #fcd34d;
            color: #b45309;
            font-weight: 700;
        }
        .submit-form-grid .submit-field select.submit-result-select.is-partial {
            background: #eff6ff;
            border-color: #93c5fd;
            color: #1d4ed8;
            font-weight: 700;
        }
        .submit-form-grid .submit-field select.submit-result-select.is-critical {
            background: #fef2f2;
            border-color: #fca5a5;
            color: #b91c1c;
            font-weight: 700;
        }
        .submit-form-grid .submit-field select.submit-result-select.is-fail {
            background: #fff7ed;
            border-color: #fdba74;
            color: #c2410c;
            font-weight: 700;
        }

        @media (max-width: 900px) {
            .submit-view {
                /* 上滚下定：内容在 __scroll 内滚动，底栏 fixed「签字提交」始终可见 */
                --submit-sticky-h: 56px;
                padding: 0;
                gap: 0;
                overflow: hidden;
                overscroll-behavior-y: contain;
                -webkit-overflow-scrolling: touch;
                background: #eef2f7;
                height: 100%;
                min-height: 0;
                touch-action: pan-y;
            }

            .submit-view__scroll {
                flex: 1 1 auto;
                min-height: 0;
                overflow-x: hidden;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                touch-action: pan-y;
                overscroll-behavior-y: contain;
                padding: 0 0 calc(var(--submit-sticky-h, 56px) + 8px);
                gap: 8px;
            }

            .submit-view > .submit-actions-row,
            .submit-view > .submit-actions-sticky {
                padding: 0;
                border-top: 0;
                background: transparent;
            }

            .submit-mode-bar,
            .submit-makeup-bar {
                padding: 0;
                gap: 0;
                margin: 0;
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                border-top: 0;
                border-bottom: 1px solid #e2e8f0;
                box-shadow: none;
                background: #fff;
            }

            .submit-makeup-bar {
                padding: 0 0 10px;
            }

            .submit-makeup-bar__head {
                padding: 8px 12px;
                border-bottom: 1px solid #eef2f7;
            }

            .submit-makeup-bar__title {
                font-size: 0.74rem;
            }

            .submit-makeup-bar__hint {
                font-size: 0.58rem;
                max-width: none;
                flex: 1 1 auto;
                white-space: normal;
            }

            .submit-mode-tabs {
                width: 100%;
            }

            .submit-mode-tab {
                flex: 1;
                min-height: 34px;
                font-size: 0.78rem;
            }

            .submit-mode-hint {
                display: none;
            }

            .submit-makeup-filters {
                width: 100%;
                gap: 8px;
                padding: 8px 12px 0;
                box-sizing: border-box;
            }

            .submit-makeup-field label {
                font-size: 0.58rem !important;
            }

            .submit-makeup-field select,
            .submit-makeup-filters select {
                height: 34px !important;
                min-height: 34px !important;
                font-size: 0.78rem !important;
                border-radius: 8px !important;
            }

            .submit-pick-card,
            .submit-detail-card,
            .submit-form-grid {
                margin: 0;
                width: 100%;
                max-width: none;
                border-radius: 0;
                border: 0 !important;
                box-shadow: none;
                box-sizing: border-box;
                background: #fff;
            }

            .submit-pick-card {
                border: 0 !important;
                background: #fff;
            }

            .submit-pick-col {
                padding: 8px 12px;
            }

            .submit-pick-col--right {
                border: 0 !important;
                border-bottom: 1px solid #eef2f7 !important;
                padding: 8px 12px;
                background: #fff;
                display: grid;
                grid-template-columns: minmax(0, 1fr) auto;
                gap: 8px;
                align-items: center;
            }

            .submit-pick-col--right .btn-primary,
            .submit-pick-col--right .submit-pick-main-btn {
                width: 100%;
                min-height: 36px;
                height: 36px;
                font-size: 0.82rem;
                font-weight: 650;
                padding: 0 10px;
                border-radius: 8px;
                box-shadow: none !important;
            }

            .submit-pick-side-btns {
                display: contents;
            }

            .submit-pick-side-btn {
                width: auto !important;
                min-width: 64px;
                min-height: 36px !important;
                height: 36px !important;
                padding: 0 10px !important;
                font-size: 0.78rem !important;
                font-weight: 600 !important;
                border-radius: 8px !important;
                border-color: #e2e8f0 !important;
                color: #334155 !important;
                background: #fff !important;
            }

            #submitExportWorkBtn {
                display: none !important;
            }

            .submit-date-label {
                font-size: 0.68rem;
            }

            .submit-selected-bar {
                display: flex !important;
                flex-direction: column;
                gap: 0;
                padding: 0;
                min-height: 0;
            }

            .submit-pick-col--mid {
                display: none !important;
            }

            /* 移动端工具按钮已并入工单概览，隐藏芯片区 */
            .submit-selected-chips,
            .submit-selected-chips.is-visible {
                display: none !important;
            }

            .submit-selected-chips__list {
                display: none !important;
            }

            .submit-chips-clear {
                min-height: 28px !important;
                height: 28px !important;
                padding: 0 10px !important;
                font-size: 0.72rem !important;
                border-radius: 7px !important;
                border-color: #e2e8f0 !important;
                color: #475569 !important;
                background: #fff !important;
            }

            /* 未选设备：隐藏工单预览与 PM 作业明细 */
            #view-submit.is-no-device .submit-work-overview,
            #view-submit.is-no-device .submit-detail-card,
            .submit-view.is-no-device .submit-work-overview,
            .submit-view.is-no-device .submit-detail-card {
                display: none !important;
            }

            .submit-view .submit-section-title,
            .submit-view .submit-detail-card__title,
            .submit-view .submit-form-grid__head,
            .submit-view .submit-form-grid__headbar .submit-form-grid__head,
            .submit-view .submit-work-overview__title {
                font-size: var(--submit-sec-title-fs, 0.9rem) !important;
                font-weight: var(--submit-sec-title-w, 700) !important;
                color: var(--submit-sec-title-c, #0f172a) !important;
                letter-spacing: 0 !important;
                line-height: 1.3 !important;
                margin: 0 !important;
                padding: 0 !important;
                border: 0 !important;
                background: transparent !important;
            }

            /* 工单预览：与明细/提交信息同壳 */
            .submit-work-overview {
                display: block !important;
                width: 100%;
                margin: 0;
                padding: 0 0 10px !important;
            }

            .submit-work-overview.is-empty {
                padding-bottom: 10px !important;
            }

            .submit-work-overview__bar {
                align-items: center;
            }

            .submit-work-overview__tools .submit-chips-clear {
                min-height: 28px !important;
                height: 28px !important;
                padding: 0 10px !important;
                font-size: 0.72rem !important;
            }

            .submit-work-overview__name {
                font-size: 0.88rem !important;
                font-weight: 750 !important;
                color: #0f172a !important;
                line-height: 1.2 !important;
            }

            .submit-work-overview__code {
                font-size: 0.68rem !important;
                color: #64748b !important;
                flex: 1 1 100%;
            }

            .submit-work-overview__scale {
                color: #0f766e !important;
                font-size: 0.68rem !important;
                font-weight: 650 !important;
            }

            .submit-work-overview__freq,
            .submit-work-overview__due-tag,
            .submit-work-overview__due-tag.is-warn,
            .submit-work-overview__due-tag.is-late {
                min-height: 18px !important;
                padding: 0 6px !important;
                font-size: 0.62rem !important;
                border-radius: 999px !important;
                box-shadow: none !important;
            }

            .submit-work-overview__freq {
                background: #f1f5f9 !important;
                border: 1px solid #e2e8f0 !important;
                color: #475569 !important;
            }

            .submit-work-overview__due-tag {
                background: #ecfdf5 !important;
                border: 1px solid #a7f3d0 !important;
                color: #047857 !important;
            }

            .submit-work-overview__due-tag.is-warn {
                background: #fff7ed !important;
                border-color: #fed7aa !important;
                color: #c2410c !important;
            }

            .submit-work-overview__due-tag.is-late {
                background: #fef2f2 !important;
                border-color: #fecaca !important;
                color: #b91c1c !important;
            }

            .submit-selected-empty {
                min-height: 0;
                margin-top: 2px;
                padding: 4px 0 0;
                border: 0;
                background: transparent;
                justify-content: flex-start;
                font-size: 0.72rem;
            }

            .submit-metric {
                padding: 6px 8px;
                border-radius: 8px;
            }

            .submit-detail-card {
                flex: 0 0 auto !important;
                min-height: 0;
                height: auto !important;
                max-height: none !important;
                overflow: hidden !important;
            }

            .submit-detail-card__head {
                flex-wrap: wrap;
                align-items: center;
            }

            .submit-pick-col--mid {
                display: none !important;
            }

            .submit-selected-bar {
                gap: 0 !important;
                padding: 0 !important;
                border: 0 !important;
                background: transparent !important;
                min-height: 0 !important;
            }

            .submit-selected-chips.is-visible {
                display: none !important;
            }

            #submitDetailMeta {
                display: none !important;
            }

            .submit-detail-tools:not([hidden]) {
                display: inline-flex;
                gap: 4px;
                padding: 2px;
                background: #f1f5f9;
                border-radius: 8px;
            }

            .submit-detail-tools .btn {
                min-height: 32px;
                height: 32px;
                padding: 0 10px;
                font-size: 0.72rem !important;
                font-weight: 650;
                border: 0;
                background: transparent;
                color: #64748b;
                border-radius: 6px;
                box-shadow: none;
            }

            .submit-detail-tools .btn:active {
                background: #fff;
                color: #0f766e;
            }

            .submit-detail-wrap {
                /* 内容跟整页一起滚，不再内部锁死 */
                flex: 0 0 auto !important;
                min-height: 0;
                height: auto !important;
                max-height: none !important;
                overflow: visible !important;
                background: #fff;
                padding: 0 12px 12px;
                border: 0 !important;
            }

            .submit-detail-block {
                padding: 0;
                border-bottom: 0 !important;
            }

            .submit-detail-block__head {
                display: none !important;
            }

            .submit-detail-block__line {
                flex: 0 0 auto;
                font-size: 0.7rem;
                font-weight: 750;
                color: #0f172a;
            }

            .submit-detail-block__station {
                flex: 1 1 auto;
                min-width: 0;
                font-size: 0.66rem;
                color: #475569;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .submit-detail-block__freq,
            .submit-detail-block__match,
            .submit-detail-block__due {
                flex: 0 0 auto;
                min-height: 18px;
                padding: 0 6px;
                font-size: 0.56rem;
            }

            .submit-detail-table-scroll {
                display: block !important;
                max-height: min(58vh, 520px);
                border-left: 0;
                border-right: 0;
                border-radius: 0;
            }

            .submit-detail-cards {
                display: none !important;
            }

            .submit-detail-table {
                font-size: 0.72rem;
                --submit-col-status-w: 68px;
                --submit-col-content-w: calc(100cqw - var(--submit-col-status-w) - 2px);
            }

            .submit-detail-table .col-content {
                width: var(--submit-col-content-w);
                min-width: var(--submit-col-content-w);
                max-width: var(--submit-col-content-w);
            }

            .submit-detail-table th.col-status,
            .submit-detail-table td.status-cell {
                width: var(--submit-col-status-w);
                min-width: var(--submit-col-status-w);
                max-width: var(--submit-col-status-w);
                padding: 2px 2px;
            }

            .submit-detail-table .submit-status-select {
                width: 100%;
                min-width: 0;
                min-height: 28px;
                height: 28px;
                padding: 0 1px;
                font-size: 0.66rem;
                border-radius: 5px;
            }

            /* 移动端：设备块折叠时仍可看表（仅收起头下内容由 is-collapsed 控制） */
            .submit-detail-block.is-collapsed .submit-detail-cards {
                display: none !important;
            }

            /* 明细卡片：浅边框，避免与区块分割线叠成“梯子” */
            .submit-detail-item {
                width: 100%;
                max-width: none;
                box-sizing: border-box;
                padding: 0;
                gap: 0;
                border-radius: 10px;
                border: 1px solid #e8eef5;
                box-shadow: none;
                background: #fff;
                overflow: hidden;
            }

            .submit-detail-item.is-gap {
                background: #fff;
                border-color: #e8eef5;
            }

            .submit-detail-item:not(.is-collapsed) {
                border-color: #e8eef5;
                box-shadow: none;
                background: #fff;
            }

            .submit-detail-item:not(.is-collapsed) .submit-detail-item__head {
                background: #fff;
                border-bottom: 1px solid #f1f5f9;
            }

            .submit-detail-item__head {
                width: 100%;
                box-sizing: border-box;
                align-items: center;
                gap: 0;
                min-height: 48px;
            }

            .submit-detail-item__toggle {
                flex: 1 1 auto;
                min-width: 0;
                padding: 9px 6px 9px 10px;
                gap: 6px;
                align-items: flex-start;
            }

            .submit-detail-item__head-main {
                flex: 1 1 auto;
                min-width: 0;
                gap: 3px;
            }

            .submit-detail-item__top {
                display: flex;
                flex-direction: row;
                flex-wrap: nowrap;
                align-items: center;
                gap: 6px;
                width: 100%;
                min-width: 0;
            }

            .submit-detail-item__idx {
                flex: 0 0 auto;
                min-width: 1.35em;
                height: 1.35em;
                padding: 0 4px;
                border-radius: 999px;
                background: #f1f5f9;
                color: #64748b;
                font-size: 0.58rem;
                font-weight: 800;
                line-height: 1.35em;
                text-align: center;
            }

            .submit-detail-item:not(.is-collapsed) .submit-detail-item__idx {
                background: #e2e8f0;
                color: #334155;
            }

            .submit-detail-item__code {
                flex: 1 1 auto;
                width: auto;
                min-width: 0;
                font-size: 0.7rem;
                font-weight: 750;
                line-height: 1.25;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                color: #0f172a;
            }

            .submit-detail-item__badges {
                display: inline-flex;
                flex: 0 0 auto;
                flex-wrap: nowrap;
                max-width: none;
                gap: 3px;
                min-width: 0;
            }

            .submit-detail-item__badge {
                min-height: 16px;
                padding: 0 4px;
                font-size: 0.54rem;
                border-radius: 3px;
                max-width: 9.5em;
                background: #f8fafc;
                border: 1px solid #e2e8f0;
                color: #64748b;
            }

            .submit-detail-item__chevron {
                display: none !important;
            }

            .submit-detail-item__preview {
                font-size: 0.62rem;
                line-height: 1.3;
                max-width: 100%;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
                display: block;
                color: #64748b;
            }

            .submit-detail-item.is-collapsed .submit-detail-item__preview {
                display: block;
            }

            .submit-detail-item:not(.is-collapsed) .submit-detail-item__preview {
                display: none;
            }

            .submit-detail-item__head-status {
                display: flex;
                align-items: center;
                align-self: center;
                width: 76px;
                min-width: 76px;
                max-width: 76px;
                flex: 0 0 76px;
                padding: 6px 10px 6px 2px;
                box-sizing: border-box;
                background: transparent;
            }

            .submit-detail-item__head-status .submit-status-select {
                width: 100%;
                min-width: 0;
                min-height: 32px;
                height: 32px;
                font-size: 0.68rem;
                padding: 0 2px;
                border-radius: 6px;
            }

            .submit-detail-item__panel {
                padding: 8px 10px 10px;
                margin: 0;
                gap: 6px;
                border-radius: 0;
                width: 100%;
                box-sizing: border-box;
                background: #fff;
                border: 0;
                display: flex;
                flex-direction: column;
            }

            .submit-detail-item.is-collapsed .submit-detail-item__panel {
                display: none !important;
            }

            .submit-detail-item:not(.is-collapsed) .submit-detail-item__panel {
                display: flex !important;
            }

            .submit-detail-item__mods {
                display: flex;
                flex-direction: column;
                gap: 6px;
            }

            .submit-detail-item__mod {
                padding: 8px 10px;
                border-radius: 8px;
                border: 1px solid #e2e8f0;
                background: #fff;
            }

            .submit-detail-item__mod.is-content {
                background: #fff;
                border-color: #e2e8f0;
            }

            .submit-detail-item__mod.is-meta {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 6px 8px;
                padding: 8px 10px;
                background: #fff;
            }

            .submit-detail-item__mod.is-meta.is-single {
                grid-template-columns: 1fr;
            }

            .submit-detail-item__label {
                font-size: 0.58rem;
                color: #64748b;
                font-weight: 700;
                letter-spacing: 0.04em;
                margin-bottom: 4px;
            }

            .submit-detail-item__body .submit-detail-item__content,
            .submit-detail-item__content {
                font-size: 0.72rem;
                line-height: 1.45;
                font-weight: 550;
                color: #0f172a;
                white-space: pre-wrap;
                word-break: break-word;
            }

            .submit-detail-item__meta-chip {
                display: flex;
                flex-direction: column;
                gap: 2px;
                min-width: 0;
                padding: 0;
                border: 0;
                background: transparent;
                border-radius: 0;
                font-size: 0.72rem;
                line-height: 1.35;
                color: #334155;
            }

            .submit-detail-item__meta-chip em {
                display: block;
                font-style: normal;
                font-size: 0.56rem;
                font-weight: 700;
                color: #94a3b8;
                letter-spacing: 0.03em;
                margin: 0;
            }

            .submit-detail-item__body,
            .submit-detail-item__meta-row {
                display: none;
            }

            .submit-detail-item__kv {
                display: none;
            }

            .submit-detail-item__status {
                display: none;
            }

            .submit-form-grid {
                display: grid;
                gap: 12px 12px;
                grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
                padding: 0 var(--submit-sec-pad-x, 12px) 14px;
                flex: 0 0 auto;
            }

            .submit-form-grid__head {
                grid-column: auto;
            }

            .submit-form-grid__headbar {
                grid-column: 1 / -1;
                margin-left: calc(-1 * var(--submit-sec-pad-x, 12px)) !important;
                margin-right: calc(-1 * var(--submit-sec-pad-x, 12px)) !important;
                flex-wrap: nowrap;
                align-items: center;
            }

            .submit-form-grid__head-wrap {
                gap: 8px;
                min-width: 0;
                flex: 1 1 auto;
                width: auto;
            }

            .submit-form-grid__headbar .submit-form-grid__head {
                font-size: 0.9rem;
                font-weight: 750;
                color: #0f172a;
                letter-spacing: 0;
                line-height: 1.3;
            }

            .submit-form-grid__photo-hint {
                display: none !important;
            }

            .submit-photos__hint {
                display: block;
                margin: 0 0 2px;
                font-size: 0.64rem;
                line-height: 1.35;
            }

            .submit-operator-chip {
                flex: 0 1 auto;
                margin-left: auto;
                max-width: min(58%, 200px);
                width: auto;
                height: 28px;
                padding: 0 8px 0 6px;
                border: 1px solid #e2e8f0;
                border-radius: 999px;
                background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
                box-shadow: 0 1px 0 rgba(15, 23, 42, 0.04);
                align-items: center;
                justify-content: flex-start;
                gap: 4px;
                white-space: nowrap;
                box-sizing: border-box;
            }

            .submit-operator-chip__ico {
                width: 14px;
                height: 14px;
            }

            .submit-operator-chip__k {
                font-size: 0.64rem !important;
                font-weight: 650 !important;
                color: #94a3b8 !important;
                line-height: 1;
            }

            .submit-operator-chip__sep {
                display: none !important;
            }

            .submit-operator-chip__v,
            .submit-operator-chip input.submit-operator-chip__v {
                height: auto !important;
                min-height: 0 !important;
                max-height: none !important;
                margin: 0 !important;
                padding: 0 !important;
                max-width: 7em !important;
                font-size: 0.74rem !important;
                font-weight: 700 !important;
                color: #0f172a !important;
                text-align: left;
                line-height: 1.15;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .submit-operator-chip__v:read-only {
                color: #0f172a !important;
            }

            .submit-form-grid .submit-workshop-select.is-signed {
                border-color: #99f6e4 !important;
                background: #ecfdf5 !important;
                color: #0f766e !important;
                font-weight: 700;
            }

            .submit-form-grid .submit-field--remark,
            .submit-form-grid .submit-field--workshop,
            .submit-form-grid .submit-field--workshop-sign,
            .submit-form-grid .submit-field--result,
            .submit-form-grid .submit-field--sign,
            .submit-form-grid.is-workshop-sign .submit-field--remark {
                grid-column: auto;
                min-width: 0;
                align-items: stretch;
            }

            .submit-form-grid .submit-remark-btn,
            .submit-form-grid .submit-sign-btn,
            .submit-view .submit-form-grid .btn.submit-remark-btn,
            .submit-view .submit-form-grid .btn.submit-sign-btn,
            .submit-form-grid .submit-field--remark #submitRemarkBtn {
                display: flex !important;
                width: 100% !important;
                max-width: none !important;
                min-width: 0 !important;
                height: var(--submit-ctrl-h, 36px) !important;
                min-height: var(--submit-ctrl-h, 36px) !important;
                max-height: var(--submit-ctrl-h, 36px) !important;
                padding: 0 10px !important;
                border-radius: var(--submit-ctrl-radius, 10px) !important;
                justify-content: center;
                text-align: center;
                color: #334155 !important;
                background: #fff !important;
                border: 1px solid var(--submit-ctrl-border, #e2e8f0) !important;
                box-shadow: none !important;
                align-self: stretch !important;
            }

            .submit-form-grid .submit-remark-btn.has-remark,
            .submit-form-grid .submit-sign-btn.is-signed {
                border-color: #99f6e4 !important;
                background: #ecfdf5 !important;
                color: #0f766e !important;
            }

            .submit-form-grid .submit-field {
                gap: 5px;
                padding: 0;
                min-width: 0;
            }

            .submit-form-grid .submit-field label {
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .submit-form-grid .submit-field input:read-only {
                background: #f8fafc;
                color: #334155;
            }

            .submit-form-grid .submit-field select {
                appearance: none;
                background-image: linear-gradient(45deg, transparent 50%, #94a3b8 50%), linear-gradient(135deg, #94a3b8 50%, transparent 50%);
                background-position: calc(100% - 14px) calc(50% - 2px), calc(100% - 10px) calc(50% - 2px);
                background-size: 4px 4px, 4px 4px;
                background-repeat: no-repeat;
                background-color: #fff;
                padding-right: 24px;
            }

            .submit-form-grid .submit-field select.submit-result-select,
            .submit-form-grid .submit-field select.submit-result-select.is-ok,
            .submit-form-grid .submit-field select.submit-result-select.is-warn,
            .submit-form-grid .submit-field select.submit-result-select.is-partial,
            .submit-form-grid .submit-field select.submit-result-select.is-critical,
            .submit-form-grid .submit-field select.submit-result-select.is-fail {
                font-size: var(--submit-fs-body);
                font-weight: 700;
                background-image: linear-gradient(45deg, transparent 50%, currentColor 50%), linear-gradient(135deg, currentColor 50%, transparent 50%);
                background-position: calc(100% - 14px) calc(50% - 2px), calc(100% - 10px) calc(50% - 2px);
                background-size: 4px 4px, 4px 4px;
                background-repeat: no-repeat;
            }

            .submit-form-grid .submit-field select.submit-result-select.is-ok {
                background-color: #ecfdf5 !important;
                border-color: #6ee7b7 !important;
                color: #047857 !important;
            }

            .submit-form-grid .submit-field select.submit-result-select.is-warn {
                background-color: #fffbeb !important;
                border-color: #fcd34d !important;
                color: #b45309 !important;
            }

            .submit-form-grid .submit-field select.submit-result-select.is-partial {
                background-color: #eff6ff !important;
                border-color: #93c5fd !important;
                color: #1d4ed8 !important;
            }

            .submit-form-grid .submit-field select.submit-result-select.is-critical,
            .submit-form-grid .submit-field select.submit-result-select.is-fail {
                background-color: #fef2f2 !important;
                border-color: #fca5a5 !important;
                color: #b91c1c !important;
            }

            .submit-form-grid .submit-field select.submit-result-select.is-fail {
                background-color: #fff7ed !important;
                border-color: #fdba74 !important;
                color: #c2410c !important;
            }

            .submit-form-grid .submit-field--started input[type="datetime-local"],
            .submit-form-grid .submit-field--finished input[type="datetime-local"],
            .submit-form-grid .submit-field input[type="datetime-local"] {
                min-height: var(--submit-ctrl-h);
                height: var(--submit-ctrl-h);
                font-size: var(--submit-fs-body);
                font-weight: 600;
                padding: 0 8px;
                color: #0f172a;
                color-scheme: light;
            }

            .submit-datetime-face {
                font-size: var(--submit-fs-body) !important;
                font-weight: 600 !important;
            }

            .submit-form-grid .submit-sign-btn {
                color: #334155;
                justify-content: center;
            }

            .submit-form-grid .submit-sign-btn.is-signed {
                border-color: #99f6e4 !important;
                background: #ecfdf5 !important;
                color: #0f766e !important;
            }

            .submit-form-grid .submit-sign-btn:disabled {
                color: #94a3b8;
                background: #f1f5f9 !important;
            }

            .submit-actions-sticky {
                position: fixed;
                left: 0;
                right: 0;
                bottom: calc(var(--mobile-nav-h, 58px) + env(safe-area-inset-bottom, 0px));
                z-index: 760;
                margin: 0;
                padding: 8px 12px;
                min-height: var(--submit-sticky-h, 56px);
                box-sizing: border-box;
                background: #fff;
                border-top: 1px solid #e2e8f0;
                box-shadow: none;
                backdrop-filter: none;
                -webkit-backdrop-filter: none;
            }

            .submit-actions-sticky .btn {
                width: 100%;
                min-width: 0 !important;
                min-height: 38px !important;
                height: 38px;
                font-size: 0.88rem;
                font-weight: 650;
                border-radius: 8px;
                box-shadow: none !important;
                padding: 0 12px !important;
            }

            .submit-actions-row {
                margin: 0;
            }

            .container:not(.is-submit) .submit-actions-sticky {
                position: static;
                box-shadow: none;
                border: 0;
                background: transparent;
                padding: 0;
            }

            .container.is-submit .submit-actions-sticky {
                position: fixed;
            }

            .container.is-submit #view-submit.is-active {
                overflow: hidden;
                min-height: 0;
            }

            .container.is-submit #view-submit .submit-view {
                flex: 1 1 auto;
                min-height: 0;
                height: auto;
                max-height: 100%;
                overflow: hidden;
            }

            .container.is-submit #view-submit .submit-view__scroll {
                overflow-x: hidden;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
                touch-action: pan-y;
            }

            .container.is-submit .app-main {
                padding-bottom: calc(var(--mobile-nav-h, 58px) + env(safe-area-inset-bottom, 0px));
            }

            /* 作业提交：三区标题/卡片外壳统一（变量继承） */
            .submit-view {
                --submit-sec-pad-x: 12px;
                --submit-sec-pad-y: 10px;
                --submit-sec-head-min-h: 42px;
                --submit-sec-r: 12px;
            }

            .submit-view .submit-section-title,
            .submit-view .submit-work-overview__title,
            .submit-view .submit-detail-card__title,
            .submit-view .submit-form-grid__head,
            .submit-view .submit-form-grid__headbar .submit-form-grid__head {
                font-size: var(--submit-sec-title-fs, 0.9rem) !important;
                font-weight: var(--submit-sec-title-w, 700) !important;
                color: var(--submit-sec-title-c, #0f172a) !important;
                letter-spacing: 0 !important;
                line-height: 1.3 !important;
            }

            .submit-view .submit-makeup-bar__title,
            .submit-view .submit-date-label {
                font-size: var(--submit-fs-title) !important;
                font-weight: 700 !important;
                color: var(--submit-c-title) !important;
                letter-spacing: 0 !important;
                line-height: 1.3 !important;
            }

            .submit-view .submit-meta,
            .submit-view .submit-makeup-bar__hint,
            .submit-view .submit-selected-empty,
            .submit-view .submit-work-overview__k,
            .submit-view .submit-metric__k,
            .submit-view .submit-metric__s {
                font-size: var(--submit-fs-meta) !important;
                font-weight: 600 !important;
                color: var(--submit-c-meta) !important;
                line-height: 1.35 !important;
            }

            .submit-view .submit-detail-tools .btn {
                font-size: 0.72rem !important;
                font-weight: 650 !important;
                min-height: 32px !important;
                height: 32px !important;
                color: #64748b !important;
            }

            .submit-view .submit-form-grid .submit-field label,
            .submit-view .submit-makeup-field label,
            .submit-view .submit-operator-chip__k {
                font-size: var(--submit-fs-label) !important;
                font-weight: 600 !important;
                color: var(--submit-c-label) !important;
                letter-spacing: 0 !important;
                line-height: 1.3 !important;
            }

            .submit-view .submit-operator-chip__v,
            .submit-view .submit-operator-chip input.submit-operator-chip__v {
                font-size: 0.74rem !important;
                font-weight: 700 !important;
                color: #0f172a !important;
                letter-spacing: 0 !important;
                line-height: 1.15 !important;
            }

            .submit-view .submit-form-grid .submit-field input,
            .submit-view .submit-form-grid .submit-field select,
            .submit-view .submit-form-grid .submit-sign-btn,
            .submit-view .submit-form-grid .submit-remark-btn,
            .submit-view .submit-photo-btn,
            .submit-view .submit-form-grid .submit-field input[type="datetime-local"],
            .submit-view .submit-form-grid .submit-field--started input[type="datetime-local"],
            .submit-view .submit-form-grid .submit-field--finished input[type="datetime-local"],
            .submit-view .submit-form-grid .submit-field select.submit-result-select,
            .submit-view .submit-form-grid .submit-field select.submit-result-select.is-ok,
            .submit-view .submit-form-grid .submit-field select.submit-result-select.is-warn,
            .submit-view .submit-form-grid .submit-field select.submit-result-select.is-partial,
            .submit-view .submit-form-grid .submit-field select.submit-result-select.is-critical,
            .submit-view .submit-form-grid .submit-field select.submit-result-select.is-fail,
            .submit-view .submit-work-overview__v,
            .submit-view .submit-metric__v {
                font-size: var(--submit-fs-body) !important;
                font-weight: 600 !important;
                line-height: 1.35 !important;
            }

            .submit-view .submit-form-grid .submit-field input,
            .submit-view .submit-form-grid .submit-field select,
            .submit-view .submit-form-grid .submit-sign-btn,
            .submit-view .submit-form-grid .submit-remark-btn,
            .submit-view .submit-photo-btn {
                color: var(--submit-c-body);
            }

            .submit-view .submit-photos__count {
                font-size: var(--submit-fs-meta) !important;
                color: var(--submit-c-meta) !important;
            }

            .submit-view .submit-form-grid__photo-hint {
                font-size: 0.58rem !important;
                font-weight: 600 !important;
                line-height: 1.25 !important;
            }

            .submit-view .submit-pick-main-btn,
            .submit-view .submit-pick-col--right .btn,
            .submit-view .submit-pick-side-btns .btn,
            .submit-view .submit-actions-sticky .btn {
                font-size: var(--submit-fs-btn) !important;
                font-weight: 650 !important;
            }

            .submit-view .submit-operator-chip {
                height: 28px;
                padding: 0 8px 0 6px;
            }

            /* PM 作业明细：内容字号略小，标题与另两区统一 */
            .submit-view .submit-detail-card {
                --submit-detail-fs-title: 0.9rem;
                --submit-detail-fs-body: 0.72rem;
                --submit-detail-fs-meta: 0.64rem;
            }

            .submit-view .submit-detail-card__title {
                font-size: var(--submit-sec-title-fs, 0.9rem) !important;
                font-weight: var(--submit-sec-title-w, 700) !important;
                color: var(--submit-sec-title-c, #0f172a) !important;
                line-height: 1.3 !important;
            }

            .submit-view .submit-detail-card .submit-meta,
            .submit-view .submit-detail-card .submit-detail-item__label,
            .submit-view .submit-detail-card .submit-detail-tools .btn,
            .submit-view .submit-detail-card .submit-detail-item__badge,
            .submit-view .submit-detail-card .submit-detail-item__meta-chip em,
            .submit-view .submit-detail-card .submit-detail-item__meta-chip span {
                font-size: var(--submit-detail-fs-meta) !important;
                font-weight: 600 !important;
                line-height: 1.35 !important;
            }

            .submit-view .submit-detail-card .submit-detail-item__code,
            .submit-view .submit-detail-card .submit-detail-item__preview,
            .submit-view .submit-detail-card .submit-detail-item__content,
            .submit-view .submit-detail-card .submit-status-select,
            .submit-view .submit-detail-card .submit-detail-item__idx,
            .submit-view .submit-detail-card .submit-detail-block__line,
            .submit-view .submit-detail-card .submit-detail-block__station,
            .submit-view .submit-detail-card .submit-detail-block__freq,
            .submit-view .submit-detail-card .submit-detail-block__match {
                font-size: var(--submit-detail-fs-body) !important;
                font-weight: 600 !important;
                line-height: 1.35 !important;
            }

            .export-modal {
                padding: 0;
                align-items: flex-end;
            }

            .submit-sign-panel .sign-modal-foot,
            #signModal .sign-modal-foot {
                padding: 10px 10px 12px !important;
                gap: 5px !important;
            }

            #signModal .sign-modal-foot .btn {
                min-width: 0 !important;
                padding: 0 4px !important;
                font-size: 0.78rem !important;
            }

            .jobs-detail-panel .jobs-detail-meta {
                grid-template-columns: 1fr 1fr;
            }

            .jobs-detail-panel .jobs-detail-result-wrap {
                min-height: min(38vh, 320px);
                padding: 6px;
            }

            .jobs-detail-card__top {
                gap: 6px;
            }

            .jobs-detail-card__status {
                margin-left: 0;
                width: 100%;
                text-align: center;
                justify-content: center;
            }

            .submit-pick-panel {
                width: calc(100vw - 16px);
                max-height: calc(100dvh - 16px);
            }

            .submit-pick-panel .export-modal__head {
                padding: 10px 12px 6px;
            }

            .submit-pick-panel .export-modal__meta {
                display: none;
            }

            .submit-pick-panel .export-modal__body {
                gap: 6px;
                padding-top: 6px;
            }

            .submit-pick-tools {
                display: flex;
                flex-wrap: nowrap;
                gap: 6px;
                align-items: center;
            }

            .submit-pick-tools .btn {
                flex: 0 1 auto;
                min-height: 32px;
                height: 32px;
                font-size: 0.74rem;
                padding: 0 8px;
                border-radius: 8px;
            }

            .submit-pick-tools .submit-meta {
                margin-left: auto;
                font-size: 0.72rem;
                white-space: nowrap;
            }

            .submit-pick-list {
                max-height: none;
            }

            .submit-pick-item {
                min-height: 40px;
                padding: 6px 8px;
                align-items: center;
                font-size: 0.84rem;
            }

            .submit-pick-item input[type="checkbox"] {
                width: 18px;
                height: 18px;
                margin-top: 0;
            }

            .submit-pick-item__title {
                font-size: 0.86rem;
            }

            .submit-line-tabs {
                flex-wrap: nowrap;
                gap: 4px;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                padding-bottom: 2px;
            }

            .submit-line-tab {
                flex: 0 0 auto;
                padding: 4px 8px;
                font-size: 0.72rem;
            }

            .submit-sign-panel .sign-canvas-wrap {
                min-height: 160px;
            }

            #signCanvas {
                width: 100% !important;
                height: auto !important;
                max-height: 38vh;
                touch-action: none;
            }

            #signModal.is-sign-fs {
                align-items: stretch !important;
                padding: 0 !important;
            }

            #signModal.is-sign-fs .export-modal__panel.submit-sign-panel {
                width: 100% !important;
                max-width: 100% !important;
                height: 100% !important;
                max-height: none !important;
                min-height: 100%;
                border-radius: 0 !important;
                margin: 0 !important;
            }

            #signModal.is-sign-fs.is-sign-fs-rotate .export-modal__panel.submit-sign-panel {
                /* 尺寸由 JS important 像素写入 */
                min-height: 0 !important;
            }

            #signModal.is-sign-fs #signCanvas {
                width: 100% !important;
                height: 100% !important;
                max-height: none !important;
            }

            #signModal.is-sign-fs .sign-modal-foot {
                display: flex !important;
                flex-wrap: nowrap !important;
                align-items: center;
                justify-content: stretch;
                gap: 6px;
                grid-template-columns: none;
            }

            #signModal.is-sign-fs .sign-modal-foot .btn {
                flex: 1 1 0;
                min-width: 0;
                width: auto;
                padding: 0 6px;
                min-height: 36px;
                height: 36px;
                font-size: 0.78rem;
                white-space: nowrap;
            }

            #signModal.is-sign-fs .sign-modal-foot .btn-primary {
                grid-column: auto;
                flex: 1.25 1 0;
                margin-left: 0;
            }

            .nav-item.is-priority {
                color: #0f766e;
                background: #f0fdfa;
                box-shadow: inset 3px 0 0 #0f766e;
            }

            .nav-item.is-priority .nav-item__icon {
                color: #fff;
                background: linear-gradient(145deg, #0f766e, #0e7490);
            }
        }

        .submit-toolbar {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            align-items: end;
            margin-bottom: 12px;
        }

        .submit-field {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 120px;
        }

        .submit-field label {
            font-size: 0.78rem;
            font-weight: 600;
            color: #475569;
        }

        .submit-field select,
        .submit-field input,
        .submit-field textarea {
            min-height: 38px;
            border: 1px solid var(--border);
            border-radius: 8px;
            padding: 8px 10px;
            font: inherit;
            background: #fff;
        }

        .submit-field textarea {
            min-height: 64px;
            resize: vertical;
        }

        .submit-sign-panel {
            width: min(640px, calc(100vw - 24px));
        }

        .submit-sign-panel .sign-canvas-wrap {
            border: 1px dashed #cbd5e1;
            border-radius: 8px;
            background: #f8fafc;
            touch-action: none;
            overflow: hidden;
            position: relative;
        }

        .sign-modal-foot {
            display: flex;
            flex-wrap: nowrap;
            gap: 6px;
            align-items: center;
            justify-content: stretch;
            box-sizing: border-box;
            width: 100%;
            max-width: 100%;
            padding: 10px 12px 12px;
            overflow: visible;
        }

        .sign-modal-foot .btn,
        .export-modal__foot.sign-modal-foot .btn,
        #signModal .sign-modal-foot .btn {
            flex: 1 1 0 !important;
            min-width: 0 !important;
            width: auto !important;
            max-width: none;
            height: 36px;
            padding: 0 6px !important;
            border-radius: 8px;
            font-size: 0.8rem;
            font-weight: 600;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        #signModal .sign-modal-foot .btn-primary {
            flex: 1.15 1 0 !important;
        }

        .sign-fs-hint {
            position: absolute;
            left: 10px;
            bottom: 8px;
            right: 10px;
            pointer-events: none;
            font-size: 0.72rem;
            font-weight: 600;
            color: #64748b;
            text-align: center;
            opacity: 0.85;
        }

        /* 全屏横屏签字 */
        html.sign-fs-open,
        body.sign-fs-open {
            overflow: hidden !important;
        }

        #signModal.is-sign-fs {
            padding: 0 !important;
            align-items: stretch !important;
            justify-content: stretch !important;
            background: #fff;
            z-index: 1200;
            inset: 0;
            width: 100% !important;
            height: 100% !important;
            max-height: none !important;
        }

        #signModal.is-sign-fs .submit-sign-panel {
            width: 100% !important;
            max-width: none !important;
            height: 100% !important;
            max-height: none !important;
            min-height: 100%;
            margin: 0 !important;
            border-radius: 0 !important;
            display: flex;
            flex-direction: column;
            background: #fff;
            box-sizing: border-box;
        }

        /* 竖屏视口强制横屏：具体宽高/位移由 JS 按 innerWidth/innerHeight 像素写入，避免半屏黑边 */
        #signModal.is-sign-fs.is-sign-fs-rotate .submit-sign-panel {
            position: fixed !important;
            min-height: 0 !important;
            max-height: none !important;
            margin: 0 !important;
            border-radius: 0 !important;
            box-sizing: border-box !important;
            background: #fff !important;
        }

        #signModal.is-sign-fs .export-modal__head {
            flex: 0 0 auto;
            padding: 6px 12px 4px;
        }

        #signModal.is-sign-fs .export-modal__meta {
            font-size: 0.72rem;
            line-height: 1.25;
        }

        #signModal.is-sign-fs.is-sign-fs-rotate .export-modal__head {
            padding: 6px 12px;
        }

        #signModal.is-sign-fs .export-modal__body {
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
            padding: 6px 10px;
        }

        #signModal.is-sign-fs .sign-canvas-wrap {
            flex: 1 1 auto;
            min-height: 0;
            height: 100%;
            border-radius: 10px;
            border: 1px solid #cbd5e1;
            background: #fff;
            display: flex;
            align-items: stretch;
            justify-content: stretch;
        }

        #signModal.is-sign-fs #signCanvas {
            width: 100% !important;
            height: 100% !important;
            max-height: none !important;
        }

        #signModal.is-sign-fs .export-modal__foot,
        #signModal.is-sign-fs .sign-modal-foot {
            display: flex !important;
            flex-wrap: nowrap !important;
            align-items: center;
            justify-content: stretch;
            flex: 0 0 auto;
            padding: 6px 10px calc(6px + env(safe-area-inset-bottom, 0px));
            gap: 6px;
            background: #f8fafc;
            border-top: 1px solid #e2e8f0;
        }

        #signModal.is-sign-fs .sign-modal-foot .btn {
            flex: 1 1 0;
            min-width: 0;
            min-height: 36px;
            height: 36px;
            padding: 0 8px;
            border-radius: 8px;
            font-size: 0.8rem;
            font-weight: 600;
            white-space: nowrap;
        }

        #signModal.is-sign-fs .sign-modal-foot .btn-primary {
            flex: 1.2 1 0;
        }

        #signModal.is-sign-fs.is-sign-fs-rotate .sign-modal-foot {
            flex-wrap: nowrap !important;
            padding: 6px 10px;
        }

        @media (orientation: landscape) {
            #signModal.is-sign-fs:not(.is-sign-fs-rotate) .export-modal__head {
                padding: 6px 12px;
            }
            #signModal.is-sign-fs:not(.is-sign-fs-rotate) .export-modal__meta {
                display: none;
            }
            #signModal.is-sign-fs:not(.is-sign-fs-rotate) .sign-fs-hint {
                display: none;
            }
            #signModal.is-sign-fs:not(.is-sign-fs-rotate) .sign-modal-foot {
                flex-wrap: nowrap;
                padding: 8px 12px;
            }
        }

        .submit-actions-row {
            display: flex;
            flex-wrap: wrap;
            justify-content: center;
            gap: 8px;
            margin: 0;
            flex-shrink: 0;
        }

        .submit-actions-row .btn {
            min-width: min(320px, 70%);
            padding-left: 28px;
            padding-right: 28px;
            min-height: 42px;
        }

        .submit-pick-panel {
            width: min(720px, calc(100vw - 24px));
            max-height: min(86vh, 760px);
            display: flex;
            flex-direction: column;
        }

        .submit-pick-panel .export-modal__body {
            overflow: hidden;
            display: flex;
            flex-direction: column;
            gap: 10px;
            flex: 1;
            min-height: 0;
        }

        /* PM作业查看 / 评审详情：加宽加高，给明细表更多空间 */
        .jobs-detail-panel {
            width: min(98vw, 1770px);
            height: min(92vh, 900px);
            max-height: min(92vh, 900px);
            display: flex;
            flex-direction: column;
        }

        .jobs-detail-panel .export-modal__head {
            flex-shrink: 0;
            padding: 14px 18px 10px;
        }

        .jobs-detail-panel .export-modal__body {
            overflow: hidden;
            display: flex;
            flex-direction: column;
            gap: 8px;
            flex: 1;
            min-height: 0;
            padding: 12px 16px 14px;
        }

        .jobs-detail-panel .export-modal__foot {
            flex-shrink: 0;
        }

        .jobs-detail-panel #archivePrintArea {
            display: flex;
            flex-direction: column;
            flex: 1;
            min-height: 0;
            overflow: auto;
        }

        .jobs-detail-panel .jobs-detail-meta {
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 6px;
            margin-bottom: 8px;
            font-size: 0.8rem;
            flex-shrink: 0;
        }

        .jobs-detail-panel .jobs-detail-meta div {
            padding: 6px 8px;
        }

        .jobs-detail-panel .jobs-detail-equip-wrap {
            overflow: auto;
            max-height: min(14vh, 120px);
            margin-bottom: 4px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            flex-shrink: 0;
        }

        .jobs-detail-panel .jobs-detail-equip-wrap .jobs-table th,
        .jobs-detail-panel .jobs-detail-equip-wrap .jobs-table td {
            white-space: nowrap;
            vertical-align: middle;
        }

        .jobs-detail-panel .jobs-detail-section-title {
            display: flex;
            align-items: baseline;
            justify-content: space-between;
            gap: 8px;
            margin: 4px 0 6px;
            font-size: 0.82rem;
            font-weight: 650;
            color: #0f172a;
        }

        .jobs-detail-panel .jobs-detail-section-title span {
            font-size: 0.72rem;
            font-weight: 500;
            color: #64748b;
        }

        .jobs-detail-panel .jobs-detail-result-wrap {
            overflow: auto;
            flex: 1 1 auto;
            min-height: 280px;
            max-height: none;
            margin-bottom: 8px;
            border: 1px solid #e2e8f0;
            border-radius: 10px;
            background: #f1f5f9;
            padding: 8px;
        }

        .jobs-detail-panel .jobs-detail-result-wrap .jobs-table {
            margin: 0;
            table-layout: fixed;
            background: #fff;
            border-radius: 8px;
            overflow: hidden;
        }

        .jobs-detail-panel .jobs-detail-result-wrap .jobs-table th,
        .jobs-detail-panel .jobs-detail-result-wrap .jobs-table td {
            white-space: normal;
            vertical-align: top;
            word-break: break-word;
        }

        .jobs-detail-panel .jobs-detail-result-wrap .print-content-cell {
            white-space: normal;
            word-break: break-word;
            line-height: 1.5;
            color: #1e293b;
        }

        /* 屏幕端：卡片式明细，长内容不再把整行撑乱 */
        .jobs-detail-cards {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .jobs-detail-card {
            background: #fff;
            border: 1px solid #e2e8f0;
            border-radius: 10px;
            padding: 10px 12px;
            box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
        }

        .jobs-detail-card__top {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 6px 10px;
            margin-bottom: 8px;
            padding-bottom: 8px;
            border-bottom: 1px dashed #e2e8f0;
        }

        .jobs-detail-card__idx {
            flex: 0 0 auto;
            min-width: 1.5rem;
            height: 1.5rem;
            border-radius: 999px;
            background: #f1f5f9;
            color: #64748b;
            font-size: 0.7rem;
            font-weight: 650;
            display: inline-grid;
            place-items: center;
        }

        .jobs-detail-card__chip {
            display: inline-flex;
            align-items: center;
            max-width: 100%;
            padding: 3px 8px;
            border-radius: 6px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            color: #334155;
            font-size: 0.74rem;
            line-height: 1.3;
            word-break: break-word;
        }

        .jobs-detail-card__chip strong {
            color: #64748b;
            font-weight: 600;
            margin-right: 4px;
            font-size: 0.68rem;
        }

        .jobs-detail-card__status {
            margin-left: auto;
            flex: 0 0 auto;
            padding: 3px 10px;
            border-radius: 999px;
            font-size: 0.72rem;
            font-weight: 650;
            border: 1px solid transparent;
        }

        .jobs-detail-card__status.is-ok {
            background: #ecfdf5;
            color: #047857;
            border-color: #a7f3d0;
        }

        .jobs-detail-card__status.is-partial {
            background: #eff6ff;
            color: #1d4ed8;
            border-color: #bfdbfe;
        }

        .jobs-detail-card__status.is-bad {
            background: #fef2f2;
            color: #b91c1c;
            border-color: #fecaca;
        }

        .jobs-detail-card__status.is-na {
            background: #f8fafc;
            color: #64748b;
            border-color: #e2e8f0;
        }

        .jobs-detail-card__content {
            font-size: 0.84rem;
            line-height: 1.55;
            color: #0f172a;
            white-space: pre-wrap;
            word-break: break-word;
        }

        .jobs-detail-card__content:empty::before {
            content: '（无保养内容）';
            color: #94a3b8;
        }

        .jobs-detail-card__meta {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            margin-top: 8px;
        }

        .jobs-detail-panel .jobs-sign-preview {
            max-height: 96px;
        }

        .submit-line-tabs {
            display: flex;
            flex-wrap: nowrap;
            gap: 4px;
            overflow-x: auto;
            -webkit-overflow-scrolling: touch;
            scrollbar-width: none;
        }

        .submit-line-tabs::-webkit-scrollbar {
            display: none;
        }

        .submit-line-tab {
            flex: 0 0 auto;
            border: 1px solid var(--border);
            background: #fff;
            color: #334155;
            border-radius: 999px;
            padding: 3px 8px;
            font: inherit;
            font-size: 0.72rem;
            line-height: 1.3;
            cursor: pointer;
        }

        .submit-line-tab.is-active {
            background: #0f766e;
            border-color: #0f766e;
            color: #fff;
        }

        .submit-pick-tools {
            display: flex;
            flex-wrap: nowrap;
            gap: 6px;
            align-items: center;
        }

        .submit-pick-tools .btn {
            flex: 0 1 auto;
            min-height: 28px;
            height: 28px;
            padding: 0 8px;
            font-size: 0.74rem;
            border-radius: 8px;
        }

        .submit-pick-tools .submit-meta {
            margin-left: auto;
            font-size: 0.72rem;
            white-space: nowrap;
        }

        .submit-pick-panel .export-modal__body {
            gap: 6px;
        }

        .submit-pick-list {
            flex: 1;
            min-height: 180px;
            max-height: min(48vh, 420px);
            overflow: auto;
            border: 1px solid var(--border);
            border-radius: 10px;
            background: #f8fafc;
            padding: 6px;
            display: flex;
            flex-direction: column;
            gap: 4px;
        }

        .submit-pick-item {
            display: grid;
            grid-template-columns: auto 1fr auto;
            gap: 8px;
            align-items: center;
            padding: 8px 10px;
            border-radius: 8px;
            background: #fff;
            border: 1px solid transparent;
            font-size: 0.84rem;
            cursor: pointer;
        }

        .submit-pick-item:hover {
            border-color: #99f6e4;
        }

        .submit-pick-item.is-done {
            opacity: 0.55;
            cursor: not-allowed;
        }

        .submit-pick-item__title {
            font-weight: 600;
            color: #0f172a;
            min-width: 0;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .submit-pick-item__tag {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            min-width: 4.5em;
            padding: 2px 8px;
            border-radius: 999px;
            font-size: 0.72rem;
            font-weight: 650;
            line-height: 1.4;
            white-space: nowrap;
            color: #9a3412;
            background: #ffedd5;
        }

        .submit-pick-item__tag.is-pending {
            color: #9a3412;
            background: #fff7ed;
            box-shadow: inset 0 0 0 1px #fdba74;
        }

        .submit-pick-item__tag.is-progress {
            color: #1d4ed8;
            background: #dbeafe;
        }

        .submit-pick-item__tag.is-rework {
            color: #fff;
            background: #ea580c;
        }

        .submit-pick-item__tag.is-makeup {
            color: #fff;
            background: #b45309;
        }

        .submit-pick-item__tag.is-partial {
            color: #92400e;
            background: #fde68a;
        }

        .submit-pick-item__tag.is-done {
            color: #047857;
            background: #d1fae5;
        }

        .submit-pick-item__tag.is-muted {
            color: #475569;
            background: #e2e8f0;
        }

        .submit-pick-item.is-done .submit-pick-item__tag {
            color: #047857;
            background: #d1fae5;
        }

        .sign-box {
            border: 1px solid var(--border);
            border-radius: 10px;
            background: #fff;
            padding: 10px;
            margin-bottom: 12px;
        }

        .sign-box__head {
            display: flex;
            justify-content: space-between;
            align-items: center;
            margin-bottom: 8px;
            font-size: 0.84rem;
            font-weight: 600;
        }

        .sign-canvas-wrap {
            border: 1px dashed #cbd5e1;
            border-radius: 8px;
            background: #f8fafc;
            touch-action: none;
            overflow: hidden;
        }

        #signCanvas {
            display: block;
            width: 100%;
            height: 160px;
            touch-action: none;
            cursor: crosshair;
        }

        /* ========== PM 作业分析 ========== */
        .jobs-view {
            height: 100%;
            overflow: auto;
            padding: 12px 14px 18px;
            box-sizing: border-box;
            background:
                radial-gradient(1200px 420px at 8% -10%, rgba(20, 184, 166, 0.10), transparent 55%),
                radial-gradient(900px 360px at 100% 0%, rgba(14, 165, 233, 0.08), transparent 50%),
                #eef2f6;
        }

        .jobs-head {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            margin-bottom: 12px;
            padding: 10px 14px;
            background: rgba(255, 255, 255, 0.92);
            border: 1px solid #d7e0ea;
            border-radius: 12px;
            box-shadow: 0 1px 0 rgba(255, 255, 255, 0.8) inset, var(--shadow);
            overflow-x: auto;
        }

        .jobs-head__brand {
            min-width: 0;
            flex: 1 1 auto;
        }

        .jobs-head__title {
            font-size: 1.05rem;
            font-weight: 800;
            color: #0f172a;
            letter-spacing: 0.01em;
            line-height: 1.2;
            white-space: nowrap;
        }

        .jobs-head__sub {
            margin-top: 3px;
            font-size: 0.74rem;
            color: #64748b;
            white-space: nowrap;
        }

        .jobs-filters {
            display: flex !important;
            flex-direction: row !important;
            flex-wrap: nowrap !important;
            align-items: center !important;
            gap: 8px !important;
            flex: 0 0 auto;
            margin-left: auto;
        }

        .jobs-filters .jobs-field {
            display: inline-flex !important;
            flex-direction: row !important;
            align-items: center !important;
            gap: 6px !important;
        }

        .jobs-filters label {
            display: inline !important;
            margin: 0 !important;
            font-size: 0.72rem !important;
            color: #475569 !important;
            font-weight: 650 !important;
            white-space: nowrap;
        }

        .jobs-filters select,
        .jobs-filters input {
            display: inline-block !important;
            width: auto !important;
            min-width: 76px;
            max-width: 110px;
            height: 30px !important;
            min-height: 30px !important;
            padding: 2px 8px !important;
            border: 1px solid #94a3b8 !important;
            border-radius: 8px !important;
            font: inherit !important;
            font-size: 0.8rem !important;
            background: #fff !important;
            box-sizing: border-box;
        }

        .jobs-filters select.mine-period-select {
            min-width: 88px;
            max-width: 120px;
            cursor: pointer;
        }

        .jobs-filters .btn {
            width: auto !important;
            height: 30px !important;
            min-height: 30px !important;
            padding: 0 12px !important;
            font-size: 0.78rem !important;
            white-space: nowrap;
            flex: 0 0 auto;
            border-radius: 8px !important;
        }

        .jobs-stat-row,
        .jobs-stat-modules {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 12px;
            margin-bottom: 12px;
            width: 100%;
        }

        #jobsStatRow {
            grid-template-columns: repeat(3, minmax(0, 1fr)) minmax(132px, 168px);
            align-items: stretch;
        }

        .jobs-stat-module {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 14px;
            box-shadow: var(--shadow);
            padding: 12px 12px 12px;
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }

        .jobs-period-box {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 14px;
            box-shadow: var(--shadow);
            padding: 12px 10px;
            min-width: 0;
            display: flex;
            flex-direction: column;
            align-items: stretch;
            justify-content: center;
            gap: 10px;
            box-sizing: border-box;
        }

        .jobs-period-box__label {
            font-size: 0.72rem;
            font-weight: 700;
            color: #64748b;
            text-align: center;
            line-height: 1.35;
            padding: 0 2px;
        }

        .jobs-filters--box {
            display: flex !important;
            flex-direction: column !important;
            flex-wrap: nowrap !important;
            align-items: stretch !important;
            gap: 8px !important;
            margin-left: 0 !important;
            width: 100%;
        }

        .jobs-filters--box .jobs-field {
            display: flex !important;
            flex-direction: column !important;
            align-items: stretch !important;
            gap: 4px !important;
        }

        .jobs-filters--box label {
            font-size: 0.66rem !important;
            color: #94a3b8 !important;
        }

        .jobs-filters--box select,
        .jobs-filters--box input {
            width: 100% !important;
            min-width: 0 !important;
            max-width: none !important;
        }

        .jobs-filters--box .btn {
            width: 100% !important;
        }

        /* 全屏专用标题：平常隐藏，进入全屏后显示平台名称条 */
        .jobs-fs-title {
            display: none;
            align-items: center;
            justify-content: center;
            margin: -14px -16px 14px;
            padding: 14px 20px;
            background: linear-gradient(90deg, #0a5c54 0%, #0f766e 45%, #0e7490 100%);
            border: 0;
            border-radius: 0;
            box-shadow: 0 2px 10px rgba(15, 23, 42, 0.18);
        }

        .jobs-fs-title__main {
            font-size: clamp(1rem, 2.2vw, 1.35rem);
            font-weight: 800;
            color: #fff;
            letter-spacing: 0.06em;
            line-height: 1.35;
            text-align: center;
            text-shadow: 0 1px 2px rgba(0, 0, 0, 0.22);
            white-space: nowrap;
        }

        /* 作业首页全屏：原生 Fullscreen + 不支持时的伪全屏兜底 */
        #view-jobs:fullscreen,
        #view-jobs:-webkit-full-screen,
        #view-jobs.is-jobs-fs {
            background:
                radial-gradient(1200px 420px at 8% -10%, rgba(20, 184, 166, 0.10), transparent 55%),
                radial-gradient(900px 360px at 100% 0%, rgba(14, 165, 233, 0.08), transparent 50%),
                #eef2f6;
            overflow: auto;
            box-sizing: border-box;
            width: 100%;
            height: 100%;
            padding: 14px 16px 20px;
        }

        #view-jobs:fullscreen .jobs-fs-title,
        #view-jobs:-webkit-full-screen .jobs-fs-title,
        #view-jobs.is-jobs-fs .jobs-fs-title {
            display: flex;
        }

        #view-jobs.is-jobs-fs {
            position: fixed;
            inset: 0;
            z-index: 9800;
        }

        body.jobs-fs-active .nav-rail,
        body.jobs-fs-active .app-header,
        body.jobs-fs-active .mobile-tabbar {
            visibility: hidden !important;
            pointer-events: none !important;
        }

        #view-jobs:fullscreen .jobs-view,
        #view-jobs:-webkit-full-screen .jobs-view,
        #view-jobs.is-jobs-fs .jobs-view {
            height: auto;
            min-height: 100%;
            overflow: visible;
            padding: 0;
            background: transparent;
        }

        #view-jobs:fullscreen .jobs-period-box,
        #view-jobs:-webkit-full-screen .jobs-period-box,
        #view-jobs.is-jobs-fs .jobs-period-box {
            box-shadow: 0 8px 24px rgba(15, 23, 42, 0.12);
        }

        #jobsPresentBtn.is-jobs-show-on,
        #jobsPresentBtn[aria-pressed="true"] {
            border-color: #f59e0b;
            color: #b45309;
            background: #fffbeb;
        }

        /* 导出图片时隐藏操作区，并强制显示平台标题条 */
        #view-jobs.is-jobs-exporting .jobs-period-box,
        #view-jobs.is-jobs-exporting .jobs-show-hud {
            display: none !important;
        }

        #view-jobs.is-jobs-exporting .jobs-fs-title,
        #view-jobs.is-jobs-exporting .jobs-fs-title.is-jobs-export-title {
            display: flex !important;
        }

        #view-jobs.is-jobs-exporting #jobsStatRow {
            grid-template-columns: repeat(3, minmax(0, 1fr));
        }

        #view-jobs.is-jobs-show .jobs-auto-scroll.is-auto-scrolling {
            scroll-behavior: auto;
            mask-image: linear-gradient(to bottom, transparent 0%, #000 8%, #000 92%, transparent 100%);
            -webkit-mask-image: linear-gradient(to bottom, transparent 0%, #000 8%, #000 92%, transparent 100%);
        }

        /* 展示两页：数据页 / 作业照片页 */
        .jobs-show-page--photos {
            margin-top: 12px;
        }

        .jobs-view.is-show-page-data .jobs-show-page--photos,
        .jobs-view.is-show-page-photos .jobs-show-page--data {
            display: none !important;
        }

        .jobs-show-page-flash {
            position: fixed;
            inset: 0;
            z-index: 12000;
            display: none;
            align-items: center;
            justify-content: center;
            padding: 24px;
            background:
                radial-gradient(circle at 50% 40%, rgba(20, 184, 166, 0.28), transparent 55%),
                rgba(7, 15, 28, 0.82);
            backdrop-filter: blur(6px);
            -webkit-backdrop-filter: blur(6px);
        }

        .jobs-show-page-flash.is-on,
        .jobs-show-page-flash:not([hidden]) {
            display: flex;
        }

        .jobs-show-page-flash__text {
            font-size: clamp(2.4rem, 9vw, 5.2rem);
            font-weight: 900;
            color: #fff;
            letter-spacing: 0.28em;
            text-indent: 0.28em;
            text-align: center;
            line-height: 1.2;
            text-shadow: 0 8px 28px rgba(0, 0, 0, 0.45);
            animation: jobsShowFlashIn 0.55s ease;
        }

        @keyframes jobsShowFlashIn {
            from {
                opacity: 0;
                transform: scale(0.86) translateY(12px);
            }
            to {
                opacity: 1;
                transform: none;
            }
        }

        #view-jobs.is-jobs-show.is-show-page-photos .jobs-photo-showcase,
        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase {
            min-height: calc(100vh - 48px);
            margin: 0;
            border: 0;
            box-shadow: none;
            background: transparent;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__body {
            padding: 8px 4px 12px !important;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__card {
            min-height: calc(100vh - 88px);
            align-items: stretch;
            grid-template-columns: minmax(0, 1fr) minmax(240px, 280px);
            gap: 16px;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__hero {
            height: min(82vh, 880px);
            flex: 1 1 auto;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__media {
            min-height: 0;
            height: 100%;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__info {
            height: 100%;
            max-width: none;
            width: 100%;
            justify-content: stretch;
            gap: 10px;
            padding: 2px 0;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__badge {
            font-size: 0.8rem;
            padding: 4px 12px;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__title {
            font-size: 1.35rem;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__line {
            font-size: 0.98rem;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__facts {
            display: flex !important;
            flex-direction: column !important;
            grid-template-columns: none !important;
            flex: 1 1 auto;
            min-height: 0;
            gap: 8px;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__facts > div {
            flex: 1 1 0;
            display: flex;
            flex-direction: column;
            justify-content: center;
            padding: 10px 12px;
            min-height: 52px;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__facts span {
            font-size: 0.82rem;
            margin-bottom: 4px;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__facts b {
            font-size: 1.12rem;
            line-height: 1.3;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-photo-showcase__remark {
            font-size: 0.9rem;
            padding: 10px 12px;
        }

        #view-jobs.is-jobs-show .jobs-view.is-show-page-photos .jobs-card__head {
            padding: 8px 10px;
        }

        /* 现场照片随机展示 */
        .jobs-photo-showcase {
            margin-bottom: 12px;
        }

        .jobs-photo-showcase__body {
            padding: 12px 14px 14px !important;
        }

        .jobs-photo-showcase__tip {
            margin-bottom: 10px;
            padding: 8px 12px;
            border-radius: 10px;
            font-size: 0.78rem;
            font-weight: 650;
            line-height: 1.45;
        }

        .jobs-photo-showcase__tip.is-low {
            background: #fffbeb;
            color: #92400e;
            border: 1px solid #fcd34d;
        }

        .jobs-photo-showcase__tip.is-empty {
            background: #f8fafc;
            color: #64748b;
            border: 1px solid #e2e8f0;
        }

        .jobs-photo-showcase__empty {
            min-height: 180px;
            display: flex;
            align-items: center;
            justify-content: center;
            text-align: center;
            color: #94a3b8;
            font-size: 0.86rem;
            padding: 24px 12px;
            background: linear-gradient(180deg, #f8fafc, #f1f5f9);
            border: 1px dashed #cbd5e1;
            border-radius: 12px;
        }

        .jobs-photo-showcase__card {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(240px, 280px);
            gap: 14px;
            align-items: stretch;
            min-height: 280px;
            width: 100%;
        }

        .jobs-photo-showcase__media {
            display: flex;
            flex-direction: column;
            gap: 8px;
            min-width: 0;
            flex: 1 1 auto;
        }

        .jobs-photo-showcase__hero {
            width: 100%;
            height: min(68vh, 700px);
            object-fit: contain;
            object-position: center;
            border-radius: 12px;
            background: #0b1220;
            border: 1px solid #dbe4ee;
            box-shadow: 0 10px 28px rgba(15, 23, 42, 0.12);
        }

        .jobs-photo-showcase__thumbs {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }

        .jobs-photo-showcase__thumb {
            width: 64px;
            height: 48px;
            padding: 0;
            border: 2px solid transparent;
            border-radius: 8px;
            overflow: hidden;
            cursor: pointer;
            background: #e2e8f0;
        }

        .jobs-photo-showcase__thumb img {
            width: 100%;
            height: 100%;
            object-fit: cover;
            display: block;
        }

        .jobs-photo-showcase__thumb.is-on {
            border-color: #0ea5e9;
            box-shadow: 0 0 0 2px rgba(14, 165, 233, 0.2);
        }

        .jobs-photo-showcase__info {
            display: flex;
            flex-direction: column;
            gap: 10px;
            min-width: 0;
            width: 100%;
            padding: 4px 2px;
            justify-self: stretch;
            align-self: stretch;
        }

        .jobs-photo-showcase__badge {
            align-self: flex-start;
            padding: 3px 10px;
            border-radius: 999px;
            background: linear-gradient(135deg, #14b8a6, #0ea5e9);
            color: #fff;
            font-size: 0.72rem;
            font-weight: 800;
            letter-spacing: 0.03em;
            flex: 0 0 auto;
        }

        .jobs-photo-showcase__title {
            font-size: 1.15rem;
            font-weight: 800;
            color: #0f172a;
            line-height: 1.35;
            word-break: break-word;
            flex: 0 0 auto;
        }

        .jobs-photo-showcase__line {
            font-size: 0.86rem;
            color: #64748b;
            font-weight: 650;
            flex: 0 0 auto;
        }

        .jobs-photo-showcase__facts {
            display: flex;
            flex-direction: column;
            gap: 6px;
            flex: 1 1 auto;
            min-height: 0;
        }

        .jobs-photo-showcase__facts > div {
            padding: 8px 10px;
            border-radius: 10px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            flex: 1 1 0;
            display: flex;
            flex-direction: column;
            justify-content: center;
        }

        .jobs-photo-showcase__facts span {
            display: block;
            font-size: 0.68rem;
            color: #94a3b8;
            font-weight: 650;
            margin-bottom: 2px;
        }

        .jobs-photo-showcase__facts b {
            font-size: 0.88rem;
            color: #0f172a;
            font-weight: 750;
        }

        .jobs-photo-showcase__remark {
            font-size: 0.78rem;
            color: #475569;
            line-height: 1.45;
            padding: 8px 10px;
            border-radius: 10px;
            background: #f0fdfa;
            border: 1px solid #99f6e4;
        }

        #view-jobs.is-jobs-show .jobs-photo-showcase.is-jobs-show-focus .jobs-photo-showcase__hero {
            animation: jobsPhotoHeroIn 0.45s ease;
        }

        @keyframes jobsPhotoHeroIn {
            from { opacity: 0.35; transform: scale(0.985); }
            to { opacity: 1; transform: none; }
        }

        @media (max-width: 900px) {
            .jobs-photo-showcase__card {
                grid-template-columns: 1fr;
            }
            .jobs-photo-showcase__hero {
                height: min(48vh, 380px);
            }
        }

        #view-jobs.is-jobs-show .jobs-photo-showcase__hero,
        #view-jobs:fullscreen .jobs-photo-showcase__hero,
        #view-jobs:-webkit-full-screen .jobs-photo-showcase__hero,
        #view-jobs.is-jobs-fs .jobs-photo-showcase__hero {
            height: min(62vh, 640px);
        }

        /* 参观展示：浮动提示条 + 模块高亮轮播 */
        .jobs-show-hud {
            position: sticky;
            top: 8px;
            z-index: 40;
            display: flex;
            align-items: center;
            justify-content: center;
            gap: 12px;
            margin: 0 0 12px;
            padding: 8px 14px;
            border-radius: 999px;
            background: rgba(15, 23, 42, 0.82);
            color: #f8fafc;
            box-shadow: 0 8px 24px rgba(15, 23, 42, 0.22);
            backdrop-filter: blur(8px);
            -webkit-backdrop-filter: blur(8px);
            pointer-events: none;
        }

        .jobs-show-hud[hidden] {
            display: none !important;
        }

        .jobs-show-hud__badge {
            flex: 0 0 auto;
            padding: 2px 8px;
            border-radius: 999px;
            background: linear-gradient(135deg, #14b8a6, #0ea5e9);
            font-size: 0.7rem;
            font-weight: 800;
            letter-spacing: 0.04em;
        }

        .jobs-show-hud__label {
            font-size: 0.92rem;
            font-weight: 700;
            letter-spacing: 0.02em;
        }

        .jobs-show-hud__dots {
            display: inline-flex;
            align-items: center;
            gap: 5px;
        }

        .jobs-show-hud__dots i {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            background: rgba(248, 250, 252, 0.35);
            display: inline-block;
        }

        .jobs-show-hud__dots i.is-on {
            background: #fbbf24;
            box-shadow: 0 0 0 3px rgba(251, 191, 36, 0.25);
        }

        #view-jobs.is-jobs-show .is-jobs-show-focus {
            position: relative;
            z-index: 2;
            outline: 2px solid rgba(14, 165, 233, 0.85);
            outline-offset: 3px;
            box-shadow:
                0 0 0 6px rgba(14, 165, 233, 0.12),
                0 16px 36px rgba(15, 23, 42, 0.16);
            animation: jobsShowPulse 1.6s ease-in-out infinite;
            transition: box-shadow 0.25s ease, outline-color 0.25s ease;
        }

        #view-jobs.is-jobs-show #jobsStatRow.is-jobs-show-focus {
            border-radius: 16px;
        }

        @keyframes jobsShowPulse {
            0%, 100% {
                box-shadow:
                    0 0 0 6px rgba(14, 165, 233, 0.10),
                    0 14px 30px rgba(15, 23, 42, 0.12);
            }
            50% {
                box-shadow:
                    0 0 0 10px rgba(20, 184, 166, 0.16),
                    0 18px 40px rgba(15, 23, 42, 0.18);
            }
        }

        #view-jobs:fullscreen .jobs-show-hud,
        #view-jobs:-webkit-full-screen .jobs-show-hud,
        #view-jobs.is-jobs-fs .jobs-show-hud {
            top: 10px;
        }

        @media (max-width: 900px) {
            .jobs-show-hud {
                flex-wrap: wrap;
                border-radius: 14px;
                gap: 8px;
            }
            .jobs-show-hud__label {
                font-size: 0.82rem;
            }
        }

        .jobs-stat-module__head {
            display: flex;
            align-items: baseline;
            justify-content: space-between;
            gap: 8px;
            padding: 0 2px;
        }

        .jobs-stat-module__title {
            font-size: 0.86rem;
            font-weight: 750;
            color: #0f172a;
        }

        .jobs-stat-module__sub {
            font-size: 0.7rem;
            color: #94a3b8;
            font-weight: 600;
            line-height: 1.35;
            text-align: right;
            white-space: normal;
            min-width: 0;
            max-width: 62%;
        }

        .jobs-stat-module__grid {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 8px;
            flex: 1;
            align-items: stretch;
        }

        .jobs-stat-module .jobs-stat {
            box-shadow: none;
            border-color: #e8eef5;
            background: #f8fafc;
            min-height: 92px;
            height: 100%;
            padding: 12px 12px 12px 16px;
            border-radius: 10px;
        }

        .jobs-stat {
            position: relative;
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            padding: 14px 16px 14px 18px;
            box-shadow: var(--shadow);
            min-width: 0;
            width: 100%;
            overflow: hidden;
            display: flex;
            flex-direction: column;
            justify-content: center;
            min-height: 72px;
        }

        .jobs-stat::before {
            content: "";
            position: absolute;
            left: 0;
            top: 12px;
            bottom: 12px;
            width: 3px;
            border-radius: 0 3px 3px 0;
            background: #94a3b8;
        }

        .jobs-stat.is-done::before { background: #14b8a6; }
        .jobs-stat.is-pending::before { background: #fb923c; }
        .jobs-stat.is-rate::before { background: #0ea5e9; }
        .jobs-stat.is-abnormal::before { background: #6366f1; }
        .jobs-stat.is-review::before { background: #2563eb; }
        .jobs-stat.is-reject::before { background: #ef4444; }
        .jobs-stat.is-makeup::before { background: #8b5cf6; }

        .jobs-stat.is-filterable {
            cursor: pointer;
            transition: border-color 0.15s ease, background 0.15s ease, transform 0.12s ease;
        }
        .jobs-stat.is-filterable:hover {
            border-color: #cbd5e1;
            background: #f1f5f9;
        }
        .jobs-stat.is-filterable:focus-visible {
            outline: 2px solid #93c5fd;
            outline-offset: 2px;
        }

        .jobs-stat__k {
            font-size: 0.72rem;
            color: #64748b;
            font-weight: 650;
            letter-spacing: 0.02em;
        }

        .jobs-stat__v {
            margin-top: 4px;
            font-size: 1.45rem;
            font-weight: 780;
            color: #0f172a;
            line-height: 1.15;
            letter-spacing: -0.02em;
        }

        .jobs-stat__s {
            margin-top: 4px;
            font-size: 0.68rem;
            color: #64748b;
            font-weight: 600;
            line-height: 1.35;
            white-space: normal;
            overflow: visible;
        }

        .jobs-stat.is-done .jobs-stat__v { color: #0f766e; }
        .jobs-stat.is-pending .jobs-stat__v { color: #c2410c; }
        .jobs-stat.is-rate .jobs-stat__v { color: #0369a1; }
        .jobs-stat.is-abnormal .jobs-stat__v { color: #4338ca; }
        .jobs-stat.is-review .jobs-stat__v { color: #1d4ed8; }
        .jobs-stat.is-reject .jobs-stat__v { color: #b91c1c; }
        .jobs-stat.is-makeup .jobs-stat__v { color: #6d28d9; }

        .jobs-pill-list--gap {
            margin-top: 10px;
        }
        .jobs-pill--reject {
            border-color: #fecaca;
            background: #fff7f7;
        }
        .jobs-pill--reject strong {
            color: #b91c1c;
        }
        .jobs-pill--mat {
            border-color: #c7d2fe;
            background: #f5f7ff;
        }
        .jobs-pill--mat strong {
            color: #4338ca;
        }
        .jobs-pill--feedback {
            border-color: #fde68a;
            background: #fffbeb;
            align-items: flex-start;
        }
        .jobs-improve-block {
            margin-top: 12px;
            padding-top: 10px;
            border-top: 1px dashed #e2e8f0;
        }
        .jobs-improve-block__head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            margin-bottom: 4px;
        }
        .jobs-improve-block__title {
            font-size: 0.78rem;
            font-weight: 700;
            color: #334155;
        }
        .jobs-improve-block__hint {
            font-size: 0.68rem;
            color: #94a3b8;
            margin-bottom: 8px;
        }

        .jobs-situation-chips {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            padding: 0 14px 12px;
            border-bottom: 1px solid #e8eef5;
            background: #fff;
        }
        .jobs-situation-chip {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            border: 1px solid #dbe4ee;
            background: #f8fafc;
            color: #475569;
            border-radius: 999px;
            padding: 5px 10px;
            font-size: 0.72rem;
            font-weight: 650;
            cursor: pointer;
            line-height: 1;
            transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
        }
        .jobs-situation-chip b {
            min-width: 1.1em;
            font-variant-numeric: tabular-nums;
            color: #0f172a;
        }
        .jobs-situation-chip:hover {
            border-color: #cbd5e1;
            background: #f1f5f9;
        }
        .jobs-situation-chip.is-active {
            border-color: #93c5fd;
            background: #eff6ff;
            color: #1d4ed8;
        }
        .jobs-situation-chip.is-active b {
            color: #1d4ed8;
        }

        .mine-assign-bar {
            display: flex;
            flex-direction: column;
            gap: 0;
            margin: 8px 0 10px;
            width: 100%;
            padding: 0;
            box-sizing: border-box;
            border: 1px solid #dbe3ee;
            border-radius: 10px;
            background: #fff;
            overflow: hidden;
            box-shadow: var(--shadow);
            line-height: 1.5;
        }

        .mine-assign-bar__head {
            display: flex;
            align-items: baseline;
            justify-content: space-between;
            gap: 8px;
            padding: 8px 12px;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
        }

        .mine-assign-bar__title {
            font-size: 0.82rem;
            font-weight: 750;
            color: #0f172a;
        }

        .mine-assign-bar__hint {
            font-size: 0.66rem;
            color: #94a3b8;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-assign-bar__body {
            display: flex;
            flex-wrap: wrap;
            align-items: end;
            gap: 8px 10px;
            padding: 8px 12px;
        }

        .mine-assign-field {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
            flex: 0 0 auto;
        }

        .mine-assign-field__label {
            font-size: 0.66rem;
            font-weight: 650;
            color: #94a3b8;
            line-height: 1.2;
        }

        .mine-assign-submit {
            height: 34px;
            min-height: 34px;
            padding: 0 14px;
            border-radius: 8px;
            white-space: nowrap;
            font-size: 0.82rem;
            margin-bottom: 0;
        }

        .mine-list-panel {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            overflow: hidden;
            box-shadow: var(--shadow);
        }

        .mine-list-panel__head {
            display: flex;
            align-items: center;
            gap: 8px;
            width: 100%;
            margin: 0;
            padding: 10px 14px;
            border: 0;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
            font: inherit;
            text-align: left;
            color: inherit;
            box-sizing: border-box;
        }

        .mine-list-panel__title {
            flex: 1 1 auto;
            min-width: 0;
            font-size: 0.84rem;
            font-weight: 750;
            color: #0f172a;
        }

        .mine-assignee-tabs {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            padding: 8px 12px 0;
            background: #f8fafc;
            border-bottom: 0;
            box-sizing: border-box;
        }

        .mine-assignee-tab {
            border: 1px solid #e2e8f0;
            background: #fff;
            color: #334155;
            border-radius: 999px;
            padding: 5px 10px;
            font: inherit;
            font-size: 0.76rem;
            cursor: pointer;
            max-width: 100%;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-assignee-tab.is-active {
            background: #0f766e;
            border-color: #0f766e;
            color: #fff;
        }

        .mine-assignee-tab.is-unassigned {
            color: #64748b;
        }

        .mine-list-filters {
            display: grid;
            grid-template-columns: minmax(0, 1fr) 110px;
            gap: 8px;
            padding: 8px 12px;
            border-bottom: 1px solid #eef2f7;
            background: #f8fafc;
            box-sizing: border-box;
        }

        .submit-pick-mine-btn.is-active {
            background: #0f766e;
            border-color: #0f766e;
            color: #fff;
        }

        .mine-card__who {
            display: inline-flex;
            align-items: center;
            flex: 0 1 auto;
            max-width: 42%;
            padding: 2px 7px;
            border-radius: 999px;
            background: #ecfeff;
            color: #0f766e;
            font-size: 0.68rem;
            font-weight: 650;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-card__who.is-empty {
            background: #f1f5f9;
            color: #94a3b8;
            font-weight: 500;
        }

        .mine-list-filters__search,
        .mine-list-filters__state {
            width: 100%;
            height: 34px;
            min-height: 34px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            padding: 0 10px;
            font: inherit;
            font-size: 0.78rem;
            background: #fff;
            color: #0f172a;
            box-sizing: border-box;
        }

        .mine-list-filters__state {
            padding-right: 24px;
            appearance: none;
            background-image: linear-gradient(45deg, transparent 50%, #94a3b8 50%), linear-gradient(135deg, #94a3b8 50%, transparent 50%);
            background-position: calc(100% - 12px) calc(50% - 2px), calc(100% - 8px) calc(50% - 2px);
            background-size: 4px 4px, 4px 4px;
            background-repeat: no-repeat;
        }

        .mine-list-panel__body {
            display: block;
        }

        .mine-card-list {
            display: none;
        }

        .mine-card-empty {
            padding: 28px 16px;
            text-align: center;
            color: #94a3b8;
            font-size: 0.82rem;
        }

        .mine-card {
            display: flex;
            align-items: center;
            gap: 6px;
            min-height: 40px;
            padding: 6px 10px;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
            box-sizing: border-box;
        }

        .mine-card:last-child {
            border-bottom: 0;
        }

        .mine-card__check {
            display: inline-flex;
            align-items: center;
            flex: 0 0 auto;
            margin: 0;
            font: inherit;
        }

        .mine-card__check input {
            width: 16px;
            height: 16px;
            margin: 0;
        }

        .mine-card__main {
            flex: 1 1 auto;
            min-width: 0;
            display: flex;
            align-items: center;
            gap: 6px;
            overflow: hidden;
        }

        .mine-card__title {
            flex: 1 1 auto;
            min-width: 0;
            font-size: 0.78rem;
            font-weight: 650;
            color: #0f172a;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-card__title em {
            font-style: normal;
            font-weight: 500;
            color: #64748b;
        }

        .mine-card__freq {
            flex: 0 0 auto;
            font-size: 0.62rem;
            color: #94a3b8;
            white-space: nowrap;
        }

        .mine-card__state {
            flex: 0 0 auto;
            max-width: 72px;
            font-size: 0.58rem;
            font-weight: 650;
            color: #0f766e;
            background: #f0fdfa;
            border-radius: 999px;
            padding: 2px 6px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-card__state.is-pending {
            color: #0369a1;
            background: #e0f2fe;
        }

        .mine-card__state.is-done {
            color: #0f766e;
            background: #f0fdfa;
        }

        .mine-card__state.is-warn {
            color: #c2410c;
            background: #fff7ed;
        }

        .mine-card__acts {
            display: inline-flex;
            flex: 0 0 auto;
            gap: 4px;
        }

        .mine-card__acts button {
            min-height: 26px;
            height: 26px;
            padding: 0 8px;
            border-radius: 6px;
            border: 1px solid #e2e8f0;
            background: #fff;
            font-size: 0.62rem;
            color: #334155;
            cursor: pointer;
            white-space: nowrap;
        }

        .mine-card__acts button.is-warn {
            color: #c2410c;
            border-color: #fdba74;
            background: #fff7ed;
        }

        .mine-card__acts button.is-ok {
            color: #0f766e;
            border-color: #99f6e4;
            background: #f0fdfa;
        }

        .mine-list-checkall {
            display: none;
            align-items: center;
            gap: 6px;
            margin: 0;
            font-size: 0.72rem;
            font-weight: 650;
            color: #64748b;
            cursor: pointer;
        }

        .mine-list-checkall input {
            width: 16px;
            height: 16px;
            margin: 0;
        }

        .mine-table-shell {
            flex: 1;
            min-height: 0;
            max-height: none;
            border: 0;
            border-radius: 0;
            border-top: 0;
        }

        .mine-ops-row {
            display: flex;
            flex-direction: column;
            gap: 8px;
            margin-bottom: 8px;
            width: 100%;
            box-sizing: border-box;
        }

        .mine-toolbar {
            display: flex;
            flex-direction: column;
            gap: 8px;
            margin: 0;
            padding: 0;
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 10px;
            box-shadow: var(--shadow);
            overflow: hidden;
            box-sizing: border-box;
            min-height: 0;
            height: auto;
        }

        /* PC：两列同行；各卡内两行阵列对齐（控件行 / 按钮行） */
        @media (min-width: 901px) {
            .mine-view.jobs-view {
                align-content: start;
            }

            .mine-ops-row {
                display: grid;
                grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
                gap: 10px;
                align-items: start;
                margin-bottom: 10px;
            }

            .mine-toolbar,
            .mine-assign-bar {
                margin: 0;
                height: auto !important;
                min-height: 0;
                align-self: start;
                display: flex;
                flex-direction: column;
                gap: 0;
            }

            .mine-toolbar__head,
            .mine-assign-bar__head {
                flex: 0 0 auto;
                min-height: 36px;
                padding: 7px 12px;
                box-sizing: border-box;
            }

            /* 左：第1行月份+周次；第2行本周+刷新 */
            .mine-toolbar__filters {
                flex: 0 0 auto;
                display: grid;
                grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
                grid-template-rows: auto auto;
                gap: 6px 8px;
                align-items: end;
                padding: 8px 12px 10px;
                margin: 0;
                box-sizing: border-box;
            }

            .mine-toolbar__field {
                min-width: 0;
                width: 100%;
            }

            .mine-toolbar__field select {
                width: 100% !important;
                max-width: none !important;
                min-width: 0 !important;
                height: 34px !important;
                min-height: 34px !important;
            }

            .mine-toolbar__actions {
                grid-column: 1 / -1;
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 8px;
                width: 100%;
                margin: 0;
            }

            .mine-toolbar__actions .btn {
                width: 100%;
                height: 34px !important;
                min-height: 34px !important;
            }

            /* 右：第1行人员+日期；第2行分配任务（与左侧两行对齐） */
            .mine-assign-bar__body {
                flex: 0 0 auto !important;
                display: grid;
                grid-template-columns: minmax(0, 1.35fr) minmax(128px, 0.9fr);
                grid-template-rows: auto auto;
                gap: 6px 8px;
                align-items: end;
                padding: 8px 12px 10px;
                box-sizing: border-box;
            }

            .mine-assign-field {
                min-width: 0;
                width: 100%;
            }

            .mine-assign-bar input[type="date"],
            .mine-assign-person-group,
            .mine-assign-bar #mineDueDate {
                width: 100% !important;
                max-width: none !important;
                min-width: 0 !important;
                height: 34px !important;
                min-height: 34px !important;
            }

            .mine-assign-person {
                height: 34px;
            }

            .mine-assign-submit {
                grid-column: 1 / -1;
                width: 100%;
                height: 34px !important;
                min-height: 34px !important;
                margin: 0;
                align-self: stretch;
            }
        }

        .mine-toolbar__head {
            display: flex;
            align-items: baseline;
            justify-content: space-between;
            gap: 8px;
            min-width: 0;
            flex: 0 0 auto;
            padding: 8px 12px;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
            box-sizing: border-box;
        }

        .mine-toolbar__title {
            font-size: 0.84rem;
            font-weight: 750;
            color: #0f172a;
        }

        .mine-toolbar__hint {
            font-size: 0.66rem;
            color: #94a3b8;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-toolbar__filters {
            display: grid;
            grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
            gap: 6px 8px;
            align-items: end;
            flex: 0 0 auto;
            margin: 0;
            padding: 8px 12px 10px;
            box-sizing: border-box;
        }

        .mine-toolbar__field {
            display: flex;
            flex-direction: column;
            gap: 4px;
            min-width: 0;
            width: 100%;
        }

        .mine-toolbar__field label {
            font-size: 0.66rem;
            font-weight: 650;
            color: #94a3b8;
            line-height: 1.2;
        }

        .mine-toolbar__field select {
            width: 100%;
            min-width: 0;
            max-width: none;
            height: 34px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            padding: 0 26px 0 8px;
            font: inherit;
            font-size: 0.8rem;
            background: #f8fafc;
            appearance: none;
            background-image: linear-gradient(45deg, transparent 50%, #94a3b8 50%), linear-gradient(135deg, #94a3b8 50%, transparent 50%);
            background-position: calc(100% - 12px) calc(50% - 2px), calc(100% - 8px) calc(50% - 2px);
            background-size: 4px 4px, 4px 4px;
            background-repeat: no-repeat;
            box-sizing: border-box;
        }

        .mine-toolbar__actions {
            grid-column: 1 / -1;
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
            width: 100%;
        }

        .mine-toolbar__actions .btn {
            width: 100%;
            min-height: 34px;
            height: 34px;
            padding: 0 10px;
            border-radius: 8px;
            font-size: 0.76rem;
        }

        @media (max-width: 900px) {
            .mine-view.jobs-view {
                /* 底栏留白由 .app-main 承担 */
                padding: 0 0 12px;
                gap: 0;
                overflow-x: hidden;
                overflow-y: auto;
                overscroll-behavior-y: contain;
                -webkit-overflow-scrolling: touch;
                background: #f1f5f9;
            }

            .mine-toolbar,
            .mine-assign-bar,
            .mine-list-panel,
            .mine-ops-row {
                margin: 0;
                width: 100%;
                max-width: none;
                border-radius: 0;
                box-sizing: border-box;
            }

            .mine-ops-row {
                display: flex;
                flex-direction: column;
                gap: 0;
                margin-bottom: 0;
            }

            .mine-toolbar,
            .mine-assign-bar {
                border-left: 0;
                border-right: 0;
                box-shadow: none;
            }

            .mine-toolbar {
                flex-direction: column;
                align-items: stretch;
                padding: 0;
                border-top: 0;
                border-bottom: 1px solid #e2e8f0;
                background: #fff;
            }

            .mine-toolbar__head {
                padding: 10px 12px 8px;
                border-bottom: 1px solid #eef2f7;
                justify-content: space-between;
                width: 100%;
            }

            .mine-toolbar__title {
                font-size: 0.88rem;
            }

            .mine-toolbar__hint {
                font-size: 0.62rem;
            }

            .mine-toolbar__filters {
                display: grid;
                grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
                gap: 8px;
                padding: 8px 12px 10px;
                margin: 0;
                width: 100%;
            }

            .mine-toolbar__field {
                width: 100%;
            }

            .mine-toolbar__actions {
                grid-column: 1 / -1;
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 8px;
            }

            .mine-toolbar__actions .btn {
                width: 100%;
                min-height: 36px;
                height: 36px;
            }

            .mine-toolbar__field select {
                width: 100%;
                max-width: none;
                min-width: 0;
                height: 36px;
                font-size: 0.82rem;
                background-color: #f8fafc;
            }

            .mine-assign-bar {
                padding: 0;
                border-bottom: 1px solid #e2e8f0;
                background: #fff;
                gap: 0;
            }

            .mine-assign-bar__head {
                padding: 8px 12px;
            }

            .mine-assign-bar__title {
                font-size: 0.78rem;
            }

            .mine-assign-bar__hint {
                font-size: 0.6rem;
                max-width: 55%;
            }

            .mine-assign-bar__body {
                display: grid;
                grid-template-columns: minmax(0, 1.35fr) minmax(118px, 0.9fr);
                align-items: end;
                gap: 8px;
                padding: 10px 12px 12px;
            }

            .mine-assign-field {
                width: auto;
                min-width: 0;
            }

            .mine-assign-person-group {
                width: 100%;
                max-width: none;
                min-width: 0;
            }

            .mine-assign-person {
                flex: 0 0 auto;
                height: 36px;
                font-size: 0.78rem;
                padding: 0 10px;
            }

            .mine-assign-person-name {
                flex: 1 1 auto;
                min-width: 0;
                font-size: 0.78rem;
                overflow: hidden;
                text-overflow: ellipsis;
                white-space: nowrap;
            }

            .mine-assign-bar #mineDueDate {
                width: 100% !important;
                max-width: none !important;
                flex: none;
                height: 36px;
                min-height: 36px;
            }

            .mine-assign-submit {
                grid-column: 1 / -1;
                width: 100%;
                height: 40px;
                min-height: 40px;
                font-size: 0.86rem;
            }

            .mine-list-panel {
                border-bottom: 0;
                background: #fff;
            }

            .mine-list-panel__head {
                padding: 8px 12px;
            }

            .mine-list-panel__title {
                font-size: 0.8rem;
            }

            .mine-list-filters {
                padding: 8px 12px;
                grid-template-columns: minmax(0, 1fr) 100px;
            }

            .mine-assignee-tabs {
                padding: 8px 12px 0;
                flex-wrap: nowrap;
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
                scrollbar-width: none;
            }

            .mine-assignee-tabs::-webkit-scrollbar {
                display: none;
            }

            .mine-assignee-tab {
                flex: 0 0 auto;
                font-size: 0.72rem;
                padding: 5px 9px;
            }

            .mine-card__who {
                max-width: 36%;
                font-size: 0.64rem;
            }

            .mine-list-checkall:not([hidden]) {
                display: inline-flex;
            }

            .mine-table-shell {
                display: none !important;
            }

            .mine-card-list {
                display: block;
            }

            .mine-card {
                min-height: 38px;
                padding: 5px 10px;
            }

            .mine-card__title {
                font-size: 0.76rem;
            }

            .mine-card__freq {
                display: none;
            }

            body.role-field .mine-card__check {
                display: none;
            }
        }

        .mine-assign-bar input[type="text"],
        .mine-assign-bar input[type="password"],
        .mine-assign-bar input[type="date"],
        .mine-assign-bar select {
            width: auto !important;
            min-width: 0;
            max-width: 168px;
            min-height: 34px;
            height: 34px;
            padding: 6px 10px !important;
            font-size: 0.8rem !important;
            line-height: 1.4 !important;
            border: 1px solid #e2e8f0 !important;
            border-radius: 8px !important;
            background: #f8fafc;
            box-sizing: border-box;
        }

        .mine-assign-bar #mineDueDate {
            width: 148px !important;
            max-width: 148px;
        }

        @media (min-width: 901px) {
            .mine-assign-bar #mineDueDate {
                width: 100% !important;
                max-width: none !important;
            }

            .mine-assign-person-group {
                width: 100% !important;
                max-width: none !important;
                min-width: 0 !important;
            }

            .mine-assign-person {
                height: 34px;
            }
        }

        .mine-assign-person-group {
            min-width: 200px;
            max-width: 260px;
            display: flex;
            align-items: center;
            gap: 0;
            width: 240px;
            min-height: 34px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #f8fafc;
            box-sizing: border-box;
            overflow: hidden;
        }

        .mine-assign-person {
            flex: 0 0 auto;
            height: 34px;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            padding: 0 14px;
            border: 0;
            border-right: 1px solid #e2e8f0;
            border-radius: 0;
            background: #fff;
            font: inherit;
            font-size: 0.82rem;
            font-weight: 650;
            color: #0f766e;
            cursor: pointer;
            white-space: nowrap;
            line-height: 1.4;
        }

        .mine-assign-person:hover {
            background: #f0fdfa;
        }

        .mine-assign-person-name {
            flex: 1 1 auto;
            min-width: 0;
            padding: 0 10px;
            font-size: 0.86rem;
            font-weight: 650;
            color: #0f172a;
            line-height: 1.45;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .mine-assign-person-name.is-empty {
            color: #94a3b8;
            font-weight: 500;
        }

        .mine-assign-bar .submit-meta {
            font-size: 0.9rem;
            line-height: 1.45;
            color: #64748b;
        }

        .mine-user-pick-list {
            display: flex;
            flex-direction: column;
            gap: 6px;
            max-height: 360px;
            overflow: auto;
        }

        .mine-user-pick-item {
            display: flex;
            align-items: center;
            gap: 10px;
            width: 100%;
            text-align: left;
            border: 1px solid #e2e8f0;
            background: #fff;
            border-radius: 8px;
            padding: 10px 12px;
            cursor: pointer;
            font: inherit;
        }

        .mine-user-pick-item:hover,
        .mine-user-pick-item.is-active {
            border-color: #5eead4;
            background: #f0fdfa;
        }

        .mine-user-pick-item__name {
            font-weight: 700;
            color: #0f172a;
        }

        .mine-user-pick-item__meta {
            margin-left: auto;
            color: #64748b;
            font-size: 0.8rem;
        }

        .jobs-grid {
            display: grid;
            grid-template-columns: 1.4fr 1fr;
            gap: 12px;
            margin-bottom: 12px;
            align-items: stretch;
        }

        .jobs-grid > .jobs-card {
            display: flex;
            flex-direction: column;
            min-height: 0;
            height: 100%;
        }

        .jobs-card__body--panel {
            padding: 0 !important;
            flex: 1 1 auto;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }

        /* 左右两卡共用固定可视高度，人员分布超出后内部滚动 */
        .jobs-grid-panel-scroll {
            height: min(42vh, 420px);
            max-height: min(42vh, 420px);
            overflow: auto;
            min-height: 0;
            flex: 1 1 auto;
            padding: 10px 12px;
            box-sizing: border-box;
        }

        .jobs-grid > .jobs-card[data-jobs-show="lines"] .jobs-grid-panel-scroll {
            padding: 0;
        }

        .jobs-card {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            box-shadow: var(--shadow);
            overflow: hidden;
            min-width: 0;
        }

        .jobs-card__head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            padding: 10px 14px;
            border-bottom: 1px solid #e8eef5;
            background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
        }

        .jobs-card__title {
            font-size: 0.88rem;
            font-weight: 750;
            color: #0f172a;
        }

        .jobs-card__head .submit-meta {
            margin: 0;
            font-size: 0.72rem;
            color: #64748b;
            font-weight: 600;
        }

        .jobs-card__body {
            padding: 12px 14px;
        }

        .jobs-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.8rem;
        }

        .jobs-table th,
        .jobs-table td {
            padding: 8px 10px;
            border-bottom: 1px solid #eef2f7;
            text-align: left;
            white-space: nowrap;
        }

        .jobs-table th {
            color: #64748b;
            font-weight: 650;
            font-size: 0.72rem;
            background: #f8fafc;
            position: sticky;
            top: 0;
            z-index: 1;
        }

        .jobs-table tbody tr:nth-child(even) td {
            background: #fafbfc;
        }

        .jobs-table tbody tr:hover td {
            background: #f0fdfa;
        }

        .jobs-table tr:last-child td { border-bottom: 0; }

        .jobs-bar {
            display: flex;
            align-items: center;
            gap: 8px;
            min-width: 120px;
        }

        .jobs-bar__track {
            flex: 1;
            height: 8px;
            border-radius: 999px;
            background: #e2e8f0;
            overflow: hidden;
        }

        .jobs-bar__fill {
            height: 100%;
            border-radius: 999px;
            background: linear-gradient(90deg, #2dd4bf, #0f766e);
        }

        .jobs-bar__label {
            width: 42px;
            text-align: right;
            font-weight: 700;
            color: #0f766e;
            font-size: 0.74rem;
            font-variant-numeric: tabular-nums;
        }

        .jobs-pill-list {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .jobs-pill {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            padding: 9px 11px;
            border-radius: 9px;
            background: linear-gradient(180deg, #ffffff, #f8fafc);
            border: 1px solid #e2e8f0;
            font-size: 0.8rem;
        }

        .jobs-pill strong {
            color: #0f766e;
            font-size: 0.95rem;
            font-variant-numeric: tabular-nums;
        }

        .jobs-empty {
            padding: 18px 8px;
            text-align: center;
            color: #94a3b8;
            font-size: 0.82rem;
        }

        .jobs-history-tools {
            display: flex !important;
            flex-direction: row !important;
            flex-wrap: nowrap !important;
            align-items: center !important;
            gap: 8px !important;
            margin-left: auto;
            min-width: 0;
        }

        .jobs-history-tools label {
            display: inline !important;
            margin: 0 !important;
            font-size: 0.72rem !important;
            font-weight: 600 !important;
            color: #475569 !important;
            white-space: nowrap;
        }

        .jobs-history-tools select {
            display: inline-block !important;
            width: auto !important;
            min-width: 88px;
            max-width: 120px;
            height: 28px !important;
            min-height: 28px !important;
            padding: 2px 6px !important;
            border: 1px solid #94a3b8 !important;
            border-radius: 7px !important;
            font-size: 0.76rem !important;
            background: #fff !important;
        }

        .jobs-history-tools .btn {
            width: auto !important;
            height: 28px !important;
            min-height: 28px !important;
            padding: 0 10px !important;
            font-size: 0.76rem !important;
            white-space: nowrap;
            flex: 0 0 auto;
        }

        .jobs-card__head--history {
            flex-wrap: nowrap;
            align-items: center;
        }

        .jobs-card__head--history .jobs-card__title {
            flex: 0 0 auto;
            white-space: nowrap;
        }

        .jobs-history-table-wrap {
            overflow: auto;
            max-height: min(72vh, 820px);
        }

        .jobs-history-table td.actions {
            white-space: nowrap;
            vertical-align: top;
        }

        .jobs-history-table td {
            vertical-align: top;
        }

        .jobs-history-main td {
            background: #f8fafc;
            font-weight: 500;
        }

        .jobs-history-detail-row > td {
            padding: 0 10px 12px !important;
            background: #fff;
            border-bottom: 1px solid #cbd5e1;
        }

        .jobs-history-detail-box {
            margin-top: 2px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            overflow: hidden;
            background: #fff;
        }

        .jobs-history-detail-box__title {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            padding: 8px 10px;
            background: #f1f5f9;
            color: #334155;
            font-size: 0.78rem;
            font-weight: 600;
            cursor: pointer;
            user-select: none;
        }

        .jobs-history-detail-box__title:hover {
            background: #e2e8f0;
        }

        .jobs-history-detail-box__title .jobs-fold-caret {
            display: inline-block;
            width: 1em;
            color: #64748b;
            transition: transform 0.15s ease;
        }

        .jobs-history-detail-box.is-collapsed .jobs-fold-caret {
            transform: rotate(-90deg);
        }

        .jobs-history-detail-box__title span {
            color: #64748b;
            font-weight: 500;
        }

        .jobs-history-detail-box__body {
            display: block;
        }

        .jobs-history-detail-box.is-collapsed .jobs-history-detail-box__body {
            display: none;
        }

        .jobs-history-detail-box__preview {
            display: none;
            padding: 8px 10px 10px;
            color: #64748b;
            font-size: 0.74rem;
            line-height: 1.45;
            border-top: 1px solid #e2e8f0;
        }

        .jobs-history-detail-box.is-collapsed .jobs-history-detail-box__preview {
            display: block;
        }

        .jobs-history-detail-mini {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.78rem;
        }

        .jobs-history-detail-mini th,
        .jobs-history-detail-mini td {
            padding: 7px 8px;
            border-bottom: 1px solid #e2e8f0;
            text-align: left;
            vertical-align: top;
            white-space: normal;
            word-break: break-word;
        }

        .jobs-history-detail-mini th {
            background: #f8fafc;
            color: #64748b;
            font-weight: 600;
            white-space: nowrap;
        }

        .jobs-history-detail-mini tr:last-child td {
            border-bottom: 0;
        }

        .jobs-history-detail-mini .is-ok {
            color: #047857;
            font-weight: 600;
        }

        .jobs-history-detail-mini .is-bad {
            color: #b91c1c;
            font-weight: 600;
        }

        .jobs-history-detail-mini .is-na {
            color: #64748b;
        }

        .jobs-history-equip {
            display: block;
            margin-top: 4px;
            color: #64748b;
            font-size: 0.72rem;
            font-weight: 400;
            line-height: 1.4;
        }

        .jobs-week-content-card {
            margin-bottom: 12px;
        }

        .jobs-situation-card {
            margin-bottom: 12px;
        }

        .jobs-situation-head {
            flex-wrap: nowrap !important;
            flex-direction: row !important;
            align-items: center !important;
            gap: 10px;
        }

        .jobs-situation-tools {
            display: flex !important;
            flex-wrap: nowrap !important;
            align-items: center;
            justify-content: flex-end;
            gap: 8px;
            flex: 1 1 auto;
            min-width: 0;
            width: auto !important;
            grid-template-columns: none !important;
        }

        .jobs-situation-filters__search {
            flex: 1 1 160px;
            min-width: 120px;
            max-width: 260px;
            width: auto !important;
            min-height: 34px;
            height: 34px;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            padding: 0 10px;
            font: inherit;
            font-size: 0.78rem;
            background: #fff;
            color: #0f172a;
            box-sizing: border-box;
        }

        .jobs-situation-filters__state {
            flex: 0 0 120px;
            width: 120px !important;
            min-width: 120px;
            min-height: 34px;
            height: 34px;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            padding: 0 24px 0 10px;
            font: inherit;
            font-size: 0.78rem;
            background: #fff;
            color: #0f172a;
            box-sizing: border-box;
        }

        .jobs-situation-tools .btn {
            flex: 0 0 auto;
            width: auto !important;
            white-space: nowrap;
        }

        .jobs-situation-list-wrap {
            max-height: min(58vh, 640px);
            overflow: auto;
        }

        .jobs-situation-task-table {
            table-layout: fixed;
            width: 100%;
            min-width: 1180px;
        }

        .jobs-situation-task-table th,
        .jobs-situation-task-table td {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .jobs-situation-task-table td.jobs-st-cell {
            white-space: normal;
            word-break: break-word;
        }

        .jobs-situation-task-table th {
            position: sticky;
            top: 0;
            z-index: 1;
            background: #f8fafc;
        }

        .jobs-situation-cards {
            display: none;
        }

        .jobs-situation-card-item {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 8px;
            padding: 10px 12px;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
        }

        .jobs-situation-card-item__main {
            flex: 1 1 auto;
            min-width: 0;
        }

        .jobs-situation-card-item__title {
            font-size: 0.82rem;
            font-weight: 650;
            color: #0f172a;
        }

        .jobs-situation-card-item__meta {
            margin-top: 2px;
            font-size: 0.68rem;
            color: #94a3b8;
        }

        .jobs-st {
            display: inline-block;
            padding: 2px 8px;
            border-radius: 999px;
            font-size: 0.72rem;
            font-weight: 650;
            line-height: 1.4;
        }

        .jobs-st.is-done {
            background: #ecfdf5;
            color: #047857;
            border: 1px solid #6ee7b7;
        }

        .jobs-st.is-pending {
            background: #fffbeb;
            color: #b45309;
            border: 1px solid #fcd34d;
        }

        .jobs-st.is-overdue {
            background: #fef2f2;
            color: #b91c1c;
            border: 1px solid #fca5a5;
        }

        .jobs-st.is-paused {
            background: #f1f5f9;
            color: #475569;
            border: 1px solid #cbd5e1;
        }

        @media (max-width: 900px) {
            .jobs-situation-list-wrap {
                display: none;
            }
            .jobs-situation-cards {
                display: block;
                max-height: min(62vh, 680px);
                overflow: auto;
            }
        }

        .jobs-history-table button {
            border: 0;
            background: #f0fdfa;
            color: #0f766e;
            border: 1px solid #99f6e4;
            border-radius: 6px;
            padding: 4px 10px;
            font: inherit;
            font-size: 0.74rem;
            cursor: pointer;
            transition: background 0.12s ease, border-color 0.12s ease;
        }

        .jobs-history-table button:hover {
            background: #ccfbf1;
            border-color: #5eead4;
        }

        .jobs-history-tools .btn-fold {
            padding: 4px 8px;
            font-size: 0.74rem;
        }

        .jobs-detail-meta {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 8px;
            margin-bottom: 12px;
            font-size: 0.82rem;
        }

        .jobs-detail-meta div {
            padding: 8px 10px;
            border-radius: 8px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
        }

        .jobs-detail-meta span {
            display: block;
            color: #64748b;
            font-size: 0.7rem;
            margin-bottom: 2px;
        }

        .jobs-sign-preview {
            max-width: 100%;
            max-height: 120px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #fff;
        }

        .jobs-charts {
            display: grid;
            grid-template-columns: 1.2fr 1fr;
            gap: 14px;
            margin-bottom: 14px;
        }

        .jobs-card--chart .jobs-card__head {
            align-items: flex-start;
            gap: 8px;
        }

        .jobs-card__hint {
            margin-top: 2px;
            font-size: 0.72rem;
            color: #94a3b8;
            line-height: 1.35;
        }

        .jobs-chart-wrap {
            width: 100%;
            min-height: 300px;
            overflow: hidden;
            border-radius: 12px;
            background:
                radial-gradient(120% 80% at 0% 0%, rgba(37, 99, 235, 0.06), transparent 55%),
                linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
            border: 1px solid #e8eef5;
            padding: 10px 8px 6px;
            box-sizing: border-box;
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.8);
        }

        .jobs-chart-svg {
            width: 100%;
            height: auto;
            display: block;
        }

        .jobs-chart-legend {
            display: flex;
            flex-wrap: wrap;
            gap: 8px 16px;
            margin-top: 8px;
            padding-top: 2px;
            font-size: 0.74rem;
            color: #64748b;
        }

        .jobs-chart-legend i {
            display: inline-block;
            width: 11px;
            height: 11px;
            border-radius: 3px;
            margin-right: 5px;
            vertical-align: -1px;
        }

        .jobs-chart-legend i.is-done { background: linear-gradient(180deg, #4ade80, #16a34a); }
        .jobs-chart-legend i.is-pending { background: linear-gradient(180deg, #fde047, #ca8a04); }
        .jobs-chart-legend i.is-total {
            height: 3px;
            width: 16px;
            border-radius: 2px;
            background: #2563eb;
            vertical-align: 3px;
        }
        .jobs-chart-legend i.is-rate { background: #0ea5e9; border-radius: 50%; }
        .jobs-chart-legend i.is-count {
            background: repeating-linear-gradient(90deg, #14b8a6 0 4px, transparent 4px 7px);
            height: 3px;
            width: 16px;
            vertical-align: 3px;
        }

        .jobs-chart-summary {
            display: flex;
            flex-wrap: wrap;
            gap: 8px 14px;
            margin-top: 10px;
            padding: 8px 10px;
            border-radius: 8px;
            background: #f1f5f9;
            color: #475569;
            font-size: 0.74rem;
            line-height: 1.4;
        }

        .jobs-chart-summary b {
            color: #0f172a;
            font-weight: 700;
        }

        .jobs-chart-empty {
            display: flex;
            align-items: center;
            justify-content: center;
            min-height: 240px;
            color: #94a3b8;
            font-size: 0.88rem;
        }

        @media (max-width: 1100px) {
            .jobs-stat-row,
            .jobs-stat-modules,
            #jobsStatRow { grid-template-columns: 1fr; }
            .jobs-stat-module__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
            .jobs-grid { grid-template-columns: 1fr; }
            .jobs-charts { grid-template-columns: 1fr; }
            .jobs-head { flex-wrap: wrap; }
            .jobs-filters { margin-left: 0; }
            .jobs-period-box {
                order: -1;
            }
            .jobs-filters--box {
                flex-direction: row !important;
                flex-wrap: wrap !important;
                align-items: end !important;
            }
            .jobs-filters--box .jobs-field {
                flex: 1 1 120px;
            }
            .jobs-filters--box .btn {
                width: auto !important;
                flex: 0 0 auto;
            }
        }

        @media (max-width: 640px) {
            .jobs-stat-row,
            .jobs-stat-modules,
            #jobsStatRow { grid-template-columns: 1fr; }
            .jobs-stat-module__grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
            .jobs-stat-module__sub { display: none; }
            .jobs-stat { min-height: 64px; padding: 12px 12px 12px 14px; }
            .jobs-stat__v { font-size: 1.25rem; }
            .jobs-detail-meta { grid-template-columns: 1fr; }
            .jobs-detail-panel .jobs-detail-meta { grid-template-columns: 1fr; }
        }

        .jobs-history-cards {
            display: none;
        }

        .jobs-history-card-item {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 8px;
            padding: 8px 12px;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
            min-height: 44px;
            box-sizing: border-box;
        }

        .jobs-history-card-item:last-child {
            border-bottom: 0;
        }

        .jobs-history-card-item__main {
            flex: 1 1 auto;
            min-width: 0;
        }

        .jobs-history-card-item__details {
            flex: 1 1 100%;
            width: 100%;
            margin-top: 2px;
        }

        .jobs-history-card-item__title {
            font-size: 0.78rem;
            font-weight: 650;
            color: #0f172a;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .jobs-history-card-item__meta {
            margin-top: 2px;
            font-size: 0.62rem;
            color: #94a3b8;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .jobs-history-card-item__result {
            flex: 0 0 auto;
            font-size: 0.58rem;
            font-weight: 650;
            color: #0f766e;
            background: #f0fdfa;
            border-radius: 999px;
            padding: 2px 7px;
            max-width: 72px;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .jobs-history-card-item__btn {
            flex: 0 0 auto;
            min-height: 28px;
            height: 28px;
            padding: 0 10px;
            border-radius: 6px;
            border: 1px solid #e2e8f0;
            background: #fff;
            font-size: 0.68rem;
            color: #0f766e;
            cursor: pointer;
        }

        @media (max-width: 900px) {
            #view-jobs .jobs-view--analytics {
                /* 底栏留白由 .app-main 承担 */
                padding: 0 0 12px;
                overflow-x: hidden;
                overflow-y: auto;
                overscroll-behavior-y: contain;
                -webkit-overflow-scrolling: touch;
                background: #f1f5f9;
            }

            #view-jobs .jobs-stat-row,
            #view-jobs .jobs-stat-modules,
            #view-jobs .jobs-period-box,
            #view-jobs .jobs-charts,
            #view-jobs .jobs-grid,
            #view-jobs .jobs-history-card,
            #view-jobs .jobs-situation-card {
                margin-left: 0;
                margin-right: 0;
                width: 100%;
                max-width: none;
                border-radius: 0;
                box-shadow: none;
                box-sizing: border-box;
            }

            #view-jobs .jobs-stat-row,
            #view-jobs .jobs-stat-modules,
            #view-jobs #jobsStatRow {
                grid-template-columns: 1fr;
                gap: 8px;
                margin: 0;
                padding: 8px;
                background: transparent;
                border-bottom: 0;
            }

            #view-jobs .jobs-period-box {
                order: -1;
                border-radius: 12px;
                padding: 10px;
                box-shadow: none;
            }

            #view-jobs .jobs-filters--box {
                display: grid !important;
                grid-template-columns: minmax(0, 1fr) auto auto;
                gap: 8px !important;
                align-items: end !important;
            }

            #view-jobs .jobs-filters--box .jobs-field {
                display: flex !important;
                flex-direction: column !important;
                gap: 4px !important;
                min-width: 0;
            }

            #view-jobs .jobs-filters--box label {
                font-size: 0.62rem !important;
                color: #94a3b8 !important;
            }

            #view-jobs .jobs-filters--box select,
            #view-jobs .jobs-filters--box input {
                width: 100% !important;
                height: 36px !important;
                min-height: 36px !important;
            }

            #view-jobs .jobs-filters--box .btn {
                width: auto !important;
                height: 36px !important;
                min-height: 36px !important;
                padding: 0 12px !important;
            }

            #view-jobs .jobs-stat-module {
                border-radius: 12px;
                padding: 10px;
                box-shadow: none;
            }

            #view-jobs .jobs-stat-module__grid {
                grid-template-columns: repeat(3, minmax(0, 1fr));
                gap: 6px;
            }

            #view-jobs .jobs-stat {
                min-height: 56px;
                padding: 10px 10px 10px 12px;
                border: 1px solid #e8eef5;
                border-radius: 8px;
                box-shadow: none;
                background: #f8fafc;
            }

            #view-jobs .jobs-stat::before {
                display: none;
            }

            #view-jobs .jobs-stat__k {
                font-size: 0.62rem;
            }

            #view-jobs .jobs-stat__v {
                margin-top: 4px;
                font-size: 1.15rem;
            }

            #view-jobs .jobs-stat__s {
                font-size: 0.58rem;
                margin-top: 2px;
                white-space: normal;
            }

            #view-jobs .jobs-situation-chips {
                padding: 8px 10px 10px;
                gap: 5px;
                border-bottom: 1px solid #eef2f7;
            }

            #view-jobs .jobs-situation-chip {
                padding: 5px 8px;
                font-size: 0.66rem;
            }

            #view-jobs .jobs-stat--extra {
                display: flex;
            }

            #view-jobs .jobs-charts,
            #view-jobs .jobs-grid {
                display: flex;
                flex-direction: column;
                gap: 0;
                margin: 0;
            }

            #view-jobs .jobs-card {
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                border-top: 0;
                margin: 0;
                box-shadow: none;
            }

            #view-jobs .jobs-card__head {
                padding: 8px 12px;
                background: #fff;
            }

            #view-jobs .jobs-card__title {
                font-size: 0.78rem;
            }

            #view-jobs .jobs-card__body {
                padding: 8px 10px 10px;
            }

            #view-jobs .jobs-chart-wrap {
                min-height: 220px;
            }

            #view-jobs .jobs-chart-svg {
                height: 210px;
            }

            #view-jobs .jobs-chart-empty {
                min-height: 180px;
            }

            #view-jobs .jobs-card__head--history {
                flex-direction: column;
                align-items: stretch;
                gap: 8px;
            }

            #view-jobs .jobs-situation-head.jobs-card__head--history {
                flex-direction: row !important;
                align-items: center !important;
                flex-wrap: nowrap !important;
                overflow-x: auto;
            }

            #view-jobs .jobs-history-tools {
                display: grid;
                grid-template-columns: minmax(0, 1fr) minmax(0, 1fr) auto;
                gap: 8px;
                width: 100%;
                align-items: end;
            }

            #view-jobs .jobs-situation-tools.jobs-history-tools {
                display: flex !important;
                flex-wrap: nowrap !important;
                width: auto !important;
                grid-template-columns: none !important;
                align-items: center;
            }

            #view-jobs .jobs-history-tools label {
                display: none;
            }

            #view-jobs .jobs-history-tools select,
            #view-jobs .jobs-history-tools .btn {
                width: 100%;
                height: 34px;
                min-height: 34px;
            }

            #view-jobs .jobs-situation-tools select,
            #view-jobs .jobs-situation-tools .btn,
            #view-jobs .jobs-situation-tools .jobs-situation-filters__search,
            #view-jobs .jobs-situation-tools .jobs-situation-filters__state {
                width: auto !important;
            }

            #view-jobs .jobs-history-table-wrap {
                display: none;
            }

            #view-jobs .jobs-history-cards {
                display: block;
            }

            #view-jobs .jobs-pill {
                font-size: 0.72rem;
            }
        }

        /* ========== 作业追溯 / 数据库表风格 ========== */
        .archive-view {
            height: 100%;
            overflow: hidden;
            padding: 10px 12px 12px;
            box-sizing: border-box;
            display: flex;
            flex-direction: column;
            gap: 8px;
            background: #eef2f6;
        }

        .repair-view {
            min-height: 0;
        }

        .repair-pane {
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .repair-pane--completion {
            flex: 0 1 42%;
        }

        .repair-pane--anomaly {
            flex: 1 1 58%;
        }

        .repair-pane__table {
            min-height: 0;
            flex: 1;
        }

        .completion-follow-table td.cell-warn {
            color: #9a6700;
            font-weight: 650;
        }

        .completion-follow-table td.cell-fail {
            color: #b42318;
            font-weight: 650;
        }

        .archive-toolbar {
            flex-shrink: 0;
            display: flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px;
            padding: 6px 10px;
            background: #fff;
            border: 1px solid #c9d4e0;
            border-radius: 4px;
            overflow-x: auto;
        }

        .archive-toolbar__title {
            font-size: 0.86rem;
            font-weight: 750;
            color: #0f172a;
            white-space: nowrap;
            flex: 0 0 auto;
        }

        .archive-close-btn {
            flex: 0 0 auto;
            height: 30px;
            min-height: 30px;
            padding: 0 10px;
            font-size: 0.76rem;
            border-color: #fdba74;
            color: #c2410c;
            background: #fff7ed;
        }

        .archive-close-btn:hover {
            border-color: #fb923c;
            background: #ffedd5;
        }

        .archive-close-btn__count {
            display: inline-block;
            min-width: 1.2em;
            margin-left: 2px;
            font-weight: 700;
        }

        .archive-toolbar__meta {
            font-size: 0.72rem;
            color: #64748b;
            white-space: nowrap;
            flex: 0 0 auto;
        }

        .archive-toolbar__filters {
            display: flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 6px;
            margin-left: auto;
            flex: 0 1 auto;
            min-width: 0;
        }

        .archive-toolbar__filters label {
            display: inline !important;
            margin: 0 !important;
            font-size: 0.72rem !important;
            font-weight: 600 !important;
            color: #475569 !important;
            white-space: nowrap;
            flex: 0 0 auto;
        }

        .archive-toolbar__filters select,
        .archive-toolbar__filters input[type="search"] {
            display: inline-block !important;
            width: auto !important;
            min-width: 0;
            max-width: none;
            flex: 0 0 auto;
            min-height: 28px !important;
            height: 28px !important;
            padding: 2px 6px !important;
            border: 1px solid #94a3b8 !important;
            border-radius: 2px !important;
            font: inherit;
            font-size: 0.76rem !important;
            background: #fff;
            color: #0f172a;
            box-sizing: border-box;
        }

        .archive-toolbar__filters input[type="search"] {
            width: 140px !important;
        }

        .archive-toolbar__filters select {
            width: 88px !important;
        }

        .archive-toolbar__filters select#archiveWeek {
            width: 96px !important;
        }

        .archive-toolbar__filters select#archiveOperator,
        .archive-toolbar__filters select#archiveResult {
            width: 100px !important;
        }

        .archive-toolbar__filters .btn {
            min-height: 28px;
            height: 28px;
            padding: 0 10px;
            border-radius: 2px;
            font-size: 0.76rem;
            flex: 0 0 auto;
            width: auto !important;
            white-space: nowrap;
        }

        .archive-toolbar__filters select.archive-export-select {
            min-height: 28px;
            height: 28px;
            width: auto !important;
            min-width: 7.5em;
            padding: 0 26px 0 10px;
            border-radius: 2px;
            border: 1px solid transparent;
            background-color: #7c3aed;
            background-image:
                linear-gradient(135deg, #7c3aed, #2563eb),
                linear-gradient(45deg, transparent 50%, #fff 50%),
                linear-gradient(135deg, #fff 50%, transparent 50%);
            background-position: 0 0, calc(100% - 12px) calc(50% - 2px), calc(100% - 8px) calc(50% - 2px);
            background-size: 100% 100%, 4px 4px, 4px 4px;
            background-repeat: no-repeat;
            color: #fff;
            font-size: 0.76rem;
            font-weight: 650;
            cursor: pointer;
            appearance: none;
            -webkit-appearance: none;
        }

        .archive-toolbar__filters select.archive-export-select:hover {
            filter: brightness(1.05);
        }

        .archive-toolbar__filters select.archive-export-select:focus {
            outline: 2px solid rgba(124, 58, 237, 0.35);
            outline-offset: 1px;
        }

        .archive-toolbar__filters select.archive-export-select option {
            color: #0f172a;
            background: #fff;
            font-weight: 500;
        }

        .archive-trash-toolbar {
            display: flex;
            align-items: center;
            gap: 10px;
            margin-bottom: 10px;
            font-size: 0.85rem;
            color: #475569;
        }

        .archive-trash-toolbar .is-danger-text {
            color: #b91c1c;
            border-color: #fca5a5;
        }

        .archive-close-actions {
            margin-left: auto;
            display: inline-flex;
            flex-wrap: wrap;
            gap: 8px;
            align-items: center;
        }

        .archive-trash-table-wrap {
            max-height: min(52vh, 480px);
            overflow: auto;
            border: 1px solid #cbd5e1;
        }

        .archive-wide-panel {
            width: min(96vw, 1480px);
            height: min(92vh, 960px);
            max-height: min(92vh, 960px);
            display: flex;
            flex-direction: column;
        }

        .archive-wide-panel .export-modal__head {
            flex-shrink: 0;
            padding: 14px 18px 10px;
        }

        .archive-wide-panel .export-modal__body {
            overflow: hidden;
            display: flex;
            flex-direction: column;
            gap: 10px;
            flex: 1;
            min-height: 0;
            padding: 12px 16px;
        }

        .archive-wide-panel .export-modal__foot {
            flex-shrink: 0;
        }

        .archive-wide-panel .archive-trash-table-wrap {
            flex: 1;
            min-height: 0;
            max-height: none;
            overflow: auto;
            border: 0;
            background: #f1f5f9;
            border-radius: 10px;
            padding: 10px;
        }

        .archive-close-list {
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .archive-close-card {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            padding: 14px 16px;
            box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
        }

        .archive-close-card__head {
            display: flex;
            align-items: flex-start;
            justify-content: space-between;
            gap: 12px;
            margin-bottom: 12px;
            padding-bottom: 10px;
            border-bottom: 1px solid #eef2f7;
        }

        .archive-close-card__title {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 8px;
            font-size: 1rem;
            font-weight: 750;
            color: #0f172a;
        }

        .archive-close-card__meta {
            margin-top: 6px;
            font-size: 0.8rem;
            color: #64748b;
            line-height: 1.5;
        }

        .archive-close-card__actions {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            flex-shrink: 0;
        }

        .archive-close-card__actions button {
            min-height: 32px;
            padding: 0 12px;
            border-radius: 8px;
            border: 1px solid #cbd5e1;
            background: #fff;
            font: inherit;
            font-size: 0.8rem;
            cursor: pointer;
        }

        .archive-close-card__actions button.is-primary {
            border-color: #99f6e4;
            background: #f0fdfa;
            color: #0f766e;
            font-weight: 650;
        }

        .archive-close-card__actions button.is-danger {
            border-color: #fecaca;
            background: #fff1f2;
            color: #be123c;
        }

        .archive-close-section {
            margin-top: 10px;
        }

        .archive-close-section__label {
            font-size: 0.72rem;
            font-weight: 700;
            color: #94a3b8;
            margin-bottom: 6px;
            letter-spacing: 0.02em;
        }

        .archive-close-chips {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
        }

        .archive-close-chip {
            display: inline-flex;
            align-items: center;
            max-width: 100%;
            padding: 4px 10px;
            border-radius: 999px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            color: #334155;
            font-size: 0.78rem;
            line-height: 1.35;
            word-break: break-word;
        }

        .archive-close-chip.is-line {
            background: #eff6ff;
            border-color: #bfdbfe;
            color: #1d4ed8;
        }

        .archive-close-chip.is-dev {
            background: #fff7ed;
            border-color: #fed7aa;
            color: #c2410c;
        }

        .archive-close-empty {
            padding: 48px 16px;
            text-align: center;
            color: #94a3b8;
            font-size: 0.9rem;
            background: #fff;
            border-radius: 12px;
            border: 1px dashed #cbd5e1;
        }

        .archive-close-loading {
            color: #64748b;
            font-size: 0.8rem;
        }

        .archive-trash-table .col-ops button {
            margin-right: 4px;
        }

        .archive-grid-shell {
            flex: 1;
            min-height: 0;
            background: #fff;
            border: 1px solid #94a3b8;
            border-radius: 2px;
            overflow: auto;
        }

        .archive-table {
            width: 100%;
            min-width: 1180px;
            border-collapse: collapse;
            table-layout: fixed;
            font-family: Consolas, "Sarasa Mono SC", "Microsoft YaHei UI", monospace;
            font-size: 12px;
            line-height: 1.25;
            color: #0f172a;
        }

        .archive-table th,
        .archive-table td {
            padding: 3px 6px;
            border: 1px solid #cbd5e1;
            text-align: left;
            vertical-align: middle;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            height: 26px;
        }

        .archive-table th {
            position: sticky;
            top: 0;
            z-index: 2;
            background: #dbe4ef;
            color: #1e293b;
            font-weight: 700;
            font-size: 12px;
            box-shadow: inset 0 -1px 0 #94a3b8;
        }

        .archive-table tbody tr:nth-child(even) td {
            background: #f8fafc;
        }

        .archive-table tbody tr:hover td {
            background: #e0f2fe;
            cursor: default;
        }

        .archive-table tbody tr.is-active td {
            background: #bae6fd;
        }

        #view-users .users-admin-head {
            flex-wrap: wrap;
            gap: 8px 12px;
        }

        #view-users .users-admin-head .jobs-head__brand {
            flex: 0 0 auto;
        }

        #view-users .users-admin-head .jobs-filters {
            margin-left: auto;
        }

        .users-admin-toolbar {
            display: flex;
            align-items: center;
            gap: 10px 14px;
            flex-wrap: wrap;
            margin: 0 0 10px;
        }

        .users-admin-search {
            display: flex;
            align-items: center;
            gap: 8px;
            flex: 1 1 240px;
            min-width: 200px;
            max-width: 420px;
        }

        .users-admin-search__k {
            flex: 0 0 auto;
            font-size: 0.78rem;
            font-weight: 650;
            color: #64748b;
        }

        .users-admin-search input {
            flex: 1 1 auto;
            min-width: 0;
            height: 34px;
            padding: 0 10px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #fff;
            font: inherit;
            font-size: 0.84rem;
            color: #0f172a;
            box-sizing: border-box;
        }

        .users-admin-toolbar__meta {
            font-size: 0.78rem;
            color: #64748b;
            white-space: nowrap;
        }

        .users-admin-table .users-sort {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            margin: 0;
            padding: 0;
            border: 0;
            background: transparent;
            font: inherit;
            font-weight: 700;
            color: inherit;
            cursor: pointer;
            white-space: nowrap;
        }

        .users-admin-table .users-sort::after {
            content: '↕';
            font-size: 0.68rem;
            color: #94a3b8;
            font-weight: 600;
        }

        .users-admin-table .users-sort.is-active::after {
            content: '↑';
            color: #0f766e;
        }

        .users-admin-table .users-sort.is-active.is-desc::after {
            content: '↓';
        }

        .users-admin-table .cell-online {
            min-width: 108px;
            max-width: 124px;
            vertical-align: middle;
            white-space: nowrap;
        }

        .user-online {
            display: inline-flex;
            flex-direction: row;
            align-items: center;
            flex-wrap: nowrap;
            gap: 6px;
            min-width: 0;
            max-width: 100%;
            padding: 3px 8px 3px 6px;
            border-radius: 999px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            box-sizing: border-box;
        }

        .user-online.is-on {
            background: #f0fdf4;
            border-color: #bbf7d0;
        }

        .user-online__dot {
            width: 7px;
            height: 7px;
            border-radius: 50%;
            background: #cbd5e1;
            flex: 0 0 auto;
            box-shadow: 0 0 0 3px #f1f5f9;
        }

        .user-online.is-on .user-online__dot {
            background: #16a34a;
            box-shadow: 0 0 0 3px rgba(22, 163, 74, 0.16);
        }

        .user-online__text {
            font-size: 0.74rem;
            font-weight: 700;
            color: #94a3b8;
            line-height: 1;
            letter-spacing: 0.02em;
        }

        .user-online.is-on .user-online__text {
            color: #15803d;
        }

        .user-online__devs {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            margin-left: 2px;
            padding-left: 6px;
            border-left: 1px solid #e2e8f0;
        }

        .user-online.is-on .user-online__devs {
            border-left-color: #bbf7d0;
        }

        .user-online__chip {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 18px;
            min-width: 28px;
            padding: 0 6px;
            border-radius: 999px;
            border: 0;
            background: #eef2f7;
            color: #94a3b8;
            font-size: 0.64rem;
            font-weight: 700;
            line-height: 1;
            letter-spacing: 0.02em;
        }

        .user-online__chip.is-on {
            background: #dcfce7;
            color: #166534;
        }

        .archive-table tbody tr.is-user-online td:first-child {
            box-shadow: inset 3px 0 0 #16a34a;
        }

        .archive-table tbody tr.is-user-offline td:first-child {
            box-shadow: inset 3px 0 0 #e2e8f0;
        }

        .archive-table .col-idx { width: 36px; text-align: right; color: #64748b; }
        .archive-table .col-time { width: 132px; }
        .archive-table .col-month { width: 48px; }
        .archive-table .col-week { width: 58px; }
        .archive-table .col-op { width: 64px; }
        .archive-table .col-user { width: 64px; }
        .archive-table .col-result { width: 96px; }
        .archive-source-tag {
            display: inline-block;
            margin-left: 4px;
            padding: 0 5px;
            border-radius: 3px;
            font-size: 11px;
            font-weight: 600;
            line-height: 1.5;
            vertical-align: middle;
        }
        .archive-source-tag.is-close {
            background: #fff7ed;
            color: #c2410c;
            border: 1px solid #fdba74;
        }
        .archive-source-tag.is-makeup {
            background: #eff6ff;
            color: #1d4ed8;
            border: 1px solid #93c5fd;
        }
        .archive-table .col-num { width: 42px; text-align: right; }
        .archive-table .col-line { width: 88px; }
        .archive-table .col-dev { width: 120px; }
        .archive-table .col-detail { width: 220px; }
        .archive-table .col-ws { width: 58px; text-align: center; }
        .archive-table .col-sign { width: 44px; text-align: center; }
        .archive-table .col-act { width: 148px; text-align: left; }

        .archive-table .cell-detail {
            white-space: nowrap;
            font-size: 11px;
            color: #334155;
        }

        .archive-table .cell-detail .detail-count {
            color: #0f766e;
            font-weight: 700;
            margin-right: 4px;
        }

        .archive-expand-row td {
            height: auto !important;
            white-space: normal !important;
            overflow: visible !important;
            background: #f1f5f9 !important;
            padding: 0 !important;
            border-top: 0 !important;
        }

        .archive-expand-box {
            padding: 6px 8px 8px;
        }

        .archive-expand-title {
            font-size: 11px;
            font-weight: 700;
            color: #475569;
            margin-bottom: 4px;
        }

        .archive-detail-mini {
            width: 100%;
            border-collapse: collapse;
            font-size: 11px;
            background: #fff;
        }

        .archive-detail-mini th,
        .archive-detail-mini td {
            border: 1px solid #cbd5e1;
            padding: 2px 5px;
            height: auto;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: 280px;
        }

        .archive-detail-mini th {
            position: static;
            background: #e2e8f0;
            box-shadow: none;
            font-size: 11px;
        }

        .archive-detail-mini td.col-content {
            white-space: normal;
            max-width: 420px;
        }

        .archive-table .cell-act {
            overflow: visible !important;
            height: auto !important;
            white-space: nowrap;
        }

        .archive-act-bar {
            display: inline-flex;
            align-items: center;
            gap: 3px;
            max-width: 100%;
        }

        .archive-table .cell-act button {
            border: 1px solid #94a3b8;
            background: #f8fafc;
            color: #0f172a;
            border-radius: 2px;
            padding: 0 5px;
            font: inherit;
            font-size: 10px;
            line-height: 1.45;
            min-height: 20px;
            cursor: pointer;
            margin: 0;
            flex: 0 0 auto;
        }

        .archive-table .cell-act button:hover {
            background: #e2e8f0;
        }

        .archive-table .cell-act button.is-danger {
            background: #fff;
            border-color: #f87171;
            color: #b91c1c;
        }

        .archive-table .cell-act button.is-danger:hover {
            background: #fef2f2;
        }

        .archive-table .cell-act button.is-warn {
            border-color: #fb923c;
            color: #c2410c;
            background: #fff7ed;
        }

        .archive-table .cell-act button.is-ok,
        .archive-table .cell-act button.is-primary {
            border-color: #14b8a6;
            color: #0f766e;
            background: #f0fdfa;
        }

        .archive-table .cell-act button:disabled {
            opacity: 0.4;
            cursor: not-allowed;
        }

        .archive-act-dd {
            position: relative;
            flex: 0 0 auto;
        }

        .archive-act-dd__toggle {
            min-width: 22px;
            padding: 0 4px !important;
            font-weight: 700 !important;
            letter-spacing: 0.02em;
        }

        .archive-act-dd__menu {
            position: fixed;
            z-index: 4200;
            min-width: 104px;
            padding: 4px;
            border: 1px solid #e2e8f0;
            border-radius: 6px;
            background: #fff;
            box-shadow: 0 8px 20px rgba(15, 23, 42, 0.12);
            display: none;
            flex-direction: column;
            gap: 2px;
        }

        .archive-act-dd.is-open .archive-act-dd__menu {
            display: flex;
        }

        .archive-act-dd__menu button {
            width: 100%;
            text-align: left;
            margin: 0 !important;
            padding: 4px 8px !important;
            font-size: 11px !important;
            min-height: 24px;
            white-space: nowrap;
        }

        .mine-override-form {
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .mine-override-form label {
            display: flex;
            flex-direction: column;
            gap: 6px;
            font-size: 0.85rem;
            color: #475569;
        }

        .mine-override-form select,
        .mine-override-form textarea,
        .mine-override-form input[type="text"] {
            min-height: 36px;
            padding: 8px 10px;
            border: 1px solid #94a3b8;
            border-radius: 8px;
            font: inherit;
            background: #fff;
        }

        .mine-override-form textarea {
            min-height: 72px;
            resize: vertical;
        }

        .mine-override-target {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px;
        }

        .mine-override-target[hidden] {
            display: none !important;
        }

        .mine-override-summary {
            padding: 10px 12px;
            border-radius: 8px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            color: #0f172a;
            font-size: 0.9rem;
            line-height: 1.45;
        }

        .user-form-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 12px 14px;
        }

        .user-form-grid label {
            display: flex;
            flex-direction: column;
            gap: 6px;
            font-size: 0.85rem;
            color: #475569;
        }

        .user-form-grid__span {
            grid-column: 1 / -1;
        }

        .user-form-grid input,
        .user-form-grid select {
            min-height: 38px;
            padding: 8px 10px;
            border: 1px solid #94a3b8;
            border-radius: 8px;
            font: inherit;
            background: #fff;
        }

        .user-form-role-hint {
            margin-top: 4px;
            font-size: 0.78rem;
            line-height: 1.4;
            color: #b45309;
            background: #fffbeb;
            border: 1px solid #fcd34d;
            border-radius: 8px;
            padding: 6px 8px;
        }

        .user-perm-block {
            margin-top: 2px;
            padding: 12px 12px 10px;
            border: 1px solid #e2e8f0;
            border-radius: 10px;
            background: #f8fafc;
        }

        .user-perm-block__title {
            font-size: 0.88rem;
            font-weight: 600;
            color: #0f172a;
            margin-bottom: 4px;
        }

        .user-perm-block__hint {
            font-size: 0.78rem;
            color: #64748b;
            margin-bottom: 10px;
            line-height: 1.4;
        }

        .user-perm-list {
            display: grid;
            gap: 8px;
        }

        .user-perm-item {
            display: flex !important;
            flex-direction: row !important;
            align-items: flex-start;
            gap: 10px !important;
            margin: 0;
            padding: 8px 10px;
            border-radius: 8px;
            background: #fff;
            border: 1px solid #e2e8f0;
            color: #334155;
            font-size: 0.86rem;
            cursor: pointer;
        }

        .user-perm-item input {
            margin-top: 2px;
            min-height: auto;
            width: 16px;
            height: 16px;
            flex: 0 0 auto;
        }

        .user-perm-item__text {
            display: flex;
            flex-direction: column;
            gap: 2px;
            min-width: 0;
        }

        .user-perm-item__label {
            color: #0f172a;
            font-weight: 500;
        }

        .user-perm-item__default {
            font-size: 0.75rem;
            color: #94a3b8;
            line-height: 1.35;
        }

        .user-perm-item__ui {
            display: block;
            margin-top: 2px;
            color: #0369a1;
        }

        .user-perm-item.is-diff .user-perm-item__label::after {
            content: '·自定义';
            margin-left: 6px;
            font-size: 0.72rem;
            font-weight: 600;
            color: #c2410c;
        }

        .user-perm-chips {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 5px;
            max-width: 100%;
            min-height: 24px;
        }

        .user-perm-chip {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            height: 22px;
            padding: 0 9px;
            border-radius: 999px;
            border: 1px solid transparent;
            font-size: 0.7rem;
            font-weight: 700;
            line-height: 1;
            letter-spacing: 0.02em;
            background: #eef2f7;
            color: #475569;
            white-space: nowrap;
            box-sizing: border-box;
        }

        .user-perm-chip.is-base {
            background: #f1f5f9;
            border-color: #e2e8f0;
            color: #64748b;
            font-weight: 650;
        }

        .user-perm-chip.is-review {
            background: #eff6ff;
            border-color: #bfdbfe;
            color: #1d4ed8;
        }

        .user-perm-chip.is-dispatch {
            background: #eef2ff;
            border-color: #c7d2fe;
            color: #4338ca;
        }

        .user-perm-chip.is-plan {
            background: #ecfeff;
            border-color: #a5f3fc;
            color: #0e7490;
        }

        .user-perm-chip.is-spare {
            background: #f0fdfa;
            border-color: #99f6e4;
            color: #0f766e;
        }

        .user-perm-chip.is-spare-chief {
            background: #fff7ed;
            border-color: #fdba74;
            color: #c2410c;
        }

        .user-perm-chip.is-admin {
            background: #faf5ff;
            border-color: #e9d5ff;
            color: #7e22ce;
        }

        .user-perm-chip.is-db {
            background: #fdf2f8;
            border-color: #fbcfe8;
            color: #be185d;
        }

        /* 兼容旧 class */
        .user-perm-chip.is-on {
            background: #eff6ff;
            border-color: #bfdbfe;
            color: #1d4ed8;
        }

        .users-admin-table .cell-perms {
            min-width: 220px;
            vertical-align: middle;
            padding-top: 8px;
            padding-bottom: 8px;
        }

        .users-admin-table td {
            vertical-align: middle;
        }

        .users-admin-table tbody tr {
            min-height: 44px;
        }

        .user-perm-item.is-locked {
            opacity: 0.72;
            cursor: default;
        }

        @media (max-width: 640px) {
            .user-form-grid {
                grid-template-columns: 1fr;
            }
        }

        .archive-edit-form {
            display: grid;
            grid-template-columns: repeat(2, minmax(0, 1fr));
            gap: 10px;
            margin-bottom: 12px;
        }

        .archive-edit-form label {
            display: block !important;
            margin: 0 0 4px !important;
            font-size: 0.72rem !important;
            color: #64748b !important;
            font-weight: 650 !important;
        }

        .archive-edit-form input,
        .archive-edit-form select,
        .archive-edit-form textarea {
            width: 100% !important;
            min-height: 34px;
            padding: 6px 8px !important;
            border: 1px solid #cbd5e1 !important;
            border-radius: 6px !important;
            font: inherit;
            font-size: 0.84rem !important;
            box-sizing: border-box;
        }

        .archive-edit-form textarea {
            min-height: 64px;
            resize: vertical;
        }

        .archive-edit-form .span-2 {
            grid-column: 1 / -1;
        }

        .archive-edit-details {
            max-height: 280px;
            overflow: auto;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
        }

        .archive-edit-details table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.76rem;
        }

        .archive-edit-details th,
        .archive-edit-details td {
            border-bottom: 1px solid #eef2f7;
            padding: 6px 8px;
            text-align: left;
            vertical-align: middle;
        }

        .archive-edit-details th {
            background: #f8fafc;
            position: sticky;
            top: 0;
        }

        .archive-edit-details select {
            width: 100% !important;
            min-height: 30px;
            padding: 2px 6px !important;
            border: 1px solid #cbd5e1 !important;
            border-radius: 4px !important;
            font-size: 0.76rem !important;
        }

        @media (max-width: 720px) {
            .archive-edit-form {
                grid-template-columns: 1fr;
            }
        }

        .archive-flag {
            font-weight: 700;
        }

        .archive-flag.is-ok { color: #047857; }
        .archive-flag.is-warn { color: #c2410c; }

        .archive-empty-row td {
            text-align: center;
            color: #94a3b8;
            padding: 24px 8px;
            font-family: "Microsoft YaHei UI", sans-serif;
        }

        /* ========== PM 模块顶栏 ========== */
        .header {
            flex-shrink: 0;
            height: var(--topbar-h);
            padding: 0 20px;
            background: linear-gradient(90deg, #115e59 0%, #0e7490 55%, #155e75 100%);
            color: white;
            box-shadow: 0 2px 12px rgba(15, 23, 42, 0.12);
            display: flex;
            align-items: center;
            gap: 20px;
            min-width: 0;
        }

        /* 去掉与全局顶栏重复的「PM 计划管理」大标题后，仅保留当前表信息条 */
        .pm-module-bar {
            height: 44px;
            padding: 0 16px;
            background: #0f766e;
            box-shadow: none;
            gap: 14px;
        }

        /* ========== PM 计划模块：顶部横向导航 + 双面板 ========== */
        .pm-module {
            display: flex;
            flex-direction: column;
            flex: 1;
            min-height: 0;
            width: 100%;
            background: #eef2f6;
            overflow: hidden;
        }

        .pm-module-nav {
            flex: 0 0 auto;
            width: 100%;
            display: flex;
            flex-direction: row;
            align-items: stretch;
            justify-content: stretch;
            gap: 0;
            padding: 0;
            background: rgba(255, 255, 255, 0.92);
            border-right: none;
            border-bottom: 1px solid var(--border);
            overflow: hidden;
        }

        .pm-module-nav__track {
            display: flex;
            flex-direction: row;
            align-items: stretch;
            gap: 4px;
            width: 100%;
            padding: 6px 8px;
            margin: 0;
            border: 0;
            border-radius: 0;
            background: transparent;
            box-shadow: none;
            box-sizing: border-box;
        }

        .pm-module-nav__btn {
            position: relative;
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;
            gap: 8px;
            flex: 1 1 0;
            min-width: 0;
            min-height: 0;
            height: 36px;
            padding: 0 12px;
            border: 0;
            border-radius: 10px;
            background: transparent;
            color: var(--text);
            cursor: pointer;
            text-align: center;
            font: inherit;
            transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
        }

        .pm-module-nav__btn:hover {
            background: var(--primary-light);
            color: #115e59;
        }

        .pm-module-nav__btn:focus-visible {
            outline: 2px solid #0f766e;
            outline-offset: 1px;
            z-index: 1;
        }

        .pm-module-nav__btn.is-active {
            background: linear-gradient(135deg, #0f766e, #0e7490);
            color: #fff;
            box-shadow: 0 4px 12px rgba(15, 118, 110, 0.22);
        }

        .pm-module-nav__btn.is-active::after {
            display: none;
        }

        .pm-module-nav__name {
            font-size: 0.88rem;
            font-weight: 700;
            line-height: 1.2;
            letter-spacing: 0.01em;
            white-space: nowrap;
        }

        .pm-module-nav__hint {
            font-size: 0.68rem;
            font-weight: 500;
            color: #64748b;
            line-height: 1.2;
            max-width: 42%;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            opacity: 0.92;
        }

        .pm-module-nav__btn.is-active .pm-module-nav__hint {
            color: rgba(255, 255, 255, 0.82);
        }

        .pm-module-nav__btn:hover .pm-module-nav__hint {
            color: #0f766e;
        }

        .pm-module-nav__btn.is-active:hover .pm-module-nav__hint {
            color: rgba(255, 255, 255, 0.88);
        }

        /* 计划维护状态摘要：桌面显示在标题旁（计划表/作业库走底栏信息，故默认隐藏） */
        #pmPaneEdit .pm-plan-toolbar .pm-content-toolbar__brand .pm-content-status {
            display: inline;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: min(240px, 28vw);
            margin-left: 8px;
            font-size: 0.72rem;
            color: #0f766e;
        }

        .pm-maintain-stats {
            display: grid;
            grid-template-columns: repeat(6, minmax(72px, 1fr));
            gap: 8px;
            width: 100%;
        }

        .pm-maintain-stat {
            display: flex;
            flex-direction: column;
            gap: 2px;
            min-width: 0;
            padding: 10px 12px;
            border-radius: 12px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
        }

        .pm-maintain-stat__k {
            font-size: 0.68rem;
            font-weight: 650;
            color: #64748b;
            writing-mode: horizontal-tb;
            white-space: nowrap;
        }

        .pm-maintain-stat__v {
            font-size: 1.15rem;
            font-weight: 700;
            color: #0f172a;
            line-height: 1.2;
        }

        .pm-maintain-stat.is-done { background: #f0fdf4; border-color: #bbf7d0; }
        .pm-maintain-stat.is-done .pm-maintain-stat__v { color: #15803d; }
        .pm-maintain-stat.is-review { background: #eff6ff; border-color: #bfdbfe; }
        .pm-maintain-stat.is-review .pm-maintain-stat__v { color: #1d4ed8; }
        .pm-maintain-stat.is-progress { background: #fff7ed; border-color: #fed7aa; }
        .pm-maintain-stat.is-progress .pm-maintain-stat__v { color: #c2410c; }
        .pm-maintain-stat.is-pending { background: #f8fafc; border-color: #e2e8f0; }

        .pm-maintain-list-wrap {
            flex: 1;
            min-height: 0;
            width: 100%;
            overflow: hidden;
            border: 1px solid #e2e8f0;
            border-radius: 14px;
            background: #fff;
            display: flex;
            flex-direction: column;
        }

        .pm-maintain-form-scroll {
            flex: 1;
            min-height: 0;
            overflow: auto;
            -webkit-overflow-scrolling: touch;
        }

        .pm-maintain-form-table {
            min-width: 1080px;
        }

        .pm-maintain-station-cell {
            vertical-align: top;
        }

        .pm-maintain-station-cell__name {
            font-weight: 700;
            color: #0f172a;
            margin-bottom: 6px;
            line-height: 1.3;
        }

        .pm-maintain-station-cell .pm-maintain-badge {
            display: inline-block;
            margin-bottom: 4px;
        }

        .pm-maintain-station-cell__meta {
            margin-top: 6px;
            font-size: 0.7rem;
            color: #64748b;
            line-height: 1.35;
        }

        .pm-maintain-form-table tr.is-empty-detail td.col-content {
            color: #b45309;
            background: #fffbeb;
        }

        .pm-maintain-form-table tr.is-gap td {
            background: #fff7ed;
        }

        .pm-maintain-list {
            display: flex;
            flex-direction: column;
            gap: 0;
        }

        .pm-maintain-card {
            border-bottom: 1px solid #eef2f7;
        }

        .pm-maintain-card:last-child {
            border-bottom: 0;
        }

        .pm-maintain-card__sum {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            padding: 12px 14px;
            cursor: pointer;
            list-style: none;
            user-select: none;
        }

        .pm-maintain-card__sum::-webkit-details-marker {
            display: none;
        }

        .pm-maintain-card__sum:hover {
            background: #f8fafc;
        }

        .pm-maintain-card[open] > .pm-maintain-card__sum {
            background: #f0fdfa;
            border-bottom: 1px solid #ccfbf1;
        }

        .pm-maintain-card__main {
            min-width: 0;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .pm-maintain-card__title {
            font-size: 0.95rem;
            font-weight: 700;
            color: #0f172a;
        }

        .pm-maintain-card__meta {
            font-size: 0.75rem;
            color: #64748b;
        }

        .pm-maintain-badge {
            flex-shrink: 0;
            padding: 4px 10px;
            border-radius: 999px;
            font-size: 0.72rem;
            font-weight: 700;
            background: #e2e8f0;
            color: #475569;
        }

        .pm-maintain-badge.is-done { background: #dcfce7; color: #166534; }
        .pm-maintain-badge.is-review { background: #dbeafe; color: #1e40af; }
        .pm-maintain-badge.is-progress { background: #ffedd5; color: #9a3412; }
        .pm-maintain-badge.is-pending { background: #f1f5f9; color: #475569; }
        .pm-maintain-badge.is-rework { background: #fee2e2; color: #b91c1c; }
        .pm-maintain-badge.is-overdue { background: #fef3c7; color: #92400e; }
        .pm-maintain-badge.is-paused,
        .pm-maintain-badge.is-deferred { background: #e2e8f0; color: #64748b; }

        .pm-maintain-card__body {
            padding: 0 14px 14px;
        }

        .pm-maintain-card__info {
            display: flex;
            flex-wrap: wrap;
            gap: 8px 14px;
            margin: 0 0 10px;
            font-size: 0.75rem;
            color: #64748b;
        }

        .pm-maintain-card__info .is-warn {
            color: #b45309;
        }

        .pm-maintain-detail-empty {
            padding: 12px;
            border-radius: 10px;
            background: #fffbeb;
            border: 1px dashed #fcd34d;
            color: #92400e;
            font-size: 0.8rem;
        }

        .pm-maintain-detail-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.78rem;
        }

        .pm-maintain-detail-table th,
        .pm-maintain-detail-table td {
            padding: 8px 10px;
            border-bottom: 1px solid #eef2f7;
            text-align: left;
            vertical-align: top;
        }

        .pm-maintain-detail-table th {
            background: #f8fafc;
            color: #64748b;
            font-weight: 650;
            white-space: nowrap;
        }

        .pm-maintain-detail-table tr.is-gap td {
            background: #fff7ed;
        }

        .pm-edit-placeholder {
            display: none;
        }

        .pm-module-body {
            flex: 1;
            min-width: 0;
            min-height: 0;
            display: flex;
            flex-direction: column;
        }

        .pm-pane {
            display: none;
            flex: 1;
            min-height: 0;
            flex-direction: column;
            gap: 12px;
            padding: 12px;
            overflow: hidden;
        }

        .pm-pane.is-active {
            display: flex;
        }

        .pm-plan-top {
            display: grid;
            grid-template-columns: minmax(220px, 280px) minmax(0, 1fr);
            gap: 12px;
            flex: 0 0 auto;
            align-items: stretch;
            max-height: min(42vh, 420px);
        }


        .pm-ops-top {
            flex: 0 0 auto;
            max-height: none;
            min-height: 0;
        }

        /* 查询发送：左栏控件阵列 + 右栏主列表 */
        #pmPaneOps {
            overflow: hidden;
            gap: 12px;
            padding: 10px 12px;
            display: none;
        }

        #pmPaneOps.is-active {
            display: flex;
            flex-direction: row;
            align-items: stretch;
        }

        #pmPaneOps .pm-ops-top {
            display: flex;
            flex-direction: column;
            gap: 10px;
            flex: 0 0 360px;
            width: 360px;
            max-width: 40vw;
            margin: 0;
            max-height: none;
            overflow-x: hidden;
            overflow-y: auto;
            align-self: stretch;
        }

        #pmPaneOps .pm-ops-result {
            flex: 1 1 auto;
            min-width: 0;
            min-height: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        #pmPaneOps .pm-ops-result .result-header {
            padding: 8px 12px;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px 10px;
            min-width: 0;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list .result-title {
            flex: 0 0 auto;
            white-space: nowrap;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list .result-count {
            flex: 0 0 auto;
            margin-left: 0;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list > .list-toolbar-stats {
            flex: 0 1 auto;
            min-width: 0;
            max-width: 280px;
            margin-right: auto;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar {
            flex: 0 1 auto;
            margin: 0 0 0 auto;
            min-width: 0;
            padding: 4px 8px;
            justify-content: flex-end;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar-row:first-child {
            flex: 0 0 auto;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar input[type="search"] {
            flex: 0 0 220px;
            width: 220px;
            max-width: 240px;
            min-width: 160px;
        }

        #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar-row--meta {
            flex: 0 0 auto;
            margin-left: 0;
            justify-content: flex-end;
            min-width: 0;
        }

        #pmPaneOps .pm-ops-result .pm-list {
            flex: 1 1 auto;
            min-height: 0;
            overflow-x: hidden;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            overscroll-behavior: contain;
        }

        #pmPaneOps .pm-ops-result .send-progress {
            flex: 0 0 auto;
            margin: 0 12px 10px;
        }

        #pmPaneOps .card--excel,
        #pmPaneOps .card--workbench {
            flex: 0 0 auto;
            min-height: 0;
            max-height: none;
            overflow: visible;
            box-shadow: 0 6px 16px rgba(15, 23, 42, 0.05);
        }

        #pmPaneOps .card--workbench {
            flex: 1 1 auto;
            display: flex;
            flex-direction: column;
            min-height: 0;
        }

        #pmPaneOps .card__title {
            padding: 8px 12px;
            font-size: 0.8rem;
        }

        #pmPaneOps .card--excel > .side-file-row,
        #pmPaneOps .card--workbench > .workbench-body {
            padding: 10px 12px 12px;
        }

        #pmPaneOps .card--excel .side-file-row {
            flex: 0 0 auto;
            gap: 8px;
        }

        /* 数据源：上下两行 */
        #pmPaneOps .excel-store-rows {
            display: grid;
            grid-template-columns: 1fr;
            gap: 8px;
            background: transparent;
            border: none;
            padding: 0;
        }

        #pmPaneOps .excel-store-row {
            display: flex;
            flex-direction: row;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            padding: 8px 10px;
        }

        #pmPaneOps .excel-store-row .btn-pick {
            width: auto;
            flex: 0 0 auto;
            height: 30px;
            padding: 0 12px;
            font-size: 0.78rem;
        }

        #pmPaneOps .excel-store-row__name {
            font-size: 0.72rem;
            line-height: 1.35;
            word-break: break-all;
        }

        #pmPaneOps .card--excel .file-source-label {
            margin: 0;
            font-size: 0.7rem;
            line-height: 1.35;
        }

        #pmPaneOps .card--workbench .workbench-body {
            flex: 1 1 auto;
            display: flex;
            flex-direction: column;
            gap: 10px;
            overflow: auto;
            min-height: 0;
        }

        #pmPaneOps .card--workbench .workbench-filters {
            flex: 0 0 auto;
            gap: 10px;
        }

        #pmPaneOps .wb-stat {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            align-items: center;
        }

        /* 查询区：2×2 阵列（月份/周次/间隔/清理） */
        #pmPaneOps .wb-grid--query {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px 10px;
            align-items: end;
        }

        #pmPaneOps .wb-grid--query .wb-field--check {
            grid-column: auto;
            align-self: end;
            padding-bottom: 2px;
        }

        #pmPaneOps .wb-grid--query .wb-field--check .wb-check {
            min-height: 34px;
            align-items: center;
        }

        #pmPaneOps .schedule-block {
            margin-top: 0;
        }

        #pmPaneOps .schedule-block__head {
            padding: 6px 10px;
        }

        #pmPaneOps .schedule-block__body {
            display: flex;
            flex-direction: column;
            gap: 8px;
            padding: 8px 10px 10px;
        }

        /* 定时：时刻 + 周期 同行 */
        #pmPaneOps .wb-grid--schedule {
            display: grid;
            grid-template-columns: minmax(110px, 0.9fr) minmax(0, 1.1fr);
            gap: 8px 10px;
            align-items: end;
        }

        #pmPaneOps .schedule-block .schedule-time input[type="number"] {
            height: 32px;
            width: 44px;
        }

        /* 发送周次：2×2 阵列 */
        #pmPaneOps .schedule-week-chips {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 6px 8px;
        }

        #pmPaneOps .schedule-week-chips .schedule-chip {
            margin: 0;
            justify-content: flex-start;
        }

        #pmPaneOps .schedule-day-chips {
            display: grid;
            grid-template-columns: repeat(7, minmax(0, 1fr));
            gap: 4px;
        }

        #pmPaneOps .schedule-status {
            margin: 0;
            font-size: 0.72rem;
            line-height: 1.35;
        }

        #pmPaneOps .panel-bottom {
            margin-top: auto;
            padding-top: 4px;
        }

        #pmPaneOps .workbench-actions {
            display: grid;
            grid-template-columns: repeat(3, minmax(0, 1fr));
            gap: 8px;
            max-width: none;
        }

        #pmPaneOps .workbench-actions .btn {
            height: 36px;
            font-size: 0.84rem;
            font-weight: 650;
        }

        @media (max-width: 1200px) {
            #pmPaneOps .pm-ops-top {
                flex-basis: 320px;
                width: 320px;
            }
        }

        @media (max-width: 900px) {
            #pmPaneOps {
                overflow: auto;
                gap: 10px;
                /* 底栏留白由 .app-main 承担，避免双倍空白 */
                padding: 8px 10px 12px;
                -webkit-overflow-scrolling: touch;
                align-items: stretch;
            }
            #pmPaneOps.is-active {
                display: flex;
                flex-direction: column;
                flex: 1 1 auto;
                min-height: 0;
            }
            #pmPaneOps .pm-ops-top {
                flex: 0 0 auto;
                width: 100%;
                max-width: none;
                overflow: visible;
                gap: 8px;
            }
            #pmPaneOps .card--excel,
            #pmPaneOps .card--workbench {
                flex: 0 0 auto !important;
                width: 100%;
                max-height: none;
                overflow: visible !important;
                border-radius: 10px;
                min-height: 0;
            }
            #pmPaneOps .card--workbench {
                display: block;
            }
            #pmPaneOps .card--workbench .workbench-body {
                flex: none;
                overflow: visible;
                min-height: 0;
                gap: 10px;
            }
            #pmPaneOps .card__title {
                padding: 10px 12px;
                font-size: 0.9rem;
            }
            #pmPaneOps .card--excel > .side-file-row,
            #pmPaneOps .card--workbench > .workbench-body {
                padding: 10px 12px 12px;
            }
            #pmPaneOps .excel-store-rows {
                gap: 8px;
            }
            #pmPaneOps .excel-store-row {
                flex-wrap: nowrap;
                gap: 8px;
                padding: 10px;
            }
            #pmPaneOps .excel-store-row__info {
                min-width: 0;
                flex: 1 1 auto;
            }
            #pmPaneOps .excel-store-row .btn-pick {
                margin-left: 0;
                flex: 0 0 auto;
                min-height: 36px;
                min-width: 72px;
            }
            #pmPaneOps .wb-stat {
                gap: 8px;
            }
            #pmPaneOps .wb-stat .chip,
            #pmPaneOps .wb-stat__count {
                font-size: 0.78rem;
            }
            #pmPaneOps .wb-grid--query,
            #pmPaneOps .wb-grid--schedule {
                grid-template-columns: 1fr 1fr;
                gap: 10px 8px;
                align-items: stretch;
            }
            #pmPaneOps .wb-grid--query .wb-field--check {
                grid-column: 1 / -1;
            }
            #pmPaneOps .wb-field--inline {
                min-width: 0;
            }
            #pmPaneOps .wb-field--inline > label,
            #pmPaneOps .wb-field--inline > .wb-field__label {
                margin-bottom: 4px;
            }
            #pmPaneOps .wb-field--inline > select,
            #pmPaneOps .wb-field--inline > input[type="number"],
            #pmPaneOps .wb-field select,
            #pmPaneOps .wb-field input[type="number"] {
                width: 100%;
                max-width: none;
                min-width: 0;
                min-height: 38px;
                box-sizing: border-box;
            }
            #pmPaneOps .wb-field--inline > .schedule-time,
            #pmPaneOps .schedule-time {
                width: 100%;
                display: flex;
                align-items: center;
                gap: 6px;
            }
            #pmPaneOps .schedule-block .schedule-time input[type="number"] {
                width: 100%;
                flex: 1 1 0;
                min-width: 0;
                height: 38px;
            }
            #pmPaneOps .schedule-block__body {
                padding: 10px;
                gap: 10px;
            }
            #pmPaneOps .schedule-week-chips {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 6px 8px;
            }
            #pmPaneOps .schedule-day-chips {
                display: flex;
                flex-wrap: wrap;
                gap: 6px;
            }
            #pmPaneOps .schedule-week-chips .schedule-chip,
            #pmPaneOps .schedule-day-chips .schedule-chip,
            #pmPaneOps .schedule-chip {
                min-height: 36px;
                padding: 6px 10px;
                box-sizing: border-box;
            }
            #pmPaneOps .schedule-status {
                font-size: 0.72rem;
                line-height: 1.4;
                white-space: normal;
            }
            #pmPaneOps .panel-bottom {
                position: static;
                margin: 0;
                padding: 4px 0 0;
                background: transparent;
            }
            #pmPaneOps .workbench-actions {
                display: grid;
                grid-template-columns: 1fr 1fr 1fr;
                gap: 8px;
            }
            #pmPaneOps .workbench-actions .btn {
                width: 100%;
                min-height: 42px;
                padding: 0 6px;
                font-size: 0.86rem;
            }
            /* 列表区：固定视口高度，避免 flex 塌成空白 */
            #pmPaneOps .pm-ops-result {
                flex: 0 0 auto !important;
                width: 100%;
                min-height: 0;
                height: calc(100dvh - 300px - var(--mobile-nav-h, 58px) - env(safe-area-inset-bottom, 0px));
                max-height: 62dvh;
                min-height: 280px;
                display: flex;
                flex-direction: column;
                overflow: hidden;
                border-radius: 10px;
            }
            #pmPaneOps .pm-ops-result .result-header {
                flex: 0 0 auto;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list {
                flex-wrap: wrap;
                align-items: flex-start;
                gap: 8px;
                padding: 10px;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list .result-title,
            #pmPaneOps .pm-ops-result .result-header--pm-list .result-count {
                white-space: normal;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list > .list-toolbar-stats {
                max-width: none;
                width: 100%;
                margin-right: 0;
                order: 3;
                font-size: 0.75rem;
                line-height: 1.35;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar {
                width: 100%;
                margin: 0;
                justify-content: stretch;
                order: 4;
                padding: 6px 0 0;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar-row {
                flex-wrap: wrap;
                width: 100%;
                gap: 8px;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar-row--meta {
                width: 100%;
                justify-content: space-between;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar input[type="search"] {
                flex: 1 1 100%;
                width: 100%;
                max-width: none;
                min-width: 0;
                min-height: 38px;
            }
            #pmPaneOps .pm-ops-result .result-header--pm-list .list-toolbar select {
                flex: 1 1 calc(50% - 4px);
                min-width: 0;
                min-height: 38px;
            }
            #pmPaneOps .pm-ops-result .pm-list {
                flex: 1 1 auto;
                min-height: 0;
                overflow: auto !important;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior: contain;
            }
            #pmPaneOps .pm-ops-result .pm-list table {
                min-width: 560px;
                width: max-content;
            }
            #pmPaneOps .pm-ops-result .send-progress {
                flex: 0 0 auto;
                margin: 0;
                padding: 10px;
            }
        }

        .pm-plan-top.is-excel-hidden {
            grid-template-columns: 1fr;
        }

        .pm-plan-top .card--excel,
        .pm-plan-top .card--workbench {
            max-height: 100%;
            overflow: auto;
        }

        .pm-pane .result-panel {
            flex: 1 1 auto;
            min-height: 0;
        }

        .pm-jobdb-head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 12px;
            flex-wrap: wrap;
            flex: 0 0 auto;
        }

        .pm-jobdb-head__title {
            font-size: 1rem;
            font-weight: 750;
            color: #0f172a;
        }

        .pm-jobdb-head__sub {
            font-size: 0.78rem;
            color: #64748b;
            margin-top: 2px;
        }

        .pm-jobdb-head__actions {
            display: flex;
            gap: 8px;
            flex-wrap: wrap;
        }

        .pm-content-layout {
            display: grid;
            grid-template-columns: 200px minmax(0, 1fr);
            gap: 12px;
            flex: 1;
            min-height: 0;
        }

        .pm-plan-browse-layout {
            grid-template-columns: minmax(0, 1fr);
        }

        .pm-jobdb-browse-layout {
            grid-template-columns: minmax(0, 1fr);
        }

        /* 计划维护：单列铺满，避免落入 200px 侧栏轨 */
        .pm-maintain-layout {
            grid-template-columns: minmax(0, 1fr) !important;
            display: grid;
            flex: 1;
            min-height: 0;
            width: 100%;
            max-width: 100%;
        }

        .pm-maintain-layout > .pm-content-main {
            width: 100%;
            max-width: 100%;
            min-width: 0;
            min-height: 0;
            flex: 1;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }

        .pm-diff-layout {
            grid-template-columns: minmax(0, 1fr) !important;
        }

        /* 差异核对：不用双列 content-layout，避免落进 200px 侧栏轨 */
        .pm-diff-shell {
            display: flex;
            flex-direction: column;
            flex: 1 1 auto;
            min-width: 0;
            min-height: 0;
            width: 100%;
            max-width: 100%;
        }

        .pm-diff-shell > .pm-content-main {
            flex: 1 1 auto;
            min-width: 0;
            min-height: 0;
            width: 100%;
            max-width: 100%;
        }

        .pm-plan-browse-layout .pm-content-select--line,
        .pm-jobdb-browse-layout .pm-content-select--line {
            min-width: 132px;
            max-width: 196px;
        }

        /* PM三页共用工具栏：标题 · 筛选条 · 操作按钮（统一尺寸/圆角/配色） */
        .pm-plan-toolbar {
            --pm-tb-h: 34px;
            --pm-tb-r: 8px;
            --pm-tb-fs: 0.8rem;
            --pm-tb-border: #d0d7e2;
            --pm-tb-ink: #1e293b;
            --pm-tb-muted: #64748b;
            --pm-tb-primary: #0f766e;
            --pm-tb-primary-hover: #0d9488;
            flex-wrap: nowrap;
            gap: 10px 12px;
            align-items: center;
            min-width: 0;
            padding: 2px 0 4px;
        }

        .pm-plan-toolbar .pm-content-toolbar__brand {
            flex: 0 0 auto;
            margin-right: 0;
            max-width: none;
            gap: 0;
            align-items: center;
            flex-wrap: nowrap;
        }

        .pm-plan-toolbar .pm-content-toolbar__title {
            font-size: 0.92rem;
            font-weight: 700;
            letter-spacing: -0.01em;
            line-height: 1.2;
            color: var(--pm-tb-ink);
        }

        /* 详情改由底部分页信息展示，避免标题旁截断成「半截链接」 */
        .pm-plan-toolbar .pm-content-toolbar__brand .pm-content-status {
            display: none;
        }

        .pm-plan-toolbar__filters {
            display: flex;
            flex: 1 1 auto;
            align-items: center;
            gap: 6px;
            min-width: 0;
            justify-content: flex-start;
            padding: 5px 6px;
            border: 1px solid var(--pm-tb-border);
            border-radius: 12px;
            background: linear-gradient(180deg, #f8fafc 0%, #eef2f7 100%);
            box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.85);
        }

        .pm-plan-toolbar__filters .pm-content-select,
        .pm-plan-toolbar__filters .pm-content-search {
            box-sizing: border-box;
            min-height: var(--pm-tb-h);
            height: var(--pm-tb-h);
            max-height: var(--pm-tb-h);
            border: 1px solid var(--pm-tb-border);
            border-radius: var(--pm-tb-r);
            background: #fff;
            color: var(--pm-tb-ink);
            font-size: var(--pm-tb-fs);
            font-weight: 600;
            line-height: 1.2;
            box-shadow: 0 1px 0 rgba(15, 23, 42, 0.03);
            transition: border-color 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
        }

        .pm-plan-toolbar__filters .pm-content-select {
            appearance: none;
            -webkit-appearance: none;
            flex: 0 1 auto;
            max-width: 132px;
            min-width: 100px;
            padding: 0 28px 0 10px;
            background-image:
                linear-gradient(45deg, transparent 50%, #64748b 50%),
                linear-gradient(135deg, #64748b 50%, transparent 50%);
            background-position:
                calc(100% - 14px) calc(50% - 2px),
                calc(100% - 10px) calc(50% - 2px);
            background-size: 4px 4px, 4px 4px;
            background-repeat: no-repeat;
            cursor: pointer;
        }

        .pm-plan-toolbar__filters .pm-content-select--line {
            max-width: 188px;
            min-width: 132px;
        }

        #pmPaneJobDb .pm-plan-toolbar__filters .pm-content-select:not(.pm-content-select--line),
        #pmPaneEdit .pm-plan-toolbar__filters .pm-content-select {
            max-width: 148px;
            min-width: 108px;
        }

        .pm-plan-toolbar__filters .pm-content-search {
            flex: 1 1 140px;
            min-width: 120px;
            max-width: none;
            padding: 0 12px;
        }

        .pm-plan-toolbar__filters .pm-content-select:hover,
        .pm-plan-toolbar__filters .pm-content-search:hover {
            border-color: #94a3b8;
        }

        .pm-plan-toolbar__filters .pm-content-select:focus,
        .pm-plan-toolbar__filters .pm-content-search:focus {
            outline: none;
            border-color: var(--pm-tb-primary);
            box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.16);
        }

        .pm-plan-toolbar__actions {
            display: flex;
            flex: 0 0 auto;
            align-items: center;
            gap: 6px;
            margin-left: 0;
            padding-left: 10px;
            border-left: 1px solid #e2e8f0;
        }

        .pm-plan-toolbar__actions .btn,
        .pm-plan-toolbar__actions .btn-outline,
        .pm-plan-toolbar__actions .btn-primary,
        .pm-plan-toolbar__actions .btn-accent {
            box-sizing: border-box;
            display: inline-flex;
            align-items: center;
            justify-content: center;
            margin: 0;
            padding: 0 12px;
            min-height: var(--pm-tb-h);
            height: var(--pm-tb-h);
            max-height: var(--pm-tb-h);
            border-radius: var(--pm-tb-r);
            font-size: var(--pm-tb-fs);
            font-weight: 600;
            white-space: nowrap;
            line-height: 1;
            box-shadow: none !important;
            letter-spacing: 0;
        }

        .pm-plan-toolbar__actions .btn-outline {
            background: #fff;
            border: 1px solid var(--pm-tb-border);
            color: var(--pm-tb-ink);
        }

        .pm-plan-toolbar__actions .btn-outline:hover {
            border-color: #94a3b8;
            background: #f8fafc;
            color: #0f172a;
        }

        .pm-plan-toolbar__actions .btn-primary {
            background: linear-gradient(180deg, #14b8a6 0%, var(--pm-tb-primary) 100%);
            border: 1px solid #0f766e;
            color: #fff;
        }

        .pm-plan-toolbar__actions .btn-primary:hover {
            background: linear-gradient(180deg, #2dd4bf 0%, var(--pm-tb-primary-hover) 100%);
            border-color: var(--pm-tb-primary-hover);
            color: #fff;
        }

        .pm-plan-toolbar__actions .btn-accent {
            background: #fff;
            border: 1px solid var(--pm-tb-border);
            color: var(--pm-tb-ink);
        }

        .pm-plan-toolbar__actions .btn-accent:hover {
            border-color: #94a3b8;
            background: #f8fafc;
        }

        .pm-plan-toolbar__actions .btn:disabled,
        .pm-plan-toolbar__actions .btn[hidden] {
            opacity: 0.55;
        }

        /* PM作业数据库：Excel 表单风格（合并线体/工位/频次） */
        .pm-content-form-table {
            --pm-cf-h1: 30px;
            --pm-cf-h2: 28px;
            --pm-cf-line: 44px;
            --pm-cf-station: 96px;
            --pm-cf-freq: 58px;
            --pm-cf-border: #64748b;
            width: max-content;
            min-width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            table-layout: fixed;
            font-size: 12px;
            background: #fff;
        }

        .pm-content-table-wrap:has(.pm-content-form-table) {
            border-color: #64748b;
        }

        .pm-content-form-table th,
        .pm-content-form-table td {
            box-sizing: border-box;
            border-right: 1px solid var(--pm-cf-border);
            border-bottom: 1px solid var(--pm-cf-border);
            padding: 5px 6px;
            vertical-align: middle;
            color: #0f172a;
            background-clip: padding-box;
        }

        .pm-content-form-table th:first-child,
        .pm-content-form-table td:first-child {
            border-left: 0;
        }

        .pm-content-form-table thead th {
            background: #f1f5f9;
            font-weight: 700;
            text-align: center;
            position: sticky;
            z-index: 4;
        }

        .pm-content-form-table thead tr:first-child th {
            top: 0;
            height: var(--pm-cf-h1);
            line-height: calc(var(--pm-cf-h1) - 2px);
            z-index: 5;
            border-bottom: 0;
            padding-top: 0;
            padding-bottom: 0;
        }

        .pm-content-form-table thead tr:nth-child(2) th {
            top: var(--pm-cf-h1);
            height: var(--pm-cf-h2);
            line-height: calc(var(--pm-cf-h2) - 2px);
            z-index: 4;
            font-size: 11px;
            padding-top: 0;
            padding-bottom: 0;
            box-shadow: 0 1px 0 var(--pm-cf-border);
        }

        .pm-content-form-table thead th.pm-content-form-table__group {
            background: #e2e8f0;
        }

        .pm-content-form-table thead th.pm-content-form-table__id-cont {
            border-bottom: 0;
            box-shadow: none;
        }

        /* 作业明细表单列宽：必须写在 col 上 */
        .pm-content-form-table > colgroup > col.col-line { width: var(--pm-cf-line); }
        .pm-content-form-table > colgroup > col.col-station { width: var(--pm-cf-station); }
        .pm-content-form-table > colgroup > col.col-freq { width: var(--pm-cf-freq); }
        .pm-content-form-table > colgroup > col.col-code { width: 128px; }
        .pm-content-form-table > colgroup > col.col-content { width: 420px; }
        .pm-content-form-table > colgroup > col.col-level { width: 70px; }
        .pm-content-form-table > colgroup > col.col-status { width: 48px; }
        .pm-content-form-table > colgroup > col.col-mins { width: 44px; }
        .pm-content-form-table > colgroup > col.col-std,
        .pm-content-form-table > colgroup > col.col-tool,
        .pm-content-form-table > colgroup > col.col-mat { width: 48px; }
        .pm-content-form-table > colgroup > col.col-ops { width: 64px; }

        .pm-content-form-table td.col-ops {
            text-align: center;
            vertical-align: middle;
            white-space: nowrap;
        }

        .btn.btn-xs {
            padding: 2px 8px;
            font-size: 12px;
            line-height: 1.4;
            min-height: 0;
        }

        .pm-content-station-guide {
            max-width: 520px;
            margin: 48px auto;
            padding: 28px 32px;
            border: 1px dashed #cbd5e1;
            border-radius: 12px;
            background: #f8fafc;
            text-align: left;
        }
        .pm-content-station-guide__title {
            font-size: 18px;
            font-weight: 700;
            color: #0f172a;
            margin-bottom: 10px;
        }
        .pm-content-station-guide__text {
            margin: 0 0 14px;
            color: #475569;
            line-height: 1.6;
        }
        .pm-content-station-guide__list {
            margin: 0;
            padding-left: 1.2em;
            color: #334155;
            line-height: 1.8;
        }
        .pm-content-station-empty {
            display: flex;
            flex-direction: column;
            align-items: center;
            gap: 16px;
            padding: 40px 16px;
        }
        .pm-content-station-empty__actions {
            display: flex;
            flex-wrap: wrap;
            gap: 10px;
            justify-content: center;
        }
        .pm-content-clone-form select[multiple] {
            min-height: 96px;
        }
        .pm-content-clone-replace {
            display: flex;
            align-items: center;
            gap: 8px;
            font-weight: 500;
        }
        .pm-content-clone-replace input {
            width: auto;
        }

        .pm-content-form-table .col-line,
        .pm-content-form-table .col-station,
        .pm-content-form-table .col-freq {
            position: sticky;
            z-index: 2;
            background: #f8fafc;
            box-shadow: 1px 0 0 var(--pm-cf-border);
        }

        .pm-content-form-table thead .col-line,
        .pm-content-form-table thead .col-station,
        .pm-content-form-table thead .col-freq {
            z-index: 6;
            background: #f1f5f9;
        }

        .pm-content-form-table .col-line {
            left: 0;
            text-align: center;
            font-weight: 700;
        }

        .pm-content-form-table .col-station {
            left: var(--pm-cf-line);
            text-align: left;
            font-weight: 650;
        }

        .pm-content-form-table .col-freq {
            left: calc(var(--pm-cf-line) + var(--pm-cf-station));
            text-align: center;
            font-weight: 650;
        }

        .pm-content-form-table .col-code {
            text-align: left;
            word-break: break-all;
            font-size: 11px;
            background: #fff;
        }

        .pm-content-form-table .col-content {
            text-align: left;
            white-space: normal;
            line-height: 1.45;
            word-break: break-word;
            background: #fff;
        }

        .pm-content-form-table .col-level {
            text-align: center;
            white-space: normal;
            font-size: 11px;
            background: #fff;
        }

        .pm-content-form-table .col-status {
            text-align: center;
            font-size: 11px;
            background: #fff;
        }

        .pm-content-form-table .col-mins {
            text-align: center;
            background: #fff;
        }

        .pm-content-form-table .col-std,
        .pm-content-form-table .col-tool,
        .pm-content-form-table .col-mat {
            text-align: left;
            white-space: normal;
            font-size: 11px;
            background: #fff;
        }

        .pm-content-form-table tbody tr:hover td {
            background: #eff6ff !important;
        }

        .pm-content-form-table tbody tr:hover td.col-line,
        .pm-content-form-table tbody tr:hover td.col-station,
        .pm-content-form-table tbody tr:hover td.col-freq {
            background: #e0f2fe !important;
        }

        .pm-content-form-table td.is-editable {
            padding: 2px 4px;
            vertical-align: top;
        }

        .pm-content-form-table .pm-content-edit {
            display: block;
            width: 100%;
            box-sizing: border-box;
            border: 1px solid transparent;
            border-radius: 4px;
            background: transparent;
            font: inherit;
            color: inherit;
            padding: 4px 6px;
            resize: vertical;
            min-height: 1.6em;
        }

        .pm-content-form-table .pm-content-edit:hover {
            border-color: #cbd5e1;
            background: #fff;
        }

        .pm-content-form-table .pm-content-edit:focus {
            outline: none;
            border-color: #93c5fd;
            background: #fff;
            box-shadow: 0 0 0 2px rgba(59, 130, 246, 0.2);
        }

        .pm-content-form-table textarea.pm-content-edit {
            min-height: 3.2em;
            line-height: 1.35;
        }

        .pm-content-form-table td.is-dirty {
            background: #fef9c3 !important;
            box-shadow: inset 0 0 0 1px #facc15;
        }

        .pm-content-form-table td.is-dirty .pm-content-edit {
            background: #fffbeb;
        }

        .pm-content-form-table td.is-code-ops {
            padding: 2px 4px;
            vertical-align: middle;
        }

        .pm-content-form-table .pm-content-code-btn {
            display: block;
            width: 100%;
            box-sizing: border-box;
            margin: 0;
            padding: 5px 6px;
            border: 1px solid transparent;
            border-radius: 4px;
            background: transparent;
            font: inherit;
            font-weight: 650;
            color: #1e3a5f;
            text-align: left;
            cursor: pointer;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .pm-content-form-table .pm-content-code-btn:hover {
            border-color: #93c5fd;
            background: #eff6ff;
            color: #1d4ed8;
        }

        .pm-content-form-table td.is-station-ops {
            padding: 2px 4px;
            vertical-align: middle;
        }

        .pm-content-form-table .pm-content-station-btn {
            display: block;
            width: 100%;
            box-sizing: border-box;
            margin: 0;
            padding: 5px 6px;
            border: 1px solid transparent;
            border-radius: 4px;
            background: transparent;
            font: inherit;
            font-weight: 700;
            color: #0f172a;
            text-align: left;
            cursor: pointer;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .pm-content-form-table .pm-content-station-btn:hover {
            border-color: #86efac;
            background: #f0fdf4;
            color: #166534;
        }

        .pm-content-edit-hint {
            font-size: 0.72rem;
            color: #64748b;
            white-space: nowrap;
        }

        .pm-content-side {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            padding: 10px;
            display: flex;
            flex-direction: column;
            gap: 6px;
            min-height: 0;
            overflow: auto;
        }

        .pm-content-side__title {
            font-size: 0.72rem;
            font-weight: 750;
            color: #64748b;
            letter-spacing: 0.04em;
            text-transform: uppercase;
            padding: 2px 4px 6px;
        }

        .pm-content-line-btn {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 8px;
            width: 100%;
            border: 1px solid transparent;
            background: #f8fafc;
            border-radius: 10px;
            padding: 9px 10px;
            text-align: left;
            cursor: pointer;
            font: inherit;
            color: #0f172a;
        }

        .pm-content-line-btn:hover {
            background: #f0fdfa;
            border-color: #99f6e4;
        }

        .pm-content-line-btn.is-active {
            background: #ecfeff;
            border-color: #5eead4;
            color: #0f766e;
            font-weight: 650;
        }

        .pm-content-line-btn__meta {
            font-size: 0.7rem;
            color: #94a3b8;
            flex-shrink: 0;
        }

        .pm-content-main {
            background: #fff;
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            padding: 12px;
            display: flex;
            flex-direction: column;
            gap: 8px;
            min-height: 0;
            min-width: 0;
        }

        .pm-content-toolbar {
            display: flex;
            align-items: center;
            gap: 8px;
            flex-wrap: wrap;
        }

        .pm-content-toolbar__brand {
            display: inline-flex;
            align-items: baseline;
            flex-wrap: wrap;
            gap: 6px 10px;
            margin-right: auto;
            min-width: 0;
            max-width: 100%;
        }

        .pm-content-toolbar__title {
            font-size: 0.9rem;
            font-weight: 750;
            color: #0f172a;
            white-space: nowrap;
        }

        .pm-content-toolbar__brand .pm-content-status {
            margin: 0;
            font-size: 0.78rem;
            line-height: 1.3;
            color: #64748b;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            max-width: min(420px, 48vw);
        }

        .pm-diff-summary {
            display: flex;
            flex-wrap: wrap;
            gap: 6px;
            padding: 0 2px 4px;
        }

        .pm-diff-chip {
            display: inline-flex;
            align-items: baseline;
            gap: 5px;
            border: 1px solid #e2e8f0;
            background: #f8fafc;
            color: #334155;
            border-radius: 8px;
            padding: 5px 10px;
            font-size: 0.78rem;
            cursor: pointer;
            line-height: 1.2;
        }

        .pm-diff-chip:disabled {
            cursor: default;
            opacity: 1;
        }

        .pm-diff-chip:not(:disabled):hover {
            border-color: #94a3b8;
            background: #fff;
        }

        .pm-diff-chip.is-active {
            border-color: #2563eb;
            background: #eff6ff;
            color: #1e40af;
        }

        .pm-diff-chip.is-ok .pm-diff-chip__n {
            color: #15803d;
        }

        .pm-diff-chip.is-warn .pm-diff-chip__n {
            color: #b45309;
        }

        .pm-diff-chip__n {
            font-weight: 750;
            font-variant-numeric: tabular-nums;
        }

        .pm-diff-chip__l {
            color: #64748b;
        }

        .pm-diff-chip.is-active .pm-diff-chip__l {
            color: #1e40af;
        }

        .pm-diff-tag {
            display: inline-block;
            font-size: 0.72rem;
            font-weight: 650;
            padding: 2px 7px;
            border-radius: 999px;
            background: #f1f5f9;
            color: #475569;
            white-space: nowrap;
        }

        .pm-diff-tag--plan_only { background: #fef3c7; color: #92400e; }
        .pm-diff-tag--line_mismatch { background: #fee2e2; color: #991b1b; }
        .pm-diff-tag--freq_mismatch { background: #ffedd5; color: #9a3412; }
        .pm-diff-tag--empty_content { background: #e0e7ff; color: #3730a3; }
        .pm-diff-tag--content_only { background: #e2e8f0; color: #334155; }

        .pm-diff-hint {
            font-size: 0.8rem;
            color: #475569;
            line-height: 1.4;
        }

        .pm-diff-shell .pm-content-table-wrap,
        .pm-diff-layout .pm-content-table-wrap {
            flex: 1 1 auto;
            min-height: 220px;
            width: 100%;
            max-width: 100%;
            overflow: auto;
            -webkit-overflow-scrolling: touch;
        }

        /* 差异表：独立样式，避免继承作业库 form-table 的固定列宽/粘滞列 */
        .pm-diff-table {
            width: max-content;
            min-width: 100%;
            border-collapse: separate;
            border-spacing: 0;
            table-layout: auto;
            font-size: 0.8rem;
            background: #fff;
        }

        .pm-diff-table th,
        .pm-diff-table td {
            box-sizing: border-box;
            padding: 8px 10px;
            border-bottom: 1px solid #e2e8f0;
            border-right: 1px solid #f1f5f9;
            text-align: left;
            vertical-align: top;
            white-space: nowrap;
            color: #0f172a;
            background: #fff;
        }

        .pm-diff-table th {
            position: sticky;
            top: 0;
            z-index: 2;
            background: #f8fafc;
            font-weight: 700;
            color: #475569;
            border-bottom-color: #cbd5e1;
        }

        .pm-diff-table th:first-child,
        .pm-diff-table td:first-child {
            position: sticky;
            left: 0;
            z-index: 1;
            background: #fff;
            box-shadow: 2px 0 6px rgba(15, 23, 42, 0.06);
        }

        .pm-diff-table thead th:first-child {
            z-index: 3;
            background: #f8fafc;
        }

        .pm-diff-table td.pm-diff-hint {
            white-space: normal;
            min-width: 14rem;
            max-width: 28rem;
            line-height: 1.45;
        }

        .pm-diff-table th:nth-child(3),
        .pm-diff-table td:nth-child(3) {
            white-space: normal;
            min-width: 7rem;
            max-width: 12rem;
        }

        .pm-content-status {
            font-size: 0.78rem;
            color: #64748b;
        }

        .pm-content-status.is-ok { color: #0f766e; }
        .pm-content-status.is-err { color: #b91c1c; }

        .pm-content-select,
        .pm-content-search {
            min-height: 34px;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            padding: 0 10px;
            font: inherit;
            font-size: 0.8rem;
            background: #fff;
            color: #0f172a;
        }

        .pm-content-select {
            max-width: 140px;
        }

        .pm-content-search {
            flex: 1 1 160px;
            min-width: 140px;
            max-width: 280px;
        }

        .pm-content-table-wrap {
            flex: 1;
            min-height: 0;
            overflow: auto;
            border: 1px solid #e2e8f0;
            border-radius: 10px;
        }

        .pm-content-table {
            width: 100%;
            border-collapse: collapse;
            font-size: 0.78rem;
            table-layout: fixed;
        }

        .pm-content-table th,
        .pm-content-table td {
            padding: 8px 10px;
            border-bottom: 1px solid #eef2f7;
            text-align: left;
            vertical-align: top;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .pm-content-table th {
            position: sticky;
            top: 0;
            background: #f8fafc;
            z-index: 1;
            font-weight: 700;
            color: #475569;
            white-space: nowrap;
        }

        .pm-content-table td.pm-content-cell-main {
            white-space: normal;
            word-break: break-word;
            line-height: 1.45;
        }

        .pm-content-table tbody tr:hover {
            background: #f8fafc;
        }

        /* PM计划：Excel 风格矩阵（工位 × 月/周）——多表强制同列宽上下对齐 */
        .pm-plan-matrix-scroll {
            background: #fff;
            scrollbar-gutter: stable;
            overflow: auto;
            -webkit-overflow-scrolling: touch;
        }

        .pm-plan-matrix-stack {
            --pm-mx-station: 148px;
            --pm-mx-week-min: 28px;
            --pm-mx-head-title: 36px;
            --pm-mx-head-month: 28px;
            --pm-mx-head-week: 22px;
            --pm-mx-border: #94a3b8;
            display: flex;
            flex-direction: column;
            gap: 12px;
            padding: 4px 0;
            width: max-content;
            min-width: 100%;
            box-sizing: border-box;
        }

        .pm-plan-matrix-block {
            width: max-content;
            min-width: 100%;
            border: 1px solid var(--pm-mx-border);
            background: #fff;
        }

        .pm-plan-matrix__caption {
            position: sticky;
            top: 0;
            z-index: 9;
            height: var(--pm-mx-head-title);
            line-height: var(--pm-mx-head-title);
            padding: 0 10px;
            box-sizing: border-box;
            font-size: 13px;
            font-weight: 700;
            color: #0f172a;
            text-align: center;
            background: #f8fafc;
            border-bottom: 1px solid var(--pm-mx-border);
        }

        .pm-plan-matrix {
            /* separate 可避免 collapse + sticky 滚动跳动 */
            border-collapse: separate;
            border-spacing: 0;
            font-size: 11px;
            line-height: 1.2;
            background: #fff;
            table-layout: fixed;
            width: max-content;
            min-width: 100%;
        }

        .pm-plan-matrix col.pm-plan-matrix__col-station {
            width: var(--pm-mx-station);
        }

        .pm-plan-matrix col.pm-plan-matrix__col-week {
            width: var(--pm-mx-week-min);
            min-width: var(--pm-mx-week-min);
        }

        .pm-plan-matrix th,
        .pm-plan-matrix td {
            box-sizing: border-box;
            border-right: 1px solid var(--pm-mx-border);
            border-bottom: 1px solid var(--pm-mx-border);
            text-align: center;
            vertical-align: middle;
            padding: 2px 1px;
            white-space: nowrap;
            overflow: hidden;
            background-clip: padding-box;
        }

        .pm-plan-matrix th:first-child,
        .pm-plan-matrix td:first-child {
            border-left: 0;
        }

        .pm-plan-matrix .pm-plan-matrix__corner {
            position: sticky;
            left: 0;
            z-index: 8;
            background: #f1f5f9;
            width: var(--pm-mx-station);
            min-width: var(--pm-mx-station);
            max-width: var(--pm-mx-station);
            font-weight: 700;
            color: #334155;
            text-align: center;
            padding: 0 6px;
        }

        .pm-plan-matrix .pm-plan-matrix__corner--month {
            top: var(--pm-mx-head-title);
            height: var(--pm-mx-head-month);
            line-height: var(--pm-mx-head-month);
            border-bottom: 0;
            box-shadow: 1px 0 0 var(--pm-mx-border);
        }

        .pm-plan-matrix .pm-plan-matrix__corner--week {
            top: calc(var(--pm-mx-head-title) + var(--pm-mx-head-month));
            height: var(--pm-mx-head-week);
            line-height: var(--pm-mx-head-week);
            font-size: 10px;
            color: #64748b;
            box-shadow: 1px 0 0 var(--pm-mx-border), 0 1px 0 var(--pm-mx-border);
        }

        .pm-plan-matrix thead .pm-plan-matrix__month {
            position: sticky;
            top: var(--pm-mx-head-title);
            z-index: 5;
            height: var(--pm-mx-head-month);
            line-height: var(--pm-mx-head-month);
            background: #e2e8f0;
            font-weight: 700;
            color: #0f172a;
            padding: 0 2px;
            border-bottom: 0;
        }

        .pm-plan-matrix thead .pm-plan-matrix__week {
            position: sticky;
            top: calc(var(--pm-mx-head-title) + var(--pm-mx-head-month));
            z-index: 4;
            height: var(--pm-mx-head-week);
            line-height: var(--pm-mx-head-week);
            background: #f8fafc;
            font-weight: 600;
            color: #475569;
            font-size: 10px;
            width: var(--pm-mx-week-min);
            min-width: var(--pm-mx-week-min);
            padding: 0;
            box-shadow: 0 1px 0 var(--pm-mx-border);
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__station {
            position: sticky;
            left: 0;
            z-index: 2;
            background: #fff;
            text-align: left;
            padding: 3px 8px;
            font-weight: 600;
            color: #0f172a;
            width: var(--pm-mx-station);
            min-width: var(--pm-mx-station);
            max-width: var(--pm-mx-station);
            text-overflow: ellipsis;
            box-shadow: 1px 0 0 var(--pm-mx-border);
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__station.is-editable {
            cursor: pointer;
            user-select: none;
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__station.is-editable:hover {
            background: #eff6ff !important;
            color: #1d4ed8;
            box-shadow: inset 0 0 0 1px #93c5fd, 1px 0 0 var(--pm-mx-border);
        }

        .pm-plan-matrix tbody td:not(.pm-plan-matrix__station) {
            width: var(--pm-mx-week-min);
            min-width: var(--pm-mx-week-min);
            padding: 2px 0;
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__cell.is-editable {
            cursor: pointer;
            user-select: none;
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__cell.is-editable:hover {
            background: #dbeafe !important;
            outline: 1px solid #93c5fd;
            outline-offset: -1px;
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__cell.is-freq-dim {
            opacity: 0.45;
            cursor: default;
        }

        .pm-plan-matrix tbody td.pm-plan-matrix__cell.is-dirty {
            background: #fef9c3 !important;
            box-shadow: inset 0 0 0 1px #facc15;
        }

        .pm-plan-edit-hint {
            font-size: 0.72rem;
            color: #64748b;
            white-space: nowrap;
        }

        .pm-plan-mark-picker {
            position: fixed;
            z-index: 80;
            min-width: 168px;
            padding: 8px;
            background: #fff;
            border: 1px solid #cbd5e1;
            border-radius: 10px;
            box-shadow: 0 10px 28px rgba(15, 23, 42, 0.16);
        }

        .pm-plan-mark-picker__title {
            font-size: 0.72rem;
            color: #64748b;
            margin-bottom: 6px;
            max-width: 200px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .pm-plan-mark-picker__grid {
            display: grid;
            grid-template-columns: repeat(4, 1fr);
            gap: 6px;
        }

        .pm-plan-mark-picker__btn {
            min-height: 34px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #f8fafc;
            cursor: pointer;
            font-size: 15px;
            font-weight: 700;
            color: #0f172a;
        }

        .pm-plan-mark-picker__btn:hover {
            background: #e0f2fe;
            border-color: #93c5fd;
        }

        .pm-plan-mark-picker__btn.is-active {
            background: #dbeafe;
            border-color: #3b82f6;
        }

        .pm-plan-mark-picker__btn.is-clear {
            grid-column: 1 / -1;
            font-size: 0.78rem;
            font-weight: 650;
            color: #b45309;
            background: #fff7ed;
            border-color: #fed7aa;
        }

        .pm-plan-station-menu {
            position: fixed;
            z-index: 1200;
            min-width: 168px;
            max-width: min(280px, 90vw);
            padding: 6px;
            border: 1px solid #cbd5e1;
            border-radius: 10px;
            background: #fff;
            box-shadow: 0 10px 28px rgba(15, 23, 42, 0.16);
        }

        .pm-plan-station-menu__title {
            margin: 0 4px 4px;
            padding: 4px 6px 6px;
            border-bottom: 1px solid #e2e8f0;
            font-size: 0.75rem;
            font-weight: 700;
            color: #334155;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .pm-plan-station-menu__item {
            display: block;
            width: 100%;
            margin: 0;
            padding: 8px 10px;
            border: 0;
            border-radius: 7px;
            background: transparent;
            color: #0f172a;
            font: inherit;
            font-size: 0.8rem;
            font-weight: 600;
            text-align: left;
            cursor: pointer;
        }

        .pm-plan-station-menu__item:hover {
            background: #f1f5f9;
        }

        .pm-plan-station-menu__item.is-danger {
            color: #b91c1c;
        }

        .pm-plan-station-menu__item.is-danger:hover {
            background: #fef2f2;
        }

        .pm-plan-matrix tbody tr:nth-child(even) td.pm-plan-matrix__station {
            background: #f8fafc;
        }

        .pm-plan-matrix tbody tr:nth-child(even) td.pm-plan-matrix__station.is-editable:hover {
            background: #eff6ff !important;
        }

        .pm-plan-matrix tbody tr:nth-child(even) td:not(.pm-plan-matrix__station) {
            background: #fafbfc;
        }

        .pm-plan-matrix tbody tr:hover td {
            background: #eff6ff !important;
        }

        .pm-plan-matrix__mark {
            display: inline-block;
            font-size: 13px;
            font-weight: 600;
            line-height: 1;
        }

        .pm-plan-matrix__mark.is-week { color: #334155; }
        .pm-plan-matrix__mark.is-month { color: #0369a1; }
        .pm-plan-matrix__mark.is-q1 { color: #b45309; }
        .pm-plan-matrix__mark.is-q2 { color: #7c3aed; }
        .pm-plan-matrix__mark.is-year { color: #be123c; }
        .pm-plan-matrix__mark.is-special { color: #0f766e; }

        .pm-plan-matrix-foot {
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            justify-content: space-between;
            gap: 10px 16px;
            flex: 0 0 auto;
            padding: 4px 2px 0;
        }

        .pm-plan-legend {
            display: flex;
            flex-wrap: wrap;
            gap: 6px 14px;
            font-size: 0.78rem;
            color: #334155;
        }

        .pm-plan-legend__item {
            display: inline-flex;
            align-items: center;
            gap: 4px;
        }

        .pm-plan-legend__mark {
            font-size: 14px;
            font-weight: 700;
            min-width: 1.1em;
            text-align: center;
        }

        .pm-content-pager {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            flex-wrap: wrap;
        }

        .pm-content-pager .pm-content-edit-hint {
            flex: 1 1 160px;
            margin: 0;
            min-width: 0;
        }

        .pm-content-pager__info {
            font-size: 0.78rem;
            color: #64748b;
        }

        .pm-content-pager__btns {
            display: flex;
            gap: 8px;
            margin-left: auto;
        }

        #pmPaneJobDb .pm-content-layout {
            flex: 1;
            min-height: 0;
        }

        @media (max-width: 900px) {
            .pm-content-layout {
                grid-template-columns: 1fr;
                gap: 8px;
            }
            .pm-content-side {
                max-height: 160px;
            }
            .pm-pane {
                padding: 6px 8px 8px;
                gap: 6px;
                -webkit-overflow-scrolling: touch;
            }
            .pm-content-main {
                min-height: 0;
                gap: 6px;
                padding: 8px;
                width: 100%;
                max-width: 100%;
                overflow: visible;
                box-sizing: border-box;
            }
            .pm-content-toolbar {
                gap: 6px;
                flex: 0 0 auto;
            }
            .pm-plan-toolbar {
                --pm-tb-h: 40px;
                --pm-tb-r: 9px;
                --pm-tb-fs: 0.82rem;
                flex-wrap: wrap;
                gap: 8px;
                align-items: stretch;
                padding: 0;
            }
            .pm-plan-toolbar .pm-content-toolbar__brand {
                flex: 1 1 100%;
                max-width: none;
                flex-wrap: wrap;
                gap: 2px 8px;
                min-height: 0;
            }
            .pm-plan-toolbar .pm-content-toolbar__title {
                font-size: 0.9rem;
                line-height: 1.2;
            }
            .pm-plan-toolbar .pm-content-toolbar__brand .pm-content-status {
                display: none;
            }
            .pm-plan-toolbar__filters {
                flex: 1 1 100%;
                flex-wrap: wrap;
                gap: 6px;
                padding: 6px;
                border-radius: 12px;
            }
            .pm-plan-toolbar__filters .pm-content-select,
            .pm-plan-toolbar__filters .pm-content-select--line,
            #pmPaneJobDb .pm-plan-toolbar__filters .pm-content-select:not(.pm-content-select--line),
            #pmPaneEdit .pm-plan-toolbar__filters .pm-content-select {
                flex: 1 1 calc(50% - 6px);
                max-width: none;
                min-width: 0;
                min-height: var(--pm-tb-h);
                height: var(--pm-tb-h);
                max-height: var(--pm-tb-h);
                font-size: var(--pm-tb-fs);
            }
            .pm-plan-toolbar__filters .pm-content-search {
                flex: 1 1 100%;
                max-width: none;
                min-width: 0;
                min-height: var(--pm-tb-h);
                height: var(--pm-tb-h);
                max-height: var(--pm-tb-h);
                font-size: var(--pm-tb-fs);
            }
            .pm-plan-toolbar__actions {
                margin-left: 0;
                width: 100%;
                display: grid;
                grid-template-columns: repeat(2, minmax(0, 1fr));
                gap: 6px;
                padding: 0;
                border-left: 0;
            }
            .pm-plan-toolbar__actions .btn,
            .pm-plan-toolbar__actions .btn-outline,
            .pm-plan-toolbar__actions .btn-primary,
            .pm-plan-toolbar__actions .btn-accent {
                width: 100%;
                min-height: var(--pm-tb-h);
                height: var(--pm-tb-h);
                max-height: var(--pm-tb-h);
                justify-content: center;
                border-radius: var(--pm-tb-r);
                font-size: 0.84rem;
                font-weight: 600;
            }
            .pm-plan-toolbar__actions .btn-primary,
            .pm-plan-toolbar__actions .btn-accent {
                grid-column: 1 / -1;
            }
            .pm-plan-toolbar__actions .pm-plan-edit-hint,
            .pm-plan-toolbar__actions .pm-content-edit-hint {
                grid-column: 1 / -1;
                white-space: normal;
                line-height: 1.35;
            }
            /* 表单区不写死高度：随内容增高，由 #view-pm 整页上下滑动浏览 */
            #pmPanePlan .pm-content-table-wrap,
            #pmPanePlan .pm-plan-matrix-scroll,
            #pmPaneJobDb .pm-content-table-wrap,
            #pmPaneEdit .pm-maintain-list-wrap {
                flex: 0 0 auto !important;
                width: 100%;
                max-width: 100%;
                min-height: 0 !important;
                height: auto !important;
                max-height: none !important;
                border: 1px solid #94a3b8;
                border-radius: 10px;
                background: #fff;
                overflow-x: auto !important;
                overflow-y: visible !important;
                -webkit-overflow-scrolling: touch;
            }
            .pm-content-table-wrap,
            .pm-plan-matrix-scroll {
                border-radius: 10px;
                -webkit-overflow-scrolling: touch;
            }
            .pm-plan-matrix-stack {
                --pm-mx-station: 96px;
                --pm-mx-week-min: 40px;
                gap: 10px;
            }
            .pm-plan-matrix__caption {
                font-size: 12px;
                padding: 0 8px;
            }
            .pm-plan-matrix tbody td.pm-plan-matrix__cell.is-editable {
                min-width: 40px;
                min-height: 40px;
            }
            .pm-plan-matrix-foot,
            .pm-content-pager {
                flex: 0 0 auto;
                flex-wrap: wrap;
                gap: 8px;
                align-items: flex-start;
                width: 100%;
            }
            .pm-plan-legend {
                flex-wrap: wrap;
                gap: 6px 10px;
                max-width: 100%;
            }
            .pm-plan-edit-hint,
            .pm-content-edit-hint {
                white-space: normal;
                max-width: 100%;
            }
            .pm-content-pager__info {
                flex: 1 1 100%;
                font-size: 0.78rem;
                line-height: 1.4;
            }
            .pm-content-pager__btns {
                width: 100%;
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 8px;
            }
            .pm-content-pager__btns .btn {
                min-height: 40px;
            }
            .pm-content-form-table {
                --pm-cf-line: 36px;
                --pm-cf-station: 72px;
                --pm-cf-freq: 48px;
                font-size: 11px;
            }
            .pm-content-form-table > colgroup > col.col-code { width: 110px; }
            .pm-content-form-table > colgroup > col.col-content { width: 240px; }
            .pm-content-form-table td.is-editable {
                padding: 2px;
            }
            .pm-content-form-table .pm-content-edit {
                min-height: 34px;
                font-size: 12px;
                padding: 6px;
            }
            .pm-content-form-table textarea.pm-content-edit {
                min-height: 64px;
            }
            .pm-plan-mark-picker {
                max-width: calc(100vw - 24px);
            }
        }

        #pmPaneJobDb .pm-db-layout {
            flex: 1;
            min-height: 0;
            margin-top: 0;
            height: auto;
        }

        #pmPaneJobDb .pm-db-side {
            max-height: none;
        }

        @media (max-width: 900px) {
            /* 整页上下滑：视图自身滚动，表单高度随内容，不锁死内部滚动区 */
            #view-pm.is-active,
            #view-pm {
                min-height: 0;
                flex: 1 1 auto;
                overflow-x: hidden !important;
                overflow-y: auto !important;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior-y: contain;
                touch-action: pan-y;
            }
            #view-pm > .pm-module {
                flex: 0 0 auto;
                width: 100%;
                min-height: 0;
                height: auto;
                overflow: visible;
                display: flex;
                flex-direction: column;
            }
            .pm-module-body {
                flex: 0 0 auto;
                min-height: 0;
                height: auto;
                overflow: visible;
                display: flex;
                flex-direction: column;
            }
            .pm-module-nav {
                position: sticky;
                top: 0;
                z-index: 30;
                flex: 0 0 auto;
                padding: 0;
                gap: 0;
                background: rgba(255, 255, 255, 0.98);
                border-bottom: 1px solid var(--border);
                overflow: hidden;
                backdrop-filter: none;
                -webkit-backdrop-filter: none;
            }
            .pm-module-nav__track {
                width: 100%;
                min-width: 0;
                gap: 4px;
                padding: 6px 8px;
                border-radius: 0;
            }
            .pm-module-nav__btn {
                height: 34px;
                min-height: 0;
                padding: 0 8px;
                border-radius: 10px;
                gap: 6px;
            }
            .pm-module-nav__btn.is-active::after {
                display: none;
            }
            .pm-module-nav__name {
                font-size: 0.82rem;
            }
            .pm-module-nav__hint {
                font-size: 0.62rem;
                max-width: 38%;
            }
            .pm-plan-top {
                grid-template-columns: 1fr;
                max-height: none;
            }
            #pmPanePlan,
            #pmPaneJobDb,
            #pmPaneEdit {
                flex: 0 0 auto;
                min-height: 0;
                height: auto;
                overflow: visible;
                padding-bottom: calc(12px + var(--mobile-nav-h, 58px) + env(safe-area-inset-bottom, 0px));
            }
            #pmPanePlan.is-active,
            #pmPaneJobDb.is-active,
            #pmPaneEdit.is-active {
                display: flex;
                flex-direction: column;
                min-height: 0;
                height: auto;
                overflow: visible;
            }
            #pmPanePlan .pm-content-layout,
            #pmPaneJobDb .pm-content-layout,
            #pmPaneEdit .pm-maintain-layout,
            #pmPaneEdit .pm-content-layout {
                flex: 0 0 auto;
                width: 100%;
                min-height: 0;
                height: auto;
                display: flex;
                flex-direction: column;
                overflow: visible;
            }
            #pmPanePlan .pm-content-main,
            #pmPaneJobDb .pm-content-main,
            #pmPaneEdit .pm-content-main {
                flex: 0 0 auto;
                width: 100%;
                max-width: 100%;
                min-height: 0;
                height: auto;
                display: flex;
                flex-direction: column;
                overflow: visible;
            }

            #pmPaneEdit .pm-maintain-list-wrap {
                flex: 0 0 auto !important;
                min-height: 0 !important;
                height: auto !important;
                max-height: none !important;
                overflow-x: auto;
                overflow-y: visible;
                -webkit-overflow-scrolling: touch;
                display: block;
            }

            #pmPaneEdit .pm-maintain-form-scroll {
                flex: none;
                min-height: 0;
                height: auto;
                overflow: visible;
            }

            .pm-maintain-stats {
                grid-template-columns: repeat(3, minmax(0, 1fr));
            }

            #pmPanePlan .pm-plan-toolbar .pm-content-status,
            #pmPaneJobDb .pm-plan-toolbar .pm-content-status,
            #pmPaneEdit .pm-plan-toolbar .pm-content-status {
                display: none !important;
            }
            #pmPanePlan .pm-plan-edit-hint {
                display: none;
            }
            /* 窄屏：表头随表格一起滚，整页上下滑即可浏览 */
            .pm-content-form-table thead th,
            .pm-content-form-table thead tr:first-child th,
            .pm-content-form-table thead tr:nth-child(2) th,
            .pm-content-form-table .col-line,
            .pm-content-form-table .col-station,
            .pm-content-form-table .col-freq,
            .pm-content-form-table thead .col-line,
            .pm-content-form-table thead .col-station,
            .pm-content-form-table thead .col-freq {
                position: static !important;
                top: auto !important;
                left: auto !important;
                z-index: auto !important;
                box-shadow: none !important;
            }
            .pm-plan-matrix thead th,
            .pm-plan-matrix thead .pm-plan-matrix__month,
            .pm-plan-matrix thead .pm-plan-matrix__week,
            .pm-plan-matrix .pm-plan-matrix__station {
                position: static !important;
                top: auto !important;
                left: auto !important;
                z-index: auto !important;
                box-shadow: none !important;
            }
            .pm-plan-matrix-foot,
            .pm-content-pager {
                flex: 0 0 auto;
            }
        }

        @media (max-width: 560px) {
            .pm-module-nav__hint {
                display: none;
            }
            .pm-module-nav__btn {
                height: 34px;
                min-height: 0;
                align-items: center;
                text-align: center;
                padding: 0 6px;
            }
            .pm-module-nav__name {
                font-size: 0.8rem;
            }
            .pm-plan-toolbar__filters .pm-content-select,
            .pm-plan-toolbar__filters .pm-content-select--line {
                flex: 1 1 100%;
            }
            .pm-plan-toolbar__actions {
                grid-template-columns: 1fr 1fr;
            }
            .pm-content-main {
                padding: 6px;
            }
            .pm-plan-matrix-stack {
                --pm-mx-station: 84px;
                --pm-mx-week-min: 36px;
            }
            #pmPanePlan .pm-content-table-wrap,
            #pmPanePlan .pm-plan-matrix-scroll,
            #pmPaneJobDb .pm-content-table-wrap,
            #pmPaneEdit .pm-content-table-wrap,
            #pmPaneEdit .pm-maintain-list-wrap {
                flex: 0 0 auto !important;
                min-height: 0 !important;
                height: auto !important;
                max-height: none !important;
                overflow-x: auto;
                overflow-y: visible;
            }
        }

        #view-pm {
            flex-direction: column;
            min-height: 0;
            background: #eef2f6;
            padding: 0;
        }

        #view-pm .main-content {
            background: transparent;
        }

        #view-pm > .pm-module {
            flex: 1;
            min-height: 0;
        }

        #view-pm .card {
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            background: #fff;
            box-shadow: var(--shadow);
        }

        #view-pm .card__title {
            font-size: 0.84rem;
            font-weight: 750;
            color: #0f172a;
            padding: 10px 14px;
            margin: 0;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
            text-transform: none;
            letter-spacing: 0.01em;
        }

        #view-pm .card--excel > .side-file-row,
        #view-pm .card--workbench > .workbench-body {
            padding: 12px 14px;
        }

        #view-pm .btn-preset {
            border-color: #99f6e4;
            background: #f0fdfa;
            color: #0f766e;
        }

        #view-pm .btn-preset:hover {
            background: #ccfbf1;
            border-color: #5eead4;
        }

        #view-pm .result-panel {
            border: 1px solid #dbe4ee;
            border-radius: 12px;
            background: #fff;
            box-shadow: var(--shadow);
            overflow: hidden;
            display: flex;
            flex-direction: column;
            min-height: 0;
            padding: 0;
        }

        #view-pm .result-header {
            padding: 10px 14px;
            margin: 0;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
        }

        #view-pm .result-title {
            font-size: 0.84rem;
            font-weight: 750;
            color: #0f172a;
        }

        #view-pm .result-header--pm-list {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px 10px;
            padding: 8px 12px;
        }

        #view-pm .result-header--pm-list .result-title {
            flex: 0 0 auto;
            white-space: nowrap;
        }

        #view-pm .result-header--pm-list .result-count {
            flex: 0 0 auto;
            margin-left: 0;
        }

        #view-pm .result-header--pm-list > .list-toolbar-stats {
            flex: 0 1 auto;
            min-width: 0;
            max-width: 280px;
            margin-right: auto;
        }

        #view-pm .result-header--pm-list .list-toolbar {
            flex: 0 1 auto;
            margin: 0 0 0 auto;
            min-width: 0;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px;
            padding: 4px 8px;
            justify-content: flex-end;
        }

        #view-pm .result-header--pm-list .list-toolbar-row {
            flex: 0 0 auto;
            min-width: 0;
        }

        #view-pm .result-header--pm-list .list-toolbar-row:first-child {
            flex: 0 0 auto;
        }

        #view-pm .result-header--pm-list .list-toolbar-row--meta {
            flex: 0 0 auto;
            margin-left: 0;
            justify-content: flex-end;
            gap: 8px;
            min-width: 0;
        }

        #view-pm .result-header--pm-list .list-toolbar input[type="search"] {
            flex: 0 0 220px;
            width: 220px;
            max-width: 240px;
            min-width: 160px;
        }

        #view-pm .list-toolbar {
            margin: 8px 0 0;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px 10px;
        }

        #view-pm .list-toolbar-row {
            flex: 0 1 auto;
            min-width: 0;
        }

        #view-pm .list-toolbar-row:first-child {
            flex: 1 1 auto;
        }

        #view-pm .list-toolbar-row--meta {
            flex: 0 1 auto;
            margin-left: auto;
            justify-content: flex-end;
            gap: 10px;
        }

        #view-pm .list-toolbar-stats {
            max-width: 220px;
        }

        #view-pm .list-toolbar input[type="search"] {
            min-width: 120px;
        }

        #view-pm .pm-list {
            flex: 1;
            min-height: 0;
            overflow-x: hidden;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
        }

        #view-pm .json-preview-section {
            margin: 0;
            border-top: 1px solid #eef2f7;
            padding: 0 14px;
        }

        #view-pm .send-progress {
            margin: 0 14px 12px;
        }

        /* 非本机（局域网手机等）强制隐藏 Excel 数据源 */
        body:not(.excel-source-allowed) #excelSourceCard,
        #excelSourceCard[data-remote-hidden="1"],
        #excelSourceCard[hidden] {
            display: none !important;
            visibility: hidden !important;
            height: 0 !important;
            overflow: hidden !important;
            margin: 0 !important;
            padding: 0 !important;
            border: 0 !important;
        }
        
        .header-main {
            display: flex;
            align-items: center;
            gap: 14px;
            min-width: 0;
            flex-shrink: 0;
        }

        .logo-row {
            display: flex;
            align-items: center;
            gap: 10px;
        }

        .logo-icon {
            width: 36px;
            height: 36px;
            border-radius: 10px;
            flex-shrink: 0;
        }
        
        .logo {
            font-size: 1.15rem;
            font-weight: 800;
            letter-spacing: 0.01em;
            line-height: 1.2;
            white-space: nowrap;
        }

        .subtitle {
            font-size: 0.72rem;
            opacity: 0.82;
            line-height: 1.2;
            white-space: nowrap;
        }

        .header-divider {
            width: 1px;
            height: 28px;
            background: rgba(255,255,255,0.2);
            flex-shrink: 0;
        }

        .header-file {
            display: flex;
            align-items: center;
            gap: 8px;
            min-width: 0;
            flex: 0 1 auto;
            max-width: 220px;
        }

        .header-file-label {
            font-size: 0.72rem;
            opacity: 0.75;
            white-space: nowrap;
            flex-shrink: 0;
        }

        .badge {
            display: inline-flex;
            align-items: center;
            padding: 4px 10px;
            border-radius: 6px;
            font-size: 0.75rem;
            font-weight: 600;
            background: rgba(255,255,255,0.12);
            border: 1px solid rgba(255,255,255,0.18);
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }

        #currentFileLabel {
            overflow: hidden;
            text-overflow: ellipsis;
        }

        .header-meta {
            margin-left: auto;
            display: flex;
            align-items: center;
            gap: 10px;
            min-width: 0;
            flex-shrink: 1;
        }

        .access-urls {
            display: flex;
            align-items: center;
            gap: 8px;
            flex-wrap: nowrap;
            min-width: 0;
        }

        .access-url-row {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 4px 8px;
            background: rgba(0,0,0,0.18);
            border-radius: 8px;
            border: 1px solid rgba(255,255,255,0.1);
            min-width: 0;
            max-width: 280px;
        }

        .access-url-row label {
            font-size: 0.68rem;
            font-weight: 700;
            opacity: 0.8;
            white-space: nowrap;
            flex-shrink: 0;
        }

        .access-url-row a {
            color: #a5f3fc;
            text-decoration: none;
            font-size: 0.72rem;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
            min-width: 0;
        }

        .access-url-row a:hover { text-decoration: underline; }

        .btn-copy-url {
            padding: 2px 8px;
            font-size: 0.68rem;
            border: 1px solid rgba(255,255,255,0.3);
            background: rgba(255,255,255,0.08);
            color: white;
            border-radius: 5px;
            cursor: pointer;
            flex-shrink: 0;
        }

        .btn-copy-url:hover { background: rgba(255,255,255,0.18); }

        #lanAccessMore {
            display: none;
        }
        
        /* ========== 主工作区 ========== */
        .main-content {
            flex: 1;
            min-height: 0;
            padding: 12px;
            display: grid;
            grid-template-columns: var(--sidebar-w) minmax(0, 1fr);
            grid-template-rows: minmax(0, 1fr);
            gap: 12px;
            align-items: stretch;
        }

        .sidebar-grid {
            display: flex;
            flex-direction: column;
            gap: 10px;
            min-height: 0;
            height: 100%;
            overflow: hidden;
        }

        .card--excel,
        .card--workbench {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
        }

        .card--excel .side-file-row,
        .card--workbench .workbench-body {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .panel-bottom {
            margin-top: auto;
            padding-top: 12px;
            border-top: 1px solid var(--border);
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .card--workbench .workbench-body {
            gap: 0;
        }

        .card--workbench .workbench-filters {
            flex: 1;
            min-height: 0;
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .card--workbench .panel-bottom {
            flex-shrink: 0;
        }

        .excel-preset-row {
            display: none;
        }

        .excel-store-rows {
            display: flex;
            flex-direction: column;
            gap: 8px;
            background: var(--bg-muted);
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
            padding: 10px;
        }

        .excel-store-row {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
        }

        .excel-store-row__info {
            min-width: 0;
            flex: 1 1 auto;
            display: flex;
            flex-direction: column;
            gap: 2px;
        }

        .excel-store-row__label {
            font-size: 0.72rem;
            font-weight: 700;
            color: #64748b;
            letter-spacing: 0.02em;
        }

        .excel-store-row__name {
            font-size: 0.82rem;
            font-weight: 600;
            color: #0f172a;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .excel-store-row__name.is-empty {
            color: #94a3b8;
            font-weight: 500;
        }

        .btn-preset {
            padding: 6px 4px;
            font-size: 0.74rem;
            font-weight: 600;
            border: 1px solid #c7d2fe;
            background: #eef2ff;
            color: #4338ca;
            border-radius: 8px;
            cursor: pointer;
            text-align: center;
            transition: background 0.12s, border-color 0.12s;
        }

        .btn-preset:hover {
            background: #e0e7ff;
            border-color: #a5b4fc;
        }

        .path-block {
            display: none;
        }

        .path-rows {
            display: flex;
            flex-direction: column;
            gap: 8px;
        }

        .path-row {
            display: grid;
            grid-template-columns: var(--side-label-w) minmax(0, 1fr);
            align-items: center;
            gap: 8px;
        }

        .path-row__label,
        .side-matrix__label {
            font-size: 0.74rem;
            font-weight: 600;
            color: var(--text-muted);
            text-align: right;
            padding-right: 2px;
            white-space: nowrap;
        }

        .path-row__controls {
            display: grid;
            grid-template-columns: var(--side-btn-w) minmax(0, 1fr);
            gap: 6px;
            align-items: center;
            min-width: 0;
        }

        .btn-pick {
            height: var(--side-ctrl-h);
            padding: 0 4px;
            font-size: 0.74rem;
            border-radius: 8px;
        }

        .path-row input[type="text"] {
            height: var(--side-ctrl-h);
            padding: 0 10px;
            font-size: 0.82rem;
        }

        .excel-actions-bar {
            display: none;
        }

        .excel-actions-bar .btn-remember {
            grid-column: 1 / -1;
        }

        .excel-actions-bar .btn {
            height: 36px;
            padding: 0 12px;
            font-size: 0.84rem;
        }

        .excel-store-row .btn-pick {
            flex: 0 0 auto;
            min-width: 64px;
        }

        .card--excel .file-source-label {
            margin: 4px 2px 0;
            color: #64748b;
            font-size: 0.74rem;
            line-height: 1.4;
        }

        .workbench-form.side-matrix {
            display: grid;
            grid-template-columns: var(--side-label-w) minmax(0, 1fr) var(--side-label-w) minmax(0, 1fr);
            gap: 8px 10px;
            align-items: center;
        }

        .wb-form {
            display: flex;
            flex-direction: column;
            gap: 12px;
        }

        .wb-stat {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 8px 12px;
            padding: 8px 10px;
            border-radius: 8px;
            background: #f0fdfa;
            border: 1px solid #ccfbf1;
            font-size: 0.78rem;
            color: #0f766e;
        }

        .wb-stat .chip {
            background: #ccfbf1;
            color: #0f766e;
        }

        .wb-stat__count {
            color: #64748b;
        }

        .wb-grid {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px 12px;
        }

        .wb-grid--query {
            grid-template-columns: minmax(0, 1.1fr) minmax(0, 1.2fr) minmax(0, 0.9fr);
            gap: 8px;
            align-items: center;
        }

        .wb-grid--query .wb-field--check {
            grid-column: 1 / -1;
            justify-content: flex-start;
        }

        .wb-grid--schedule {
            grid-template-columns: auto minmax(0, 1fr);
            gap: 8px 10px;
            align-items: center;
        }

        .wb-field {
            display: flex;
            flex-direction: column;
            gap: 5px;
            min-width: 0;
        }

        .wb-field--inline {
            flex-direction: row;
            align-items: center;
            gap: 6px;
        }

        .wb-field--inline > label,
        .wb-field--inline > .wb-field__label {
            flex: 0 0 auto;
            white-space: nowrap;
            margin: 0;
        }

        .wb-field--inline > select,
        .wb-field--inline > input[type="number"],
        .wb-field--inline > .schedule-time {
            flex: 1 1 auto;
            min-width: 0;
            width: auto;
        }

        .wb-field label,
        .wb-field__label {
            font-size: 0.68rem;
            font-weight: 650;
            color: #94a3b8;
            line-height: 1.2;
        }

        .wb-field select,
        .wb-field input[type="number"] {
            width: 100%;
            height: 36px;
            min-height: 36px;
            padding: 0 10px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #f8fafc;
            font: inherit;
            font-size: 0.82rem;
            color: #0f172a;
            box-sizing: border-box;
        }

        .wb-field--check {
            justify-content: flex-end;
        }

        .wb-check {
            display: inline-flex;
            align-items: center;
            gap: 8px;
            margin: 0;
            min-height: 36px;
            font-size: 0.8rem;
            font-weight: 550;
            color: #334155;
            cursor: pointer;
        }

        .wb-check input {
            width: 16px;
            height: 16px;
            margin: 0;
        }

        .schedule-block {
            background: #f8fafc;
            border: 1px solid #e2e8f0;
            border-radius: 10px;
            padding: 0;
            overflow: hidden;
        }

        .schedule-block__head {
            display: flex;
            align-items: center;
            justify-content: space-between;
            gap: 10px;
            padding: 8px 12px;
            border-bottom: 1px solid #eef2f7;
            background: #fff;
        }

        .schedule-block__title {
            font-size: 0.78rem;
            font-weight: 700;
            color: #0f172a;
        }

        .schedule-block__body {
            display: flex;
            flex-direction: column;
            gap: 10px;
            padding: 10px 12px 12px;
        }

        .schedule-block .schedule-time {
            justify-content: flex-start;
            gap: 6px;
        }

        .schedule-block .schedule-time input[type="number"] {
            width: 52px;
            height: 36px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #fff;
        }

        .side-matrix__span {
            grid-column: 1 / -1;
        }

        .side-matrix select,
        .side-matrix input[type="number"] {
            width: 100%;
            min-width: 0;
            height: var(--side-ctrl-h);
            padding: 0 10px;
            font-size: 0.82rem;
        }

        .side-matrix .check-row {
            height: var(--side-ctrl-h);
        }

        .side-stat-line {
            display: flex;
            align-items: center;
            flex-wrap: wrap;
            gap: 8px;
            font-size: 0.82rem;
            color: #4b5563;
            margin-bottom: 2px;
        }

        .side-matrix--schedule {
            display: grid;
            grid-template-columns: var(--side-label-w) minmax(0, 1fr) 84px;
            gap: 8px 10px;
            align-items: center;
        }

        .side-matrix--schedule .side-matrix__wide {
            grid-column: 2 / -1;
            min-width: 0;
        }

        .side-matrix--schedule select {
            width: 100%;
            height: var(--side-ctrl-h);
            padding: 0 8px;
            font-size: 0.82rem;
        }

        .schedule-time {
            display: flex;
            align-items: center;
            justify-content: flex-start;
            gap: 4px;
        }

        .schedule-time input[type="number"] {
            width: 36px;
            height: var(--side-ctrl-h);
            padding: 0 4px;
            text-align: center;
            font-size: 0.82rem;
        }

        .schedule-time-sep {
            color: var(--text-muted);
            font-weight: 600;
        }

        .schedule-week-chips,
        .schedule-day-chips {
            display: grid;
            grid-template-columns: repeat(4, minmax(0, 1fr));
            gap: 6px;
        }

        .schedule-day-chips {
            grid-template-columns: repeat(7, minmax(0, 1fr));
        }

        .schedule-chip {
            display: inline-flex;
            flex-direction: row;
            align-items: center;
            justify-content: center;
            gap: 5px;
            padding: 6px 4px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #fff;
            font-size: 0.72rem;
            color: #334155;
            cursor: pointer;
            user-select: none;
            line-height: 1.2;
            min-height: 32px;
            writing-mode: horizontal-tb;
            text-orientation: mixed;
        }

        .schedule-chip span {
            white-space: nowrap;
        }

        .schedule-chip:has(input:checked) {
            border-color: #99f6e4;
            background: #f0fdfa;
            color: #0f766e;
            font-weight: 650;
        }

        .schedule-chip input {
            width: 14px;
            height: 14px;
            margin: 0;
            cursor: pointer;
            flex-shrink: 0;
        }

        .schedule-day-chips[hidden],
        #scheduleDayField[hidden] {
            display: none !important;
        }

        .schedule-status {
            font-size: 0.7rem;
            color: #94a3b8;
            line-height: 1.45;
            margin: 0;
        }

        .workbench-actions {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 8px;
        }

        .workbench-actions .btn {
            height: 38px;
            font-size: 0.86rem;
        }

        .check-row {
            display: flex;
            align-items: center;
            gap: 6px;
            padding: 0 2px;
            min-width: 0;
        }

        .check-row input[type="checkbox"] {
            width: 15px;
            height: 15px;
            margin: 0;
            cursor: pointer;
            flex-shrink: 0;
        }

        .check-row label {
            margin: 0;
            font-size: 0.82rem;
            font-weight: 500;
            color: var(--text);
            line-height: 1.3;
            cursor: pointer;
        }

        .file-source-label {
            font-size: 0.72rem;
            color: var(--text-muted);
            line-height: 1.4;
            display: -webkit-box;
            -webkit-line-clamp: 2;
            line-clamp: 2;
            -webkit-box-orient: vertical;
            overflow: hidden;
        }

        .card {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
            padding: 12px 14px;
            box-shadow: var(--shadow);
        }

        .card__title {
            display: flex;
            align-items: center;
            gap: 8px;
            font-size: 0.78rem;
            font-weight: 700;
            color: var(--text-muted);
            text-transform: uppercase;
            letter-spacing: 0.05em;
            margin-bottom: 10px;
            padding-bottom: 6px;
            border-bottom: 1px solid var(--border);
        }

        .card__title-icon {
            width: 28px;
            height: 28px;
            border-radius: 8px;
            flex-shrink: 0;
            object-fit: contain;
            background: var(--primary-light);
            padding: 3px;
        }
        
        .actions-grid {
            display: grid;
            grid-template-columns: repeat(3, 1fr);
            gap: 8px;
        }
        
        .side-grid-2 {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 10px 12px;
        }
        
        .side-hint {
            font-size: 0.78rem;
            color: #9ca3af;
            margin-top: 8px;
            line-height: 1.4;
        }
        
        .side-file-row {
            display: flex;
            flex-direction: column;
            gap: 10px;
        }
        
        /* 隐藏原生「未选择任何文件」文案，由 #fileSourceLabel 统一说明 */
        .sr-only-file {
            position: absolute;
            width: 1px;
            height: 1px;
            padding: 0;
            margin: -1px;
            overflow: hidden;
            clip: rect(0, 0, 0, 0);
            white-space: nowrap;
            border: 0;
        }
        
        .file-picker-row {
            position: relative;
            display: flex;
            flex-wrap: wrap;
            align-items: center;
            gap: 10px;
        }
        
        .side-actions-row {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px;
        }

        .side-field-label {
            font-size: 0.78rem;
            font-weight: 600;
            color: #64748b;
            margin-bottom: 4px;
        }

        .side-divider {
            height: 1px;
            background: var(--border);
            margin: 4px 0 2px;
        }
        
        .side-actions-col {
            display: flex;
            flex-direction: column;
            gap: 8px;
            margin-top: 2px;
        }
        
        .btn-block {
            width: 100%;
            border-radius: 10px;
            padding: 9px 14px;
            font-size: 0.88rem;
        }
        
        .side-meta {
            font-size: 0.78rem;
            color: #6b7280;
            margin-top: 6px;
            word-break: break-all;
        }
        
        .side-meta strong {
            color: #111827;
            font-weight: 600;
        }
        
        .panel-title {
            font-size: 1.08em;
            font-weight: 700;
            margin-bottom: 16px;
            display: flex;
            justify-content: space-between;
            align-items: center;
            color: #111827;
        }
        
        .panel-title span {
            display: inline-flex;
            align-items: center;
            gap: 6px;
        }
        
        .panel-title small {
            font-size: 0.78em;
            font-weight: 400;
            color: #6b7280;
        }
        
        .hint {
            font-size: 0.8em;
            color: #6b7280;
            margin-top: 4px;
        }
        
        .control-group {
            margin-bottom: 16px;
        }
        
        label {
            display: block;
            margin-bottom: 6px;
            color: #374151;
            font-weight: 600;
            font-size: 0.94em;
        }
        
        select, input[type="number"], input[type="text"] {
            width: 100%;
            padding: 9px 11px;
            border: 1px solid #e5e7eb;
            border-radius: 8px;
            font-size: 0.93em;
            transition: all 0.2s;
            background: white;
        }
        
        select:focus, input:focus {
            border-color: #4f46e5;
            box-shadow: 0 0 0 1px rgba(79, 70, 229, 0.35);
            outline: none;
        }
        
        .btn-row {
            display: grid;
            grid-template-columns: 1.1fr 1.1fr;
            gap: 10px;
            margin-top: 8px;
        }
        
        .btn {
            display: inline-flex;
            align-items: center;
            justify-content: center;
            gap: 6px;
            padding: 10px 16px;
            border-radius: 999px;
            border: none;
            font-size: 0.9em;
            font-weight: 600;
            cursor: pointer;
            transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease;
            white-space: nowrap;
        }
        
        .btn-primary {
            background: linear-gradient(135deg, #4f46e5 0%, #6366f1 50%, #22c1c3 100%);
            color: white;
            box-shadow: 0 10px 24px rgba(79, 70, 229, 0.36);
        }
        
        .btn-outline {
            background: white;
            color: #111827;
            border: 1px solid #e5e7eb;
        }
        
        .btn-accent {
            background: linear-gradient(135deg, #f97316 0%, #facc15 100%);
            color: #111827;
            box-shadow: 0 10px 24px rgba(251, 146, 60, 0.35);
        }
        
        .btn:hover {
            transform: translateY(-1px);
            box-shadow: 0 14px 32px rgba(15, 23, 42, 0.22);
        }
        
        .btn:active {
            transform: translateY(0);
            box-shadow: none;
        }
        
        .btn:disabled {
            opacity: 0.55;
            cursor: not-allowed;
            box-shadow: none;
            transform: none;
        }

        /* 锁住 PM 三页工具栏：覆盖后方全局 select / .btn 胶囊与紫渐变 */
        .pm-plan-toolbar__filters .pm-content-select,
        .pm-plan-toolbar__filters .pm-content-search {
            width: auto;
            box-sizing: border-box;
            min-height: var(--pm-tb-h, 34px);
            height: var(--pm-tb-h, 34px);
            max-height: var(--pm-tb-h, 34px);
            padding: 0 12px;
            border: 1px solid var(--pm-tb-border, #d0d7e2);
            border-radius: var(--pm-tb-r, 8px);
            background-color: #fff;
            color: var(--pm-tb-ink, #1e293b);
            font-size: var(--pm-tb-fs, 0.8rem);
            font-weight: 600;
            line-height: 1.2;
            box-shadow: 0 1px 0 rgba(15, 23, 42, 0.03);
        }

        .pm-plan-toolbar__filters .pm-content-select {
            padding: 0 28px 0 10px;
            appearance: none;
            -webkit-appearance: none;
            background-image:
                linear-gradient(45deg, transparent 50%, #64748b 50%),
                linear-gradient(135deg, #64748b 50%, transparent 50%);
            background-position:
                calc(100% - 14px) calc(50% - 2px),
                calc(100% - 10px) calc(50% - 2px);
            background-size: 4px 4px, 4px 4px;
            background-repeat: no-repeat;
            cursor: pointer;
        }

        .pm-plan-toolbar__filters .pm-content-select:focus,
        .pm-plan-toolbar__filters .pm-content-search:focus {
            outline: none;
            border-color: #0f766e;
            box-shadow: 0 0 0 3px rgba(15, 118, 110, 0.16);
        }

        .pm-plan-toolbar__actions .btn,
        .pm-plan-toolbar__actions .btn-outline,
        .pm-plan-toolbar__actions .btn-primary,
        .pm-plan-toolbar__actions .btn-accent {
            transform: none !important;
            box-shadow: none !important;
            min-height: var(--pm-tb-h, 34px);
            height: var(--pm-tb-h, 34px);
            max-height: var(--pm-tb-h, 34px);
            padding: 0 12px;
            border-radius: var(--pm-tb-r, 8px);
            font-size: var(--pm-tb-fs, 0.8rem);
            font-weight: 600;
            line-height: 1;
        }

        .pm-plan-toolbar__actions .btn-outline,
        .pm-plan-toolbar__actions .btn-accent {
            background: #fff;
            border: 1px solid var(--pm-tb-border, #d0d7e2);
            color: var(--pm-tb-ink, #1e293b);
        }

        .pm-plan-toolbar__actions .btn-outline:hover,
        .pm-plan-toolbar__actions .btn-accent:hover {
            border-color: #94a3b8;
            background: #f8fafc;
            color: #0f172a;
            transform: none !important;
            box-shadow: none !important;
        }

        .pm-plan-toolbar__actions .btn-primary {
            background: linear-gradient(180deg, #14b8a6 0%, #0f766e 100%);
            border: 1px solid #0f766e;
            color: #fff;
        }

        .pm-plan-toolbar__actions .btn-primary:hover {
            background: linear-gradient(180deg, #2dd4bf 0%, #0d9488 100%);
            border-color: #0d9488;
            color: #fff;
            transform: none !important;
            box-shadow: none !important;
        }
        
        .checkbox-row {
            display: flex;
            align-items: center;
            gap: 8px;
            background: #eef2ff;
            border-radius: 10px;
            padding: 8px 10px;
            border: 1px solid #e0e7ff;
            margin-top: 4px;
        }
        
        .checkbox-row input[type="checkbox"] {
            width: 17px;
            height: 17px;
            cursor: pointer;
        }
        
        .file-info {
            font-size: 0.8em;
            color: #6b7280;
            margin-top: 4px;
        }
        
        .file-info strong {
            color: #111827;
        }
        
        .summary-row {
            display: flex;
            align-items: center;
            gap: 10px;
            font-size: 0.86em;
            color: #4b5563;
        }
        
        .chip {
            display: inline-flex;
            align-items: center;
            padding: 2px 8px;
            border-radius: 999px;
            background: #eef2ff;
            color: #4f46e5;
            font-size: 0.8em;
        }
        
        .result-panel {
            background: var(--bg-card);
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
            box-shadow: var(--shadow);
            min-height: 0;
            display: flex;
            flex-direction: column;
            overflow: hidden;
            padding: 12px 14px 14px;
        }
        
        .result-header {
            flex-shrink: 0;
            margin-bottom: 10px;
            padding-bottom: 10px;
            border-bottom: 1px solid var(--border);
        }

        .result-header-top {
            display: flex;
            justify-content: space-between;
            align-items: center;
            gap: 12px;
        }
        
        .list-toolbar {
            display: flex;
            flex-direction: row;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px 10px;
            margin-top: 10px;
            padding: 8px 10px;
            background: var(--bg-muted);
            border: 1px solid var(--border);
            border-radius: var(--radius-sm);
        }

        .list-toolbar-row {
            display: flex;
            flex-wrap: nowrap;
            align-items: center;
            gap: 8px;
            min-width: 0;
        }

        .list-toolbar-row:first-child {
            flex: 1 1 auto;
        }

        .list-toolbar-row--meta {
            flex: 0 1 auto;
            justify-content: flex-end;
            gap: 10px;
            margin-left: auto;
        }

        .list-toolbar input[type="search"],
        .list-toolbar select {
            width: auto;
            padding: 7px 10px;
            border: 1px solid var(--border);
            border-radius: 8px;
            font-size: 0.82rem;
            background: white;
            color: var(--text);
            min-width: 0;
        }

        .list-toolbar input[type="search"] {
            flex: 1 1 auto;
            min-width: 140px;
        }

        .list-toolbar select {
            flex: 0 0 auto;
            width: auto;
            max-width: 140px;
        }

        .list-toolbar-stats {
            font-size: 0.78rem;
            color: var(--text-muted);
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            min-width: 0;
        }

        .pagination {
            display: flex;
            align-items: center;
            gap: 6px;
            flex-shrink: 0;
            margin-left: auto;
        }

        .pagination button {
            padding: 5px 10px;
            border: 1px solid var(--border);
            background: white;
            border-radius: 8px;
            font-size: 0.78rem;
            cursor: pointer;
            color: var(--text);
            transition: background 0.12s, border-color 0.12s;
        }

        .pagination button:hover:not(:disabled) {
            background: var(--primary-light);
            border-color: #c7d2fe;
        }

        .pagination button:disabled {
            opacity: 0.45;
            cursor: not-allowed;
        }

        .pagination .page-info {
            font-size: 0.78rem;
            color: var(--text-muted);
            padding: 0 4px;
            white-space: nowrap;
        }
        
        .result-title {
            font-size: 1rem;
            font-weight: 700;
            color: var(--text);
        }
        
        .result-count {
            background: #eef2ff;
            color: #4f46e5;
            padding: 4px 10px;
            border-radius: 999px;
            font-weight: 600;
            font-size: 0.82em;
        }
        
        .pm-list {
            flex: 1;
            min-height: 0;
            overflow-y: auto;
            overflow-x: hidden;
            padding-right: 4px;
            scrollbar-width: thin;
            scrollbar-color: #cbd5e1 transparent;
        }

        .pm-list::-webkit-scrollbar {
            width: 8px;
        }

        .pm-list::-webkit-scrollbar-thumb {
            background: #cbd5e1;
            border-radius: 999px;
        }

        .pm-list::-webkit-scrollbar-thumb:hover {
            background: #94a3b8;
        }

        .pm-list.pm-table {
            border: 1px solid #d0d7de;
            border-radius: 6px;
            background: #fff;
            padding: 0;
            overflow-x: hidden;
            overflow-y: auto;
            -webkit-overflow-scrolling: touch;
            overscroll-behavior: contain;
        }

        .pm-table-head {
            display: grid;
            grid-template-columns: 52px minmax(120px, 168px) 68px minmax(0, 1fr) 36px;
            gap: 8px;
            padding: 7px 10px;
            background: #f6f8fa;
            border-bottom: 1px solid #d0d7de;
            font-size: 0.75rem;
            font-weight: 650;
            color: #57606a;
            letter-spacing: 0;
            text-transform: none;
            position: sticky;
            top: 0;
            z-index: 2;
        }
        
        .pm-item {
            background: #fff;
            padding: 5px 10px;
            border-bottom: 1px solid #eaeef2;
            position: relative;
            display: grid;
            grid-template-columns: 52px minmax(120px, 168px) 68px minmax(0, 1fr) 36px;
            gap: 6px 8px;
            align-items: center;
            min-height: 36px;
            transition: background 0.12s;
        }

        .pm-item:nth-child(even) {
            background: #fafbfc;
        }
        
        .pm-item:hover {
            background: #f0f6ff;
        }

        .pm-item:last-child {
            border-bottom: none;
        }

        .pm-item.is-plan-locked {
            opacity: 0.78;
        }

        .pm-plan-tag {
            display: inline-block;
            margin-left: 6px;
            padding: 1px 6px;
            border-radius: 3px;
            font-size: 11px;
            font-weight: 600;
            vertical-align: middle;
            white-space: nowrap;
        }

        .pm-plan-tag.is-paused {
            background: #fef3c7;
            color: #92400e;
        }

        .pm-plan-tag.is-deferred {
            background: #e0e7ff;
            color: #3730a3;
        }

        .pm-plan-tag.is-transfer {
            background: #dcfce7;
            color: #166534;
        }

        .pm-item:has(.pm-detail-fold[open]) {
            align-items: start;
        }
        
        .pm-island {
            font-size: 0.82rem;
            font-weight: 600;
            color: #1f2328;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            line-height: 1.35;
        }
        
        .pm-workstation {
            font-size: 0.8rem;
            color: #424a53;
            white-space: nowrap;
            overflow: hidden;
            text-overflow: ellipsis;
            line-height: 1.35;
        }
        
        .pm-frequency {
            justify-self: start;
            font-size: 0.7rem;
            padding: 1px 6px;
            border-radius: 4px;
            font-weight: 600;
            white-space: nowrap;
            line-height: 1.4;
        }

        .freq-week { background: #dbeafe; color: #1d4ed8; }
        .freq-month { background: #dcfce7; color: #15803d; }
        .freq-q1 { background: #fef3c7; color: #b45309; }
        .freq-q2 { background: #ffedd5; color: #c2410c; }
        .freq-year { background: #ede9fe; color: #6d28d9; }
        .freq-special { background: #fce7f3; color: #be185d; }
        .freq-default { background: #eef2ff; color: #4f46e5; }

        .pm-detail-cell {
            min-width: 0;
            font-size: 0.78rem;
            color: #334155;
            line-height: 1.35;
        }

        .pm-detail-cell.is-fail {
            padding: 1px 0;
        }

        .pm-detail-fold {
            min-width: 0;
        }

        .pm-detail-fold > summary {
            list-style: none;
            cursor: pointer;
            display: inline-flex;
            align-items: center;
            gap: 6px;
            user-select: none;
            max-width: 100%;
        }

        .pm-detail-fold > summary::-webkit-details-marker {
            display: none;
        }

        .pm-detail-fold > summary::before {
            content: '';
            width: 0;
            height: 0;
            border-left: 5px solid #64748b;
            border-top: 4px solid transparent;
            border-bottom: 4px solid transparent;
            flex: 0 0 auto;
            transition: transform 0.12s ease;
        }

        .pm-detail-fold[open] > summary::before {
            transform: rotate(90deg);
        }

        .pm-detail-meta {
            display: inline-flex;
            align-items: center;
            gap: 6px;
            font-size: 0.74rem;
            font-weight: 650;
            color: #0f766e;
            white-space: nowrap;
        }

        .pm-detail-meta.is-miss {
            color: #b45309;
        }

        .pm-detail-fold[open] > summary {
            margin-bottom: 6px;
        }

        .pm-detail-list {
            margin: 0;
            padding: 6px 8px;
            list-style: none;
            display: flex;
            flex-direction: column;
            gap: 3px;
            max-height: 160px;
            overflow: auto;
            border: 1px solid #eaeef2;
            border-radius: 4px;
            background: #fafbfc;
        }

        .pm-detail-list li {
            display: grid;
            grid-template-columns: minmax(72px, 26%) minmax(0, 1fr);
            gap: 8px;
            align-items: start;
            padding: 2px 0;
            border-bottom: 1px solid #f1f5f9;
        }

        .pm-detail-list li:last-child {
            border-bottom: none;
        }

        .pm-detail-list li.is-gap .pm-detail-text {
            color: #b45309;
        }

        .pm-detail-code {
            font-size: 0.7rem;
            color: #64748b;
            word-break: break-all;
            font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
        }

        .pm-detail-text {
            word-break: break-word;
        }

        .pm-detail-fail-stack {
            display: flex;
            flex-direction: column;
            gap: 4px;
            margin-top: 2px;
        }

        .pm-detail-fail {
            color: #b45309;
            background: #fff7ed;
            border: 1px solid #fed7aa;
            border-radius: 4px;
            padding: 4px 8px;
            font-size: 0.72rem;
            line-height: 1.35;
            word-break: break-word;
        }

        .pm-detail-empty {
            color: #94a3b8;
            font-size: 0.78rem;
        }

        .pm-badge {
            justify-self: end;
            align-self: center;
            font-size: 0.72rem;
            color: #8b949e;
        }

        .pm-island-group {
            border-bottom: 1px solid var(--border);
        }

        .pm-island-group:last-child {
            border-bottom: none;
        }

        .pm-island-group summary {
            list-style: none;
            cursor: pointer;
            display: flex;
            align-items: center;
            gap: 10px;
            padding: 10px 14px;
            background: linear-gradient(90deg, #f8fafc, #fff);
            font-weight: 700;
            font-size: 0.88rem;
            color: var(--text);
            position: sticky;
            top: 0;
            z-index: 1;
            border-bottom: 1px solid #f1f5f9;
            user-select: none;
        }

        .pm-island-group summary::-webkit-details-marker {
            display: none;
        }

        .pm-island-group summary::before {
            content: '▸';
            color: var(--primary);
            font-size: 0.75rem;
            transition: transform 0.15s;
        }

        .pm-island-group[open] summary::before {
            transform: rotate(90deg);
        }

        .pm-island-group-count {
            margin-left: auto;
            font-size: 0.72rem;
            font-weight: 600;
            padding: 2px 8px;
            border-radius: 999px;
            background: var(--primary-light);
            color: var(--primary);
        }

        .pm-list.pm-table--grouped .pm-table-head {
            display: none;
        }

        .pm-list.pm-table--grouped .pm-island-group summary {
            top: 0;
        }

        .pm-badge {
            justify-self: end;
            font-size: 0.72em;
            color: #94a3b8;
            font-weight: 600;
        }
        
        .pm-empty {
            text-align: center;
            padding: 48px 0;
            color: #9ca3af;
            font-size: 0.9em;
        }
        
        .pm-empty-icon img {
            width: 56px;
            height: 56px;
            opacity: 0.55;
        }
        
        .pm-empty-icon {
            font-size: 2.4em;
            margin-bottom: 8px;
        }
        
        .send-progress {
            flex-shrink: 0;
            margin-top: 14px;
            padding: 10px 12px;
            background: #111827;
            border-radius: 12px;
            color: #e5e7eb;
            display: none;
            font-size: 0.86em;
        }
        
        .json-preview-section {
            flex-shrink: 0;
            margin-top: 12px;
            padding: 12px 14px;
            background: #ffffff;
            border: 1px solid #e5e7eb;
            border-radius: 12px;
            box-shadow: 0 8px 24px rgba(148, 163, 184, 0.2);
        }
        
        .json-preview-section summary {
            cursor: pointer;
            font-size: 0.88em;
            font-weight: 700;
            color: #111827;
            user-select: none;
        }
        
        .json-preview-section summary::-webkit-details-marker {
            margin-right: 8px;
        }
        
        .json-preview-hint {
            font-size: 0.8em;
            color: #9ca3af;
            margin-top: 8px;
            line-height: 1.4;
        }
        
        .json-preview-pre {
            margin-top: 10px;
            max-height: min(40vh, 320px);
            overflow: auto;
            padding: 10px 12px;
            background: #0f172a;
            color: #e2e8f0;
            border-radius: 8px;
            font-size: 0.78rem;
            line-height: 1.45;
            font-family: Consolas, 'SF Mono', 'Microsoft YaHei Mono', monospace;
            white-space: pre-wrap;
            word-break: break-all;
            display: none;
        }
        
        .json-preview-pre.visible {
            display: block;
        }
        
        .progress-bar {
            width: 100%;
            height: 16px;
            background: #374151;
            border-radius: 999px;
            overflow: hidden;
            margin: 8px 0;
        }
        
        .progress-fill {
            height: 100%;
            background: linear-gradient(90deg, #22c55e, #a3e635, #facc15);
            width: 0%;
            transition: width 0.2s ease-out;
        }
        
        .progress-stats {
            display: flex;
            justify-content: space-between;
            margin-top: 6px;
            font-size: 0.78em;
        }
        
        .progress-stats span {
            padding: 1px 7px;
            border-radius: 999px;
        }
        
        .stat-success {
            background: #14532d;
            color: #bbf7d0;
        }
        
        .stat-fail {
            background: #7f1d1d;
            color: #fecaca;
        }
        
        .stat-wait {
            background: #854d0e;
            color: #fef3c7;
        }
        
        .status-indicator {
            position: fixed;
            top: 18px;
            right: 18px;
            padding: 9px 14px;
            border-radius: 999px;
            color: white;
            font-weight: 500;
            font-size: 0.86em;
            z-index: 3200;
            opacity: 0;
            pointer-events: none;
            transition: opacity 0.3s, transform 0.2s;
            box-shadow: 0 10px 30px rgba(15, 23, 42, 0.5);
            transform: translateY(-4px);
        }
        
        .status-indicator.show {
            opacity: 1;
            transform: translateY(0);
            pointer-events: none;
        }
        
        /* ========== 导出目录对话框 ========== */
        .export-modal {
            position: fixed;
            inset: 0;
            z-index: 1600;
            display: none;
            align-items: center;
            justify-content: center;
            padding: 20px;
            background: rgba(15, 23, 42, 0.48);
            backdrop-filter: blur(4px);
        }

        .export-modal.is-open {
            display: flex;
        }

        .export-modal__panel {
            width: min(520px, 100%);
            background: #fff;
            border-radius: 16px;
            box-shadow: 0 24px 64px rgba(15, 23, 42, 0.28);
            border: 1px solid #e2e8f0;
            overflow: hidden;
            animation: exportModalIn 0.18s ease-out;
        }

        @keyframes exportModalIn {
            from { opacity: 0; transform: translateY(8px) scale(0.98); }
            to { opacity: 1; transform: translateY(0) scale(1); }
        }

        .export-modal__head {
            padding: 16px 18px 12px;
            border-bottom: 1px solid #eef2f7;
        }

        .export-modal__title {
            font-size: 1.05rem;
            font-weight: 700;
            color: #0f172a;
        }

        .export-modal__meta {
            margin-top: 4px;
            font-size: 0.82rem;
            color: #64748b;
        }

        .export-modal__body {
            padding: 16px 18px;
            display: flex;
            flex-direction: column;
            gap: 10px;
        }

        .export-modal__label {
            font-size: 0.82rem;
            font-weight: 600;
            color: #334155;
        }

        .export-modal__path-row {
            display: flex;
            gap: 8px;
            align-items: stretch;
        }

        .export-modal__path-row input {
            flex: 1;
            min-width: 0;
            height: 40px;
            padding: 0 12px;
            border: 1px solid #cbd5e1;
            border-radius: 10px;
            font-size: 0.88rem;
            font-family: Consolas, 'Microsoft YaHei', monospace;
            color: #0f172a;
            background: #f8fafc;
        }

        .export-modal__path-row input:focus {
            outline: none;
            border-color: #6366f1;
            box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.18);
            background: #fff;
        }

        .export-modal__browse {
            flex: 0 0 auto;
            height: 40px;
            padding: 0 14px;
            border-radius: 10px;
            border: 1px solid #c7d2fe;
            background: #eef2ff;
            color: #3730a3;
            font-weight: 600;
            font-size: 0.88rem;
            cursor: pointer;
            white-space: nowrap;
        }

        .export-modal__browse:hover {
            background: #e0e7ff;
        }

        .export-modal__browse:disabled {
            opacity: 0.55;
            cursor: wait;
        }

        .export-modal__hint {
            font-size: 0.78rem;
            color: #64748b;
            line-height: 1.45;
        }

        .export-modal__hint code {
            font-size: 0.76rem;
            background: #f1f5f9;
            padding: 1px 6px;
            border-radius: 4px;
        }

        .export-modal__foot {
            display: flex;
            justify-content: flex-end;
            gap: 8px;
            padding: 12px 18px 16px;
            border-top: 1px solid #eef2f7;
            background: #fafbfc;
        }

        .export-modal__foot .btn {
            min-width: 88px;
            height: 36px;
            padding: 0 16px;
            border-radius: 10px;
        }

        /* 签字弹窗四键同行：覆盖通用 foot 按钮最小宽度，避免左侧裁切 */
        #signModal .export-modal__foot.sign-modal-foot .btn {
            flex: 1 1 0 !important;
            min-width: 0 !important;
            width: auto !important;
            padding: 0 6px !important;
        }

        .pm-plan-io-panel .export-modal__body {
            display: flex;
            flex-direction: column;
            gap: 16px;
        }

        .pm-plan-io-block {
            padding: 12px 14px;
            border: 1px solid #e2e8f0;
            border-radius: 12px;
            background: #f8fafc;
        }

        .pm-plan-io-block__label {
            font-size: 0.78rem;
            font-weight: 650;
            letter-spacing: 0.02em;
            color: #64748b;
            margin-bottom: 6px;
        }

        .pm-plan-io-block__value {
            font-size: 0.95rem;
            font-weight: 600;
            color: #0f172a;
            word-break: break-all;
        }

        .pm-plan-io-block .export-modal__hint {
            margin: 0 0 10px;
        }

        .pm-plan-io-block .btn-block {
            width: 100%;
        }
        
        .status-success {
            background: #16a34a;
        }
        
        .status-error {
            background: #dc2626;
        }
        
        .status-warning {
            background: #d97706;
        }
        
        .loading {
            display: none;
            position: fixed;
            top: 0;
            left: 0;
            width: 100%;
            height: 100%;
            background: rgba(15, 23, 42, 0.72);
            z-index: 950;
            justify-content: center;
            align-items: center;
        }
        
        .spinner {
            width: 76px;
            height: 76px;
            border: 7px solid rgba(249, 250, 251, 0.18);
            border-top: 7px solid #0f766e;
            border-radius: 50%;
            animation: spin 0.9s linear infinite;
        }
        
        @keyframes spin {
            0% { transform: rotate(0deg); }
            100% { transform: rotate(360deg); }
        }
        
        .task-info {
            margin-top: 6px;
            padding: 7px 9px;
            background: #ccfbf1;
            border-radius: 8px;
            font-size: 0.8em;
            border-left: 3px solid #0f766e;
            color: #4b5563;
        }
        
        @media (max-width: 1100px) {
            :root {
                --sidebar-w: min(100%, 320px);
                --nav-rail-w: 196px;
            }
            .access-url-row { max-width: 200px; }
            .app-header__name { font-size: 0.88rem; }
        }

        @media (max-width: 900px) {
            :root {
                --mobile-nav-h: 58px;
                --topbar-h: 44px;
                --primary: #0f766e;
                --primary-light: #f0fdfa;
                --bg-page: #f1f5f9;
                --border: #e2e8f0;
                --shadow: none;
                --shadow-lg: none;
            }

            html, body {
                overflow: hidden;
                height: 100%;
                height: 100dvh;
                overscroll-behavior: none;
                background: #f1f5f9;
                background-image: none;
            }

            /* 用户端配色：去渐变、降饱和，保持简洁 */
            .app-header {
                background: #0f172a;
                box-shadow: none;
            }

            .btn {
                border-radius: 8px;
                box-shadow: none !important;
                transform: none !important;
                transition: background 0.12s ease, border-color 0.12s ease, color 0.12s ease;
            }

            .btn:hover,
            .btn:active {
                transform: none !important;
                box-shadow: none !important;
            }

            .btn-primary {
                background: #0f766e;
                color: #fff;
            }

            .btn-primary:active {
                background: #0d9488;
            }

            .btn-outline {
                background: #fff;
                color: #334155;
                border: 1px solid #cbd5e1;
            }

            .btn-accent {
                background: #0f766e;
                color: #fff;
            }

            .nav-item.is-active,
            .nav-item.is-priority {
                color: #0f766e;
                background: #f0fdfa;
                box-shadow: none;
            }

            .nav-item.is-active .nav-item__icon,
            .nav-item.is-priority .nav-item__icon {
                color: #fff;
                background: linear-gradient(145deg, #0f766e, #0e7490);
                box-shadow: none;
            }

            .submit-detail-item__code {
                color: #0f172a;
            }

            .submit-status-select.is-done,
            .submit-result-select.is-ok,
            .submit-form-grid .submit-field select.submit-result-select.is-ok {
                background: #ecfdf5 !important;
                background-color: #ecfdf5 !important;
                border-color: #6ee7b7 !important;
                color: #047857 !important;
                font-weight: 700;
            }

            .submit-status-select.is-fail,
            .submit-result-select.is-fail,
            .submit-form-grid .submit-field select.submit-result-select.is-fail {
                background: #fff7ed !important;
                background-color: #fff7ed !important;
                border-color: #fdba74 !important;
                color: #c2410c !important;
                font-weight: 700;
            }

            .submit-status-select.is-na {
                background: #f1f5f9 !important;
                background-color: #f1f5f9 !important;
                border-color: #cbd5e1 !important;
                color: #64748b !important;
            }

            .submit-result-select.is-warn,
            .submit-form-grid .submit-field select.submit-result-select.is-warn {
                background: #fffbeb !important;
                background-color: #fffbeb !important;
                border-color: #fcd34d !important;
                color: #b45309 !important;
                font-weight: 700;
            }

            .submit-result-select.is-partial,
            .submit-form-grid .submit-field select.submit-result-select.is-partial {
                background: #eff6ff !important;
                background-color: #eff6ff !important;
                border-color: #93c5fd !important;
                color: #1d4ed8 !important;
                font-weight: 700;
            }

            .submit-result-select.is-critical,
            .submit-form-grid .submit-field select.submit-result-select.is-critical {
                background: #fef2f2 !important;
                background-color: #fef2f2 !important;
                border-color: #fca5a5 !important;
                color: #b91c1c !important;
                font-weight: 700;
            }

            .submit-detail-item__badge {
                background: #f1f5f9;
                color: #475569;
                border: 0;
            }

            .submit-detail-item__body {
                border: 1px solid #e2e8f0;
                background: #f8fafc;
            }

            .submit-detail-item__label {
                color: #64748b;
            }

            .submit-detail-block__head {
                background: #f8fafc;
                color: #475569;
            }

            .submit-detail-block__head strong {
                color: #0f172a;
            }

            .submit-form-grid {
                background: #fff;
                border-color: #e2e8f0;
            }

            .submit-pick-card {
                background: #fff;
                border-color: #e2e8f0;
            }

            .container {
                height: 100%;
                height: 100dvh;
            }

            .app-header {
                padding: 0 12px;
                padding-top: env(safe-area-inset-top, 0);
                height: calc(var(--topbar-h) + env(safe-area-inset-top, 0px));
                gap: 8px;
            }

            /* 浏览器顶栏已显示系统标题，移动端不再重复占高 */
            .app-header__brand,
            .app-header__center,
            .app-header__name,
            .app-header__tag {
                display: none !important;
            }

            .app-header__back {
                padding: 6px 8px;
                border-radius: 8px;
                font-size: 0.84rem;
            }

            .app-header__back-text {
                display: inline;
            }

            .app-header__user {
                flex: 1;
                width: auto;
                margin-left: 0;
                gap: 8px;
                max-width: none;
                min-width: 0;
                justify-content: space-between;
            }

            .app-header__chip {
                display: inline-flex !important;
                align-items: center;
                margin-right: auto;
                padding: 3px 0;
                border: 0;
                background: transparent;
                border-radius: 0;
                font-size: 0.92rem;
                font-weight: 700;
                color: #f8fafc;
                letter-spacing: 0.02em;
            }

            .app-header__user-name {
                display: none;
            }

            .btn-logout {
                min-height: 26px;
                height: 26px;
                padding: 0 8px;
                font-size: 0.66rem;
                gap: 3px;
            }

            .btn-logout__icon {
                width: 12px;
                height: 12px;
            }

            .app-body {
                grid-template-columns: 1fr;
                grid-template-rows: minmax(0, 1fr);
                position: relative;
            }

            .app-main {
                padding-bottom: calc(var(--mobile-nav-h) + env(safe-area-inset-bottom, 0px));
            }

            .container.is-home .app-main {
                padding-bottom: 0;
            }

            /* 一线员工首页保留底部导航占位 */
            body.role-field .container.is-home .app-main {
                padding-bottom: calc(var(--mobile-nav-h) + env(safe-area-inset-bottom, 0px));
            }

            body.role-field .container.is-home .nav-rail {
                display: flex;
            }

            .nav-rail {
                position: fixed;
                left: 0;
                right: 0;
                bottom: 0;
                z-index: 800;
                border-left: 0;
                border-top: 1px solid var(--border);
                flex-direction: row;
                flex-wrap: nowrap;
                align-items: stretch;
                justify-content: space-around;
                gap: 0;
                padding: 4px 4px;
                padding-bottom: calc(4px + env(safe-area-inset-bottom, 0px));
                height: calc(var(--mobile-nav-h) + env(safe-area-inset-bottom, 0px));
                width: auto;
                background: #fff;
                box-shadow: 0 -4px 16px rgba(15, 23, 42, 0.06);
                backdrop-filter: none;
                -webkit-backdrop-filter: none;
                transition: none;
                overflow: visible;
            }

            .nav-rail__scroll {
                flex: 1;
                min-height: 0;
                overflow: visible;
                flex-direction: row;
                align-items: stretch;
                gap: 0;
                padding: 0;
            }

            .nav-rail__group {
                display: contents;
                margin: 0;
            }

            .nav-rail__toggle {
                display: none !important;
            }

            /* 桌面折叠状态不影响移动端底栏 */
            body.nav-rail-collapsed .nav-rail {
                padding: 4px 4px;
                padding-bottom: calc(4px + env(safe-area-inset-bottom, 0px));
                align-items: stretch;
                width: auto;
            }

            body.nav-rail-collapsed .nav-rail__label,
            body.nav-rail-collapsed .nav-rail__foot {
                display: none !important;
            }

            body.nav-rail-collapsed .nav-item__text {
                display: flex !important;
                flex-direction: column;
                align-items: center;
            }

            body.nav-rail-collapsed .nav-item {
                justify-content: center;
                align-items: center;
                padding: 4px 2px;
                gap: 2px;
            }

            body.nav-rail-collapsed .nav-item__icon {
                width: 26px;
                height: 26px;
            }

            body.nav-rail-collapsed .nav-item__badge {
                top: 2px;
                right: 2px;
            }

            .nav-rail__label,
            .nav-rail__foot {
                display: none;
            }

            .nav-item {
                flex: 1;
                flex-direction: column;
                justify-content: center;
                align-items: center;
                gap: 2px;
                padding: 4px 2px;
                min-height: 44px;
                border-radius: 10px;
                font-size: 0.62rem;
                text-align: center;
                box-shadow: none;
            }

            .nav-item.is-active {
                box-shadow: none;
            }

            .nav-item__icon {
                width: 26px;
                height: 26px;
                border-radius: 8px;
                line-height: 1;
            }

            .nav-item__icon svg {
                width: 15px;
                height: 15px;
            }

            .nav-item__text {
                align-items: center;
                gap: 0;
            }

            .nav-item__title {
                font-size: 0.62rem;
                font-weight: 650;
                line-height: 1.1;
            }

            .nav-item__sub {
                display: none;
            }

            .home-view {
                padding: 16px 14px 20px;
                -webkit-overflow-scrolling: touch;
            }

            .home-view {
                align-items: flex-start;
                padding: 14px 12px 18px;
            }

            body.role-field .container.is-home .home-view {
                flex: 1 1 auto !important;
                height: 100% !important;
                min-height: 0 !important;
                width: 100% !important;
                max-width: none !important;
                padding: 8px 8px 10px !important;
                overflow: hidden !important;
                align-items: stretch !important;
                justify-content: stretch !important;
            }

            body.role-field .container.is-home .home-stage {
                display: flex !important;
                flex-direction: column !important;
                grid-template-columns: 1fr !important;
                max-width: none !important;
                width: 100% !important;
                height: 100% !important;
                flex: 1 1 auto !important;
                min-height: 0 !important;
                gap: 0 !important;
            }

            body.role-field .container.is-home .home-zone--left,
            body.role-field .container.is-home .home-zone--left .home-panel {
                width: 100% !important;
                max-width: none !important;
                height: 100% !important;
                flex: 1 1 auto !important;
                min-height: 0 !important;
            }

            body.role-field .container.is-home .home-mod-row--mobile {
                grid-template-columns: 1fr 1fr !important;
                grid-template-rows: 1.2fr 1fr !important;
                gap: 8px !important;
                height: 100% !important;
                flex: 1 1 auto !important;
            }

            body.role-field .container.is-home .home-mod[data-access="field"].home-mod--submit.is-featured,
            body.role-field .container.is-home .home-mod--submit.is-featured {
                min-height: 0 !important;
                grid-column: 1 / -1 !important;
                grid-row: 1 !important;
            }

            body.role-lead .container.is-home .app-body,
            body.role-admin .container.is-home .app-body,
            .container.is-lead-home.is-home .app-body,
            .container.is-admin-home.is-home .app-body {
                grid-template-columns: minmax(0, 1fr) !important;
            }

            .home-stage {
                grid-template-columns: 1fr;
                min-height: 0;
                gap: 12px;
            }

            .home-zone--right-wrap {
                grid-template-columns: 1fr;
                gap: 12px;
            }

            .home-zone--right {
                display: none;
            }

            .home-mod-row {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }

            .home-mod-row--4 {
                grid-template-columns: repeat(2, minmax(0, 1fr));
            }

            .home-mod--submit.is-featured {
                grid-column: 1 / -1;
                min-height: 132px;
                order: -1;
            }

            .home-panel {
                padding: 14px 12px 14px;
            }

            .home-mod {
                min-height: 96px;
                padding: 14px 8px;
            }

            .home-mod__name {
                font-size: 1.05rem;
            }

            .header {
                height: auto;
                flex-wrap: wrap;
                padding: 10px 12px;
                gap: 8px;
            }

            .pm-module-bar {
                height: 40px;
                padding: 0 12px;
                flex-wrap: nowrap;
            }

            .header-divider,
            .header-meta,
            .access-urls {
                display: none !important;
            }

            .header-file {
                max-width: none;
                flex: 1 1 auto;
            }

            .header .logo {
                font-size: 0.95rem;
            }

            .header .subtitle {
                font-size: 0.72rem;
            }

            .main-content {
                grid-template-columns: 1fr;
                grid-template-rows: auto minmax(0, 1fr);
                padding: 0;
                gap: 0;
                overflow: auto;
                -webkit-overflow-scrolling: touch;
                overscroll-behavior-y: contain;
                background: #f1f5f9;
            }

            #view-pm {
                background: #f1f5f9;
            }

            #view-pm .pm-module-bar {
                height: 40px;
                padding: 0 12px;
                border-radius: 0;
                border-bottom: 1px solid #0d9488;
            }

            #view-pm .main-content {
                padding: 0 0 calc(8px + env(safe-area-inset-bottom, 0px));
            }

            #view-pm .sidebar-grid {
                max-height: none;
                height: auto;
                overflow: visible;
                gap: 0;
            }

            #view-pm .card,
            #view-pm .card--excel,
            #view-pm .card--workbench,
            #view-pm .result-panel {
                flex: none;
                overflow: visible;
                margin: 0;
                border-radius: 0;
                border-left: 0;
                border-right: 0;
                box-shadow: none;
                border-color: #e2e8f0;
            }

            #view-pm .card + .card,
            #view-pm .sidebar-grid + .result-panel {
                border-top: 0;
            }

            #view-pm .card__title {
                padding: 8px 12px;
                font-size: 0.78rem;
                background: #fff;
            }

            #view-pm .card--excel > .side-file-row,
            #view-pm .card--workbench > .workbench-body {
                padding: 0;
            }

            #view-pm .side-file-row,
            #view-pm .workbench-body,
            #view-pm .workbench-filters {
                overflow: visible;
                gap: 8px;
                padding: 0 12px 10px;
            }

            #view-pm .panel-bottom {
                padding: 10px 12px 12px;
                border-top: 1px solid #eef2f7;
            }

            #view-pm .path-block {
                border-radius: 8px;
                border-color: #e2e8f0;
                background: #f8fafc;
                padding: 8px;
            }

            #view-pm .excel-preset-row {
                gap: 6px;
            }

            #view-pm .btn-preset {
                min-height: 34px;
                border-radius: 8px;
                font-size: 0.72rem;
            }

            .sidebar-grid {
                max-height: none;
                height: auto;
                overflow: visible;
                gap: 0;
            }

            .card--excel,
            .card--workbench {
                flex: none;
                overflow: visible;
            }

            .card--excel .side-file-row,
            .card--workbench .workbench-body {
                overflow: visible;
            }

            .workbench-filters {
                gap: 8px;
            }

            /* 查询发送表单：避免被挤成三列 / 超窄标签 */
            #view-pm .wb-grid--query {
                grid-template-columns: 1fr 1fr;
                gap: 10px 8px;
                align-items: stretch;
            }

            #view-pm .wb-grid--schedule {
                grid-template-columns: 1fr;
                gap: 10px;
            }

            #view-pm .wb-field--inline {
                flex-direction: column;
                align-items: stretch;
                gap: 4px;
            }

            #view-pm .wb-field--inline > label,
            #view-pm .wb-field--inline > .wb-field__label {
                font-size: 0.72rem;
                min-width: 0;
                margin: 0;
            }

            #view-pm .wb-field--inline select,
            #view-pm .wb-field--inline input[type="number"],
            #view-pm .wb-field select,
            #view-pm .wb-field input[type="number"] {
                width: 100%;
                max-width: none;
                height: 38px;
                min-height: 38px;
                padding: 0 10px;
                font-size: 0.86rem;
                box-sizing: border-box;
            }

            #view-pm .wb-field--inline > .schedule-time,
            #view-pm .schedule-time {
                width: 100%;
                display: flex;
                align-items: center;
                gap: 6px;
            }

            #view-pm .schedule-block .schedule-time input[type="number"] {
                width: 100%;
                flex: 1 1 0;
                min-width: 0;
                height: 38px;
                min-height: 38px;
            }

            #view-pm .wb-field--check {
                grid-column: 1 / -1;
                justify-content: flex-start;
            }

            #view-pm .schedule-week-chips {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 6px 8px;
            }

            #view-pm .schedule-day-chips {
                display: flex;
                flex-wrap: wrap;
                gap: 6px;
            }

            #view-pm .schedule-week-chips .schedule-chip,
            #view-pm .schedule-day-chips .schedule-chip {
                min-height: 36px;
                padding: 6px 10px;
                box-sizing: border-box;
            }

            .workbench-form.side-matrix,
            .side-matrix--schedule,
            .path-row {
                grid-template-columns: 64px minmax(0, 1fr);
            }

            .side-matrix--schedule .schedule-time {
                justify-content: flex-start;
            }

            .side-matrix select,
            .side-matrix input[type="number"],
            .path-row__controls input,
            .excel-actions-bar .btn,
            .workbench-actions .btn,
            .btn-preset {
                min-height: 40px;
            }

            #view-pm .excel-actions-bar,
            #view-pm .workbench-actions {
                display: grid;
                grid-template-columns: 1fr 1fr;
                gap: 8px;
            }

            #view-pm .excel-actions-bar .btn-remember,
            #view-pm .workbench-actions .btn-primary {
                grid-column: 1 / -1;
            }

            #view-pm .result-panel {
                min-height: 0;
                display: flex;
                flex-direction: column;
            }

            #view-pm .result-header {
                padding: 8px 12px 6px;
                margin-bottom: 0;
                flex-shrink: 0;
            }

            #view-pm .result-title {
                font-size: 0.78rem;
            }

            #view-pm .result-header--pm-list {
                flex-wrap: wrap;
                align-items: center;
                gap: 6px 8px;
            }

            #view-pm .result-header--pm-list .result-count {
                margin-left: 0;
            }

            #view-pm .result-header--pm-list > .list-toolbar-stats {
                flex: 1 1 auto;
                max-width: none;
                margin-right: 0;
                order: 2;
            }

            #view-pm .result-header--pm-list .list-toolbar {
                flex: 1 1 100%;
                width: 100%;
                margin: 0;
                flex-direction: column;
                flex-wrap: wrap;
                padding: 0;
                gap: 6px;
                background: transparent;
                border: 0;
                border-radius: 0;
                justify-content: flex-start;
            }

            #view-pm .result-header--pm-list .list-toolbar input[type="search"] {
                flex: 1 1 auto;
                width: auto;
                max-width: none;
                min-width: 0;
            }

            #view-pm .list-toolbar {
                flex-direction: column;
                flex-wrap: wrap;
                padding: 0;
                gap: 6px;
                margin: 8px 0 0;
                background: transparent;
                border: 0;
                border-radius: 0;
            }

            #view-pm .list-toolbar-row {
                gap: 6px;
                flex-wrap: nowrap;
                width: 100%;
            }

            #view-pm .list-toolbar-row--meta {
                flex-wrap: wrap;
                margin-left: 0;
                justify-content: space-between;
                width: 100%;
            }

            #view-pm .list-toolbar input[type="search"],
            #view-pm .list-toolbar select {
                min-height: 34px;
                height: 34px;
                font-size: 0.78rem;
                border-radius: 8px;
                border-color: #e2e8f0;
                background: #f8fafc;
                padding: 0 8px;
            }

            #view-pm .list-toolbar input[type="search"] {
                flex: 1 1 auto;
                min-width: 0;
            }

            #view-pm .list-toolbar select {
                flex: 0 0 auto;
                width: auto;
                max-width: 7.5rem;
            }

            #view-pm .pm-list {
                flex: none;
                min-height: min(62dvh, 680px);
                height: min(62dvh, 680px);
                background: #fff;
            }

            #view-pm .json-preview-section {
                border-top: 1px solid #eef2f7;
                padding: 0 12px;
                font-size: 0.72rem;
            }

            .result-panel {
                min-height: min(52vh, 480px);
            }

            /* PM 列表：单行铺满，与「我的任务」密度一致 */
            .pm-table-head {
                display: none;
            }

            .pm-list.pm-table {
                display: flex;
                flex-direction: column;
                gap: 0;
                padding: 0;
                overflow-x: hidden;
                overflow-y: auto;
                -webkit-overflow-scrolling: touch;
            }

            .pm-item {
                display: flex;
                flex-wrap: wrap;
                align-items: center;
                gap: 8px;
                min-height: 40px;
                padding: 8px 12px;
                border: 0;
                border-bottom: 1px solid #eef2f7;
                border-radius: 0;
                background: #fff;
                box-shadow: none;
            }

            .pm-item:nth-child(even) {
                background: #fff;
            }

            .pm-item > .pm-island,
            .pm-item > span:nth-child(1) {
                flex: 0 1 auto;
                max-width: 34%;
                grid-column: auto;
                font-weight: 700;
                font-size: 0.78rem;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .pm-item > .pm-workstation,
            .pm-item > span:nth-child(2) {
                flex: 1 1 auto;
                min-width: 0;
                font-size: 0.72rem;
                color: #64748b;
                white-space: nowrap;
                overflow: hidden;
                text-overflow: ellipsis;
            }

            .pm-frequency,
            .pm-badge {
                display: inline-flex;
                flex: 0 0 auto;
                justify-self: auto;
                align-self: center;
                margin-left: auto;
                font-size: 0.62rem;
                padding: 2px 8px;
            }

            .pm-detail-cell {
                flex: 1 1 100%;
                order: 10;
                max-height: none;
                overflow: visible;
                padding-top: 2px;
            }

            .pm-detail-list {
                max-height: 140px;
            }

            .pm-detail-list li {
                grid-template-columns: minmax(64px, 34%) minmax(0, 1fr);
            }

            #view-pm .pm-badge {
                display: none;
            }

            #view-pm .list-toolbar {
                margin: 8px 0 0;
            }

            #view-pm .send-progress,
            #view-pm .json-preview-section {
                margin: 0;
                padding: 8px 12px;
            }

            .pm-island-group summary {
                padding: 8px 12px;
                background: #f8fafc;
                font-size: 0.78rem;
            }

            .jobs-filters {
                flex-wrap: wrap !important;
                margin-left: 0;
            }

            .jobs-card__body {
                overflow-x: auto;
                -webkit-overflow-scrolling: touch;
            }

            .jobs-table th,
            .jobs-table td {
                white-space: nowrap;
            }

            .export-modal__panel {
                width: min(100vw - 20px, 420px);
                max-height: calc(100dvh - 24px);
            }

            .export-modal__path-row {
                flex-direction: column;
            }

            .export-modal__browse {
                width: 100%;
            }

            .login-card {
                width: min(400px, calc(100vw - 32px));
                padding: 28px 20px 22px;
            }

            .login-card__logo,
            .login-card__brand img {
                width: 64px;
                height: 64px;
                border-radius: 16px;
            }

            .login-screen__bg {
                transform: none;
            }

            .login-field input,
            .login-actions .btn {
                min-height: 44px;
                font-size: 16px; /* 避免 iOS 自动放大 */
            }

            /* 查询发送：收尾覆盖，防止上方通用规则把布局/列表压坏 */
            #pmPaneOps.is-active {
                display: flex !important;
                flex-direction: column !important;
                overflow: auto !important;
                gap: 10px;
                /* 底栏留白由 .app-main 承担，避免双倍空白 */
                padding: 8px 10px 12px;
                -webkit-overflow-scrolling: touch;
            }
            #pmPaneOps .pm-ops-top {
                flex: 0 0 auto !important;
                width: 100% !important;
                max-width: none !important;
                overflow: visible !important;
            }
            #pmPaneOps .card--excel,
            #pmPaneOps .card--workbench {
                flex: 0 0 auto !important;
                max-height: none !important;
                overflow: visible !important;
            }
            #pmPaneOps .card--workbench .workbench-body {
                overflow: visible !important;
            }
            #pmPaneOps .wb-grid--query {
                grid-template-columns: 1fr 1fr !important;
            }
            #pmPaneOps .wb-grid--schedule {
                grid-template-columns: 1fr !important;
            }
            #pmPaneOps .workbench-actions {
                display: grid !important;
                grid-template-columns: 1fr 1fr 1fr !important;
                gap: 8px;
            }
            #pmPaneOps .workbench-actions .btn {
                width: 100%;
                min-height: 42px;
                grid-column: auto !important;
            }
            #pmPaneOps .pm-ops-result.result-panel,
            #pmPaneOps .pm-ops-result {
                flex: 0 0 auto !important;
                width: 100%;
                height: calc(100dvh - 300px - var(--mobile-nav-h, 58px) - env(safe-area-inset-bottom, 0px)) !important;
                min-height: 280px !important;
                max-height: 62dvh !important;
                display: flex !important;
                flex-direction: column !important;
                overflow: hidden !important;
            }
            #pmPaneOps .pm-ops-result .pm-list {
                flex: 1 1 auto !important;
                min-height: 0 !important;
                height: auto !important;
                max-height: none !important;
                overflow: auto !important;
                -webkit-overflow-scrolling: touch;
            }
            #pmPaneOps .pm-ops-result .pm-list.pm-table {
                display: block !important;
                overflow: auto !important;
            }
            #pmPaneOps .pm-ops-result .pm-list table {
                min-width: 560px;
                width: max-content;
            }
        }

        @media (max-width: 640px) {
            .excel-actions-bar,
            .workbench-actions {
                grid-template-columns: 1fr;
            }

            #pmPaneOps .workbench-actions {
                grid-template-columns: 1fr !important;
            }

            #pmPaneOps .wb-grid--query {
                grid-template-columns: 1fr !important;
            }

            #pmPaneOps .pm-ops-result.result-panel,
            #pmPaneOps .pm-ops-result {
                height: calc(100dvh - 280px - var(--mobile-nav-h, 58px) - env(safe-area-inset-bottom, 0px)) !important;
                min-height: 240px !important;
                max-height: 58dvh !important;
            }

            #pmPaneOps .pm-ops-result .pm-list table {
                min-width: 480px;
                font-size: 12px;
            }

            .excel-compact-actions {
                grid-template-columns: 1fr 1fr;
            }

            .excel-compact-actions .btn-remember {
                grid-column: 1 / -1;
            }

            .list-toolbar-row {
                flex-wrap: nowrap;
            }

            .list-toolbar input[type="search"] {
                flex: 1 1 auto;
                min-width: 0;
                min-height: 40px;
                font-size: 16px;
            }

            .list-toolbar select {
                flex: 0 0 auto;
                width: auto;
                max-width: 7.2rem;
                min-height: 40px;
                font-size: 14px;
                padding-left: 6px;
                padding-right: 6px;
            }

            #view-pm .list-toolbar input[type="search"],
            #view-pm .list-toolbar select {
                min-height: 34px;
                height: 34px;
                font-size: 16px;
            }

            #view-pm .list-toolbar select {
                max-width: 6.8rem;
                font-size: 13px;
            }

            #view-pm .pm-list {
                min-height: min(68dvh, 720px);
                height: min(68dvh, 720px);
            }

            .list-toolbar-row--meta {
                flex-wrap: wrap;
            }

            .pagination {
                margin-left: 0;
                width: 100%;
                justify-content: space-between;
            }

            .schedule-day-chips,
            .schedule-week-chips {
                gap: 6px;
            }

            .schedule-chip {
                min-height: 36px;
                padding: 6px 10px;
            }
        }

        @media (hover: none) and (pointer: coarse) {
            .btn,
            .nav-item,
            .home-mod,
            .btn-preset,
            .btn-logout {
                -webkit-tap-highlight-color: transparent;
            }

            .btn:active,
            .nav-item:active,
            .home-mod:active:not(:disabled),
            .btn-logout:active {
                transform: scale(0.98);
            }
        }

        /* 铺满壳宽；线体/设备收窄，多余宽度给操作列展开按钮 */
        .repair-table {
            width: 100% !important;
            min-width: 1100px;
            max-width: none;
        }

        .repair-table .col-symptom {
            width: 112px;
            max-width: 112px;
        }

        .repair-table th.col-symptom,
        .repair-table td.col-symptom {
            width: 112px;
            max-width: 112px;
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .repair-table .col-line-flex {
            width: 72px;
            max-width: 72px;
        }

        .repair-table .col-dev-flex {
            width: 110px;
            max-width: 110px;
        }

        .repair-table th.col-line-flex,
        .repair-table td.col-line-flex,
        .repair-table th.col-dev-flex,
        .repair-table td.col-dev-flex {
            overflow: hidden;
            text-overflow: ellipsis;
            white-space: nowrap;
        }

        .repair-table .col-act {
            width: auto;
            min-width: 280px;
        }

        .repair-table td.cell-act {
            overflow: visible !important;
            white-space: normal;
        }

        .repair-table .archive-act-bar {
            flex-wrap: wrap;
            gap: 4px;
            max-width: none;
        }

        .repair-table td.is-critical,
        .archive-table td.is-critical {
            color: #b91c1c;
            font-weight: 700;
        }

        .repair-table td.is-warn,
        .archive-table td.is-warn {
            color: #c2410c;
            font-weight: 650;
        }

        .archive-table td.is-partial {
            color: #1d4ed8;
            font-weight: 650;
        }

        .repair-table tr.is-repair-focus {
            outline: 2px solid #fdba74;
            background: #fff7ed;
        }

        .repair-complete-summary {
            display: grid;
            grid-template-columns: 1fr 1fr;
            gap: 8px 12px;
            margin-bottom: 12px;
            padding: 10px 12px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #f8fafc;
            font-size: 12px;
            color: #0f172a;
        }

        .repair-complete-summary > div span {
            display: inline-block;
            min-width: 4.5em;
            color: #64748b;
            margin-right: 6px;
        }

        .repair-complete-summary__full {
            grid-column: 1 / -1;
        }

        .repair-complete-hint {
            margin-top: 8px;
            font-size: 12px;
            color: #64748b;
            line-height: 1.45;
        }

        .archive-reject-guide {
            margin: 0 0 12px;
            padding: 10px 12px;
            border: 1px solid #fecaca;
            border-radius: 8px;
            background: #fef2f2;
            color: #7f1d1d;
            font-size: 12px;
            line-height: 1.5;
        }

        .archive-reject-guide__title {
            font-weight: 700;
            margin-bottom: 4px;
            color: #991b1b;
        }

        .archive-reject-guide > div + div {
            margin-top: 4px;
        }

        @media (max-width: 900px) {
            .repair-complete-summary {
                grid-template-columns: 1fr;
            }
        }

        .repair-owner-pick-tools input[type="search"] {
            width: 100%;
            box-sizing: border-box;
            height: 36px;
            padding: 0 12px;
            border: 1px solid #cbd5e1;
            border-radius: 8px;
            font-size: 14px;
            background: #fff;
        }

        .repair-history {
            margin: 0 0 12px;
            padding: 10px 12px;
            border: 1px solid #e2e8f0;
            border-radius: 8px;
            background: #f8fafc;
        }

        .repair-history__title {
            font-size: 12px;
            font-weight: 700;
            color: #334155;
            margin-bottom: 8px;
        }

        .repair-history__item {
            display: grid;
            grid-template-columns: 132px 72px 1fr;
            gap: 8px;
            font-size: 12px;
            line-height: 1.4;
            padding: 4px 0;
            border-top: 1px dashed #e2e8f0;
            color: #0f172a;
        }

        .repair-history__item:first-of-type {
            border-top: 0;
        }

        .repair-history__at {
            color: #64748b;
            font-variant-numeric: tabular-nums;
        }

        .repair-history__act {
            font-weight: 650;
            color: #0f766e;
        }

        .repair-history__detail {
            color: #334155;
            word-break: break-word;
        }

        @media (max-width: 900px) {
            .repair-history__item {
                grid-template-columns: 1fr;
                gap: 2px;
            }
        }


/* 暂存新增行（未点保存） */
.pm-content-form-table tr.is-pending-new td {
    background: rgba(46, 125, 50, 0.06);
}
.pm-content-form-table tr.is-pending-new .pm-content-code-btn::after {
    content: ' ·未保存';
    font-size: 11px;
    opacity: 0.75;
}

/* 移动端导出：可点「保存文件」条（微信/iOS 拦截 a[download] 时的兜底） */
.pm-mobile-dl-bar {
    position: fixed;
    left: 12px;
    right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    z-index: 20000;
    padding: 14px 14px 12px;
    border-radius: 14px;
    background: rgba(15, 23, 42, 0.96);
    color: #f8fafc;
    box-shadow: 0 12px 40px rgba(15, 23, 42, 0.35);
    display: flex;
    flex-direction: column;
    gap: 8px;
}

.pm-mobile-dl-bar__tip {
    font-size: 0.86rem;
    line-height: 1.35;
    color: #e2e8f0;
}

.pm-mobile-dl-bar__name {
    font-size: 0.78rem;
    line-height: 1.3;
    color: #94a3b8;
    word-break: break-all;
}

.pm-mobile-dl-bar__actions {
    display: flex;
    gap: 8px;
    margin-top: 2px;
}

.pm-mobile-dl-bar__save {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 40px;
    padding: 0 14px;
    border: 0;
    border-radius: 10px;
    background: #38bdf8;
    color: #0f172a;
    font-weight: 700;
    font-size: 0.9rem;
    text-decoration: none;
    cursor: pointer;
    font-family: inherit;
}

.pm-mobile-dl-bar__save:active {
    filter: brightness(0.95);
}

.pm-mobile-dl-bar__close {
    min-width: 72px;
    min-height: 40px;
    padding: 0 12px;
    border: 1px solid rgba(148, 163, 184, 0.45);
    border-radius: 10px;
    background: transparent;
    color: #e2e8f0;
    font-size: 0.86rem;
    cursor: pointer;
}
