/* ==========================================================================
   装修增项估算计算器 /tool/renovation-addon-calc
   独立设计「工程变更签证台」风：墨绿工签 + 米白单据 + 安全橙标注
   深浅主题跟随导航栏主题按钮（html[data-theme]）切换
   ========================================================================== */

.rac-page {
    --rac-bg: #efeae0;
    --rac-paper: #fffdf7;
    --rac-paper-2: #f7f2e8;
    --rac-paper-3: #f1ebdf;
    --rac-ink: #1d2a24;
    --rac-sub: #59675f;
    --rac-muted: #8a968d;
    --rac-line: #ddd5c5;
    --rac-line-soft: #ebe4d6;
    --rac-green: #0f7a6b;
    --rac-green-2: #16a08b;
    --rac-green-soft: rgba(15, 122, 107, 0.10);
    --rac-orange: #d95f26;
    --rac-orange-soft: rgba(217, 95, 38, 0.10);
    --rac-amber: #bd8617;
    --rac-safe: #12885d;
    --rac-watch: #bd8617;
    --rac-danger: #cb3f2b;
    --rac-safe-soft: rgba(18, 136, 93, 0.12);
    --rac-watch-soft: rgba(189, 134, 23, 0.14);
    --rac-danger-soft: rgba(203, 63, 43, 0.12);
    --rac-shadow: 0 10px 28px rgba(56, 47, 33, 0.08);
    --rac-shadow-lg: 0 20px 48px rgba(56, 47, 33, 0.12);
    --rac-r: 18px;
    --rac-r-sm: 11px;
    --rac-num: "Bahnschrift", "DIN Alternate", "Segoe UI Variable Text", ui-sans-serif, system-ui, sans-serif;
    color: var(--rac-ink);
}

[data-theme="dark"] .rac-page {
    --rac-bg: #0f1613;
    --rac-paper: #17201c;
    --rac-paper-2: #1b2621;
    --rac-paper-3: #202d27;
    --rac-ink: #e9f1ec;
    --rac-sub: #a7b7ad;
    --rac-muted: #7b8d82;
    --rac-line: #2d3c34;
    --rac-line-soft: #24322b;
    --rac-green: #4cc4ab;
    --rac-green-2: #6fdcc3;
    --rac-green-soft: rgba(76, 196, 171, 0.14);
    --rac-orange: #f08a52;
    --rac-orange-soft: rgba(240, 138, 82, 0.14);
    --rac-amber: #e6b45a;
    --rac-safe: #4ade9d;
    --rac-watch: #f0b354;
    --rac-danger: #ff7a63;
    --rac-safe-soft: rgba(74, 222, 157, 0.14);
    --rac-watch-soft: rgba(240, 179, 84, 0.14);
    --rac-danger-soft: rgba(255, 122, 99, 0.14);
    --rac-shadow: 0 12px 30px rgba(0, 0, 0, 0.34);
    --rac-shadow-lg: 0 22px 52px rgba(0, 0, 0, 0.46);
}

.rac-page *,
.rac-page *::before,
.rac-page *::after { box-sizing: border-box; }
.rac-page [hidden] { display: none !important; }

