/* ISIOW 独立模块样式 - 与主系统隔离 */
/* 与 index.html 内联样式一致：JS 执行 applyPermissions 前隐藏表体，避免刷新闪现无权限行 */
.isiow-container.isiow-permissions-pending .isiow-main {
    visibility: hidden !important;
}
* {
    box-sizing: border-box;
}
html {
    height: 100vh;
    overflow: hidden;
}
body {
    height: 100vh;
    margin: 0;
    overflow: hidden;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Microsoft YaHei", sans-serif;
    background: #f5f6fa;
}
:root {
    --isiow-grid-line-strong: #808080;
    --isiow-grid-line-soft: #c8c8c8;
    /* 人民币价格（压缩区）单行高度基准 */
    --isiow-zonea-compact-row-height: 20px;
    /* 成本核算行在当前基准上增加 50% */
    --isiow-cost-row-height: 30px;
}
.isiow-container {
    height: 100vh;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.isiow-header {
    background: linear-gradient(135deg, #e67e22 0%, #d35400 100%);
    color: #fff;
    padding: 1rem 1.5rem 1.25rem;
    box-shadow: 0 4px 12px rgba(230, 126, 34, 0.35);
    flex-shrink: 0;
    display: grid;
    grid-template-columns: auto 1fr;
    grid-template-rows: auto auto auto;
    gap: 0 1rem;
    align-items: start;
}
.isiow-title {
    margin: 0;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.25rem;
    grid-column: 1;
    grid-row: 1 / 4;
}
.isiow-title-brand {
    display: flex;
    align-items: center;
    justify-content: space-between;
    width: 100%;
    gap: 0.45rem;
}
.isiow-logo {
    font-size: 1.75rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    background: linear-gradient(180deg, #fffdf6 0%, #ffe9c8 55%, #ffd39a 100%);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
    text-shadow:
        0 1px 0 rgba(255, 255, 255, 0.55),
        0 2px 5px rgba(132, 72, 12, 0.28),
        0 0 6px rgba(255, 214, 150, 0.24);
}
/* ISIOW 右侧：返回登录 — 图标+文字胶囊，提升识别度 */
.isiow-back {
    display: inline-flex;
    align-items: center;
    justify-content: flex-start;
    gap: 6px;
    min-width: 92px;
    height: 34px;
    margin: 0;
    padding: 0 12px 0 10px;
    border: 1px solid rgba(72, 44, 18, 0.42);
    border-radius: 999px;
    background: linear-gradient(180deg, #fffdf6 0%, #f9edd6 52%, #efd8ae 100%);
    color: #6f3400;
    cursor: pointer;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.76),
        inset 0 -1px 0 rgba(114, 74, 22, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.35),
        0 6px 14px rgba(0, 0, 0, 0.22);
    transition: border-color 0.2s, box-shadow 0.2s, transform 0.16s ease, background 0.2s, color 0.2s;
    flex-shrink: 0;
    -webkit-tap-highlight-color: transparent;
}
.isiow-back i {
    width: 18px;
    height: 18px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    background: linear-gradient(180deg, #f9b233 0%, #ea8d00 100%);
    color: #fff;
    font-weight: 700;
    font-size: 11px;
    line-height: 1;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.35),
        inset 0 -1px 0 rgba(0, 0, 0, 0.18);
}
.isiow-back-text {
    letter-spacing: 0.01em;
    white-space: nowrap;
}
.isiow-back:hover {
    border-color: rgba(82, 50, 18, 0.55);
    background: linear-gradient(180deg, #fff9ee 0%, #f5e4c0 56%, #eacb95 100%);
    color: #5d2d00;
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.80),
        inset 0 -1px 0 rgba(122, 79, 23, 0.24),
        0 2px 0 rgba(82, 48, 14, 0.38),
        0 8px 18px rgba(0, 0, 0, 0.28);
}
.isiow-back:active {
    transform: translateY(1px) scale(0.985);
    box-shadow:
        inset 0 2px 5px rgba(104, 61, 12, 0.32),
        inset 0 -1px 0 rgba(255, 255, 255, 0.2),
        0 1px 4px rgba(0, 0, 0, 0.22);
}
.isiow-back:focus-visible {
    outline: 2px solid rgba(255, 240, 199, 0.98);
    outline-offset: 3px;
}
.isiow-subtitle {
    font-size: 1.2rem;
    font-weight: 400;
    opacity: 0.95;
    margin-top: 0.15rem;
}
.isiow-version-info {
    margin-top: auto;
    position: relative;
    display: inline-block;
    transform: translateY(8px);
    min-height: 24px;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px solid rgba(28, 24, 20, 0.64);
    background:
        linear-gradient(
            180deg,
            transparent 49.2%,
            rgba(26, 24, 22, 0.72) 50%,
            transparent 50.8%
        ),
        linear-gradient(160deg, #fff4d6 0%, #f7d98e 45%, #d4a74e 100%);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.58),
        inset 0 -1px 0 rgba(20, 18, 16, 0.30),
        0 0 0 1px rgba(255, 245, 214, 0.22),
        0 2px 6px rgba(0,0,0,0.2);
    font-size: 0.78rem;
    color: #4a2a00;
    font-weight: 700;
    letter-spacing: 0.02em;
    line-height: 1.25;
    white-space: pre-line;
    text-align: left;
    text-shadow: 0 1px 0 rgba(255,255,255,0.35);
    overflow: hidden;
    isolation: isolate;
    -webkit-mask-image: -webkit-radial-gradient(white, black);
}
.isiow-version-info::after {
    content: none;
}
.isiow-version-status {
    display: inline-block;
    font-weight: 800;
    margin-left: 20px;
}
.isiow-version-line1,
.isiow-version-line2 {
    display: inline;
}
.isiow-version-line1 {
    display: inline;
}
.isiow-version-status.is-synced {
    animation: isiowVersionStatusColorShift 8.4s ease-in-out infinite;
}
.isiow-version-status.is-saving {
    color: #1d4ed8;
}
.isiow-version-status.is-dirty {
    color: #b45309;
}
.isiow-version-status.is-error {
    color: #b91c1c;
}
@keyframes isiowVersionStatusColorShift {
    0% { color: #7c2d12; }
    25% { color: #c2410c; }
    50% { color: #047857; }
    75% { color: #1d4ed8; }
    100% { color: #7c2d12; }
}
@media (prefers-reduced-motion: reduce) {
    .isiow-version-status.is-synced {
        animation: none;
        color: #8b3a00;
    }
}
/* Tab 两行：从「产品包销情况及报价信息」标题后面往右开始排，保存按钮在右侧 */
.isiow-tabs-row {
    grid-column: 2;
    grid-row: 1 / 4;
    display: flex;
    align-items: flex-start;
    gap: 8px;
    margin-top: 0;
    min-width: 0;
}
.isiow-tabs {
    display: grid;
    grid-template-columns: repeat(5, 110px);
    grid-template-rows: auto auto;
    column-gap: 8px;
    row-gap: 6px;
    align-items: center;
    flex: 0 0 auto;
    width: max-content;
    min-width: max-content;
    background: linear-gradient(180deg, #eddcc9 0%, #e6d2bd 100%);
    border: 1px solid rgba(124, 74, 24, 0.18);
    border-radius: 10px;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.35),
        0 3px 10px rgba(0,0,0,0.10);
    padding: 8px 10px;
}
/* Tab：固定宽度 110px，两行排列，圆角 8px */
.isiow-tab {
    width: 100%;
    height: 50px;       /* 统一两行字的高度 */
    min-height: 50px;  /* 防止内容/字体导致高度再抖动 */
    padding: 6px 8px;
    border: 1px solid rgba(72, 44, 18, 0.38);
    border-radius: 8px;
    background: linear-gradient(180deg, #fffdf6 0%, #f7ead1 52%, #edd6ab 100%);
    color: #4b2a00;
    font-size: 0.85rem;
    line-height: 1.35;
    text-align: center;
    overflow: hidden;
    box-sizing: border-box;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.74),
        inset 0 -1px 0 rgba(112, 73, 24, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.30),
        0 6px 12px rgba(0,0,0,0.16);
    transform: translateY(0);
    transition: background 0.2s, color 0.2s, border-color 0.2s, box-shadow 0.2s, transform 0.18s ease;
}
.isiow-tab-label {
    display: block;
    width: 100%;
    min-width: 0;
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
    word-break: keep-all;
}
.isiow-tab:hover {
    background: linear-gradient(180deg, #fff9ee 0%, #f4e2bf 56%, #e8cb97 100%);
    color: #3f2300;
    border-color: rgba(82, 50, 18, 0.56);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.80),
        inset 0 -1px 0 rgba(122, 79, 23, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.34),
        0 8px 16px rgba(0,0,0,0.20);
    transform: translateY(-1px);
}
.isiow-tab.active {
    background: linear-gradient(180deg, #7f9ab9 0%, #647f9f 56%, #536d8a 100%);
    color: #fffdf8;
    font-weight: 600;
    border-color: rgba(57, 76, 100, 0.88);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.30),
        inset 0 -1px 0 rgba(31, 47, 66, 0.35),
        0 2px 0 rgba(40, 56, 76, 0.35),
        0 6px 14px rgba(0,0,0,0.24);
}
/* 色块在左，保存/下载纵向在右，与左侧两排页签顶部对齐（与未加色块时一致） */
.isiow-toolbar {
    flex-shrink: 0;
    margin-left: auto;
    display: flex;
    flex-direction: row;
    align-items: flex-start;
    gap: 12px;
    align-self: flex-start;
    background: linear-gradient(180deg, #eddcc9 0%, #e6d2bd 100%);
    border: 1px solid rgba(124, 74, 24, 0.18);
    border-radius: 10px;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.35),
        0 3px 10px rgba(0,0,0,0.10);
    padding: 8px 10px;
    position: relative;
    overflow: visible;
}
.isiow-toolbar-micro {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    min-height: 30px;
    padding: 3px 4px;
    margin-top: 1px;
    flex-shrink: 0;
    border: 1px solid rgba(72, 44, 18, 0.24);
    border-radius: 8px;
    background: linear-gradient(180deg, rgba(255,255,255,0.58) 0%, rgba(247,231,206,0.66) 100%);
    box-shadow: inset 0 1px 0 rgba(255,255,255,0.72), 0 1px 3px rgba(0,0,0,0.10);
    position: relative;
    z-index: 20;
}
.isiow-toolbar-micro [data-isiow-tooltip] {
    position: relative;
}
.isiow-toolbar-micro [data-isiow-tooltip]::before {
    content: attr(data-isiow-tooltip);
    position: absolute;
    left: 50%;
    top: calc(100% + 8px);
    transform: translateX(-50%) translateY(-2px);
    min-width: 168px;
    max-width: 230px;
    padding: 8px 10px;
    border: 1px solid rgba(72, 44, 18, 0.26);
    border-radius: 8px;
    background: linear-gradient(180deg, #fffdf6 0%, #f8ead0 100%);
    color: #3f2300;
    box-shadow: 0 8px 18px rgba(0,0,0,0.20);
    font-size: 0.76rem;
    font-weight: 600;
    line-height: 1.45;
    text-align: left;
    white-space: pre-line;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 1600;
    transition: opacity 0.12s ease, transform 0.12s ease, visibility 0.12s ease;
}
.isiow-toolbar-micro [data-isiow-tooltip]::after {
    content: '';
    position: absolute;
    left: 50%;
    top: calc(100% + 3px);
    width: 8px;
    height: 8px;
    transform: translateX(-50%) rotate(45deg);
    border-left: 1px solid rgba(72, 44, 18, 0.26);
    border-top: 1px solid rgba(72, 44, 18, 0.26);
    background: #fffdf6;
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    z-index: 1601;
    transition: opacity 0.12s ease, visibility 0.12s ease;
}
.isiow-toolbar-micro [data-isiow-tooltip]:hover::before,
.isiow-toolbar-micro [data-isiow-tooltip]:focus-visible::before,
.isiow-toolbar-micro [data-isiow-tooltip]:hover::after,
.isiow-toolbar-micro [data-isiow-tooltip]:focus-visible::after {
    opacity: 1;
    visibility: visible;
}
.isiow-toolbar-micro [data-isiow-tooltip]:hover::before,
.isiow-toolbar-micro [data-isiow-tooltip]:focus-visible::before {
    transform: translateX(-50%) translateY(0);
}
.isiow-toolbar-mini-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0;
    width: 24px;
    height: 24px;
    min-width: 24px;
    min-height: 24px;
    padding: 0;
    margin: 0;
    border: 1px solid rgba(57, 63, 73, 0.36);
    border-radius: 6px;
    cursor: pointer;
    background: linear-gradient(180deg, #f8f9fb 0%, #eef1f5 100%);
    color: #1f2937;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.88),
        0 1px 2px rgba(27, 36, 51, 0.18);
    transition: box-shadow 0.15s, border-color 0.15s, background 0.15s, transform 0.15s;
}
.isiow-toolbar-mini-btn:hover {
    border-color: rgba(57, 63, 73, 0.56);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.95),
        0 2px 6px rgba(27, 36, 51, 0.24);
    transform: translateY(-1px);
}
.isiow-toolbar-mini-btn:active {
    box-shadow:
        inset 0 1px 3px rgba(21, 33, 56, 0.28),
        0 1px 2px rgba(21, 33, 56, 0.15);
    transform: translateY(0);
}
.isiow-toolbar-mini-btn:focus-visible {
    outline: 2px solid rgba(59, 130, 246, 0.45);
    outline-offset: 2px;
}
.isiow-toolbar-divider {
    width: 1px;
    align-self: stretch;
    margin: 1px 0;
    background: linear-gradient(180deg, rgba(124, 74, 24, 0.08) 0%, rgba(124, 74, 24, 0.42) 50%, rgba(124, 74, 24, 0.08) 100%);
}
.isiow-toolbar-actions {
    display: grid;
    grid-template-columns: 110px;
    grid-auto-rows: 50px;
    row-gap: 6px;
    width: 110px;
    min-width: 110px;
    align-items: start;
    justify-items: stretch;
    position: relative;
    z-index: 1;
}
.isiow-toolbar-actions .isiow-btn-download,
.isiow-toolbar-actions .isiow-btn-save {
    width: 110px;
    min-width: 110px;
    height: 50px;
    min-height: 50px;
    padding: 6px 8px;
    border-radius: 8px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.12);
}
#isiow-insert-zonea-col-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    line-height: 1;
}
#isiow-insert-zonea-col-btn .isiow-btn-subtext {
    display: none;
    font-size: 0.62rem;
    font-weight: 500;
    opacity: 0.78;
    letter-spacing: 0;
}
#isiow-insert-zonea-col-btn.isiow-insert-mode-active {
    background: #fff1ec;
    color: #b93821;
    box-shadow: 0 0 0 2px rgba(192,57,43,0.22), 0 3px 10px rgba(0,0,0,0.15);
}
#isiow-insert-zonea-col-btn.isiow-insert-mode-delete {
    background: #eef6ff;
    color: #1f5f99;
    box-shadow: 0 0 0 2px rgba(31,95,153,0.2), 0 3px 10px rgba(0,0,0,0.15);
}
.isiow-zonea-insert-guide-line {
    position: fixed;
    width: 2px;
    background: #ff5a3d;
    box-shadow: 0 0 0 1px rgba(255,255,255,0.7), 0 0 6px rgba(255,90,61,0.45);
    border-radius: 2px;
    pointer-events: none;
    transform: translateX(-1px);
    z-index: 2200;
    display: none;
}
.isiow-zonea-insert-guide-line.active {
    display: block;
}
.isiow-zonea-insert-guide-line.is-row {
    height: 2px;
    width: 0;
    transform: translateY(-1px);
}
.isiow-zonea-delete-hint {
    position: fixed;
    z-index: 2300;
    pointer-events: none;
    display: none;
    padding: 6px 10px;
    border-radius: 6px;
    background: rgba(185, 56, 33, 0.92);
    color: #fff;
    font-size: 12px;
    line-height: 1.2;
    box-shadow: 0 2px 8px rgba(0,0,0,0.22);
}
.isiow-zonea-delete-hint.active {
    display: block;
}
.isiow-td.isiow-zonea-target-delete,
.isiow-th.isiow-zonea-target-delete {
    outline: 2px solid #ff4d4f !important;
    outline-offset: -2px;
    box-shadow: inset 0 0 0 9999px rgba(255, 77, 79, 0.08), inset -1px 0 0 0 #808080, inset 0 -1px 0 0 #808080 !important;
}
.isiow-table-page2 tbody tr.isiow-row-inserted .isiow-td {
    border-top: 1px solid #808080 !important;
    border-bottom: 1px solid #808080 !important;
}
.isiow-table-page2 tbody tr.isiow-row-inserted .isiow-td:first-child {
    border-left: 1px solid #808080 !important;
}
.isiow-color-palette {
    display: flex;
    align-items: center;
    position: relative;
    flex-shrink: 0;
    gap: 4px;
}
.isiow-color-trigger {
    width: 24px;
    height: 24px;
    min-width: 24px;
    min-height: 24px;
    padding: 0;
    margin: 0;
    border: 1px solid rgba(57, 63, 73, 0.36);
    border-radius: 6px;
    cursor: pointer;
    background: linear-gradient(180deg, #f8f9fb 0%, #eef1f5 100%);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.88),
        0 1px 2px rgba(27, 36, 51, 0.18);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: box-shadow 0.15s, border-color 0.15s, background 0.15s;
}
.isiow-color-trigger:hover {
    border-color: rgba(57, 63, 73, 0.56);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.95),
        0 2px 6px rgba(27, 36, 51, 0.24);
}
.isiow-color-trigger:active,
.isiow-color-palette.is-open .isiow-color-trigger {
    box-shadow:
        inset 0 1px 3px rgba(21, 33, 56, 0.28),
        0 1px 2px rgba(21, 33, 56, 0.15);
}
.isiow-color-palette .isiow-audit-link {
    width: 24px;
    min-width: 24px;
    height: 24px;
    min-height: 24px;
    padding: 0;
    margin: 0;
    border-radius: 6px;
    border: 1px solid rgba(57, 63, 73, 0.36);
    background: linear-gradient(180deg, #f8f9fb 0%, #eef1f5 100%);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.88),
        0 1px 2px rgba(27, 36, 51, 0.18);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    color: #1f2937;
    font-size: 12px;
    line-height: 1;
    transition: box-shadow 0.15s, border-color 0.15s, background 0.15s;
}
.isiow-color-palette .isiow-audit-link:hover {
    border-color: rgba(57, 63, 73, 0.56);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.95),
        0 2px 6px rgba(27, 36, 51, 0.24);
}
.isiow-color-palette .isiow-audit-link:active {
    box-shadow:
        inset 0 1px 3px rgba(21, 33, 56, 0.28),
        0 1px 2px rgba(21, 33, 56, 0.15);
}
.isiow-color-palette .isiow-audit-link:focus-visible {
    outline: 2px solid rgba(59, 130, 246, 0.45);
    outline-offset: 2px;
}
.isiow-color-trigger-icon {
    position: relative;
    width: 14px;
    height: 14px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.isiow-drop-icon {
    position: relative;
    width: 12px;
    height: 12px;
    display: inline-block;
}
.isiow-drop-icon::before {
    content: '';
    position: absolute;
    left: 2px;
    top: 1px;
    width: 8px;
    height: 8px;
    border: 1.8px solid #1f2937;
    border-radius: 58% 58% 62% 62%;
    transform: rotate(45deg);
    box-sizing: border-box;
}
.isiow-drop-icon::after {
    content: '';
    position: absolute;
    left: 1px;
    bottom: 1px;
    width: 3px;
    height: 3px;
    border-left: 1.8px solid #1f2937;
    border-bottom: 1.8px solid #1f2937;
    border-radius: 0 0 0 2px;
    transform: rotate(6deg);
}
.isiow-logbook-icon {
    position: relative;
    width: 13px;
    height: 12px;
    display: inline-block;
}
.isiow-logbook-page {
    position: absolute;
    inset: 0;
    border: 1.7px solid #1f2937;
    border-radius: 2px;
    box-sizing: border-box;
}
.isiow-logbook-page::before {
    content: '';
    position: absolute;
    left: 3px;
    top: 1px;
    bottom: 1px;
    width: 1px;
    border-radius: 2px;
    background: rgba(31, 41, 55, 0.78);
}
.isiow-logbook-line {
    position: absolute;
    left: 6px;
    right: 1px;
    height: 1px;
    border-radius: 1px;
    background: #1f2937;
}
.isiow-logbook-line-1 { top: 3px; }
.isiow-logbook-line-2 { top: 6px; }
.isiow-logbook-line-3 { top: 9px; }
.isiow-color-menu {
    position: absolute;
    top: calc(100% + 6px);
    left: 0;
    display: none;
    align-items: center;
    gap: 4px;
    padding: 6px;
    border: 1px solid rgba(72, 44, 18, 0.28);
    border-radius: 8px;
    background: linear-gradient(180deg, #fffdf6 0%, #f7ead1 52%, #edd6ab 100%);
    box-shadow: 0 6px 16px rgba(0,0,0,0.20);
    z-index: 30;
}
.isiow-color-palette.is-open .isiow-color-menu {
    display: inline-flex;
}
.isiow-color-swatch {
    width: 24px;
    height: 24px;
    padding: 0;
    border: 2px solid rgba(255,255,255,0.5);
    border-radius: 6px;
    cursor: pointer;
    box-shadow: 0 1px 4px rgba(0,0,0,0.2);
    transition: transform 0.15s, box-shadow 0.15s, border-color 0.15s;
}
.isiow-color-swatch:hover {
    transform: scale(1.12);
    border-color: #fff;
    box-shadow: 0 2px 8px rgba(0,0,0,0.25);
}
.isiow-color-swatch.is-active {
    border-color: #fff;
    box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.45), 0 2px 8px rgba(0,0,0,0.25);
    transform: scale(1.08);
}
.isiow-color-swatch.isiow-color-clear {
    background: #fff !important;
    font-size: 0.75rem;
    color: #555;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}
.isiow-color-swatch.isiow-color-clear:hover {
    color: #c0392b;
}
.isiow-btn-download {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 16px;
    min-height: 44px;
    min-width: 120px;
    font-size: 0.9rem;
    font-weight: 600;
    background: linear-gradient(180deg, #fffdf6 0%, #f7ead1 52%, #edd6ab 100%);
    color: #4b2a00;
    border: 1px solid rgba(72, 44, 18, 0.38);
    border-radius: 8px;
    cursor: pointer;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.74),
        inset 0 -1px 0 rgba(112, 73, 24, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.30),
        0 6px 12px rgba(0,0,0,0.16);
    transform: translateY(0);
    transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.18s ease;
}
.isiow-btn-download:hover {
    background: linear-gradient(180deg, #fff9ee 0%, #f4e2bf 56%, #e8cb97 100%);
    color: #3f2300;
    border-color: rgba(82, 50, 18, 0.56);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.80),
        inset 0 -1px 0 rgba(122, 79, 23, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.34),
        0 8px 16px rgba(0,0,0,0.20);
    transform: translateY(-1px);
}
.isiow-btn-download:active {
    box-shadow:
        inset 0 2px 5px rgba(104, 61, 12, 0.32),
        inset 0 -1px 0 rgba(255,255,255,0.2),
        0 1px 4px rgba(0,0,0,0.22);
    transform: translateY(1px) scale(0.985);
}
.isiow-btn-download:focus-visible {
    outline: 2px solid rgba(192,57,43,0.42);
    outline-offset: 2px;
}
.isiow-btn-download:disabled {
    opacity: 0.55;
    cursor: not-allowed;
    filter: saturate(0.65);
    transform: none;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.60),
        inset 0 -1px 0 rgba(112, 73, 24, 0.16),
        0 1px 0 rgba(82, 48, 14, 0.18);
}
.isiow-btn-download:disabled:hover,
.isiow-btn-download:disabled:active {
    transform: none;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.60),
        inset 0 -1px 0 rgba(112, 73, 24, 0.16),
        0 1px 0 rgba(82, 48, 14, 0.18);
}
.isiow-btn-save {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 8px 16px;
    min-height: 44px;
    min-width: 120px;
    font-size: 0.9rem;
    font-weight: 600;
    background: linear-gradient(180deg, #fffdf6 0%, #f7ead1 52%, #edd6ab 100%);
    color: #4b2a00;
    border: 1px solid rgba(72, 44, 18, 0.38);
    border-radius: 8px;
    cursor: pointer;
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.74),
        inset 0 -1px 0 rgba(112, 73, 24, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.30),
        0 6px 12px rgba(0,0,0,0.16);
    transform: translateY(0);
    transition: background 0.2s ease, color 0.2s ease, box-shadow 0.2s ease, transform 0.18s ease;
}
.isiow-btn-save:hover {
    background: linear-gradient(180deg, #fff9ee 0%, #f4e2bf 56%, #e8cb97 100%);
    color: #3f2300;
    border-color: rgba(82, 50, 18, 0.56);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.80),
        inset 0 -1px 0 rgba(122, 79, 23, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.34),
        0 8px 16px rgba(0,0,0,0.20);
    transform: translateY(-1px);
}
.isiow-btn-save:active {
    box-shadow:
        inset 0 2px 5px rgba(104, 61, 12, 0.32),
        inset 0 -1px 0 rgba(255,255,255,0.2),
        0 1px 4px rgba(0,0,0,0.22);
    transform: translateY(1px) scale(0.985);
}
.isiow-btn-save:focus-visible {
    outline: 2px solid rgba(192,57,43,0.42);
    outline-offset: 2px;
}
/* 返回登录二次确认弹窗（当有未保存修改时使用） */
.isiow-confirm-mask {
    position: fixed;
    inset: 0;
    z-index: 2500;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(15, 23, 42, 0.55);
}
.isiow-confirm-mask.active { display: flex; }
.isiow-confirm-dialog {
    width: min(420px, calc(100vw - 28px));
    padding: 18px 20px 16px;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 12px 32px rgba(0,0,0,0.25);
}
.isiow-confirm-title {
    margin: 0 0 8px;
    font-size: 1rem;
    font-weight: 700;
    color: #0f172a;
}
.isiow-confirm-desc {
    margin: 0 0 14px;
    color: #475569;
    font-size: 0.9rem;
    line-height: 1.5;
}
.isiow-confirm-actions {
    display: flex;
    justify-content: flex-end;
    gap: 8px;
    flex-wrap: wrap;
}
.isiow-confirm-btn {
    min-height: 34px;
    padding: 0 14px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: #fff;
    color: #1f2937;
    font-size: 0.88rem;
    cursor: pointer;
}
.isiow-confirm-btn:hover { background: #f3f4f6; }
.isiow-confirm-btn-primary {
    background: linear-gradient(135deg, #14b8a6, #0d9488);
    border-color: transparent;
    color: #fff;
    font-weight: 600;
}
.isiow-confirm-btn-primary:hover {
    filter: brightness(1.06);
}
.isiow-confirm-btn-danger {
    background: #fff;
    border-color: #fecaca;
    color: #b91c1c;
    font-weight: 600;
}
.isiow-confirm-btn-danger:hover {
    background: #fef2f2;
}
.isiow-audit-link {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 24px;
    padding: 0 10px;
    margin: 0;
    border: 1px solid rgba(72, 44, 18, 0.38);
    border-radius: 12px;
    background: linear-gradient(180deg, #fffdf6 0%, #f7ead1 52%, #edd6ab 100%);
    color: #4b2a00;
    font-size: 0.72rem;
    line-height: 1;
    text-decoration: none;
    cursor: pointer;
    opacity: 0.96;
    transform: translateY(0);
    transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease, opacity 0.18s ease, box-shadow 0.2s ease, transform 0.18s ease;
}
.isiow-audit-link:hover {
    color: #3f2300;
    opacity: 1;
    border-color: rgba(82, 50, 18, 0.56);
    background: linear-gradient(180deg, #fff9ee 0%, #f4e2bf 56%, #e8cb97 100%);
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.80),
        inset 0 -1px 0 rgba(122, 79, 23, 0.22),
        0 2px 0 rgba(82, 48, 14, 0.30),
        0 6px 12px rgba(0,0,0,0.16);
    transform: translateY(-1px);
}
.isiow-audit-link:active {
    transform: translateY(0);
    box-shadow: 0 2px 6px rgba(0,0,0,0.12);
}
.isiow-audit-link:focus-visible {
    outline: 2px solid rgba(154,52,18,0.45);
    outline-offset: 2px;
}
.isiow-audit-dialog {
    position: fixed;
    left: 50%;
    top: 120px;
    transform: translateX(-50%);
    width: min(620px, calc(100vw - 28px));
    max-height: min(58vh, 460px);
    z-index: 2300;
    border-radius: 12px;
    border: 1px solid #d7d7d7;
    background: #fff;
    box-shadow: 0 12px 28px rgba(0, 0, 0, 0.28);
    overflow: hidden;
    display: none;
}
.isiow-audit-dialog.active {
    display: block;
}
.isiow-audit-dialog-header {
    height: 40px;
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 0 10px 0 12px;
    border-bottom: 1px solid #e7e7e7;
    background: #f8fafc;
    cursor: move;
    user-select: none;
}
.isiow-audit-dialog.dragging .isiow-audit-dialog-header {
    background: #eef2ff;
}
.isiow-audit-dialog-title {
    font-size: 0.86rem;
    font-weight: 600;
    color: #1f2937;
}
.isiow-audit-dialog-close {
    width: 26px;
    height: 26px;
    border: none;
    border-radius: 50%;
    background: #111827;
    color: #fff;
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}
.isiow-audit-dialog-close:hover {
    background: #b91c1c;
}
.isiow-audit-dialog-content {
    margin: 0;
    padding: 10px 12px 12px;
    overflow-y: auto;
    overflow-x: hidden;
    max-height: min(50vh, 400px);
    font-size: 0.84rem;
    line-height: 1.5;
    color: #111827;
    font-family: "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
.isiow-audit-section-title {
    margin: 4px 0 6px;
    font-size: 0.82rem;
    font-weight: 700;
    color: #0f172a;
}
.isiow-audit-empty {
    color: #64748b;
    font-size: 0.8rem;
    margin-bottom: 8px;
}
.isiow-audit-list {
    margin: 0 0 10px 18px;
    padding: 0;
}
.isiow-audit-row {
    margin: 0 0 6px;
}
.isiow-audit-meta {
    margin-right: 8px;
    color: #1f2937;
}
.isiow-audit-keys {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    flex-wrap: wrap;
}
.isiow-audit-key {
    border: 1px solid #bfdbfe;
    background: #eff6ff;
    color: #1d4ed8;
    border-radius: 8px;
    height: 22px;
    padding: 0 7px;
    font-size: 0.75rem;
    cursor: pointer;
}
.isiow-audit-key:hover {
    background: #dbeafe;
}
.isiow-audit-more {
    color: #64748b;
    font-size: 0.75rem;
}
.isiow-audit-tip {
    margin-top: 2px;
    color: #64748b;
    font-size: 0.76rem;
}
.isiow-editable {
    min-height: 1.2em;
    transition: box-shadow 0.15s ease, outline-color 0.15s ease, background-color 0.15s ease;
}
.isiow-editable:focus {
    outline: 1px solid #d35400;
    outline-offset: -1px;
}
.isiow-readonly {
    cursor: default !important;
    user-select: text;
    -webkit-user-select: text;
    pointer-events: none;
}
/* 产品介绍只读格允许 hover 触发 title，便于查看完整文案（仍不可编辑）。 */
.isiow-desc.isiow-readonly,
.isiow-desc.isiow-readonly .isiow-desc-inner {
    pointer-events: auto;
    cursor: help !important;
}
/* 用户新增列的产品介绍格可能是 reserve-cell 而不是 isiow-desc；
   只读账号仍需要 hover 查看完整文案，但保持 contenteditable=false，不开放编辑。 */
.isiow-table thead tr:nth-child(2) [data-isiow-desc-tooltip].isiow-readonly,
.isiow-table thead tr:nth-child(2) [data-isiow-desc-tooltip].isiow-readonly .isiow-desc-inner {
    pointer-events: auto;
    cursor: help !important;
}
/* 仅管理员可编辑的格子（左一/左二列等）：非管理员只读时，保持与原静态格相同的外观，
   允许文本选择/复制；但仍由 contenteditable=false 防止编辑、由 isCellColorable 防止上色。 */
.isiow-table [data-isiow-admin-only="1"].isiow-readonly {
    color: inherit;
    pointer-events: auto;
    cursor: default !important;
    user-select: text;
    -webkit-user-select: text;
}
/* 可编辑态：弱高亮 + hover/focus 边界，降低误点。仅作用于有业务 key 的单元格，不影响标签列。 */
.isiow-table [data-isiow-key].isiow-editable:not(.isiow-readonly) {
    cursor: text;
    background-color: rgba(33, 150, 243, 0.04);
}
.isiow-table td.isiow-img-cell[data-isiow-key].isiow-editable:not(.isiow-readonly) {
    cursor: pointer;
}
:root.isiow-brush-mode[data-isiow-brush-cursor="paint"][data-isiow-color-scope="editable"] .isiow-table [data-isiow-key].isiow-editable:not(.isiow-readonly),
:root.isiow-brush-mode[data-isiow-brush-cursor="paint"][data-isiow-color-scope="editable"] .isiow-table td.isiow-img-cell[data-isiow-key].isiow-editable:not(.isiow-readonly),
:root.isiow-brush-mode[data-isiow-brush-cursor="paint"][data-isiow-color-scope="editable"] .isiow-table thead [data-isiow-key][data-isiow-color-only]:not(.isiow-readonly),
:root.isiow-brush-mode[data-isiow-brush-cursor="paint"][data-isiow-color-scope="all"] .isiow-table [data-isiow-key] {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cg transform='rotate(-32 14 14)'%3E%3Crect x='12.2' y='2.2' width='3.6' height='9.6' rx='1.2' fill='%23634f32'/%3E%3Crect x='10.2' y='10.2' width='7.6' height='5.2' rx='1.3' fill='%23998256'/%3E%3Cpath d='M8 15h12l-1.4 4.6c-.28.92-1.12 1.56-2.08 1.56h-5.16c-.96 0-1.8-.64-2.08-1.56z' fill='%23e4c18e'/%3E%3Cpath d='M9.2 21.1h9.6l-1.4 3.5c-.3.74-1.02 1.22-1.81 1.22h-3.18c-.79 0-1.51-.48-1.81-1.22z' fill='%23302416'/%3E%3C/g%3E%3C/svg%3E") 6 24, crosshair;
}
:root.isiow-brush-mode[data-isiow-brush-cursor="erase"][data-isiow-color-scope="editable"] .isiow-table [data-isiow-key].isiow-editable:not(.isiow-readonly),
:root.isiow-brush-mode[data-isiow-brush-cursor="erase"][data-isiow-color-scope="editable"] .isiow-table td.isiow-img-cell[data-isiow-key].isiow-editable:not(.isiow-readonly),
:root.isiow-brush-mode[data-isiow-brush-cursor="erase"][data-isiow-color-scope="editable"] .isiow-table thead [data-isiow-key][data-isiow-color-only]:not(.isiow-readonly),
:root.isiow-brush-mode[data-isiow-brush-cursor="erase"][data-isiow-color-scope="all"] .isiow-table [data-isiow-key] {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cg transform='rotate(-35 14 14)'%3E%3Crect x='6' y='9.5' width='16' height='10' rx='2.2' fill='%23f2b7c8'/%3E%3Crect x='15' y='9.5' width='7' height='10' rx='2.2' fill='%23ffdfe9'/%3E%3Cpath d='M6 16.8h16v2.4c0 1.22-.98 2.2-2.2 2.2H8.2A2.2 2.2 0 0 1 6 19.2z' fill='%23d6829b'/%3E%3Cpath d='M7.2 18.2h13.6v1.8H7.2z' fill='%23b3637d'/%3E%3C/g%3E%3C/svg%3E") 6 22, crosshair;
}
.isiow-table [data-isiow-key].isiow-editable:not(.isiow-readonly):hover {
    box-shadow: inset 0 0 0 1px rgba(25, 118, 210, 0.35);
}
.isiow-table [data-isiow-key].isiow-editable:not(.isiow-readonly):focus {
    outline: 1px solid #1976d2;
}
/* 只读态：轻微降饱和，不遮挡原有底色。 */
.isiow-table [data-isiow-key].isiow-readonly {
    color: #5f6b7a;
}
.isiow-table [data-isiow-key].isiow-anomaly {
    position: relative;
    /* 色框 + 基础网格线一起绘制，避免覆盖原本 1px 网格 inset 阴影，确保异常态也保持行列线连贯 */
    box-shadow:
        inset 0 0 0 1px rgba(234, 88, 12, 0.9),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
    background-image: linear-gradient(180deg, rgba(255, 237, 213, 0.55), rgba(255, 237, 213, 0.55));
}
.isiow-table [data-isiow-key].isiow-dirty {
    position: relative;
    /* dirty 蓝色色框同样串入基础网格线，避免"未保存修改"格子断线 */
    box-shadow:
        inset 0 0 0 1px rgba(37, 99, 235, 0.45),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
    background-image: linear-gradient(180deg, rgba(191, 219, 254, 0.22), rgba(191, 219, 254, 0.22));
}
.isiow-table [data-isiow-key].isiow-dirty:hover {
    box-shadow:
        inset 0 0 0 1px rgba(37, 99, 235, 0.62),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
}
/* 冻结行/冻结列进入 dirty/anomaly 状态时必须保持 sticky。
   否则 dirty/anomaly 的 position: relative 会把 sticky 的 top/left 解释成普通位移：
   - 表头第 2 行 top:48px 变成下移 48px；
   - 第 2 冻结列 left:140px 变成右移 140px。 */
.isiow-table-page2 thead [data-isiow-key].isiow-dirty,
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-dirty,
.isiow-table-page2 tbody .isiow-sticky-col-2.isiow-dirty,
.isiow-table-page2 thead [data-isiow-key].isiow-anomaly,
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-anomaly,
.isiow-table-page2 tbody .isiow-sticky-col-2.isiow-anomaly {
    position: sticky !important;
}
/* 审计高亮（B5）：仅 outline + opacity 脉冲，避免昂贵的 box-shadow 关键帧。
   - 用 ::after 伪元素承载脉冲层，单独触发合成层，与单元格本身解耦。
   - 限定迭代 6 次后自动收敛；定位完成后 JS 再 removeClass 清类。 */
.isiow-table [data-isiow-key].isiow-audit-target {
    position: relative;
    z-index: 80 !important;
    border-radius: 2px;
    outline: 2px solid #f59e0b !important;
    outline-offset: -2px;
}
.isiow-table [data-isiow-key].isiow-audit-target::after {
    content: '';
    position: absolute;
    inset: -2px;
    pointer-events: none;
    border-radius: 4px;
    background: rgba(252, 211, 77, 0.45);
    opacity: 0;
    will-change: opacity, transform;
    animation: isiowAuditPulse 1s ease-in-out 0s 6;
}
/* 修复：thead 行 / 冻结列被审计高亮时，position: relative 会覆盖 sticky，
   导致 sticky 失效，整行/整列从顶部固定区"跌落"到文档自然位置（视觉上像被搬到了表格中间）。
   下面的覆盖把这些 cell 的 position 强制保留为 sticky，仅恢复定位语义，不动布局/尺寸。 */
.isiow-table-page2 thead [data-isiow-key].isiow-audit-target,
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-audit-target,
.isiow-table-page2 tbody .isiow-sticky-col-2.isiow-audit-target,
#isiow-page1 .isiow-table tbody .isiow-sticky-col-1.isiow-audit-target,
#isiow-page1 .isiow-table tbody .isiow-sticky-col-2.isiow-audit-target {
    position: sticky !important;
}
@keyframes isiowAuditPulse {
    0%, 100% { opacity: 0; transform: scale(1); }
    50%      { opacity: 1; transform: scale(1.02); }
}
/* 每页独立布局/绘制，减轻切换页签时的重排范围，缓解低配或远程访问时的卡顿 */
.isiow-page {
    display: none;
    flex: 1;
    flex-direction: column;
    min-height: 0;
    overflow: hidden;
    contain: layout;
}
.isiow-page.active {
    display: flex;
}
.isiow-loading-panel {
    display: none;
    flex: 1;
    min-height: 0;
    align-items: flex-start;
    justify-content: center;
    padding-top: clamp(90px, 18vh, 170px);
    background:
        radial-gradient(circle at 50% 0%, rgba(230, 126, 34, 0.08), transparent 34%),
        #f5f6fa;
}
.isiow-container.isiow-permissions-pending .isiow-loading-panel {
    display: flex;
}
.isiow-container.isiow-permissions-pending .isiow-main {
    display: none !important;
}
.isiow-loading-text {
    min-width: min(560px, calc(100vw - 48px));
    padding: 18px 28px;
    border: 1px solid rgba(124, 74, 24, 0.18);
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(255,255,255,0.88), rgba(255,248,236,0.82));
    box-shadow:
        inset 0 1px 0 rgba(255,255,255,0.78),
        0 10px 28px rgba(82, 48, 14, 0.10);
    color: #5b3412;
    font-size: clamp(28px, 4vw, 38px);
    font-weight: 800;
    line-height: 1.25;
    letter-spacing: 0.08em;
    text-align: center;
    text-shadow: 0 1px 0 rgba(255,255,255,0.72);
}
.isiow-loading-label {
    background: linear-gradient(90deg, #5b3412 0%, #7a3f00 34%, #c26a16 50%, #7a3f00 66%, #5b3412 100%);
    background-size: 220% 100%;
    -webkit-background-clip: text;
    background-clip: text;
    color: #5b3412;
    -webkit-text-fill-color: transparent;
    animation: isiowLoadingShimmer 2.2s linear infinite;
}
.isiow-loading-dots {
    display: inline-flex;
    width: 2.4em;
    justify-content: flex-start;
    vertical-align: baseline;
}
.isiow-loading-dots span {
    display: inline-block;
    color: #7a3f00;
    -webkit-text-fill-color: #7a3f00;
    opacity: 0.28;
    transform: translateY(0);
    animation: isiowLoadingDotPulse 1.2s ease-in-out infinite;
}
.isiow-loading-dots span:nth-child(1) { animation-delay: 0s; }
.isiow-loading-dots span:nth-child(2) { animation-delay: 0.12s; }
.isiow-loading-dots span:nth-child(3) { animation-delay: 0.24s; }
.isiow-loading-dots span:nth-child(4) { animation-delay: 0.36s; }
.isiow-loading-dots span:nth-child(5) { animation-delay: 0.48s; }
.isiow-loading-dots span:nth-child(6) { animation-delay: 0.60s; }
@keyframes isiowLoadingDotPulse {
    0%, 100% { opacity: 0.28; transform: translateY(0); }
    45% { opacity: 1; transform: translateY(-1px); }
}
@keyframes isiowLoadingShimmer {
    0% { background-position: 120% 0; }
    100% { background-position: -120% 0; }
}
@media (prefers-reduced-motion: reduce) {
    .isiow-loading-label,
    .isiow-loading-dots span {
        animation: none;
    }
    .isiow-loading-label {
        -webkit-text-fill-color: #5b3412;
        color: #5b3412;
    }
}
.isiow-main {
    flex: 1;
    padding: 1rem;
    min-height: 0;
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
/* 冻结区：表头不滚动，始终在上方 */
.isiow-fixed-header {
    flex-shrink: 0;
    position: relative;
    z-index: 6;
    background: #fff;
    border-radius: 8px 8px 0 0;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    border-bottom: 2px solid #e0e0e0;
    overflow: hidden;
    padding-right: 17px; /* 与表体滚动条宽度一致，保证上下表列宽对齐 */
    box-sizing: border-box;
}
/* 固定表头表格样式：网格线用 inset 阴影画在背景之上 */
.isiow-table-fixed thead .isiow-th,
.isiow-table-fixed thead .isiow-td {
    background: #fff !important;
    border: none;
    padding: 8px 10px;
    font-size: 0.85rem;
    vertical-align: middle;
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-soft), inset 0 -1px 0 0 var(--isiow-grid-line-soft);
}
.isiow-table-fixed thead .isiow-th:first-child,
.isiow-table-fixed thead .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-soft), inset 0 -1px 0 0 var(--isiow-grid-line-soft), inset 1px 0 0 0 var(--isiow-grid-line-soft);
}
.isiow-table-fixed thead tr:first-child .isiow-th,
.isiow-table-fixed thead tr:first-child .isiow-td {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-soft), inset 0 -1px 0 0 var(--isiow-grid-line-soft), inset 0 1px 0 0 var(--isiow-grid-line-soft);
}
.isiow-table-fixed thead tr:first-child .isiow-th:first-child,
.isiow-table-fixed thead tr:first-child .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-soft), inset 0 -1px 0 0 var(--isiow-grid-line-soft), inset 1px 0 0 0 var(--isiow-grid-line-soft), inset 0 1px 0 0 var(--isiow-grid-line-soft);
}
/* 第一页“产品简介”行：与第二页同一尺寸，行高 76px，多出裁切
   同样采用"内层绝对定位"方案（见 .isiow-table-page2 thead .isiow-desc 注释）。 */
.isiow-table-fixed thead .isiow-desc {
    position: relative !important;
    vertical-align: top;
    line-height: 1.35;
    padding: 0 !important;
    height: 76px !important;
    min-height: 76px !important;
    max-height: 76px !important;
    overflow: hidden !important;
    box-sizing: border-box;
}
.isiow-table-fixed thead tr:nth-child(1) .isiow-th,
.isiow-table-fixed thead tr:nth-child(1) .isiow-td { height: 48px !important; max-height: 48px !important; overflow: hidden !important; }
.isiow-table-fixed thead tr:nth-child(2) .isiow-th,
.isiow-table-fixed thead tr:nth-child(2) .isiow-td { height: 76px !important; max-height: 76px !important; overflow: hidden !important; }
.isiow-table-fixed thead tr:nth-child(3) .isiow-th,
.isiow-table-fixed thead tr:nth-child(3) .isiow-td { height: 76px !important; max-height: 76px !important; overflow: hidden !important; }
.isiow-table-fixed thead tr:nth-child(1) { height: 48px !important; min-height: 48px !important; max-height: 48px !important; }
.isiow-table-fixed thead tr:nth-child(2) { height: 76px !important; min-height: 76px !important; max-height: 76px !important; }
.isiow-table-fixed thead tr:nth-child(3) { height: 76px !important; min-height: 76px !important; max-height: 76px !important; }
/* 第一页产品简介格内层：与第二页一致，绝对定位脱离 cell 高度计算 */
.isiow-table-fixed thead .isiow-desc-inner {
    position: absolute !important;
    top: 4px;
    left: 10px;
    right: 10px;
    bottom: 4px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    line-height: 1.35;
    overflow: hidden !important;
    text-overflow: ellipsis;
    box-sizing: border-box;
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
    word-break: break-word;
}
/* 可滚动区：占满主区域到底部，仅此区域滚动，冻结区始终在上方 */
.isiow-table-wrap {
    flex: 1;
    min-height: 0;
    overflow-y: auto;
    overflow-x: auto;
    background: #fff;
    border-radius: 0 0 8px 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    scrollbar-gutter: stable;
}
.isiow-table {
    width: 100%;
    border-collapse: collapse;
    table-layout: fixed;
}
/* 两表列宽一致；第一页与第二页统一 140/120/100 */
.isiow-col-label { width: 12%; min-width: 140px; }
.isiow-col-region { width: 14%; min-width: 120px; }
.isiow-col-p { width: 9.25%; min-width: 88px; }
.isiow-table-fixed .isiow-col-label,
.isiow-table-wrap .isiow-table .isiow-col-label { width: 140px; min-width: 140px; }
.isiow-table-fixed .isiow-col-region,
.isiow-table-wrap .isiow-table .isiow-col-region { width: 120px; min-width: 120px; }
.isiow-table-fixed .isiow-col-p,
.isiow-table-wrap .isiow-table .isiow-col-p { width: 100px; min-width: 100px; }
/* 第一页：表头表体同宽，宽屏下不超过 1060px，与第2–10页列宽一致且上下列线对齐 */
.isiow-table-fixed,
.isiow-table-wrap .isiow-table {
    max-width: 1060px;
    width: 100%;
}

/* 第二页：冻结第1-3行、第1-2列，左右上下滚动 */
.isiow-table-page2 .isiow-col-label { width: 140px; min-width: 140px; }
.isiow-table-page2 .isiow-col-region { width: 120px; min-width: 120px; }
.isiow-table-page2 .isiow-col-p { width: 100px; min-width: 100px; }
/* 美元汇率：保持表格内编辑，同时默认落在可视中间区域（非悬浮窗）。 */
.isiow-usd-rate-cell {
    white-space: nowrap !important;
    text-align: left !important;
    padding-left: clamp(10px, calc(50vw - 230px), 520px) !important;
    cursor: text;
}
/* 汇率／退税率：渲染为「固定标签 + 只能输数字的输入框」控件，整体在视口居中。 */
.isiow-usd-rate-cell { color: #1f2937; }
.isiow-usd-rate-widget {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-weight: 600;
    letter-spacing: 0.3px;
    white-space: nowrap;
}
.isiow-usd-rate-label { color: #334155; font-size: 0.86rem; }
.isiow-usd-rate-sep { color: #94a3b8; padding: 0 2px; }
.isiow-usd-rate-field {
    width: 72px;
    padding: 3px 8px;
    border: 1px solid #c7ccd1;
    border-radius: 6px;
    background: #fff;
    color: #111827;
    font-size: 0.9rem;
    font-weight: 700;
    text-align: center;
    font-variant-numeric: tabular-nums;
    box-shadow: inset 0 1px 2px rgba(0,0,0,0.05);
}
.isiow-usd-rate-field:focus {
    outline: none;
    border-color: #2563eb;
    box-shadow: 0 0 0 2px rgba(37,99,235,0.25);
}
.isiow-usd-rate-field:disabled {
    background: #f1f5f9;
    color: #475569;
    cursor: not-allowed;
}
.isiow-usd-rate-field.isiow-usd-field-warn {
    border-color: #dc2626;
    box-shadow: 0 0 0 2px rgba(220,38,38,0.25);
}

.isiow-page2-scroll {
    flex: 1;
    min-height: 0;
    width: 100%;
    overflow: auto;
    position: relative;
    isolation: isolate;
    border-radius: 8px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.06);
    background: #fff;
}
.isiow-table-page2 {
    table-layout: fixed;
    width: 100%;
    min-width: 3164px;
    position: relative;
    z-index: 1;
    /* separate 替代 collapse，修复 sticky+border-collapse 导致冻结行列被遮挡的浏览器 bug */
    border-collapse: separate;
    border-spacing: 0;
}
/* Grid Layer 1（基础网格层）：先定义整表基础线。 */
.isiow-table-page2 .isiow-th,
.isiow-table-page2 .isiow-td {
    border: none;
    padding: 8px 10px;
    font-size: 0.85rem;
    box-sizing: border-box;
    vertical-align: middle;
    background: #fff;
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table-page2 .isiow-th:first-child,
.isiow-table-page2 .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 1px 0 0 0 var(--isiow-grid-line-strong);
}
.isiow-table-page2 thead tr:first-child .isiow-th,
.isiow-table-page2 thead tr:first-child .isiow-td {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 0 1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table-page2 thead tr:first-child .isiow-th:first-child,
.isiow-table-page2 thead tr:first-child .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 1px 0 0 0 var(--isiow-grid-line-strong), inset 0 1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table-page2 tbody tr:first-child .isiow-td {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 0 1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table-page2 tbody tr:first-child .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 1px 0 0 0 var(--isiow-grid-line-strong), inset 0 1px 0 0 var(--isiow-grid-line-strong);
}
/* 冻结的前 3 行（thead） */
.isiow-table-page2 thead .isiow-th,
.isiow-table-page2 thead .isiow-td {
    position: sticky;
    z-index: 30;
    background: #fff !important;
    opacity: 1 !important;
    background-image: none !important;
    -webkit-backface-visibility: hidden;
    backface-visibility: hidden;
}
.isiow-table-page2 thead tr:nth-child(1) .isiow-th,
.isiow-table-page2 thead tr:nth-child(1) .isiow-td { top: 0; }
.isiow-table-page2 thead tr:nth-child(2) .isiow-th,
.isiow-table-page2 thead tr:nth-child(2) .isiow-td { top: 48px; }
.isiow-table-page2 thead tr:nth-child(3) .isiow-th,
.isiow-table-page2 thead tr:nth-child(3) .isiow-td { top: 124px; }
/* Grid Layer 2（sticky覆盖层）：冻结列在基础网格上补回分隔线。 */
.isiow-table-page2 .isiow-sticky-col-1 {
    position: sticky;
    left: 0;
    z-index: 20;
    background: #fff !important;
    opacity: 1 !important;
    background-image: none !important;
    box-shadow: 2px 0 4px rgba(0,0,0,0.07);
}
.isiow-table-page2 .isiow-sticky-col-2 {
    position: sticky;
    left: 140px;
    z-index: 20;
    background: #fff !important;
    opacity: 1 !important;
    background-image: none !important;
    box-shadow: 2px 0 4px rgba(0,0,0,0.07);
}
/* 表头里的交叉角要压过 tbody 冻结列 */
.isiow-table-page2 thead .isiow-sticky-col-1,
.isiow-table-page2 thead .isiow-sticky-col-2 {
    z-index: 40;
}
/* tbody 冻结列的背景色 */
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-label {
    background: #fafafa !important;
}
.isiow-table-page2 tbody .isiow-sticky-col-1:not(.isiow-label),
.isiow-table-page2 tbody .isiow-sticky-col-2 {
    background: #fff !important;
}
/* 第2-10页冻结列补回网格线：sticky 的阴影会覆盖基础 inset 线，
   导致备注区（备注1/备注2）等位置看不到横向分隔线。 */
.isiow-table-page2 tbody .isiow-sticky-col-1 {
    box-shadow:
        inset -1px 0 0 0 #808080,
        inset 0 -1px 0 0 #808080,
        inset 1px 0 0 0 #808080,
        2px 0 4px rgba(0,0,0,0.07);
}
.isiow-table-page2 tbody .isiow-sticky-col-2 {
    box-shadow:
        inset -1px 0 0 0 #808080,
        inset 0 -1px 0 0 #808080,
        2px 0 4px rgba(0,0,0,0.07);
}
/* 成本核算两行左两格冻结时保留行背景色（含第二格：国家及地区列） */
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-sticky-col-1.isiow-label {
    background: #bfdbfe !important;
}
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-sticky-col-1:not(.isiow-label),
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-sticky-col-2 {
    background: #dbeafe !important;
}
.isiow-table-page2 tbody tr.isiow-cost-rd td:nth-child(2) {
    background: #dbeafe !important;
}
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-sticky-col-1.isiow-label {
    background: #bbf7d0 !important;
}
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-sticky-col-1:not(.isiow-label),
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-sticky-col-2 {
    background: #dcfce7 !important;
}
.isiow-table-page2 tbody tr.isiow-cost-pur td:nth-child(2) {
    background: #dcfce7 !important;
}
/* 第2-10页成本核算行：用 !important border 确保横竖网格线都显示 */
.isiow-table-page2 tbody tr.isiow-cost-rd,
.isiow-table-page2 tbody tr.isiow-cost-pur {
    height: var(--isiow-cost-row-height) !important;
    min-height: var(--isiow-cost-row-height) !important;
    max-height: var(--isiow-cost-row-height) !important;
}
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-td,
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-td {
    height: var(--isiow-cost-row-height) !important;
    min-height: var(--isiow-cost-row-height) !important;
    max-height: var(--isiow-cost-row-height) !important;
    padding: 2px 8px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis;
    border-top: 1px solid #808080 !important;
    border-right: 1px solid #808080 !important;
    border-left: none !important;
    box-shadow: none !important;
}
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-td {
    border-bottom: none !important;
}
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-td {
    border-bottom: 1px solid #808080 !important;
}
/* 视觉最后一行（研发部/采购部账号下被 hideTbodyRowsAfterLabelRow 标记）：
   补回底边线，解决 cost-rd 默认 border-bottom:none 导致表格底部没线的问题。
   下面追加一条更通用的兜底，覆盖第 1 页 (.isiow-table) 与基础表（与第 2~10 页保持视觉一致）。 */
.isiow-table-page2 tbody tr.isiow-cost-rd.isiow-tbody-end .isiow-td,
.isiow-table-page2 tbody tr.isiow-tbody-end .isiow-td {
    border-bottom: 1px solid #808080 !important;
}
.isiow-table tbody tr.isiow-tbody-end .isiow-td {
    border-bottom: 1px solid var(--isiow-grid-line-strong) !important;
}
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-td:first-child,
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-td:first-child {
    border-left: 1px solid #808080 !important;
}
/* 第2-10页成本核算行关闭 ::after 避免双重线 */
.isiow-table-page2 tr.isiow-cost-rd .isiow-td::after,
.isiow-table-page2 tr.isiow-cost-pur .isiow-td::after {
    display: none !important;
}
/* 采购部成本核算拆为 PC/PCTG 两小行后：行高/字号对齐人民币价格（zone-a 压缩）行。
   选择器带 .isiow-zonea-compressed，比上方 30px 的 cost 规则更具体，正常压缩视图下生效。
   页1 表格同样带 .isiow-table-page2 类，故此选择器对全部 10 页生效。 */
.isiow-table-page2 tbody.isiow-zonea-compressed tr.isiow-cost-pur,
.isiow-table-page2 tbody.isiow-zonea-compressed tr.isiow-cost-pur-2 {
    height: var(--isiow-zonea-compact-row-height) !important;
    min-height: var(--isiow-zonea-compact-row-height) !important;
    max-height: var(--isiow-zonea-compact-row-height) !important;
}
.isiow-table-page2 tbody.isiow-zonea-compressed tr.isiow-cost-pur .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr.isiow-cost-pur-2 .isiow-td {
    height: var(--isiow-zonea-compact-row-height) !important;
    min-height: var(--isiow-zonea-compact-row-height) !important;
    max-height: var(--isiow-zonea-compact-row-height) !important;
    padding: 2px 8px !important;
    font-size: 0.78rem;
    line-height: 1.15;
}
.isiow-reserve-cell {
    background: #fff !important;
    position: relative;
    overflow: hidden;
}
/* 第二/三页表头“产品简介”单元格：
   关键修复：table-cell 的 height/max-height 是"最小高度"，长 CJK 文案会把 cell 撑到任意高度（>200px）。
   解决方案：内层用 absolute 脱离正常流（父级已是 sticky 定位元素，天然可作为包含块），
   cell 的"自然内容高度"变为 0，行高完全由 CSS 的 76px 决定，不再随文字内容变化。 */
.isiow-table-page2 thead .isiow-desc {
    /* 保留上方已有的 position: sticky；不再覆盖 */
    vertical-align: top;
    line-height: 1.35;
    padding: 0 !important;
    height: 76px !important;
    min-height: 76px !important;
    max-height: 76px !important;
    overflow: hidden !important;
}
.isiow-table-page2 thead .isiow-desc-inner {
    position: absolute !important;
    top: 4px;
    left: 10px;
    right: 10px;
    bottom: 4px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    line-height: 1.35;
    overflow: hidden !important;
    text-overflow: ellipsis;
    box-sizing: border-box;
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
    word-break: break-word;
    font-size: 0.8rem;
    color: #333;
    text-align: left;
}
.isiow-table-page2 thead tr:nth-child(1) .isiow-th,
.isiow-table-page2 thead tr:nth-child(1) .isiow-td { height: 48px !important; min-height: 48px !important; max-height: 48px !important; overflow: hidden !important; }
.isiow-table-page2 thead tr:nth-child(2) .isiow-th,
.isiow-table-page2 thead tr:nth-child(2) .isiow-td { height: 76px !important; min-height: 76px !important; max-height: 76px !important; overflow: hidden !important; }
.isiow-table-page2 thead tr:nth-child(3) .isiow-th,
.isiow-table-page2 thead tr:nth-child(3) .isiow-td { height: 76px !important; min-height: 76px !important; max-height: 76px !important; overflow: hidden !important; }
.isiow-table-page2 thead tr:nth-child(1) { height: 48px !important; min-height: 48px !important; max-height: 48px !important; }
.isiow-table-page2 thead tr:nth-child(2) { height: 76px !important; min-height: 76px !important; max-height: 76px !important; }
.isiow-table-page2 thead tr:nth-child(3) { height: 76px !important; min-height: 76px !important; max-height: 76px !important; }
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td { background: #e8f5e9 !important; }
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td:first-child,
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td:nth-child(2) { background: #e8f5e9 !important; }
/* 第2-10页备注区：显式补三条横向分隔线
   - 备注1 与 备注2
   - 备注2 与 备注3
   - 备注3 与 重要提示
   备注2/3 在部分页没有独立 class，使用相邻选择器兜底。 */
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr .isiow-td,
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr + tr .isiow-td,
.isiow-table-page2 tbody tr.isiow-row-notice .isiow-td {
    border-top: 1px solid #808080 !important;
}
/* 第2-10页备注区：补齐标签列后的竖向分隔线（第1列与右侧内容之间） */
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td:first-child,
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr .isiow-td:first-child,
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr + tr .isiow-td:first-child,
.isiow-table-page2 tbody tr.isiow-row-notice .isiow-td:first-child {
    border-left: 1px solid #808080 !important;
    border-right: 1px solid #808080 !important;
    box-shadow: inset -1px 0 0 0 #808080 !important;
    /* 备注区首列必须保持冻结，不能用 relative 覆盖 sticky */
    position: sticky !important;
    left: 0 !important;
}
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td:first-child::after,
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr .isiow-td:first-child::after,
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr + tr .isiow-td:first-child::after,
.isiow-table-page2 tbody tr.isiow-row-notice .isiow-td:first-child::after {
    content: '';
    position: absolute;
    top: -1px;
    right: 0;
    bottom: -1px;
    width: 1px;
    background: #808080;
    pointer-events: none;
    z-index: 6;
}
/* 统一规则：第2-10页所有冻结首列都强制绘制右侧分隔线，避免备注区局部断线。 */
.isiow-table-page2 tbody .isiow-sticky-col-1 {
    position: sticky;
}
.isiow-table-page2 tbody .isiow-sticky-col-1::after {
    content: '';
    position: absolute;
    top: -1px;
    right: 0;
    bottom: -1px;
    width: 1px;
    background: #808080;
    pointer-events: none;
    z-index: 8;
}
/* 第2-10页：补上“重要提示”与下一行之间横线 */
.isiow-table-page2 tbody tr.isiow-row-notice .isiow-td {
    border-bottom: 1px solid #808080 !important;
}
.isiow-table-page2 tbody tr.isiow-row-notice + tr .isiow-td {
    border-top: 1px solid #808080 !important;
}
/* 第2-10页：备注2/备注3/重要提示的大 colspan 文本从左开始显示，
   避免超宽表格下被全局居中后“看起来要向右拖动才看到内容”。 */
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr .isiow-td:not(:first-child),
.isiow-table-page2 tbody tr.isiow-row-remark1 + tr + tr .isiow-td:not(:first-child),
.isiow-table-page2 tbody tr.isiow-row-notice .isiow-td:not(:first-child) {
    text-align: left !important;
    padding-left: 10px !important;
}
.isiow-text-danger { color: #c62828 !important; font-weight: 500; }

.isiow-group-row .isiow-group-th { border: 1px solid #c8c8c8; }
.isiow-group-btn {
    background: none;
    border: none;
    cursor: pointer;
    font-weight: 700;
    font-size: 0.85rem;
    padding: 4px 8px;
    color: #333;
    display: inline-flex;
    align-items: center;
    gap: 4px;
}
.isiow-group-btn:hover { color: #d35400; }
.isiow-group-btn .fa-chevron-down { transition: transform 0.2s; }
.isiow-th {
    font-weight: 700;
    text-align: center;
}
.isiow-row-label {
    background: #fff;
    font-weight: 700;
    text-align: center;
    vertical-align: middle;
}
.isiow-extra-toggle-btn {
    position: absolute;
    right: 8px;
    bottom: 6px;
    width: 22px;
    height: 22px;
    padding: 0;
    border: 1px solid #cbd5e1;
    border-radius: 999px;
    background: transparent;
    color: #64748b;
    font-size: 0;
    line-height: 1;
    cursor: pointer;
    z-index: 2;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    transition: color .16s ease, border-color .16s ease, background-color .16s ease, box-shadow .16s ease;
}
.isiow-extra-toggle-btn:hover {
    color: #1d4ed8;
    border-color: #93c5fd;
    background: rgba(59, 130, 246, 0.1);
    box-shadow: 0 1px 2px rgba(30, 64, 175, 0.18);
}
.isiow-extra-toggle-btn.is-expanded {
    color: #1e3a8a;
    border-color: #93c5fd;
    background: rgba(59, 130, 246, 0.14);
}
.isiow-extra-toggle-btn.is-guided {
    color: #ffffff;
    border-color: #ea580c;
    background: #f59e0b;
    box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.55);
    animation: isiow-extra-toggle-pulse 1.6s ease-in-out infinite;
}
.isiow-extra-toggle-btn.is-guided::before {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%23ffffff' stroke-width='2.1' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
}
@keyframes isiow-extra-toggle-pulse {
    0% {
        box-shadow: 0 0 0 0 rgba(245, 158, 11, 0.62);
    }
    65% {
        box-shadow: 0 0 0 8px rgba(245, 158, 11, 0);
    }
    100% {
        box-shadow: 0 0 0 0 rgba(245, 158, 11, 0);
    }
}
.isiow-extra-toggle-btn::before {
    content: "";
    width: 12px;
    height: 12px;
    display: block;
    background-repeat: no-repeat;
    background-position: center;
    background-size: 12px 12px;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none'%3E%3Cpath d='M4 6l4 4 4-4' stroke='%230f172a' stroke-width='1.9' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    transform: rotate(0deg);
    transform-origin: 50% 50%;
    transition: transform 120ms ease;
}
.isiow-extra-toggle-btn.is-expanded::before {
    transform: rotate(180deg);
}
.isiow-extra-row {
    display: none;
}
.isiow-extra-row .isiow-extra-row-label {
    background: #fff36a !important;
    color: #111827;
    text-align: left !important;
    overflow: hidden !important;
    padding: 0 !important;
    box-sizing: border-box;
}
.isiow-extra-row .isiow-extra-row-label .isiow-extra-row-label-inner {
    /* 在不突破网格线前提下，减少上下内边距让两行文案可见，并把文字上移 */
    padding: 0 10px 1px 10px;
    font-weight: 700;
    line-height: 1.1;
    height: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: normal;
    word-break: break-word;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 2;
    box-sizing: border-box;
}
.isiow-extra-row .isiow-extra-row-cell {
    background: #fff !important;
    text-align: left !important;
    line-height: 1.35;
    padding: 8px 10px !important;
    overflow: hidden !important;
    white-space: nowrap !important;
    text-overflow: ellipsis;
}
.isiow-table thead tr:nth-child(2) .isiow-row-label,
.isiow-table thead tr:nth-child(3) .isiow-row-label {
    padding: 0 !important;
    line-height: 1.35;
    /* sticky 表头单元格不能用 -webkit-box，滚动时会出现行高抖动 */
    display: table-cell;
    text-overflow: clip;
    white-space: normal;
    word-break: break-word;
    overflow: hidden !important;
}
.isiow-table thead tr:nth-child(2) .isiow-row-label .isiow-row-label-inner,
.isiow-table thead tr:nth-child(3) .isiow-row-label .isiow-row-label-inner {
    position: absolute;
    inset: 4px 8px;
    display: -webkit-box;
    -webkit-box-orient: vertical;
    -webkit-line-clamp: 4;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: normal;
    word-break: break-word;
}
.isiow-empty-cell {
    background: #fff;
}
.isiow-desc {
    font-weight: 400;
    text-align: left;
    font-size: 0.8rem;
    color: #333;
    white-space: normal;
    word-wrap: break-word;
    overflow-wrap: break-word;
}
.isiow-desc-tooltip {
    position: fixed;
    z-index: 2600;
    display: none;
    max-width: min(680px, calc(100vw - 24px));
    max-height: min(60vh, 420px);
    overflow: auto;
    padding: 12px 14px;
    border: 2px solid transparent;
    border-radius: 10px;
    background:
        linear-gradient(155deg, rgba(252, 254, 255, 0.965) 0%, rgba(241, 247, 255, 0.955) 48%, rgba(230, 239, 250, 0.96) 100%) padding-box,
        linear-gradient(135deg, #f9fcff 0%, #d7e0ec 18%, #91a4bb 50%, #dbe5f2 78%, #f9fcff 100%) border-box;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.92),
        inset 0 -1px 0 rgba(98, 114, 136, 0.26),
        0 0 0 1px rgba(102, 124, 150, 0.26),
        0 14px 34px rgba(15, 23, 42, 0.24);
    color: #d9480f;
    font-size: 1.6rem; /* 约为默认 0.8rem 的两倍 */
    font-weight: 600;
    line-height: 1.35;
    text-shadow:
        0 1px 0 rgba(255, 255, 255, 0.86),
        0 -1px 0 rgba(71, 85, 105, 0.24),
        0 0 1px rgba(15, 23, 42, 0.20);
    white-space: pre-wrap;
    word-break: break-word;
    pointer-events: none;
    -webkit-backdrop-filter: blur(3px);
    backdrop-filter: blur(3px);
}
.isiow-desc-tooltip.active {
    display: block;
}

/* position 仅作删除按钮定位参考；表格单元格仍按原表布局参与排版 */
.isiow-img-cell {
    position: relative;
    text-align: center;
    padding: 6px !important;
    cursor: pointer;
}
/* 图片格即使只读也允许点击预览，鼠标样式统一为手指（pointer），与可编辑角色保持一致 */
.isiow-img-cell.isiow-readonly {
    pointer-events: auto;
    cursor: pointer !important;
}
/* 表头第 3 行统一有 overflow:hidden，会把绝对定位的删除按钮裁掉；仅图片数据格放开，各页一致 */
.isiow-table-fixed thead tr:nth-child(3) td.isiow-img-cell,
.isiow-table-page2 thead tr:nth-child(3) td.isiow-img-cell {
    overflow: visible !important;
}
/* 图片右上角删除按钮：紧凑不影响布局 */
.isiow-img-remove {
    position: absolute;
    left: calc(50% + 40px - 14px);
    top: calc(50% - 30px + 1px);
    width: 14px;
    height: 14px;
    padding: 0;
    margin: 0;
    border: none;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.5);
    color: #fff;
    font-size: 10px;
    line-height: 1;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 600;
    box-shadow: 0 1px 2px rgba(0, 0, 0, 0.2);
}
.isiow-img-remove:hover {
    background: rgba(185, 28, 28, 0.9);
}
.isiow-img-remove:focus {
    outline: 1px solid #1976d2;
    outline-offset: 1px;
}
.isiow-product-placeholder {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 2px;
    width: 80px;
    height: 60px;
    margin: 0 auto;
    border: 1px solid #d8d8d8;
    border-radius: 4px;
    background: linear-gradient(180deg, #f7f7f7 0%, #ececec 100%);
    color: #666;
    font-size: 0.78rem;
    font-weight: 600;
}
.isiow-product-placeholder::before {
    content: '+';
    display: block;
    color: #1976d2;
    font-size: 1.25rem;
    font-weight: 700;
    line-height: 1;
}
.isiow-product-img {
    display: block;
    width: 80px;
    height: 60px;
    object-fit: contain;
    margin: 0 auto;
    background: #f0f0f0;
    border-radius: 4px;
}
.isiow-image-preview-modal {
    position: fixed;
    inset: 0;
    z-index: 2200;
    display: none;
}
.isiow-image-preview-modal.active {
    display: block;
}
.isiow-image-preview-backdrop {
    position: absolute;
    inset: 0;
    background: rgba(0, 0, 0, 0.65);
}
.isiow-image-preview-dialog {
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    max-width: min(92vw, 1200px);
    max-height: 88vh;
    padding: 10px;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 12px 32px rgba(0, 0, 0, 0.35);
}
.isiow-image-preview-img {
    display: block;
    max-width: min(90vw, 1160px);
    max-height: calc(88vh - 20px);
    width: auto;
    height: auto;
    margin: 0 auto;
    object-fit: contain;
}
.isiow-image-preview-close {
    position: absolute;
    right: 8px;
    top: 6px;
    width: 24px;
    height: 24px;
    border: none;
    border-radius: 50%;
    background: rgba(0, 0, 0, 0.45);
    color: #fff;
    font-size: 16px;
    line-height: 1;
    cursor: pointer;
}
.isiow-image-preview-close:hover {
    background: rgba(185, 28, 28, 0.95);
}
.isiow-lock-mask {
    position: fixed;
    inset: 0;
    z-index: 2400;
    display: none;
    align-items: center;
    justify-content: center;
    background: rgba(2, 8, 23, 0.88);
    backdrop-filter: blur(8px);
}
.isiow-lock-mask.active {
    display: flex;
}
.isiow-screen-locked .isiow-container {
    filter: blur(9px) saturate(62%) brightness(0.58);
    transform: scale(1.01);
    transition: filter 0.18s ease, transform 0.18s ease;
    pointer-events: none;
    user-select: none;
}
.isiow-lock-panel {
    width: min(360px, calc(100vw - 24px));
    padding: 18px 18px 16px;
    border-radius: 12px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    background: #f8fafc;
    box-shadow: 0 12px 26px rgba(0, 0, 0, 0.32);
}
.isiow-lock-panel h3 {
    margin: 0 0 6px;
    color: #0f172a;
    font-size: 1rem;
}
.isiow-lock-panel p {
    margin: 0 0 12px;
    color: #475569;
    font-size: 0.86rem;
}
.isiow-lock-password {
    width: 100%;
    height: 38px;
    border: 1px solid #cbd5e1;
    border-radius: 8px;
    padding: 0 10px;
    font-size: 0.95rem;
    color: #0f172a;
    background: #fff;
}
.isiow-lock-password:focus {
    outline: none;
    border-color: #1976d2;
    box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.16);
}
.isiow-lock-error {
    min-height: 18px;
    margin: 7px 0 6px;
    color: #b91c1c;
    font-size: 0.8rem;
}
.isiow-lock-unlock {
    width: 100%;
    height: 36px;
    border: none;
    border-radius: 8px;
    background: #1976d2;
    color: #fff;
    font-size: 0.9rem;
    font-weight: 600;
    cursor: pointer;
}
.isiow-lock-unlock:disabled {
    opacity: 0.7;
    cursor: not-allowed;
}
.isiow-lock-fab {
    position: fixed;
    right: 14px;
    bottom: 14px;
    z-index: 2350;
    height: 34px;
    min-width: 62px;
    border: 1px solid rgba(255, 255, 255, 0.35);
    border-radius: 18px;
    background: rgba(15, 23, 42, 0.78);
    color: #f8fafc;
    font-size: 0.8rem;
    font-weight: 600;
    padding: 0 12px;
    cursor: pointer;
    box-shadow: 0 6px 14px rgba(0, 0, 0, 0.26);
}
.isiow-lock-fab:hover {
    background: rgba(25, 118, 210, 0.9);
}
/* 表体：浅灰分隔线（用 inset 阴影画在背景之上，确保网格线不被颜色覆盖） */
.isiow-table tbody .isiow-td {
    border: none;
    padding: 8px 10px;
    font-size: 0.85rem;
    vertical-align: middle;
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table tbody .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 1px 0 0 0 var(--isiow-grid-line-strong);
}
.isiow-table tbody tr:first-child .isiow-td {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 0 1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table tbody tr:first-child .isiow-td:first-child {
    box-shadow: inset -1px 0 0 0 var(--isiow-grid-line-strong), inset 0 -1px 0 0 var(--isiow-grid-line-strong), inset 1px 0 0 0 var(--isiow-grid-line-strong), inset 0 1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-label {
    font-weight: 600;
    background: #fafafa;
    width: 12%;
    min-width: 140px;
}
/* 第一列跨两行时的对齐：与第二列 PC规格/PCTG规格 两行垂直居中 */
.isiow-label-rowspan {
    vertical-align: middle;
}
.isiow-num {
    text-align: center;
    width: 2%;
    min-width: 32px;
}
/* 重要提示行：蓝色背景突出（网格线由 tbody 的 inset 阴影统一绘制） */
.isiow-row-notice .isiow-td {
    background: #e3f2fd !important;
    font-weight: 600;
}
/* 备注区统一（按第五页基准）：备注1/2/3固定行高，重要提示固定尺寸，避免各页视觉不一致。 */
.isiow-table tbody tr.isiow-row-remark1,
.isiow-table tbody tr.isiow-row-remark2,
.isiow-table tbody tr.isiow-row-remark3,
.isiow-table tbody tr.isiow-row-remark1 + tr,
.isiow-table tbody tr.isiow-row-remark1 + tr + tr {
    height: 40px !important;
    min-height: 40px !important;
    max-height: 40px !important;
}
.isiow-table tbody tr.isiow-row-remark1 .isiow-td,
.isiow-table tbody tr.isiow-row-remark2 .isiow-td,
.isiow-table tbody tr.isiow-row-remark3 .isiow-td,
.isiow-table tbody tr.isiow-row-remark1 + tr .isiow-td,
.isiow-table tbody tr.isiow-row-remark1 + tr + tr .isiow-td {
    height: 40px !important;
    min-height: 40px !important;
    max-height: 40px !important;
    overflow: hidden !important;
    white-space: nowrap !important;
    text-overflow: ellipsis;
}
.isiow-table tbody tr.isiow-row-notice {
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
}
.isiow-table tbody tr.isiow-row-notice .isiow-td {
    height: 46px !important;
    min-height: 46px !important;
    max-height: 46px !important;
    overflow: hidden !important;
    white-space: nowrap !important;
    text-overflow: ellipsis;
}
/* 备注区标签列（第1列）统一宽度，并强制显示列分隔线。 */
.isiow-table tbody tr.isiow-row-remark1 .isiow-td:first-child,
.isiow-table tbody tr.isiow-row-remark2 .isiow-td:first-child,
.isiow-table tbody tr.isiow-row-remark3 .isiow-td:first-child,
.isiow-table tbody tr.isiow-row-remark1 + tr .isiow-td:first-child,
.isiow-table tbody tr.isiow-row-remark1 + tr + tr .isiow-td:first-child,
.isiow-table tbody tr.isiow-row-notice .isiow-td:first-child {
    width: 140px !important;
    min-width: 140px !important;
    max-width: 140px !important;
    border-left: 1px solid #808080 !important;
    border-right: 1px solid #808080 !important;
    box-shadow: inset -1px 0 0 0 #808080 !important;
}

/* Grid Layer 3（业务覆盖层）：
   价格/汇率/FOB 区域视觉压缩（5行视觉并为3块）：
   保持底层5行数据结构不变，仅压缩行高和分隔线，避免影响计算/导出/权限。 */
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pc"],
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pctg"],
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="fob-pc"],
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="fob-pctg"] {
    height: var(--isiow-zonea-compact-row-height) !important;
    min-height: var(--isiow-zonea-compact-row-height) !important;
    max-height: var(--isiow-zonea-compact-row-height) !important;
}
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="usd-rate"] {
    height: 32px !important;
    min-height: 32px !important;
    max-height: 32px !important;
}
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pc"] .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pctg"] .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="fob-pc"] .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="fob-pctg"] .isiow-td {
    height: var(--isiow-zonea-compact-row-height) !important;
    min-height: var(--isiow-zonea-compact-row-height) !important;
    max-height: var(--isiow-zonea-compact-row-height) !important;
    padding: 2px 8px !important;
    font-size: 0.78rem;
    line-height: 1.15;
    overflow: hidden !important;
}
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="usd-rate"] .isiow-td {
    height: 32px !important;
    min-height: 32px !important;
    max-height: 32px !important;
    padding: 4px 8px !important;
    overflow: hidden !important;
}
/* 压缩区网格线增强：保证竖线清晰可见 */
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role] .isiow-td {
    box-shadow: none !important;
    border-right: 1px solid #808080 !important;
    border-bottom: 1px solid #808080 !important;
}
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role] .isiow-td:first-child {
    border-left: 1px solid #808080 !important;
}
/* 修复：人民币-PC 行在冻结列覆盖下可能丢失顶部横线，显式补齐顶边。 */
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pc"] .isiow-td {
    border-top: 1px solid #808080 !important;
}
/* 关键分隔线保持清晰：PC/PCTG、人民币价格/汇率、汇率/FOB 都保留横线 */
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pc"] .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="rmb-pctg"] .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="usd-rate"] .isiow-td,
.isiow-table-page2 tbody.isiow-zonea-compressed tr[data-isiow-row-role="fob-pc"] .isiow-td {
    border-bottom-color: #808080 !important;
}
.isiow-notice-cell {
    color: #1565c0;
}
.isiow-instruction {
    font-size: 0.8rem;
    color: #666;
    background: #fafafa;
}
/* 列宽由 colgroup 控制，此处仅作后备 */
.isiow-table .isiow-th:first-child,
.isiow-table .isiow-td:first-child {
    width: 12%;
    min-width: 140px;
}
.isiow-table .isiow-th:nth-child(2),
.isiow-table .isiow-td:nth-child(2) {
    width: 14%;
    min-width: 120px;
}
.isiow-table tbody .isiow-td:nth-child(n+3) {
    width: 9.25%;
    min-width: 88px;
}
/* 第一页专属作用域（#isiow-page1）：
   通过页面前缀收口高冲突 !important，避免误伤第2-10页。 */
/* 第一页表体：整表网格线用 border 画全，横竖都连续（先于冻结列规则） */
#isiow-page1 .isiow-table-wrap .isiow-table tbody .isiow-td {
    border-right: 1px solid #808080 !important;
    border-bottom: 1px solid #808080 !important;
    box-shadow: none !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody .isiow-td:first-child {
    border-left: 1px solid #808080 !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr:first-child .isiow-td {
    border-top: 1px solid #808080 !important;
}
/* 第一页同样补齐人民币-PC 行顶边，避免“PC规格”格顶线偶发不可见。 */
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr[data-isiow-row-role="rmb-pc"] .isiow-td {
    border-top: 1px solid #808080 !important;
}
/* 第一页表体：冻结左两列（按逻辑列打标，正确处理 rowspan / colspan） */
#isiow-page1 .isiow-table-wrap .isiow-table tbody .isiow-sticky-col-1 {
    position: sticky;
    left: 0;
    z-index: 2;
    background: #fff;
    box-shadow:
        inset -1px 0 0 0 #808080,
        inset 0 -1px 0 0 #808080,
        inset 1px 0 0 0 #808080,
        2px 0 4px rgba(0,0,0,0.07);
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody .isiow-sticky-col-2 {
    position: sticky;
    left: 140px;
    z-index: 2;
    background: #fff;
    box-shadow:
        inset -1px 0 0 0 #808080,
        inset 0 -1px 0 0 #808080,
        2px 0 4px rgba(0,0,0,0.07);
}
/* 第一页表体：逻辑第2列右侧画分隔线，确保“中国大陆/开放”“PC规格/125”之间竖线贯穿 */
#isiow-page1 .isiow-table-wrap .isiow-table tbody .isiow-sticky-col-2::after {
    content: '';
    position: absolute;
    top: -1px;
    right: 0;
    bottom: -1px;
    width: 1px;
    background: #808080;
    pointer-events: none;
    z-index: 4;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-sticky-col-1 {
    background: #bfdbfe !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-sticky-col-2 {
    background: #dbeafe !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-sticky-col-1 {
    background: #bbf7d0 !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-sticky-col-2 {
    background: #dcfce7 !important;
}
/* 成本核算行：不用 ::after 伪元素，全部改用 !important border 来画网格线（见下方页1/页2-10的具体规则） */
/* 第一页表体：成本核算行用 !important border 确保横竖网格线都显示 */
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur {
    height: var(--isiow-cost-row-height) !important;
    min-height: var(--isiow-cost-row-height) !important;
    max-height: var(--isiow-cost-row-height) !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-td,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-td {
    height: var(--isiow-cost-row-height) !important;
    min-height: var(--isiow-cost-row-height) !important;
    max-height: var(--isiow-cost-row-height) !important;
    padding: 2px 8px !important;
    line-height: 1.15 !important;
    white-space: nowrap !important;
    overflow: hidden !important;
    text-overflow: ellipsis;
    border-top: 1px solid #808080 !important;
    border-right: 1px solid #808080 !important;
    border-left: none !important;
    box-shadow: none !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-td {
    border-bottom: none !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-td {
    border-bottom: 1px solid #808080 !important;
}
/* 第一页：视觉最后一行（研发部/采购部账号下）补底边，与第2-10页规则一致。 */
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd.isiow-tbody-end .isiow-td,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-tbody-end .isiow-td {
    border-bottom: 1px solid #808080 !important;
}
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-td:first-child,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-td:first-child {
    border-left: 1px solid #808080 !important;
}
/* 第一页表体成本核算行关闭 ::after 避免双线 */
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-td::after,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-td::after {
    display: none !important;
}
/* 但成本核算行逻辑第2列右边这条分隔线必须保留，否则颜色块会把线盖掉 */
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-sticky-col-2::after,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-sticky-col-2::after {
    display: block !important;
}
.isiow-cost-rd td,
tr.isiow-cost-rd .isiow-td {
    background: #dbeafe !important;
}
.isiow-cost-rd .isiow-label {
    background: #bfdbfe !important;
    color: #1e40af;
}
.isiow-cost-pur td,
tr.isiow-cost-pur .isiow-td {
    background: #dcfce7 !important;
}
.isiow-cost-pur .isiow-label {
    background: #bbf7d0 !important;
    color: #166534;
}
/* 静态底色中和：统一回到白底，动态高亮层（bg/age/anomaly/audit）继续覆盖 */
.isiow-table-fixed thead .isiow-th,
.isiow-table-fixed thead .isiow-td,
.isiow-table-page2 thead .isiow-th,
.isiow-table-page2 thead .isiow-td,
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-label,
.isiow-label,
.isiow-row-notice .isiow-td,
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td,
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td:first-child,
.isiow-table-page2 tbody tr.isiow-row-remark1 .isiow-td:nth-child(2),
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-sticky-col-1.isiow-label,
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-sticky-col-1:not(.isiow-label),
.isiow-table-page2 tbody tr.isiow-cost-rd .isiow-sticky-col-2,
.isiow-table-page2 tbody tr.isiow-cost-rd td:nth-child(2),
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-sticky-col-1.isiow-label,
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-sticky-col-1:not(.isiow-label),
.isiow-table-page2 tbody tr.isiow-cost-pur .isiow-sticky-col-2,
.isiow-table-page2 tbody tr.isiow-cost-pur td:nth-child(2),
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-sticky-col-1,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-rd .isiow-sticky-col-2,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-sticky-col-1,
#isiow-page1 .isiow-table-wrap .isiow-table tbody tr.isiow-cost-pur .isiow-sticky-col-2,
.isiow-cost-rd td,
tr.isiow-cost-rd .isiow-td,
.isiow-cost-rd .isiow-label,
.isiow-cost-pur td,
tr.isiow-cost-pur .isiow-td,
.isiow-cost-pur .isiow-label,
.isiow-extra-row .isiow-extra-row-label {
    background: #fff !important;
}
.isiow-cost-rd .isiow-label,
.isiow-cost-pur .isiow-label {
    color: inherit !important;
}
/* 单元格背景标记黄/绿/蓝/红（仅可编辑格；与成本行底色可叠） */
.isiow-bg-yellow { background-color: #fef3c7 !important; }
.isiow-bg-green  { background-color: #d1fae5 !important; }
.isiow-bg-blue   { background-color: #dbeafe !important; }
.isiow-bg-red    { background-color: #fee2e2 !important; }
/* 第一列冻结格手动上色：覆盖各页实际使用的 .isiow-table-page2 结构 */
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-bg-yellow { background: #fef3c7 !important; background-color: #fef3c7 !important; }
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-bg-green  { background: #d1fae5 !important; background-color: #d1fae5 !important; }
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-bg-blue   { background: #dbeafe !important; background-color: #dbeafe !important; }
.isiow-table-page2 tbody .isiow-sticky-col-1.isiow-bg-red    { background: #fee2e2 !important; background-color: #fee2e2 !important; }
/* 表头手动上色优先于静态白底 */
.isiow-table thead [data-isiow-key].isiow-bg-yellow { background-color: #fef3c7 !important; }
.isiow-table thead [data-isiow-key].isiow-bg-green  { background-color: #d1fae5 !important; }
.isiow-table thead [data-isiow-key].isiow-bg-blue   { background-color: #dbeafe !important; }
.isiow-table thead [data-isiow-key].isiow-bg-red    { background-color: #fee2e2 !important; }
/* 近5天改动高亮（自动标记优先于人工上色）：底色 + 边框 + 角标 + 轻动画 */
.isiow-table [data-isiow-key].isiow-age-d0,
.isiow-table [data-isiow-key].isiow-age-d1,
.isiow-table [data-isiow-key].isiow-age-d2,
.isiow-table [data-isiow-key].isiow-age-d3,
.isiow-table [data-isiow-key].isiow-age-d4 {
    position: relative;
    background-clip: padding-box;
}
/* 冻结列带自动标记时必须保持 sticky，避免 left 值在 relative 下变成位移造成“整列右偏” */
.isiow-table-page2 .isiow-sticky-col-1.isiow-age-d0,
.isiow-table-page2 .isiow-sticky-col-1.isiow-age-d1,
.isiow-table-page2 .isiow-sticky-col-1.isiow-age-d2,
.isiow-table-page2 .isiow-sticky-col-1.isiow-age-d3,
.isiow-table-page2 .isiow-sticky-col-1.isiow-age-d4,
.isiow-table-page2 .isiow-sticky-col-2.isiow-age-d0,
.isiow-table-page2 .isiow-sticky-col-2.isiow-age-d1,
.isiow-table-page2 .isiow-sticky-col-2.isiow-age-d2,
.isiow-table-page2 .isiow-sticky-col-2.isiow-age-d3,
.isiow-table-page2 .isiow-sticky-col-2.isiow-age-d4 {
    position: sticky !important;
}
.isiow-table [data-isiow-key].isiow-age-d0::before,
.isiow-table [data-isiow-key].isiow-age-d1::before,
.isiow-table [data-isiow-key].isiow-age-d2::before,
.isiow-table [data-isiow-key].isiow-age-d3::before,
.isiow-table [data-isiow-key].isiow-age-d4::before {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 6px;
    height: 6px;
    border-radius: 1px;
    pointer-events: none;
    z-index: 2;
}
/* age-d* 的 box-shadow 串入网格线 inset，避免覆盖底层 1px 网格 shadow，
   保证带高亮的格子和相邻格仍按同一基准对齐（视觉上不再有“错位”错觉）。 */
.isiow-table [data-isiow-key].isiow-age-d0 {
    background-color: rgba(245, 158, 11, 0.44) !important;
    box-shadow:
        inset 0 0 0 2px rgba(194, 65, 12, 0.95),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table [data-isiow-key].isiow-age-d0::before {
    background: #b45309;
}
.isiow-table [data-isiow-key].isiow-age-d1 {
    background-color: rgba(245, 158, 11, 0.34) !important;
    box-shadow:
        inset 0 0 0 2px rgba(217, 119, 6, 0.86),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table [data-isiow-key].isiow-age-d1::before {
    background: #d97706;
}
.isiow-table [data-isiow-key].isiow-age-d2 {
    background-color: rgba(245, 158, 11, 0.25) !important;
    box-shadow:
        inset 0 0 0 1px rgba(217, 119, 6, 0.74),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table [data-isiow-key].isiow-age-d2::before {
    background: #d97706;
}
.isiow-table [data-isiow-key].isiow-age-d3 {
    background-color: rgba(245, 158, 11, 0.16) !important;
    box-shadow:
        inset 0 0 0 1px rgba(217, 119, 6, 0.52),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table [data-isiow-key].isiow-age-d3::before {
    background: rgba(217, 119, 6, 0.76);
}
.isiow-table [data-isiow-key].isiow-age-d4 {
    background-color: rgba(245, 158, 11, 0.10) !important;
    box-shadow:
        inset 0 0 0 1px rgba(217, 119, 6, 0.34),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong);
}
.isiow-table [data-isiow-key].isiow-age-d4::before {
    background: rgba(217, 119, 6, 0.58);
}
/* 防御性垂直居中：admin-only 单元格（左一/左二）以及 .isiow-num 序号格，
   即使被 contenteditable 或 age-d* 影响，也强制保持表格单元格的 middle 对齐。 */
.isiow-table tbody [data-isiow-admin-only="1"],
.isiow-table tbody .isiow-num {
    vertical-align: middle !important;
}
/* === 5天改动高亮：覆盖所有静态底色 reset / cost / remark / notice / sticky-col / thead ===
   背景色和 box-shadow 通过"类名重复"技巧把特异性拉到 (0,5,0)，
   稳定盖过 cost-rd/cost-pur (0,4,2)、remark1 (0,3,2)、sticky-col-1.label (0,4,1)、thead (0,3,1)
   以及 cost 行 .isiow-td 上的 box-shadow:none !important (0,3,2)。 */
.isiow-table [data-isiow-key].isiow-age-d0.isiow-age-d0.isiow-age-d0 {
    background-color: rgba(245, 158, 11, 0.44) !important;
    box-shadow:
        inset 0 0 0 2px rgba(194, 65, 12, 0.95),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
}
.isiow-table [data-isiow-key].isiow-age-d1.isiow-age-d1.isiow-age-d1 {
    background-color: rgba(245, 158, 11, 0.34) !important;
    box-shadow:
        inset 0 0 0 2px rgba(217, 119, 6, 0.86),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
}
.isiow-table [data-isiow-key].isiow-age-d2.isiow-age-d2.isiow-age-d2 {
    background-color: rgba(245, 158, 11, 0.25) !important;
    box-shadow:
        inset 0 0 0 1px rgba(217, 119, 6, 0.74),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
}
.isiow-table [data-isiow-key].isiow-age-d3.isiow-age-d3.isiow-age-d3 {
    background-color: rgba(245, 158, 11, 0.16) !important;
    box-shadow:
        inset 0 0 0 1px rgba(217, 119, 6, 0.52),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
}
.isiow-table [data-isiow-key].isiow-age-d4.isiow-age-d4.isiow-age-d4 {
    background-color: rgba(245, 158, 11, 0.10) !important;
    box-shadow:
        inset 0 0 0 1px rgba(217, 119, 6, 0.34),
        inset -1px 0 0 0 var(--isiow-grid-line-strong),
        inset 0 -1px 0 0 var(--isiow-grid-line-strong) !important;
}
/* 所有数据单元格文字居中 */
.isiow-table tbody .isiow-td {
    text-align: center;
}
.isiow-table tbody .isiow-td.isiow-label,
.isiow-table tbody .isiow-td.isiow-label-rowspan {
    text-align: center;
}
/* 最右列：保留右侧网格线（inset 已包含，此处无需额外规则） */