/* ============================ 首屏 ============================ */
.rac-hero {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 376px;
    gap: 34px;
    align-items: center;
    padding: 38px 40px 46px;
    margin-bottom: 24px;
    border-radius: 24px;
    overflow: hidden;
    color: #f2fbf7;
    background:
        radial-gradient(120% 160% at 92% -20%, rgba(28, 168, 145, 0.45) 0%, rgba(28, 168, 145, 0) 58%),
        linear-gradient(132deg, #0a2925 0%, #103f37 48%, #16584b 100%);
    box-shadow: 0 20px 48px rgba(8, 33, 28, 0.30);
}

.rac-hero::before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 7px;
    background: repeating-linear-gradient(-45deg, #e8834a 0 14px, #123c34 14px 28px);
    opacity: 0.9;
}

.rac-hero-bg {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background-image:
        linear-gradient(rgba(198, 255, 238, 0.055) 1px, transparent 1px),
        linear-gradient(90deg, rgba(198, 255, 238, 0.055) 1px, transparent 1px);
    background-size: 30px 30px;
    mask-image: linear-gradient(120deg, #000 0%, transparent 72%);
    -webkit-mask-image: linear-gradient(120deg, #000 0%, transparent 72%);
}

.rac-hero-bg::before,
.rac-hero-bg::after {
    content: "";
    position: absolute;
    border: 1px solid rgba(180, 255, 235, 0.22);
    border-radius: 50%;
}
.rac-hero-bg::before {
    width: 340px;
    height: 340px;
    right: -120px;
    top: -130px;
}
.rac-hero-bg::after {
    width: 190px;
    height: 190px;
    right: 40px;
    bottom: -120px;
}

.rac-stamp {
    position: absolute;
    right: 34px;
    top: 22px;
    transform: rotate(-8deg);
    border: 2px solid rgba(232, 131, 74, 0.55);
    border-radius: 8px;
    padding: 5px 10px;
    color: rgba(255, 194, 160, 0.86);
    font: 700 12px/1 var(--rac-num);
    letter-spacing: 0.22em;
    opacity: 0.9;
}

.rac-hero-copy { position: relative; z-index: 1; }

.rac-kicker {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.16em;
    color: #ffcfae;
    background: rgba(232, 131, 74, 0.16);
    border: 1px solid rgba(232, 131, 74, 0.36);
    border-radius: 999px;
    padding: 6px 13px;
    margin-bottom: 16px;
}
.rac-kicker::before {
    content: "";
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: #ff9a5f;
    box-shadow: 0 0 0 4px rgba(255, 154, 95, 0.18);
}

.rac-hero h1 {
    font-size: 40px;
    line-height: 1.16;
    font-weight: 800;
    letter-spacing: -0.02em;
    color: #ffffff;
    margin: 0 0 14px;
}

.rac-hero-sub {
    max-width: 640px;
    font-size: 15px;
    line-height: 1.9;
    color: #cfe4dd;
    margin: 0 0 16px;
}
.rac-hero-sub b {
    color: #ffffff;
    font-weight: 700;
    box-shadow: inset 0 -7px 0 rgba(232, 131, 74, 0.30);
}

.rac-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    list-style: none;
    padding: 0;
    margin: 0 0 22px;
}
.rac-chips li {
    font-size: 12px;
    color: #dcf4ec;
    background: rgba(255, 255, 255, 0.07);
    border: 1px solid rgba(198, 255, 238, 0.18);
    border-radius: 999px;
    padding: 5px 11px;
}

.rac-cta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
}

.rac-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    height: 44px;
    padding: 0 20px;
    border-radius: 12px;
    font-size: 14px;
    font-weight: 700;
    border: 1px solid transparent;
    transition: transform 0.16s ease, box-shadow 0.16s ease, background 0.16s ease, color 0.16s ease;
    white-space: nowrap;
}
.rac-btn:active { transform: translateY(1px); }
.rac-btn--solid {
    color: #0a2b24;
    background: linear-gradient(135deg, #ffc08c 0%, #f09251 100%);
    box-shadow: 0 10px 24px rgba(232, 131, 74, 0.32);
}
.rac-btn--solid:hover { box-shadow: 0 14px 30px rgba(232, 131, 74, 0.44); transform: translateY(-1px); }
.rac-btn--solid span { font-family: var(--rac-num); }
.rac-btn--ghost {
    color: #e9f9f3;
    background: rgba(255, 255, 255, 0.06);
    border-color: rgba(198, 255, 238, 0.28);
}
.rac-btn--ghost:hover { background: rgba(255, 255, 255, 0.12); }

.rac-hero-note {
    margin: 0;
    font-size: 12px;
    color: #9dbfb4;
}

/* ---- 首屏警戒卡 ---- */
.rac-hero-card {
    position: relative;
    z-index: 1;
    padding: 20px 20px 18px;
    border-radius: 18px;
    background: rgba(250, 255, 252, 0.075);
    border: 1px solid rgba(198, 255, 238, 0.20);
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.12);
}

.rac-hc-top {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    font-size: 12.5px;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: #b8d8cb;
    margin-bottom: 14px;
}

.rac-status {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 24px;
    padding: 0 9px;
    border-radius: 999px;
    font-size: 11.5px;
    font-weight: 700;
    white-space: nowrap;
    border: 1px solid transparent;
}
.rac-status::before {
    content: "";
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: currentColor;
}
.rac-status[data-state="safe"] { color: #4ade9d; background: rgba(74, 222, 157, 0.14); border-color: rgba(74, 222, 157, 0.34); }
.rac-status[data-state="watch"] { color: #f5c56f; background: rgba(245, 197, 111, 0.14); border-color: rgba(245, 197, 111, 0.34); }
.rac-status[data-state="over"] { color: #ff9b83; background: rgba(255, 122, 99, 0.16); border-color: rgba(255, 122, 99, 0.36); }
.rac-status[data-state="info"] { color: #b8d8cb; background: rgba(255, 255, 255, 0.08); border-color: rgba(198, 255, 238, 0.24); }

/* 汇总卡在白底上使用高对比状态色 */
.rac-sum-card .rac-status[data-state="safe"] {
    color: var(--rac-safe);
    background: var(--rac-safe-soft);
    border-color: color-mix(in srgb, var(--rac-safe) 38%, transparent);
}
.rac-sum-card .rac-status[data-state="watch"] {
    color: var(--rac-watch);
    background: var(--rac-watch-soft);
    border-color: color-mix(in srgb, var(--rac-watch) 38%, transparent);
}
.rac-sum-card .rac-status[data-state="over"] {
    color: var(--rac-danger);
    background: var(--rac-danger-soft);
    border-color: color-mix(in srgb, var(--rac-danger) 38%, transparent);
}
.rac-sum-card .rac-status[data-state="info"] {
    color: var(--rac-muted);
    background: var(--rac-paper-2);
    border-color: var(--rac-line);
}

.rac-hc-total {
    display: flex;
    flex-direction: column;
    gap: 3px;
    margin-bottom: 4px;
}
.rac-hc-total span {
    font-size: 12px;
    color: #a8c9bd;
}
.rac-hc-total strong {
    font-family: var(--rac-num);
    font-size: 38px;
    line-height: 1.05;
    color: #ffffff;
    letter-spacing: -0.02em;
}

.rac-hc-ratio {
    display: flex;
    align-items: baseline;
    gap: 8px;
    margin-bottom: 12px;
}
.rac-hc-ratio b {
    font-family: var(--rac-num);
    font-size: 22px;
    color: #ffd0a9;
}
.rac-hc-ratio span {
    font-size: 12px;
    color: #a8c9bd;
}

/* ---- 警戒标尺 ---- */
.rac-gauge { margin: 4px 0 2px; }
.rac-gauge-track {
    position: relative;
    display: flex;
    height: 10px;
    border-radius: 999px;
    overflow: visible;
    background: rgba(255, 255, 255, 0.12);
}
.rac-gauge-track .rac-seg {
    height: 100%;
    opacity: 0.9;
}
.rac-gauge-track .rac-seg:first-child { border-radius: 999px 0 0 999px; }
.rac-gauge-track .rac-seg:last-of-type { border-radius: 0 999px 999px 0; }
.rac-seg--safe { background: #2fbf8a; }
.rac-seg--watch { background: #e0a52f; }
.rac-seg--over { background: #e2603f; }
.rac-needle {
    position: absolute;
    top: -5px;
    bottom: -5px;
    width: 3px;
    margin-left: -1.5px;
    border-radius: 3px;
    background: #ffffff;
    box-shadow: 0 0 0 2px rgba(9, 40, 33, 0.55), 0 0 12px rgba(255, 255, 255, 0.55);
    transition: left 0.3s ease;
    z-index: 2;
}
.rac-axis {
    position: relative;
    height: 16px;
    margin-top: 6px;
    font-family: var(--rac-num);
    font-size: 10px;
    color: #96b7ab;
}
.rac-axis span { position: absolute; top: 0; transform: translateX(-50%); white-space: nowrap; }
.rac-axis .is-start { left: 0; transform: none; }
.rac-axis .is-end { right: 0; left: auto; transform: none; }

.rac-hc-fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px;
    margin-top: 14px;
}
.rac-hc-fields label {
    display: flex;
    flex-direction: column;
    gap: 5px;
    font-size: 11.5px;
    color: #a8c9bd;
}
.rac-hc-fields input {
    width: 100%;
    height: 36px;
    padding: 0 10px;
    border-radius: 9px;
    border: 1px solid rgba(198, 255, 238, 0.24);
    background: rgba(8, 38, 32, 0.45);
    color: #ffffff;
    font-family: var(--rac-num);
    font-size: 14px;
    outline: none;
    transition: border-color 0.16s ease, box-shadow 0.16s ease;
}
.rac-hc-fields input:focus {
    border-color: #ffb27d;
    box-shadow: 0 0 0 3px rgba(232, 131, 74, 0.22);
}

.rac-hc-remain {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin: 12px 0 0;
    padding-top: 12px;
    border-top: 1px dashed rgba(198, 255, 238, 0.20);
    font-size: 11.5px;
    color: #a8c9bd;
}
.rac-hc-remain b {
    font-family: var(--rac-num);
    font-size: 14px;
    color: #ffffff;
}

/* ============================ 计算区 ============================ */
.rac-calc {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 344px;
    gap: 22px;
    align-items: start;
}
.rac-ledger { min-width: 0; }

.rac-panel {
    background: var(--rac-paper);
    border: 1px solid var(--rac-line);
    border-radius: var(--rac-r);
    padding: 20px;
    box-shadow: var(--rac-shadow);
}

.rac-panel-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    margin-bottom: 14px;
}
.rac-panel-head h2 {
    margin: 0 0 4px;
    font-size: 20px;
    font-weight: 800;
    letter-spacing: -0.01em;
    color: var(--rac-ink);
}
.rac-panel-head p {
    margin: 0;
    font-size: 12.5px;
    line-height: 1.7;
    color: var(--rac-muted);
}
.rac-load {
    display: flex;
    align-items: center;
    gap: 6px;
    flex-shrink: 0;
    font-size: 11.5px;
    color: var(--rac-muted);
}
.rac-load select {
    height: 34px;
    padding: 0 8px;
    border-radius: 9px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper-2);
    color: var(--rac-ink);
    font-size: 12.5px;
    outline: none;
    max-width: 190px;
}

/* ---- 分类页签 ---- */
.rac-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
}
.rac-tab {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    height: 30px;
    padding: 0 11px;
    border-radius: 999px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper-2);
    color: var(--rac-sub);
    font-size: 12px;
    font-weight: 600;
    transition: all 0.16s ease;
}
.rac-tab em {
    font-style: normal;
    font-family: var(--rac-num);
    font-size: 11px;
    opacity: 0.7;
}
.rac-tab:hover { border-color: var(--rac-green); color: var(--rac-green); }
.rac-tab.is-on {
    background: var(--rac-green);
    border-color: var(--rac-green);
    color: #ffffff;
    box-shadow: 0 6px 14px var(--rac-green-soft);
}

/* ---- 批量条 ---- */
.rac-bulk {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    padding: 9px 12px;
    margin-bottom: 10px;
    border-radius: 10px;
    background: var(--rac-orange-soft);
    border: 1px dashed var(--rac-orange);
    font-size: 12px;
    color: var(--rac-orange);
}
.rac-bulk strong { font-family: var(--rac-num); font-size: 14px; }
.rac-bulk button,
.rac-bulk select {
    height: 28px;
    padding: 0 9px;
    border-radius: 7px;
    border: 1px solid var(--rac-orange);
    background: var(--rac-paper);
    color: var(--rac-orange);
    font-size: 12px;
    font-weight: 600;
}
.rac-bulk label { display: inline-flex; align-items: center; gap: 5px; }

/* ---- 增项库 ---- */
.rac-lib-toggle {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 34px;
    padding: 0 13px;
    margin-bottom: 12px;
    border-radius: 9px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper-2);
    color: var(--rac-sub);
    font-size: 12.5px;
    font-weight: 600;
    transition: all 0.16s ease;
}
.rac-lib-toggle:hover,
.rac-lib-toggle[aria-expanded="true"] {
    border-color: var(--rac-green);
    color: var(--rac-green);
    background: var(--rac-green-soft);
}

.rac-lib {
    padding: 14px;
    margin-bottom: 14px;
    border-radius: 13px;
    border: 1px dashed var(--rac-green);
    background: var(--rac-green-soft);
}
.rac-lib-search {
    width: 100%;
    height: 34px;
    padding: 0 11px;
    margin-bottom: 10px;
    border-radius: 9px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper);
    color: var(--rac-ink);
    font-size: 12.5px;
    outline: none;
}
.rac-lib-search:focus { border-color: var(--rac-green); box-shadow: 0 0 0 3px var(--rac-green-soft); }
.rac-lib-group + .rac-lib-group { margin-top: 12px; }
.rac-lib-group h4 {
    margin: 0 0 7px;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: 0.08em;
    color: var(--rac-green);
}
.rac-lib-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(210px, 1fr));
    gap: 7px;
}
.rac-lib-item {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 7px 9px;
    border-radius: 9px;
    border: 1px solid var(--rac-line-soft);
    background: var(--rac-paper);
}
.rac-lib-item-main { min-width: 0; flex: 1; }
.rac-lib-item-main b {
    display: block;
    font-size: 12.5px;
    color: var(--rac-ink);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.rac-lib-item-main small {
    display: block;
    font-size: 10.5px;
    color: var(--rac-muted);
    font-family: var(--rac-num);
}
.rac-lib-add {
    width: 26px;
    height: 26px;
    flex-shrink: 0;
    border-radius: 7px;
    border: 1px solid var(--rac-green);
    background: var(--rac-green-soft);
    color: var(--rac-green);
    font-size: 16px;
    font-weight: 700;
    line-height: 1;
}
.rac-lib-add:hover { background: var(--rac-green); color: #fff; }
.rac-lib-empty { font-size: 12px; color: var(--rac-muted); }

/* ---- 校验条 ---- */
.rac-error {
    padding: 9px 12px;
    margin-bottom: 10px;
    border-radius: 9px;
    background: var(--rac-danger-soft);
    border: 1px solid var(--rac-danger);
    color: var(--rac-danger);
    font-size: 12.5px;
    line-height: 1.65;
}

/* ---- 明细表 ---- */
.rac-list-head,
.rac-row {
    display: grid;
    grid-template-columns: 26px minmax(120px, 1fr) 88px 64px 54px 84px 88px 58px;
    gap: 6px;
    align-items: center;
}
.rac-list-head {
    padding: 0 9px 7px;
    font-size: 10.5px;
    letter-spacing: 0.04em;
    color: var(--rac-muted);
    border-bottom: 1px solid var(--rac-line-soft);
    margin-bottom: 8px;
}
.rac-list-head span:nth-child(2) { padding-left: 2px; }

.rac-rows {
    display: flex;
    flex-direction: column;
    gap: 7px;
}

.rac-row {
    padding: 8px 9px;
    border-radius: 11px;
    border: 1px solid var(--rac-line-soft);
    background: var(--rac-paper);
    transition: border-color 0.16s ease, box-shadow 0.16s ease;
}
.rac-row:hover { border-color: color-mix(in srgb, var(--rac-green) 46%, var(--rac-line)); }
.rac-row.is-bad { border-color: var(--rac-danger); background: var(--rac-danger-soft); }
.rac-row.is-duplicated { animation: rac-flash 0.9s ease; }
@keyframes rac-flash {
    0% { box-shadow: 0 0 0 0 rgba(15, 122, 107, 0.45); }
    100% { box-shadow: 0 0 0 9px rgba(15, 122, 107, 0); }
}

.rac-cell { min-width: 0; }
.rac-cell::before { display: none; }

.rac-page .rac-row input,
.rac-page .rac-row select {
    width: 100%;
    height: 32px;
    padding: 0 7px;
    border-radius: 7px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper);
    color: var(--rac-ink);
    font-size: 12.5px;
    font-family: inherit;
    outline: none;
    transition: border-color 0.16s ease, box-shadow 0.16s ease;
}
.rac-page .rac-row input:focus,
.rac-page .rac-row select:focus {
    border-color: var(--rac-green);
    box-shadow: 0 0 0 3px var(--rac-green-soft);
}
.rac-page .rac-row input.is-bad { border-color: var(--rac-danger); box-shadow: 0 0 0 2px var(--rac-danger-soft); }
.rac-row input[type="number"] { font-family: var(--rac-num); }
.rc-name input { font-weight: 600; }
.rc-sub b {
    font-family: var(--rac-num);
    font-size: 14px;
    color: var(--rac-ink);
    white-space: nowrap;
}
.rc-ops { display: flex; gap: 4px; justify-content: flex-end; }
.rc-ops button {
    width: 26px;
    height: 26px;
    border-radius: 6px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper-2);
    color: var(--rac-muted);
    font-size: 13px;
    line-height: 1;
    display: grid;
    place-items: center;
}
.rc-ops button:hover { border-color: var(--rac-green); color: var(--rac-green); }
.rc-ops .rc-del:hover { border-color: var(--rac-danger); color: var(--rac-danger); background: var(--rac-danger-soft); }
.rac-check {
    display: grid;
    place-items: center;
}
.rac-check input {
    width: 15px;
    height: 15px;
    accent-color: var(--rac-green);
    cursor: pointer;
}

.rac-empty {
    padding: 26px 16px;
    text-align: center;
    border: 1px dashed var(--rac-line);
    border-radius: 12px;
    background: var(--rac-paper-2);
    color: var(--rac-muted);
    font-size: 13px;
}
.rac-empty b { color: var(--rac-ink); }

.rac-add-row { margin-top: 10px; }
.rac-add-row button {
    width: 100%;
    height: 40px;
    border-radius: 10px;
    border: 1px dashed var(--rac-green);
    background: var(--rac-green-soft);
    color: var(--rac-green);
    font-size: 13px;
    font-weight: 700;
    transition: all 0.16s ease;
}
.rac-add-row button:hover { background: var(--rac-green); color: #ffffff; }

.rac-foot {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px dashed var(--rac-line);
}
.rac-foot button {
    height: 30px;
    padding: 0 11px;
    border-radius: 8px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper-2);
    color: var(--rac-sub);
    font-size: 11.5px;
    font-weight: 600;
}
.rac-foot button:hover { border-color: var(--rac-green); color: var(--rac-green); }
.rac-foot .is-danger:hover { border-color: var(--rac-danger); color: var(--rac-danger); background: var(--rac-danger-soft); }

/* ============================ 汇总卡 ============================ */
.rac-summary { min-width: 0; }
.rac-sum-card {
    position: sticky;
    top: 88px;
    padding: 20px;
    border-radius: var(--rac-r);
    border: 1px solid var(--rac-line);
    background: var(--rac-paper);
    box-shadow: var(--rac-shadow-lg);
}
.rac-sum-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 12px;
}
.rac-sum-head h2 {
    margin: 0;
    font-size: 16px;
    font-weight: 800;
    letter-spacing: -0.01em;
}
.rac-sum-total {
    display: flex;
    flex-direction: column;
    gap: 2px;
    padding-bottom: 12px;
}
.rac-sum-total span { font-size: 11.5px; color: var(--rac-muted); }
.rac-sum-total strong {
    font-family: var(--rac-num);
    font-size: 40px;
    line-height: 1.02;
    letter-spacing: -0.02em;
    color: var(--rac-ink);
}
.rac-sum-total em {
    font-style: normal;
    font-family: var(--rac-num);
    font-size: 12px;
    color: var(--rac-sub);
}

.rac-sum-gauge { margin: 2px 0 14px; }
.rac-sum-gauge .rac-gauge-track { background: var(--rac-paper-3); }
.rac-sum-gauge .rac-needle { box-shadow: 0 0 0 2px var(--rac-paper), 0 0 0 4px var(--rac-green); }
.rac-sum-gauge .rac-axis { color: var(--rac-muted); }

.rac-sum-fields {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
    padding: 12px;
    margin-bottom: 12px;
    border-radius: 11px;
    background: var(--rac-paper-2);
    border: 1px solid var(--rac-line-soft);
}
.rac-sum-fields label {
    display: flex;
    flex-direction: column;
    gap: 4px;
    font-size: 10.5px;
    color: var(--rac-muted);
}
.rac-sum-fields input,
.rac-sum-fields select {
    width: 100%;
    height: 33px;
    padding: 0 8px;
    border-radius: 7px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper);
    color: var(--rac-ink);
    font-family: var(--rac-num);
    font-size: 13px;
    outline: none;
}
.rac-sum-fields label:last-child { grid-column: 1 / -1; }
.rac-sum-fields input:focus,
.rac-sum-fields select:focus { border-color: var(--rac-green); box-shadow: 0 0 0 3px var(--rac-green-soft); }

.rac-metrics {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
    margin-bottom: 14px;
}
.rac-metric {
    padding: 8px 9px;
    border-radius: 9px;
    border: 1px solid var(--rac-line-soft);
    background: var(--rac-paper-2);
}
.rac-metric span { display: block; font-size: 10.5px; color: var(--rac-muted); }
.rac-metric b {
    display: block;
    margin-top: 2px;
    font-family: var(--rac-num);
    font-size: 15px;
    color: var(--rac-ink);
}
.rac-metric b.is-danger { color: var(--rac-danger); }
.rac-metric b.is-safe { color: var(--rac-safe); }

.rac-cat-break { margin-bottom: 12px; }
.rac-cat-break h3 {
    margin: 0 0 7px;
    font-size: 12px;
    font-weight: 700;
    color: var(--rac-sub);
}
.rac-cat-row {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr) 74px 42px;
    gap: 6px;
    align-items: center;
    padding: 4px 0;
    font-size: 11px;
}
.rac-cat-name { color: var(--rac-sub); white-space: nowrap; }
.rac-cat-bar {
    height: 6px;
    border-radius: 999px;
    background: var(--rac-paper-3);
    overflow: hidden;
}
.rac-cat-bar i {
    display: block;
    height: 100%;
    width: 0;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rac-green) 0%, var(--rac-green-2) 100%);
    transition: width 0.3s ease;
}
.rac-cat-val {
    text-align: right;
    font-family: var(--rac-num);
    color: var(--rac-ink);
    white-space: nowrap;
}
.rac-cat-pct {
    text-align: right;
    font-family: var(--rac-num);
    color: var(--rac-muted);
}

.rac-tips {
    display: flex;
    flex-direction: column;
    gap: 6px;
    margin-bottom: 14px;
}
.rac-tip {
    display: flex;
    gap: 7px;
    padding: 8px 9px;
    border-radius: 8px;
    background: var(--rac-watch-soft);
    color: var(--rac-watch);
    font-size: 11.5px;
    line-height: 1.6;
}
.rac-tip.is-danger { background: var(--rac-danger-soft); color: var(--rac-danger); }
.rac-tip.is-ok { background: var(--rac-safe-soft); color: var(--rac-safe); }
.rac-tip b { font-weight: 700; }

.rac-sum-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 7px;
}
.rac-sum-actions .rac-act {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    height: 38px;
    border-radius: 9px;
    border: 1px solid var(--rac-line);
    background: var(--rac-paper-2);
    color: var(--rac-sub);
    font-size: 12.5px;
    font-weight: 700;
    transition: all 0.16s ease;
}
.rac-sum-actions .rac-act:hover { border-color: var(--rac-green); color: var(--rac-green); background: var(--rac-green-soft); }
.rac-sum-actions .rac-act--main {
    grid-column: 1 / -1;
    background: var(--rac-green);
    border-color: var(--rac-green);
    color: #ffffff;
    box-shadow: 0 8px 18px var(--rac-green-soft);
}
.rac-sum-actions .rac-act--main:hover { background: var(--rac-green-2); color: #ffffff; }
.rac-sum-note {
    margin: 10px 0 0;
    font-size: 10.5px;
    line-height: 1.6;
    color: var(--rac-muted);
    text-align: center;
}

/* ============================ A4 变更单 ============================ */
.rac-sheet-wrap {
    margin-top: 26px;
    padding: 18px;
    border-radius: var(--rac-r);
    background: var(--rac-paper-3);
    border: 1px solid var(--rac-line);
}
.rac-sheet-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    margin-bottom: 12px;
    font-size: 12px;
    color: var(--rac-muted);
}
.rac-sheet-label b { color: var(--rac-ink); font-size: 13px; }

.rac-sheet {
    max-width: 820px;
    margin: 0 auto;
    padding: 34px 38px 30px;
    background: #ffffff;
    color: #1f2a24;
    border-radius: 6px;
    box-shadow: 0 12px 30px rgba(40, 35, 25, 0.14);
    font-family: "PingFang SC", "Microsoft YaHei", "Songti SC", serif;
}
.rac-sheet-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    padding-bottom: 12px;
    border-bottom: 2px solid #1f2a24;
}
.rac-sheet-head h2 {
    margin: 0;
    font-size: 22px;
    letter-spacing: 0.08em;
    font-weight: 800;
    color: #1f2a24;
}
.rac-sheet-head p {
    margin: 0;
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    font-size: 11px;
    color: #5b675f;
}
.rac-sheet-head b { color: #1f2a24; font-family: var(--rac-num); }
.rac-sheet-meta {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 6px 12px;
    padding: 12px 0;
    font-size: 11px;
    color: #5b675f;
}
.rac-sheet-meta b { color: #1f2a24; font-family: var(--rac-num); }
.rac-sheet-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 11.5px;
}
.rac-sheet-table th,
.rac-sheet-table td {
    border: 1px solid #cfd6d1;
    padding: 7px 8px;
    text-align: left;
    vertical-align: middle;
}
.rac-sheet-table thead th {
    background: #f1f5f2;
    font-weight: 700;
    color: #1f2a24;
}
.rac-sheet-table td.num,
.rac-sheet-table th.num { text-align: right; font-family: var(--rac-num); }
.rac-sheet-table tbody tr:nth-child(even) td { background: #fafbfa; }
.rac-sheet-table tfoot th {
    background: #f1f5f2;
    font-weight: 700;
}
.rac-sheet-table tfoot .rac-sheet-total th { border-top: 2px solid #1f2a24; }
.rac-sheet-table tfoot .rac-sheet-ratio td,
.rac-sheet-table tfoot .rac-sheet-ratio th {
    font-family: var(--rac-num);
    color: #b0451f;
}
.rac-sheet-notes {
    margin: 14px 0 0;
    padding: 0;
    list-style: none;
    font-size: 10px;
    line-height: 1.7;
    color: #6b7770;
}
.rac-sheet-notes li { position: relative; padding-left: 12px; }
.rac-sheet-notes li::before {
    content: "·";
    position: absolute;
    left: 2px;
    color: #1f2a24;
}
.rac-sheet-sign {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    margin-top: 24px;
    padding-top: 10px;
    border-top: 1px dashed #b9c2bc;
    font-size: 11px;
    color: #5b675f;
}

/* ============================ 正文内容 ============================ */
.rac-content {
    margin-top: 36px;
    padding: 6px 2px 0;
}
.rac-content h2 {
    position: relative;
    margin: 38px 0 12px;
    padding-left: 13px;
    font-size: 23px;
    font-weight: 800;
    letter-spacing: -0.01em;
    color: var(--rac-ink);
    line-height: 1.35;
}
.rac-content h2::before {
    content: "";
    position: absolute;
    left: 0;
    top: 6px;
    bottom: 4px;
    width: 4px;
    border-radius: 2px;
    background: var(--rac-orange);
}
.rac-content h2:first-child { margin-top: 10px; }
.rac-content p {
    margin: 0 0 12px;
    font-size: 15px;
    line-height: 1.95;
    color: var(--rac-sub);
}
.rac-content p b,
.rac-content li b {
    color: var(--rac-ink);
    font-weight: 700;
    background: linear-gradient(transparent 62%, var(--rac-orange-soft) 62%);
}
.rac-content ul,
.rac-content ol { margin: 0 0 16px; padding-left: 22px; }
.rac-content li {
    margin-bottom: 9px;
    font-size: 14.5px;
    line-height: 1.85;
    color: var(--rac-sub);
}

.rac-table-scroll {
    overflow-x: auto;
    margin-bottom: 18px;
    border-radius: 12px;
    border: 1px solid var(--rac-line);
    -webkit-overflow-scrolling: touch;
}
.rac-table {
    width: 100%;
    min-width: 640px;
    border-collapse: collapse;
    font-size: 13px;
    background: var(--rac-paper);
}
.rac-table th,
.rac-table td {
    padding: 10px 12px;
    text-align: left;
    border-bottom: 1px solid var(--rac-line-soft);
}
.rac-table thead th {
    background: var(--rac-paper-2);
    color: var(--rac-sub);
    font-size: 12px;
    font-weight: 700;
    white-space: nowrap;
}
.rac-table tbody tr:last-child td { border-bottom: none; }
.rac-table tbody tr:hover td { background: var(--rac-green-soft); }
.rac-table td b { color: var(--rac-ink); }
.rac-table td:nth-child(3) { font-family: var(--rac-num); white-space: nowrap; }

.rac-factors { counter-reset: rac-f; list-style: none; padding-left: 0; }
.rac-factors li {
    position: relative;
    padding-left: 36px;
    min-height: 30px;
}
.rac-factors li::before {
    counter-increment: rac-f;
    content: counter(rac-f, decimal-leading-zero);
    position: absolute;
    left: 0;
    top: 1px;
    width: 25px;
    height: 25px;
    border-radius: 8px;
    display: grid;
    place-items: center;
    background: var(--rac-green-soft);
    color: var(--rac-green);
    font-family: var(--rac-num);
    font-size: 11px;
    font-weight: 700;
}

.rac-tip-list { list-style: none; padding-left: 0; }
.rac-tip-list li {
    position: relative;
    padding: 11px 14px 11px 38px;
    border-radius: 11px;
    border: 1px solid var(--rac-line-soft);
    background: var(--rac-paper);
}
.rac-tip-list li::before {
    content: "✓";
    position: absolute;
    left: 13px;
    top: 11px;
    width: 17px;
    height: 17px;
    border-radius: 50%;
    display: grid;
    place-items: center;
    background: var(--rac-safe-soft);
    color: var(--rac-safe);
    font-size: 10px;
    font-weight: 700;
}

.rac-faq { margin-top: 34px; }
.rac-faq h2 { margin-top: 0; }

/* ============================ 提示条 ============================ */
.rac-toast {
    position: fixed;
    left: 50%;
    bottom: 30px;
    z-index: 9999;
    transform: translateX(-50%) translateY(12px);
    max-width: 86vw;
    padding: 11px 20px;
    border-radius: 999px;
    background: rgba(20, 40, 33, 0.95);
    color: #f2fbf7;
    font-size: 13.5px;
    font-weight: 600;
    text-align: center;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.24);
    opacity: 0;
    pointer-events: none;
    transition: opacity 0.2s ease, transform 0.2s ease;
}
.rac-toast.is-show { opacity: 1; transform: translateX(-50%) translateY(0); }

/* ============================ 响应式 ============================ */
@media (max-width: 1120px) {
    .rac-hero { grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; padding: 32px 30px 40px; }
    .rac-hero h1 { font-size: 34px; }
    .rac-calc { grid-template-columns: minmax(0, 1fr) 320px; }
    .rac-list-head,
    .rac-row { grid-template-columns: 24px minmax(100px, 1fr) 82px 58px 50px 76px 80px 54px; gap: 5px; }
    .rac-page .rac-row input,
    .rac-page .rac-row select { padding: 0 6px; font-size: 12px; }
}

@media (max-width: 980px) {
    .rac-hero { grid-template-columns: 1fr; }
    .rac-hero-card { max-width: 520px; }
    .rac-calc { grid-template-columns: 1fr; }
    .rac-summary { order: -1; }
    .rac-sum-card { position: static; }
    .rac-sum-fields label:last-child { grid-column: auto; }
    .rac-sum-fields { grid-template-columns: 1fr 1fr 1fr; }
}

@media (max-width: 760px) {
    .rac-hero { padding: 26px 20px 34px; border-radius: 20px; }
    .rac-hero h1 { font-size: 29px; }
    .rac-stamp { display: none; }
    .rac-chips { margin-bottom: 18px; }
    .rac-btn { height: 42px; padding: 0 16px; font-size: 13px; }
    .rac-cta { gap: 8px; }
    .rac-hero-card { max-width: none; padding: 16px; }
    .rac-hc-total strong { font-size: 32px; }
    .rac-panel { padding: 15px; }
    .rac-panel-head { flex-direction: column; gap: 10px; }
    .rac-load { width: 100%; justify-content: space-between; }
    .rac-load select { flex: 1; max-width: none; }
    .rac-sum-card { padding: 16px; }
    .rac-sum-total strong { font-size: 34px; }
    .rac-sum-fields { grid-template-columns: 1fr 1fr; }
    .rac-list-head { display: none; }
    .rac-row {
        grid-template-columns: 26px repeat(2, minmax(0, 1fr));
        gap: 8px;
        padding: 12px;
    }
    .rac-row .rc-name { grid-column: 2 / -1; }
    .rac-row .rc-cat { grid-column: 2 / 3; }
    .rac-row .rc-qty { grid-column: 3 / 4; }
    .rac-row .rc-unit { grid-column: 2 / 3; }
    .rac-row .rc-price { grid-column: 3 / 4; }
    .rac-row .rc-sub { grid-column: 2 / 3; display: flex; align-items: center; gap: 5px; }
    .rac-row .rc-ops { grid-column: 3 / 4; }
    .rac-cell::before {
        content: attr(data-label);
        display: block;
        margin-bottom: 3px;
        font-size: 10px;
        color: var(--rac-muted);
    }
    .rc-name::before { display: none; }
    .rac-check { align-self: start; padding-top: 7px; }
    .rac-check input { width: 17px; height: 17px; }
    .rac-sheet-wrap { padding: 10px; }
    .rac-sheet { padding: 22px 16px; }
    .rac-sheet-head { flex-direction: column; align-items: flex-start; gap: 8px; }
    .rac-sheet-head h2 { font-size: 18px; }
    .rac-sheet-meta { grid-template-columns: 1fr 1fr; }
    .rac-content h2 { font-size: 20px; }
    .rac-content p { font-size: 14.5px; }
}

@media (max-width: 520px) {
    .rac-hero h1 { font-size: 25px; }
    .rac-hero-sub { font-size: 14px; }
    .rac-hc-fields { grid-template-columns: 1fr; }
    .rac-sum-fields { grid-template-columns: 1fr; }
    .rac-metrics { grid-template-columns: 1fr 1fr; }
    .rac-tab { height: 28px; padding: 0 9px; font-size: 11.5px; }
    .rac-lib-grid { grid-template-columns: 1fr; }
    .rac-foot { gap: 6px; }
    .rac-foot button { flex: 1 1 44%; }
    .rac-sum-actions .rac-act { font-size: 12px; }
}

/* ============================ 深色主题补充 ============================ */
[data-theme="dark"] .rac-page input,
[data-theme="dark"] .rac-page select {
    background: var(--rac-paper);
    color: var(--rac-ink);
    border-color: var(--rac-line);
}
[data-theme="dark"] .rac-page input::placeholder { color: var(--rac-muted); }
[data-theme="dark"] .rac-page .rac-hero-card input {
    background: rgba(8, 38, 32, 0.55);
    color: #ffffff;
    border-color: rgba(198, 255, 238, 0.26);
}
[data-theme="dark"] .rac-sheet {
    background: #ffffff;
    color: #1f2a24;
}
[data-theme="dark"] .rac-sheet-table thead th,
[data-theme="dark"] .rac-sheet-table tfoot th { background: #f1f5f2; }
[data-theme="dark"] .rac-sheet-table th,
[data-theme="dark"] .rac-sheet-table td { border-color: #cfd6d1; }
[data-theme="dark"] .rac-toast { background: rgba(20, 40, 33, 0.97); }

/* ============================ 打印 ============================ */
@media print {
    @page { size: A4; margin: 14mm; }

    .nav-header,
    .footer,
    .nav-mask,
    .theme-toggle,
    .detail-breadcrumb,
    .rac-hero,
    .rac-calc,
    .rac-content,
    .related,
    .rac-comments,
    .back-to-top,
    .rac-toast,
    #navEvadeBtn,
    .nav-tip-btn {
        display: none !important;
    }

    .detail-wrap { padding: 0 !important; }
    .container { max-width: none !important; padding: 0 !important; }
    .rac-page { background: #fff !important; }
    .rac-sheet-wrap {
        display: block !important;
        margin: 0 !important;
        padding: 0 !important;
        border: none !important;
        background: #fff !important;
    }
    .rac-sheet-label { display: none !important; }
    .rac-sheet {
        max-width: none;
        margin: 0;
        padding: 0;
        border-radius: 0;
        box-shadow: none;
        font-size: 11pt;
    }
    .rac-sheet-table th,
    .rac-sheet-table td { padding: 6px 7px; }
    .rac-sheet-notes { font-size: 9pt; }
    .rac-sheet-sign { margin-top: 18px; }
}
