/* ============================================================
 * DVTV-102 パインズ積算エンジン CSS (v3.1.0-alpha2)
 * F041 明細集計画面 + F042 集計係数設定 上下分割統合UI
 *   v3.1.0-alpha2: ヘッダーコンパクト化、見積情報＋集計サマリー統合、
 *                  スプリッターを高さ20pxに拡大＋hitbox広域化、
 *                  パディング全般削減、上下ペイン最低高200px
 * ============================================================ */

/* ワークフロー (他プラグインのページでも共通利用) */
@keyframes dvtv-neon-pulse {
  0%,100% { box-shadow:0 0 4px #667eea, 0 0 12px rgba(102,126,234,0.4); border-color:#667eea; }
  50% { box-shadow:0 0 8px #667eea, 0 0 24px rgba(102,126,234,0.7); border-color:#8fa4f0; }
}
@keyframes dvtv-input-neon {
  0%,100% { box-shadow:0 0 3px rgba(102,126,234,0.5); border-color:#667eea; }
  50% { box-shadow:0 0 8px rgba(102,126,234,0.8); border-color:#8fa4f0; }
}

/* ワークフローバー: グローバルスコープ (自動注入でも動くように) */
.dvtv-workflow-bar { display: flex; align-items: center; gap: 4px; padding: 10px 20px; background: linear-gradient(90deg,#f0f4ff,#e8eaf6); border: 1px solid #d0d8f0; border-radius: 10px; margin: 12px 0 16px 0; flex-wrap: wrap; font-family: 'Segoe UI','Meiryo',sans-serif; max-width: 1500px; }
.dvtv-workflow-bar .dvtv-wf-step { padding: 5px 14px; border-radius: 20px; font-size: 12px; font-weight: 600; color: #555; background: #fff; border: 2px solid transparent; text-decoration: none !important; white-space: nowrap; transition: all .2s; box-shadow: 0 1px 2px rgba(0,0,0,0.04); }
.dvtv-workflow-bar .dvtv-wf-step:hover { background: #e8eaf6; color:#333; border-color:#c5cae9; }
.dvtv-workflow-bar .dvtv-wf-current { color: #fff !important; background: linear-gradient(135deg,#667eea,#764ba2) !important; border: 2px solid #667eea !important; animation: dvtv-neon-pulse 2s ease-in-out infinite !important; }
.dvtv-workflow-bar .dvtv-wf-arrow { color: #aab; font-weight: 700; font-size: 13px; }

/* 重複部材の枝番 (1-1, 1-2) 表示 */
.dvtv-sekisan-wrap .sk-dup-no { color: #9aa; font-size: 11px; font-weight: 500; font-style: italic; letter-spacing: -0.5px; }

.dvtv-sekisan-wrap { max-width: 1500px; margin: 0 auto; font-family: 'Segoe UI','Meiryo',sans-serif !important; }
.dvtv-sekisan-wrap * { box-sizing: border-box; }
/* v3.39.0: 無限アニメ(box-shadowを毎フレーム再描画)をやめ静的なグローへ。
   フォーカス中ずっと再ペイントが走り、大きな表でカクつく原因だった。 */
.dvtv-sekisan-wrap input:focus,
.dvtv-sekisan-wrap select:focus,
.dvtv-sekisan-wrap textarea:focus { outline: none !important; box-shadow: 0 0 7px rgba(102,126,234,0.75) !important; border-color: #667eea !important; transition: box-shadow .15s ease, border-color .15s ease; }

.dvtv-sekisan-wrap .dvtv-header { background: linear-gradient(135deg,#1a1a2e,#16213e,#0f3460) !important; color:#fff !important; padding: 8px 20px !important; border-radius: 12px 12px 0 0 !important; display: flex; align-items: center; justify-content: space-between; }
.dvtv-sekisan-wrap .dvtv-header h2 { margin: 0 !important; font-size: 16px !important; color:#fff !important; background: none !important; }
.dvtv-sekisan-wrap .dvtv-ver { font-size: 11px; opacity: 0.6; }

/* 旧セレクタ互換 (積算画面内のフローバー) */
.dvtv-sekisan-wrap .dvtv-workflow-bar { margin: 0; border-radius: 0; border-left: none; border-right: none; border-top: none; padding: 6px 20px; }

.dvtv-sekisan-wrap .dvtv-select-bar { background: #f8f9ff; padding: 6px 16px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; border-bottom: 1px solid #e0e7ff; }
.dvtv-sekisan-wrap .dvtv-select-bar label { display: flex; align-items: center; gap: 6px; font-size: 12px; color: #555; white-space: nowrap; }
.dvtv-sekisan-wrap .dvtv-select-bar input,
.dvtv-sekisan-wrap .dvtv-select-bar select { padding: 4px 7px; border: 1px solid #ccd; border-radius: 5px; font-size: 13px; }

/* v3.1.0-alpha2: 見積情報バーをコンパクト化＋集計サマリー統合 */
.dvtv-sekisan-wrap .dvtv-info-bar { background: #f0f4ff; padding: 6px 16px; display: flex; gap: 14px; font-size: 13px; border-bottom: 1px solid #e0e7ff; align-items: center; flex-wrap: wrap; }
.dvtv-sekisan-wrap .dvtv-info-bar strong { color: #0f3460; }
/* 旧 sk-grand-total は非表示（互換のためHTML残置のみ） */
.dvtv-sekisan-wrap .sk-grand-total { display: none; }

.dvtv-sekisan-wrap .dvtv-notice-info { background: #e3f2fd; border: 1px solid #90caf9; color: #1565c0; padding: 12px 20px; border-radius: 8px; margin: 16px 24px; }

/* ============================================
 * ビュー切替タブ (v3.1.0: モバイル時のみ表示)
 * ============================================ */
.sk-mobile-only { display: none; }
.sk-layout-mobile .sk-mobile-only { display: flex; }

.sk-viewswitch { background: #1a1a2e; padding: 0; border-bottom: 3px solid #667eea; }
.sk-view-btn { flex: 1; padding: 14px 24px; background: transparent; border: none; color: #aab; font-size: 15px; font-weight: 600; cursor: pointer; transition: all .2s; border-bottom: 3px solid transparent; margin-bottom: -3px; }
.sk-view-btn:hover { color: #fff; background: rgba(102,126,234,0.15); }
.sk-view-btn.sk-view-active { color: #fff; background: linear-gradient(180deg, rgba(102,126,234,0.3), rgba(102,126,234,0.1)); border-bottom-color: #667eea; }

/* v3.1.0-alpha2: ペイン内スクロール、パディング縮小 */
.sk-view { padding: 8px 12px; background: #f8f9ff; }

/* ============================================
 * 統合情報バー (見積情報＋集計サマリー、v3.1.0-alpha2)
 * ============================================ */
.dvtv-sekisan-wrap .dvtv-info-bar.sk-summary-bar {
    display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
    padding: 6px 16px;
    background: linear-gradient(90deg, #fff8e1, #fff3c4 60%, #fff8e1);
    border-top: 1px solid #f0c060; border-bottom: 1px solid #f0c060;
    font-size: 12px; color: #5d4037;
}
.dvtv-sekisan-wrap .sk-info-mno {
    color: #1565c0; font-weight: 600; padding-right: 6px;
    border-right: 1px solid rgba(141,110,99,0.3); margin-right: 4px;
}
.dvtv-sekisan-wrap .sk-info-mno strong { color: #0d47a1; font-size: 14px; font-family: 'Consolas','monospace'; }
.dvtv-sekisan-wrap .sk-info-name { color: #5d4037; font-size: 12px; max-width: 220px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dvtv-sekisan-wrap .sk-info-name:empty { display: none; }
.dvtv-sekisan-wrap .sk-info-ucd { color: #6d4c41; padding-right: 6px; }
.dvtv-sekisan-wrap .sk-info-ucd strong { color: #4e342e; font-size: 13px; }

.dvtv-sekisan-wrap .sk-sum-item {
    display: inline-flex; align-items: baseline; gap: 5px;
    padding: 3px 8px; background: rgba(255,255,255,0.7);
    border-radius: 5px; border: 1px solid rgba(244,196,48,0.4);
    transition: background 0.3s, box-shadow 0.3s;
}
.dvtv-sekisan-wrap .sk-sum-item label {
    font-size: 10px; color: #8d6e63; font-weight: 600;
    letter-spacing: 0.2px;
}
.dvtv-sekisan-wrap .sk-sum-item strong {
    font-family: 'Consolas','monospace'; font-size: 13px; color: #0f3460;
    font-weight: 700; min-width: 40px; display: inline-block; text-align: right;
}
.dvtv-sekisan-wrap .sk-sum-grand strong { color: #c62828; font-size: 15px; min-width: 60px; }
.dvtv-sekisan-wrap .sk-sum-sep {
    width: 1px; height: 18px; background: rgba(141,110,99,0.3); margin: 0 2px;
}
.dvtv-sekisan-wrap .sk-sum-refresh {
    margin-left: auto; padding: 3px 8px; border: 1px solid #d0a050;
    background: #fff; color: #b8860b; font-size: 12px; border-radius: 5px;
    cursor: pointer; transition: all .15s;
}
.dvtv-sekisan-wrap .sk-sum-refresh:hover { background: #fff3c4; }

/* 差分ハイライト (5秒間フラッシュ) */
@keyframes sk-diff-flash-up-anim {
    0%   { background: rgba(255,255,255,0.7); box-shadow: none; }
    8%   { background: #c8e6c9; box-shadow: 0 0 0 2px rgba(76,175,80,0.5); }
    60%  { background: #c8e6c9; box-shadow: 0 0 0 2px rgba(76,175,80,0.5); }
    100% { background: rgba(255,255,255,0.7); box-shadow: none; }
}
@keyframes sk-diff-flash-down-anim {
    0%   { background: rgba(255,255,255,0.7); box-shadow: none; }
    8%   { background: #ffcdd2; box-shadow: 0 0 0 2px rgba(239,83,80,0.5); }
    60%  { background: #ffcdd2; box-shadow: 0 0 0 2px rgba(239,83,80,0.5); }
    100% { background: rgba(255,255,255,0.7); box-shadow: none; }
}
.dvtv-sekisan-wrap .sk-sum-item.sk-diff-flash.sk-diff-up {
    animation: sk-diff-flash-up-anim 5s ease-in-out;
}
.dvtv-sekisan-wrap .sk-sum-item.sk-diff-flash.sk-diff-down {
    animation: sk-diff-flash-down-anim 5s ease-in-out;
}

/* ============================================
 * メインラッパー (v3.1.0-alpha10: 上下分割廃止 → 部材リスト全画面)
 * ============================================ */
.dvtv-sekisan-wrap .sk-main-wrap {
    display: grid; grid-template-columns: 1fr 200px; gap: 12px;
    padding: 8px 16px; background: #f8f9ff;
}
.dvtv-sekisan-wrap .sk-main-pane {
    background: #fff; border-radius: 10px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.06);
    /* v3.15.0: 高さ固定 calc(100vh - 240px) を撤廃。
       240px は実測に基づかない見積値で、ヘッダー・フローバー・管理バーの
       実占有高と一致していなかった。min/max を同値で挟んでいたため
       ウィンドウを広げても明細が増えず、6行でスクロールに入っていた。
       明細は全行を伸ばしてページごとスクロールし、
       操作パネル(.sk-side-shared)を sticky で追従させる方式へ変更。
       横方向は13列の台帳がはみ出す環境のためスクロールを残す。 */
    overflow-x: auto;
    overflow-y: visible;
}

/* ============================================
 * フローティングウィンドウ (v3.1.0-alpha10 NEW)
 * F042 集計係数設定をドラッグ可能・リサイズ可能なウィンドウとして表示
 * ============================================ */
/* v3.9.2: 画面外へ出て閉じられなくなるのを防ぐ。
   ・上端より上へは出さない
   ・画面より大きくならないようにする（タイトルバーが押し出されるのを防ぐ） */
.dvtv-sekisan-wrap .sk-keisu-window {
    max-width: calc(100vw - 16px);
    max-height: calc(100vh - 16px);
    /* v3.9.3: WordPress管理バー(z-index:99999)より前面に出す。
       背面だとタイトルバーの✕が押せなくなる。 */
    position: fixed; z-index: 100010;
    background: #fff;
    border: 1px solid #5c6bc0;
    border-radius: 10px;
    box-shadow: 0 8px 32px rgba(0,0,0,0.25), 0 2px 8px rgba(0,0,0,0.15);
    display: flex; flex-direction: column;
    overflow: hidden;
    min-width: 500px; min-height: 350px;
    transition: box-shadow 0.2s;
}
.dvtv-sekisan-wrap .sk-keisu-window:hover {
    box-shadow: 0 12px 40px rgba(0,0,0,0.3), 0 3px 10px rgba(0,0,0,0.2);
}

/* タイトルバー (ドラッグハンドル) */
.dvtv-sekisan-wrap .sk-kw-titlebar {
    flex: 0 0 auto;
    background: linear-gradient(135deg, #1a1a2e, #16213e, #0f3460);
    color: #fff;
    padding: 8px 12px;
    display: flex; align-items: center; gap: 12px;
    cursor: move; user-select: none;
    border-radius: 9px 9px 0 0;
    height: 36px; box-sizing: border-box;
}
.dvtv-sekisan-wrap .sk-kw-title {
    font-size: 14px; font-weight: 700; letter-spacing: 0.3px;
    flex: 0 0 auto;
}
.dvtv-sekisan-wrap .sk-kw-status {
    flex: 1; font-size: 11px; opacity: 0.85; font-weight: 500;
    text-align: center;
}
.dvtv-sekisan-wrap .sk-kw-controls {
    flex: 0 0 auto; display: flex; gap: 4px;
}
.dvtv-sekisan-wrap .sk-kw-btn {
    width: 26px; height: 22px;
    border: 1px solid rgba(255,255,255,0.3); background: rgba(255,255,255,0.1);
    color: #fff; font-size: 14px; font-weight: 700;
    cursor: pointer; padding: 0; line-height: 1;
    border-radius: 3px; transition: all 0.15s;
    display: flex; align-items: center; justify-content: center;
}
.dvtv-sekisan-wrap .sk-kw-btn:hover { background: rgba(255,255,255,0.25); }
.dvtv-sekisan-wrap .sk-kw-close:hover { background: #e53935; border-color: #c62828; }

/* ウィンドウ本体 (タブ群+パネル) */
.dvtv-sekisan-wrap .sk-kw-body {
    flex: 1; overflow: auto; background: #fff;
    border-radius: 0 0 10px 10px;
}
.dvtv-sekisan-wrap .sk-kw-body .sk-view {
    padding: 0; background: transparent;
}

/* リサイズハンドル (右下角) */
.dvtv-sekisan-wrap .sk-kw-resize {
    position: absolute; right: 0; bottom: 0;
    width: 18px; height: 18px;
    cursor: nwse-resize;
    background: linear-gradient(135deg, transparent 50%, #9fa8da 50%, #5c6bc0 70%, #5c6bc0 80%, #9fa8da 80%, #9fa8da 95%, transparent 95%);
    border-radius: 0 0 9px 0;
    z-index: 2;
}

/* 最小化状態: タイトルバーだけ残す (画面下に配置) */
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-minimized .sk-kw-body,
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-minimized .sk-kw-resize {
    display: none;
}
.dvtv-sekisan-wrap .sk-kw-titlebar { flex: 0 0 auto !important; }
.dvtv-sekisan-wrap .sk-kw-controls { flex: 0 0 auto !important; }
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-minimized {
    height: auto !important;
    min-height: 0;
}

/* 最大化状態: 画面いっぱい (z-index最前面でタイトルバー確実表示)
   v3.9.3: 管理バーの高さぶん下げ、タイトルバーが隠れないようにする */
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-maximized {
    left: 0 !important; top: 0 !important;
    width: 100vw !important; height: 100vh !important;
    border-radius: 0;
    max-width: none !important; max-height: none !important;
    z-index: 100010 !important; /* 管理バー(99999)より前面 */
}
body.admin-bar .dvtv-sekisan-wrap .sk-keisu-window.sk-kw-maximized {
    top: 32px !important; height: calc(100vh - 32px) !important;
}
@media screen and (max-width: 782px) {
    body.admin-bar .dvtv-sekisan-wrap .sk-keisu-window.sk-kw-maximized {
        top: 46px !important; height: calc(100vh - 46px) !important;
    }
}
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-maximized .sk-kw-titlebar {
    border-radius: 0; cursor: default;
    /* タイトルバーが必ず見えるよう先頭固定+背景重め */
    position: sticky; top: 0; z-index: 2;
    background: linear-gradient(135deg, #1a1a2e, #16213e, #0f3460);
}
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-maximized .sk-kw-resize { display: none; }
/* 最大化中の制御ボタンを大きく目立たせる */
.dvtv-sekisan-wrap .sk-keisu-window.sk-kw-maximized .sk-kw-btn {
    width: 36px; height: 28px; font-size: 16px;
}

/* ドラッグ/リサイズ中の挙動 */
body.sk-kw-dragging, body.sk-kw-dragging *,
body.sk-kw-resizing, body.sk-kw-resizing * {
    user-select: none !important;
    -webkit-user-select: none !important;
}
body.sk-kw-dragging * { cursor: move !important; }
body.sk-kw-resizing * { cursor: nwse-resize !important; }

/* 「⚙ 集計係数設定」開閉ボタン (操作パネル最上段) */
.sk-f041-side .sk-side-btn.sk-side-keisu-toggle {
    background: linear-gradient(135deg, #5c6bc0, #3949ab);
    color: #fff; border: 2px solid #3949ab;
    font-weight: 700; font-size: 14px;
    padding: 14px 14px;
    text-align: center;
    box-shadow: 0 3px 10px rgba(57,73,171,0.3);
    position: relative;
    animation: sk-keisu-pulse 2.5s ease-in-out infinite;
}
.sk-f041-side .sk-side-btn.sk-side-keisu-toggle:hover {
    background: linear-gradient(135deg, #3949ab, #283593);
    transform: translateY(-2px);
    box-shadow: 0 6px 16px rgba(57,73,171,0.5);
    animation: none;
}
.sk-f041-side .sk-side-btn.sk-side-keisu-toggle.sk-keisu-active {
    background: linear-gradient(135deg, #2e7d32, #1b5e20);
    border-color: #1b5e20;
    animation: none;
    box-shadow: 0 3px 10px rgba(46,125,50,0.3);
}
@keyframes sk-keisu-pulse {
    0%, 100% { box-shadow: 0 3px 10px rgba(57,73,171,0.3); }
    50%      { box-shadow: 0 3px 18px rgba(57,73,171,0.65), 0 0 0 4px rgba(92,107,192,0.15); }
}

/* バッジ（開状態） */
.dvtv-sekisan-wrap .sk-keisu-badge {
    display: inline-block;
    background: #fff; color: #2e7d32;
    font-size: 11px; font-weight: 800;
    padding: 1px 6px; border-radius: 8px;
    margin-left: 6px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}

/* ヒントテキスト */
.dvtv-sekisan-wrap .sk-keisu-hint {
    font-size: 10px; color: #5c6bc0;
    text-align: center;
    padding: 0 4px 2px;
    font-style: italic;
    letter-spacing: 0.3px;
}
.sk-f041-side .sk-side-btn.sk-side-keisu-toggle.sk-keisu-active + .sk-keisu-hint {
    display: none;
}

/* ============================================
 * F041 明細集計画面 (上下分割対応版)
 * ============================================ */
.sk-f041-layout { display: block; }
.sk-f041-main { background: #fff; border-radius: 8px; overflow: hidden; box-shadow: 0 1px 3px rgba(0,0,0,0.04); }

/* 共通サイド (上下分割の右端、両ペイン共通操作パネル) */
.dvtv-sekisan-wrap .sk-side-shared {
    display: flex; flex-direction: column; gap: 6px; padding: 10px;
    background: #fff; border-radius: 10px;
    box-shadow: 0 2px 6px rgba(0,0,0,0.06);
    /* v3.15.0: 固定高 height:calc(100vh - 240px) / min-height:480px を撤廃。
       ボタン9個+区切り3本でその高さをほぼ使い切っており、動作ログの居場所が
       無くフッターへ溢れていた(v3.14.1でoverflow:hiddenにしたところ、
       溢れた「リセット再計算」と動作ログが切り取られ操作不能になり撤回)。
       sticky 追従なら要素の実位置に自動で合わせるため、管理バーの有無や
       テーマ差、ウィンドウサイズに影響されない。
       max-height はビューポートを超えると sticky が破綻するための上限で、
       内容が収まる通常時はスクロールバーも出ない。 */
    position: sticky;
    top: 12px;
    max-height: calc(100vh - 24px);
    overflow-y: auto;
    overflow-x: hidden;
    align-self: start;
}
/* 動作ログをサイドパネルの末尾に伸ばす */
.dvtv-sekisan-wrap .sk-side-shared .sk-action-log {
    flex: 1; min-height: 100px;
    display: flex; flex-direction: column;
}
.dvtv-sekisan-wrap .sk-side-shared .sk-action-log .sk-action-log-body {
    flex: 1; max-height: none;
}
.sk-f041-side .sk-side-btn { padding: 9px 12px; background: #e8eaf6; border: 1px solid #c5cae9; border-radius: 6px; color: #333; font-size: 12px; cursor: pointer; transition: all .15s; text-align: left; font-weight: 500; }
.sk-f041-side .sk-side-btn:hover { background: #c5cae9; border-color: #7986cb; }
.sk-f041-side .sk-side-btn.sk-side-primary { background: linear-gradient(135deg,#667eea,#764ba2); color: #fff; border-color: #667eea; font-weight: 600; }
.sk-f041-side .sk-side-btn.sk-side-primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(102,126,234,.4); }
.sk-f041-side .sk-side-btn.sk-side-secondary { background: #fff8e1; border-color: #ffca28; color: #5d4037; }
.sk-f041-side .sk-side-btn.sk-side-warn { background: #ffebee; border-color: #ef5350; color: #c62828; }
.sk-f041-side hr { border: none; border-top: 1px dashed #d0d7f0; margin: 6px 0; }

.sk-buzai-header { padding: 8px 12px; background: linear-gradient(90deg,#f0f4ff,#fff); border-bottom: 1px solid #e0e7ff; display: flex; gap: 12px; align-items: center; }
.sk-buzai-header label { font-size: 13px; display: flex; align-items: center; gap: 6px; }
.sk-buzai-header select { padding: 5px 8px; border: 1px solid #ccd; border-radius: 6px; font-size: 14px; min-width: 240px; }

/* v3.1.0: ペイン内スクロールするので max-height 制限を解除 */
.sk-buzai-table-wrap { overflow: visible; border-bottom: 1px solid #e0e7ff; }
.sk-buzai-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.sk-buzai-table th { background: linear-gradient(180deg,#1a1a2e,#16213e); color: #fff; padding: 8px 6px; font-size: 12px; white-space: nowrap; text-align: center; position: sticky; top: 0; z-index: 2; font-weight: 600; }
.sk-buzai-table td { padding: 6px; border-bottom: 1px solid #e8eaf6; background: #fff; color: #333; font-size: 13px; }
.sk-buzai-table td.num { text-align: right; font-family: 'Consolas','monospace'; }
.sk-buzai-table td.total { font-weight: 700; color: #0f3460; }
/* v3.3.13: 工種見出しは「少し濃い青灰色の1行」で区別する。
 * 太い帯・濃紺×金・大きなボタンは使わず、明細表の流れを崩さない。 */
.sk-buzai-table .sk-buzai-koushu {
    box-shadow: none;
}
.sk-buzai-table .sk-buzai-koushu td {
    background: #cbdced !important;
    color: #183854 !important;
    font-weight: 700;
    border-top: 1px solid #92aec9;
    border-bottom: 1px solid #92aec9;
}
.sk-buzai-table .sk-buzai-koushu .sk-koushu-code {
    width: 50px;
    padding: 5px 4px !important;
    text-align: center;
    line-height: 1.05;
    white-space: nowrap;
    background: #b7cce1 !important;
    border-right: 1px solid #9bb4cc;
}
.sk-buzai-table .sk-koushu-code span {
    display: block;
    color: #486a87;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: .04em;
}
.sk-buzai-table .sk-koushu-code strong {
    display: block;
    margin-top: 1px;
    color: #183854;
    font-size: 14px;
    line-height: 1;
}
.sk-buzai-table .sk-buzai-koushu .sk-koushu-name {
    min-width: 0;
    padding: 0 !important;
    border: 0;
    border-radius: 0;
    background: #cbdced !important;
    color: inherit !important;
    font-size: inherit;
}
.sk-buzai-table .sk-koushu-toggle {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    min-height: 34px;
    padding: 6px 10px;
    border: 0;
    background: transparent;
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.sk-buzai-table .sk-koushu-toggle:hover,
.sk-buzai-table .sk-koushu-toggle:focus-visible {
    background: rgba(255,255,255,.35);
    outline: 1px solid #7396b6;
    outline-offset: -1px;
}
.sk-buzai-table .sk-koushu-chevron {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #5d7f9f;
    color: #fff;
    font-size: 10px;
    line-height: 1;
    transition: transform .16s ease;
}
.sk-buzai-table .sk-buzai-koushu.is-collapsed .sk-koushu-chevron { transform: rotate(-90deg); }
.sk-buzai-table .sk-koushu-title {
    overflow: hidden;
    color: #183854;
    font-size: 14px;
    font-weight: 800;
    letter-spacing: .01em;
    text-overflow: ellipsis;
    white-space: nowrap;
    text-shadow: none;
}
.sk-buzai-table .sk-koushu-toggle-text {
    margin-left: auto;
    padding: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: #456987;
    font-size: 11px;
    font-weight: 600;
    white-space: nowrap;
}
.sk-buzai-table .sk-koushu-total {
    padding: 5px 8px !important;
    text-align: right;
    white-space: nowrap;
    border-left: 1px solid #a7bdd2 !important;
}
.sk-buzai-table .sk-koushu-total span {
    display: inline;
    margin: 0 5px 0 0;
    color: #456987;
    font-family: inherit;
    font-size: 10px;
    font-weight: 700;
}
.sk-buzai-table .sk-koushu-total strong {
    color: #183854;
    font-size: 13px;
    text-shadow: none;
}
.sk-buzai-table .sk-koushu-count {
    padding: 5px 6px !important;
    color: #183854 !important;
    font-size: 11px;
    font-weight: 700;
    text-align: center;
    white-space: nowrap;
    border-left: 1px solid #a7bdd2 !important;
}
.sk-buzai-table .sk-koushu-child.is-collapsed { display: none; }
.sk-buzai-table .sk-row-ikkatsu td { background: #e3f2fd !important; color: #1565c0 !important; font-style: italic; }
.sk-buzai-table .sk-row-shukei td { background: #f3e5f5 !important; color: #6a1b9a !important; font-weight: 600; }
.sk-buzai-table tbody tr:not(.sk-buzai-koushu):hover td { background: #f0f4ff !important; }
.sk-buzai-table .sk-editable { cursor: pointer; position: relative; }
.sk-buzai-table .sk-editable:hover { background: #fff59d !important; }
.sk-buzai-table .sk-editable::after { content: '✎'; opacity: 0; margin-left: 4px; color: #888; }
.sk-buzai-table .sk-editable:hover::after { opacity: 1; }
.sk-buzai-table .sk-loading { text-align: center; padding: 40px; color: #888; }
.sk-buzai-table .sk-err { text-align: center; padding: 40px; color: #c62828; }

/* 下部タブ */
.sk-bottom-tabs { display: flex; background: #e8eaf6; border-top: 2px solid #7986cb; }
.sk-btab { flex: 1; padding: 10px 6px; background: #e8eaf6; border: none; border-right: 1px solid #c5cae9; color: #555; font-size: 12px; font-weight: 600; cursor: pointer; transition: all .15s; }
.sk-btab:last-child { border-right: none; }
.sk-btab:hover { background: #c5cae9; color: #333; }
.sk-btab.sk-btab-active { background: #fff; color: #1a1a2e; border-bottom: 2px solid #667eea; margin-bottom: -2px; }

.sk-bottom-panel { background: #fff; padding: 14px 18px; min-height: 120px; }
.sk-bpanel { display: none; }
.sk-bpanel.sk-bpanel-active { display: block; }
.sk-bp-row { display: flex; gap: 18px; align-items: flex-end; flex-wrap: wrap; }
.sk-bp-col { display: flex; flex-direction: column; gap: 6px; }
.sk-bp-label { font-size: 11px; color: #888; text-transform: uppercase; letter-spacing: 0.5px; }
.sk-koushu-name { padding: 6px 10px; background: #fff9c4; border: 1px solid #ffc107; border-radius: 4px; font-size: 13px; color: #5d4037; min-width: 200px; }
.sk-bp-col label { font-size: 13px; color: #333; display: flex; gap: 6px; align-items: center; }

/* ============================================
 * F042 集計係数設定
 * ============================================ */
.sk-f042-tabs { display: flex; background: #fff; border: 1px solid #c5cae9; border-bottom: none; border-radius: 10px 10px 0 0; overflow: hidden; }
.sk-ktab { flex: 1; padding: 12px 10px; background: #e8eaf6; border: none; border-right: 1px solid #c5cae9; color: #555; font-size: 13px; font-weight: 600; cursor: pointer; transition: all .15s; }
.sk-ktab:last-child { border-right: none; }
.sk-ktab:hover { background: #c5cae9; color: #333; }
.sk-ktab.sk-ktab-active { background: #fff; color: #1a1a2e; }

.sk-f042-panel { background: #fff; padding: 20px 24px; border: 1px solid #c5cae9; border-top: none; border-radius: 0 0 10px 10px; box-shadow: 0 2px 6px rgba(0,0,0,0.06); min-height: 400px; }
.sk-kpanel { display: none; }
.sk-kpanel.sk-kpanel-active { display: block; }
.sk-kpanel h3 { margin: 0 0 14px !important; padding: 0 0 6px !important; font-size: 15px !important; color: #1a1a2e !important; border-bottom: 2px solid #667eea; }

.sk-keisu-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.sk-keisu-table thead th { background: linear-gradient(180deg,#1a1a2e,#16213e); color: #fff; padding: 8px; font-size: 12px; text-align: center; }
.sk-keisu-table tbody th { background: #f0f4ff; padding: 8px 10px; text-align: left; font-weight: 600; color: #333; border: 1px solid #e0e7ff; }
.sk-keisu-table tbody td { padding: 6px 10px; border: 1px solid #e8eaf6; background: #fff; color: #333; }
.sk-keisu-table tbody td.num { text-align: right; font-family: 'Consolas','monospace'; }
.sk-keisu-table tbody td.total { font-weight: 700; color: #0f3460; }
.sk-keisu-table input[type="number"],
.sk-keisu-table input[type="text"],
.sk-keisu-table select { padding: 4px 6px; border: 1px solid #ccd; border-radius: 4px; font-size: 13px; }
.sk-keisu-table tr.sk-total-row td { background: #fff3e0 !important; border-top: 2px solid #ff9800 !important; }

.sk-hint { margin: 10px 0; color: #666; font-size: 12px; }
.sk-kactions { margin-top: 18px; display: flex; gap: 10px; justify-content: flex-end; align-items: center; }

/* ============================================
 * 自動保存ステータス (v3.1.0-alpha7 NEW / alpha8 強化)
 * ============================================ */
/* 各タブ内のステータス */
.sk-auto-save-hint {
    background: #f0f4ff; border: 1px dashed #c5cae9; border-radius: 6px;
    padding: 8px 14px; justify-content: space-between !important;
}
.sk-auto-save-msg {
    color: #5e6dab; font-size: 12px; font-style: italic;
}
.sk-tab-save-status {
    font-size: 12px; font-weight: 600; min-width: 140px; text-align: right;
    transition: opacity 0.3s;
}
.sk-tab-save-status.saving { color: #1976d2; animation: sk-status-pulse 1.2s ease-in-out infinite; }
.sk-tab-save-status.saved  { color: #2e7d32; }
.sk-tab-save-status.error  { color: #c62828; }
.sk-tab-save-status.skip   { color: #f57c00; }

/* サマリーバー右の保存ステータス (alpha8: より目立つ表示) */
.dvtv-sekisan-wrap .sk-save-status {
    display: inline-block; font-size: 12px; font-weight: 700;
    padding: 4px 10px; border-radius: 6px; min-width: 0;
    transition: background 0.3s, color 0.3s;
    border: 2px solid transparent;
}
.dvtv-sekisan-wrap .sk-save-status:empty { display: none; }
.dvtv-sekisan-wrap .sk-save-status.saving {
    color: #fff; background: #1976d2; border-color: #1565c0;
    animation: sk-status-pulse 1.2s ease-in-out infinite;
}
.dvtv-sekisan-wrap .sk-save-status.saved {
    color: #fff; background: #2e7d32; border-color: #1b5e20;
}
.dvtv-sekisan-wrap .sk-save-status.error {
    color: #fff; background: #c62828; border-color: #b71c1c;
    animation: sk-status-flash 0.5s ease-in-out 3;
}
@keyframes sk-status-pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: 0.55; }
}
@keyframes sk-status-flash {
    0%, 100% { background: #c62828; }
    50%      { background: #ff5252; }
}

/* v3.1.0-alpha8: 入力欄保存成功時の緑フラッシュ (1秒) */
@keyframes sk-saved-flash-anim {
    0%   { box-shadow: 0 0 0 0 rgba(76,175,80,0); border-color: inherit; }
    20%  { box-shadow: 0 0 0 4px rgba(76,175,80,0.5); border-color: #4caf50 !important; background-color: #e8f5e9; }
    100% { box-shadow: 0 0 0 0 rgba(76,175,80,0); border-color: inherit; background-color: inherit; }
}
.dvtv-sekisan-wrap input.sk-saved-flash,
.dvtv-sekisan-wrap select.sk-saved-flash {
    animation: sk-saved-flash-anim 1s ease-out !important;
}

/* v3.1.0-alpha9: 動作ログエリア (操作パネル下) */
.dvtv-sekisan-wrap .sk-action-log {
    background: #f8f9ff; border: 1px solid #d0d8f0; border-radius: 6px;
    padding: 0; overflow: hidden; margin-top: 4px;
}
.dvtv-sekisan-wrap .sk-action-log-header {
    background: linear-gradient(90deg, #5c6bc0, #3949ab); color: #fff;
    padding: 6px 10px; font-size: 11px; font-weight: 700;
    letter-spacing: 0.5px;
}
.dvtv-sekisan-wrap .sk-action-log-body {
    max-height: 280px; overflow-y: auto;
    padding: 4px 0; background: #fff;
}
.dvtv-sekisan-wrap .sk-action-log-empty {
    padding: 10px; font-size: 11px; color: #999; text-align: center;
    font-style: italic;
}
.dvtv-sekisan-wrap .sk-action-log-row {
    padding: 4px 8px; font-size: 11px; border-bottom: 1px dotted #e8eaf6;
    display: flex; gap: 5px; align-items: flex-start;
    transition: background 0.2s;
}
.dvtv-sekisan-wrap .sk-action-log-row:hover { background: #f0f4ff; }
.dvtv-sekisan-wrap .sk-action-log-row:last-child { border-bottom: none; }
.dvtv-sekisan-wrap .sk-action-log-row.sk-log-ok  { background: rgba(232,245,233,0.4); }
.dvtv-sekisan-wrap .sk-action-log-row.sk-log-err { background: rgba(255,235,238,0.6); }
.dvtv-sekisan-wrap .sk-log-time {
    color: #888; font-family: 'Consolas','monospace'; font-size: 10px;
    flex-shrink: 0; min-width: 52px;
}
.dvtv-sekisan-wrap .sk-log-icon { flex-shrink: 0; min-width: 14px; }
.dvtv-sekisan-wrap .sk-log-ok .sk-log-icon { color: #2e7d32; font-weight: 700; }
.dvtv-sekisan-wrap .sk-log-err .sk-log-icon { color: #c62828; font-weight: 700; }
.dvtv-sekisan-wrap .sk-log-msg {
    color: #333; word-break: break-all; line-height: 1.3;
}

/* Tab 2 ランク */
.sk-k2-layout { display: grid; grid-template-columns: 1.2fr 1fr; gap: 20px; }
.sk-k-sub { font-size: 12px; color: #666; margin-bottom: 8px; }
.sk-keihi-wrap { max-height: 360px; overflow: auto; border: 1px solid #c5cae9; border-radius: 4px; }
.sk-keihi-table tbody tr { cursor: pointer; transition: background .1s; }
.sk-keihi-table tbody tr:hover td { background: #fff9c4 !important; }
.sk-keihi-table tr.sk-keihi-selected td {
    background: linear-gradient(90deg, #c8e6c9 0%, #a5d6a7 100%) !important;
    font-weight: 700; color: #1b5e20 !important;
    box-shadow: inset 3px 0 0 #2e7d32;
    position: relative;
}
.sk-keihi-table tr.sk-keihi-selected td:first-child::before {
    content: '✓ ';
    color: #2e7d32; font-weight: 900;
}

/* v3.1.0-alpha4: ランク未設定時のフォーム警告枠 */
@keyframes sk-k2-warn-pulse {
    0%, 100% { box-shadow: inset 0 0 0 2px transparent; background: transparent; }
    50%      { box-shadow: inset 0 0 0 2px #ff9800; background: rgba(255,243,224,0.6); }
}
.sk-k2-form.sk-k2-empty-warn {
    animation: sk-k2-warn-pulse 2.5s ease-in-out infinite;
    border-radius: 6px;
    position: relative;
}
.sk-k2-form.sk-k2-empty-warn::before {
    content: '⚠ ランク未設定 — 左の一覧から選択してください';
    display: block; padding: 8px 12px; margin-bottom: 8px;
    background: #fff3e0; border: 1px solid #ffb74d; border-radius: 5px;
    color: #e65100; font-size: 12px; font-weight: 600;
}

/* Tab 3 部材単価 */
/* v3.36.2: A材/B材ボタンは1段目に固定。件数の文字数が変わっても
   ボタンの大きさと位置が動かないよう、幅を決めて折り返さない。 */
.sk-k3-abc-toggle {
    display: flex !important; gap: 6px !important; margin-bottom: 8px !important;
    flex-wrap: nowrap !important; align-items: center !important;
}
.sk-abc-btn {
    flex: 0 0 auto !important;
    width: 132px !important; min-width: 132px !important;
    height: 38px !important; line-height: 22px !important;
    white-space: nowrap !important; text-align: center !important;
    padding: 8px 0 !important; background: #e8eaf6; border: 1px solid #c5cae9; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; color: #555; transition: all .15s; }
.sk-abc-btn:hover { background: #c5cae9; }
.sk-abc-btn.sk-abc-active { background: linear-gradient(135deg,#667eea,#764ba2); color: #fff; border-color: #667eea; }
.sk-k3-table-wrap { max-height: 450px; overflow: auto; border: 1px solid #e0e7ff; border-radius: 4px; }
.sk-k3-table thead th { padding: 6px 8px; }
.sk-k3-table thead tr:last-child th { background: linear-gradient(180deg,#2d2d4a,#252540); font-size: 11px; font-weight: 500; }
.sk-k3-table tbody td:first-child { text-align: center; color: #888; }
.sk-k3-table tbody td:nth-child(2) { font-weight: 500; }

/* フォーカス中の行をハイライト (Tab3/Tab4)
   v3.28.1: 点滅中の行(.sk-k3-blink)だけは対象外にする。この指定は !important 付きの
   背景色で、CSSアニメーションより優先されるため、そのままだと入力欄へフォーカスした
   瞬間に対応行の点滅が止まってしまう。
   v3.39.0: tr:has(input:focus) はフォーカス移動のたびに表全体のスタイル再計算が
   走って重いため、JS(focusin/focusout)が付ける .sk-row-focus クラスへ変更した。 */
.sk-k3-table tbody tr.sk-row-focus:not(.sk-k3-blink),
.sk-keisu-table tbody tr.sk-row-focus:not(.sk-k3-blink) { background: #fffde7 !important; }
.sk-k3-table tbody tr.sk-row-focus:not(.sk-k3-blink) td,
.sk-keisu-table tbody tr.sk-row-focus:not(.sk-k3-blink) td { background: #fffde7 !important; }

/* Tab 4 雑材 */
.sk-k4-mode { padding: 12px 14px; background: #f0f4ff; border-radius: 6px; margin-bottom: 14px; display: flex; gap: 16px; flex-wrap: wrap; font-size: 13px; }
.sk-k4-mode label { display: flex; gap: 6px; align-items: center; }

/* Tab 5 その他 */
.sk-k5-table tr.sk-k5-section th { background: #e8eaf6; font-size: 13px; padding: 10px; color: #1a237e; }
.sk-k5-table td label { margin-right: 14px; font-size: 13px; }

/* ボタン */
.dvtv-sekisan-wrap .dvtv-btn { padding: 9px 20px; border: none; border-radius: 6px; font-size: 13px; font-weight: 600; cursor: pointer; transition: all .2s; }
.dvtv-sekisan-wrap .dvtv-btn-sm { padding: 5px 12px !important; font-size: 12px !important; }
.dvtv-sekisan-wrap .dvtv-btn-primary { background: linear-gradient(135deg,#667eea,#764ba2); color: #fff; }
.dvtv-sekisan-wrap .dvtv-btn-primary:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(102,126,234,.4); }
.dvtv-sekisan-wrap .dvtv-btn-secondary { background: #e8eaf6; color: #333; }
.dvtv-sekisan-wrap .dvtv-btn-secondary:hover { background: #c5cae9; }
.dvtv-sekisan-wrap .dvtv-btn-success { background: linear-gradient(135deg,#43a047,#2e7d32); color: #fff; }
.dvtv-sekisan-wrap .dvtv-btn-success:hover { transform: translateY(-1px); box-shadow: 0 4px 12px rgba(67,160,71,.4); }

/* グローバルメッセージ */
.sk-global-msg { padding: 10px 20px; margin: 12px 24px 0; border-radius: 6px; font-size: 14px; font-weight: 600; min-height: 20px; display: inline-block; }
.sk-global-msg:empty { display: none; }
.sk-global-msg.ok { background: #e8f5e9; color: #2e7d32; border: 1px solid #81c784; }
.sk-global-msg.err { background: #ffebee; color: #c62828; border: 1px solid #ef5350; }
.sk-global-msg.loading { background: #e3f2fd; color: #1565c0; border: 1px solid #64b5f6; }

/* ============================================
 * レスポンシブ
 * ============================================ */
/* 中間サイズ: 共通サイドを下回り込み */
@media (max-width: 1100px) {
    .dvtv-sekisan-wrap .sk-main-wrap { grid-template-columns: 1fr; }
    .dvtv-sekisan-wrap .sk-side-shared {
        flex-direction: row; flex-wrap: wrap;
        position: static; height: auto; min-height: 0;
    }
    .dvtv-sekisan-wrap .sk-side-shared .sk-action-log { flex: 1 1 100%; min-height: 100px; }
    .sk-k2-layout { grid-template-columns: 1fr; }
}

/* モバイル(<768px): フローティングウィンドウを画面ほぼ全面に */
@media (max-width: 768px) {
    .dvtv-sekisan-wrap .dvtv-info-bar.sk-summary-bar {
        padding: 6px 10px; font-size: 11px; gap: 6px;
    }
    .dvtv-sekisan-wrap .sk-sum-item strong { font-size: 12px; min-width: 36px; }
    .dvtv-sekisan-wrap .sk-sum-grand strong { font-size: 13px; min-width: 50px; }

    .dvtv-sekisan-wrap .sk-main-wrap { padding: 6px 8px; }
    /* v3.15.0: 高さ固定撤廃に伴い min-height:50vh も不要（内容なりに伸びる） */
    .dvtv-sekisan-wrap .sk-main-pane {
        min-height: 0; max-height: none;
    }
    .dvtv-sekisan-wrap .sk-buzai-table-wrap { max-height: 60vh; overflow: auto; }
    .sk-buzai-table .sk-koushu-toggle { min-width: 230px; }
    .sk-buzai-table .sk-koushu-toggle-text { display: none; }
    .sk-buzai-table .sk-koushu-count { font-size: 10px; }

    /* モバイル時はフローティングウィンドウを画面ほぼ全面に */
    .dvtv-sekisan-wrap .sk-keisu-window {
        left: 5px !important; top: 60px !important;
        width: calc(100vw - 10px) !important;
        height: calc(100vh - 70px) !important;
        min-width: 0; min-height: 0;
    }
    .dvtv-sekisan-wrap .sk-kw-resize { display: none; }
    .dvtv-sekisan-wrap .sk-kw-titlebar { cursor: default; }
}

/* 多案(見積案)タブ */
.dvtv-sekisan-wrap .sk-plan-bar {
    display: flex; align-items: center; justify-content: space-between;
    gap: 8px; padding: 6px 16px; margin: 4px 0;
    background: linear-gradient(135deg, #fafbff, #f0f4ff);
    border: 1px solid #d8dff3; border-radius: 8px;
    box-shadow: 0 1px 3px rgba(0,0,0,0.04);
    flex-wrap: wrap;
}
.dvtv-sekisan-wrap .sk-plan-tabs { display: flex; align-items: center; gap: 5px; flex-wrap: wrap; }
.dvtv-sekisan-wrap .sk-plan-loading { color: #8899aa; font-size: 12px; font-style: italic; }
.dvtv-sekisan-wrap .sk-plan-tab {
    padding: 4px 12px;
    background: #fff;
    border: 2px solid #d0d8f0;
    border-radius: 16px;
    font-size: 12px; font-weight: 600; color: #556;
    cursor: pointer; transition: all .2s;
    min-width: 56px;
}
.dvtv-sekisan-wrap .sk-plan-tab:hover:not(.sk-plan-current) {
    background: #eef2ff; border-color: #a5b0e0; transform: translateY(-1px);
}
.dvtv-sekisan-wrap .sk-plan-current {
    background: linear-gradient(135deg, #667eea, #764ba2) !important;
    color: #fff !important; border-color: #667eea !important;
    box-shadow: 0 2px 8px rgba(102,126,234,0.4);
    animation: dvtv-neon-pulse 2.5s ease-in-out infinite;
}
.dvtv-sekisan-wrap .sk-plan-saiyo:not(.sk-plan-current) {
    background: linear-gradient(135deg, #fff9e5, #fff3c4);
    border-color: #f4c430;
    color: #b8860b;
}
.dvtv-sekisan-wrap .sk-plan-saiyo.sk-plan-current {
    /* 採用中かつ選択中 → 星を強調 */
    background: linear-gradient(135deg, #8b5cf6, #6366f1) !important;
    box-shadow: 0 2px 12px rgba(139,92,246,0.5);
}
.dvtv-sekisan-wrap .sk-plan-empty {
    background: #fafbfc; color: #98a0b0; border-style: dashed;
    border-color: #c8cedc;
}
.dvtv-sekisan-wrap .sk-plan-empty:hover {
    background: #eef2ff; color: #667eea; border-style: solid;
}
.dvtv-sekisan-wrap .sk-plan-actions { display: flex; align-items: center; gap: 6px; }

/* ============================================================
 * v3.2.3: 見積総額表示パネル (部材リスト最上部)
 * 行を無駄にせず、見やすく・分かりやすく
 * ============================================================ */
.dvtv-sekisan-wrap .sk-grand-panel {
    background: linear-gradient(135deg, #f5f8ff 0%, #ffffff 100%);
    border: 2px solid #667eea;
    border-radius: 8px;
    padding: 8px 14px;
    margin: 8px 0 10px 0;
    box-shadow: 0 2px 8px rgba(102, 126, 234, 0.12);
    transition: all 0.3s ease;
}
.dvtv-sekisan-wrap .sk-grand-panel.sk-grand-stale {
    background: linear-gradient(135deg, #fff8e1 0%, #fff 100%);
    border-color: #ffa726;
    box-shadow: 0 2px 8px rgba(255, 167, 38, 0.18);
}
.dvtv-sekisan-wrap .sk-grand-row {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 14px;
}
.dvtv-sekisan-wrap .sk-grand-main {
    margin-bottom: 4px;
}
.dvtv-sekisan-wrap .sk-grand-label {
    font-size: 14px;
    font-weight: 700;
    color: #4c5cdc;
    letter-spacing: 0.5px;
}
.dvtv-sekisan-wrap .sk-grand-plan {
    background: #4c5cdc;
    color: white;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
}
.dvtv-sekisan-wrap .sk-grand-stale {
    background: #ff9800;
    color: white;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 600;
    animation: sk-grand-stale-pulse 2s ease-in-out infinite;
}
@keyframes sk-grand-stale-pulse {
    0%, 100% { opacity: 1; }
    50% { opacity: 0.65; }
}
.dvtv-sekisan-wrap .sk-grand-spacer {
    flex: 1;
    min-width: 8px;
}
.dvtv-sekisan-wrap .sk-grand-amount {
    display: inline-flex;
    align-items: baseline;
    gap: 4px;
    padding: 0 4px;
}
.dvtv-sekisan-wrap .sk-grand-amount label {
    font-size: 11px;
    color: #666;
    font-weight: 500;
    margin-right: 2px;
}
.dvtv-sekisan-wrap .sk-grand-amount .num {
    font-size: 22px;
    font-weight: 700;
    line-height: 1.1;
    font-family: 'Roboto Mono', 'Consolas', monospace;
    letter-spacing: -0.3px;
}
/* 提出金額: 青系 */
.dvtv-sekisan-wrap .sk-grand-teishutsu .num {
    color: #1976d2;
}
/* 社内金額: 緑系 */
.dvtv-sekisan-wrap .sk-grand-shanai .num {
    color: #2e7d32;
}
/* 粗利益: オレンジ系 (負の場合は赤) */
.dvtv-sekisan-wrap .sk-grand-rieki .num {
    color: #f57c00;
    font-size: 16px;
}
.dvtv-sekisan-wrap .sk-grand-rieki .num.sk-grand-loss {
    color: #c62828;
}
.dvtv-sekisan-wrap .sk-grand-rieki-rate {
    font-size: 12px;
    color: #f57c00;
    font-weight: 600;
}
/* 税込: グレー系 (補助情報) */
.dvtv-sekisan-wrap .sk-grand-zeikomi .num {
    color: #555;
    font-size: 16px;
}
.dvtv-sekisan-wrap .sk-grand-zeikomi-tax {
    font-size: 10px;
    color: #999;
    margin-left: 2px;
}

/* 内訳行 */
.dvtv-sekisan-wrap .sk-grand-detail {
    border-top: 1px dashed #d8dee9;
    padding-top: 6px;
    gap: 12px;
}
.dvtv-sekisan-wrap .sk-grand-detail-label {
    font-size: 11px;
    color: #888;
    font-weight: 600;
    margin-right: 4px;
}
.dvtv-sekisan-wrap .sk-grand-detail-item {
    display: inline-flex;
    align-items: baseline;
    gap: 3px;
    font-size: 12px;
}
.dvtv-sekisan-wrap .sk-grand-detail-item label {
    font-size: 10px;
    color: #888;
    font-weight: 500;
}
.dvtv-sekisan-wrap .sk-grand-detail-item .num {
    font-size: 12px;
    font-weight: 600;
    color: #444;
    font-family: 'Roboto Mono', 'Consolas', monospace;
}
.dvtv-sekisan-wrap .sk-grand-detail-spacer {
    flex: 1;
    min-width: 8px;
}
.dvtv-sekisan-wrap .sk-grand-meta {
    color: #888;
    font-size: 11px;
}
.dvtv-sekisan-wrap .sk-grand-meta span {
    color: #555;
    font-weight: 600;
    margin-left: 2px;
}

/* モバイル時のレスポンシブ */
@media (max-width: 720px) {
    .dvtv-sekisan-wrap .sk-grand-amount .num {
        font-size: 18px;
    }
    .dvtv-sekisan-wrap .sk-grand-rieki .num,
    .dvtv-sekisan-wrap .sk-grand-zeikomi .num {
        font-size: 14px;
    }
    .dvtv-sekisan-wrap .sk-grand-row {
        gap: 8px;
    }
}

/* ダークモード対応 */
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-panel {
    background: linear-gradient(135deg, #2a2f4a 0%, #1e2235 100%);
    border-color: #7c8cdf;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-panel.sk-grand-stale {
    background: linear-gradient(135deg, #3d3826 0%, #2b2820 100%);
    border-color: #ffb74d;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-label {
    color: #a0aef8;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-amount label,
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-detail-label,
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-detail-item label {
    color: #aaa;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-teishutsu .num { color: #64b5f6; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-shanai .num { color: #81c784; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-rieki .num { color: #ffb74d; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-zeikomi .num { color: #ddd; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-detail-item .num { color: #ccc; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-grand-detail { border-top-color: #444a6b; }

/* ─────────── v3.3.24: 行色凡例フッター ─────────── */
.sk-row-legend {
    display: flex !important;
    flex-wrap: wrap;
    align-items: center;
    gap: 6px 16px;
    margin: 8px 2px 2px;
    padding: 7px 12px !important;
    background: #f7f9fc !important;
    border: 1px solid #dde6f0;
    border-radius: 8px;
    font-size: 11.5px;
    color: #44536a !important;
    line-height: 1.5;
}
.sk-row-legend .sk-legend-title {
    font-weight: 700;
    color: #183854 !important;
    padding-right: 4px;
    border-right: 1px solid #cfdae8;
    margin-right: 4px;
    white-space: nowrap;
}
.sk-row-legend .sk-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    white-space: nowrap;
}
.sk-row-legend .sk-legend-chip {
    display: inline-block;
    width: 26px;
    height: 13px;
    border-radius: 3px;
    border: 1px solid rgba(0,0,0,.14);
    flex: 0 0 auto;
}
.sk-row-legend .sk-legend-chip--koushu  { background: #cbdced !important; }
.sk-row-legend .sk-legend-chip--normal  { background: #ffffff !important; }
.sk-row-legend .sk-legend-chip--ikkatsu { background: #e3f2fd !important; }
.sk-row-legend .sk-legend-chip--shukei  { background: #f3e5f5 !important; }
.sk-row-legend .sk-legend-chip--edit    { background: #fff59d !important; }
@media (max-width: 900px) {
    .sk-row-legend { font-size: 10.5px; gap: 4px 10px; }
}

/* ─────────── v3.3.39: 明細行ドラッグ並び替え ─────────── */
.sk-drag-handle {
    display: inline-block;
    cursor: grab;
    color: #9aa9bd !important;
    font-size: 13px;
    margin-right: 5px;
    user-select: none;
    touch-action: none;
    vertical-align: middle;
}
.sk-drag-handle:hover { color: #2b6cb0 !important; }
tr.sk-row-dragging { opacity: .55; outline: 2px dashed #2b6cb0; outline-offset: -2px; }
tr.sk-row-dragging td { background: #eaf2fd !important; }
body.sk-sorting { cursor: grabbing !important; user-select: none; }

/* ─────────── v3.3.51: 乗率・金額列 ─────────── */
#sk-buzai-table td.sk-rate { color: #6b46c1 !important; font-size: 11.5px; }
#sk-buzai-table td.sk-editable-rate { cursor: pointer; }
#sk-buzai-table td.sk-editable-rate:hover { background: #f4f0fd !important; box-shadow: inset 0 0 0 1px #c9b8ef; }
#sk-buzai-table td.sk-kin { font-weight: 600; }

/* v3.3.54: 歩掛列 */
#sk-buzai-table td.sk-bugar { color: #0e7490 !important; font-size: 11.5px; cursor: help; }

/* ============================================================
   v3.4.0: 照明器具メーカーランクパネル + 支給区分編集
   (ルートは .dvtv-sekisan-wrap / 横並びレイアウト厳守)
   ============================================================ */
.dvtv-sekisan-wrap .sk-lr-rank { display:inline-flex !important; flex-direction:column !important; align-items:center !important; justify-content:center !important; width:auto !important; min-width:92px !important; padding:5px 12px !important; margin:0 !important; border:2px solid #adb5bd !important; border-radius:8px !important; background:#fff !important; cursor:pointer !important; line-height:1.25 !important; transition:all .12s !important; }
.dvtv-sekisan-wrap .sk-lr-rank:hover { border-color:#4c6ef5 !important; transform:translateY(-1px) !important; }
.dvtv-sekisan-wrap .sk-lr-rank.is-active { border-color:#e03131 !important; background:#e03131 !important; }
.dvtv-sekisan-wrap .sk-lr-rank.is-active .sk-lr-name { color:#fff !important; }
.dvtv-sekisan-wrap .sk-lr-rank.is-active .sk-lr-rates { color:#ffe3e3 !important; }
.dvtv-sekisan-wrap .sk-lr-name { font-weight:700 !important; font-size:13px !important; color:#212529 !important; }
.dvtv-sekisan-wrap .sk-lr-rates { font-size:11px !important; color:#5c7cfa !important; }
/* フィールドは1行の横並び。テーマのinput幅100%を打ち消す */
/* v3.11.0: 手動単価→自動計算復帰バッジ */
.dvtv-sekisan-wrap .sk-tcf-reset-btn { margin-left:6px !important; padding:1px 6px !important; font-size:10px !important; border:1px solid #f59f00 !important; border-radius:10px !important; background:#fff9db !important; color:#e67700 !important; cursor:pointer !important; vertical-align:middle !important; }
.dvtv-sekisan-wrap .sk-tcf-reset-btn:hover { background:#f59f00 !important; color:#fff !important; }
.dvtv-sekisan-wrap .sk-tcf-reset-btn:disabled { opacity:.5 !important; cursor:wait !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-tcf-reset-btn { background:#3b2f00 !important; color:#ffd43b !important; border-color:#f59f00 !important; }
.dvtv-sekisan-wrap td.sk-shikyu-cell { cursor:pointer !important; }
.dvtv-sekisan-wrap td.sk-shikyu-cell:hover { background:#e7f5ff !important; box-shadow:inset 0 0 0 1px #4dabf7 !important; }
#sk-shikyu-menu { position:absolute !important; z-index:100050 !important; min-width:200px !important; background:#fff !important; border:1px solid #adb5bd !important; border-radius:8px !important; box-shadow:0 8px 22px rgba(0,0,0,.22) !important; padding:4px !important; max-height:320px !important; overflow-y:auto !important; }
#sk-shikyu-menu .sk-shikyu-item { padding:6px 12px !important; font-size:13px !important; color:#212529 !important; cursor:pointer !important; border-radius:6px !important; white-space:nowrap !important; }
#sk-shikyu-menu .sk-shikyu-item:hover { background:#4c6ef5 !important; color:#fff !important; }
#sk-shikyu-menu .sk-sk-factor { font-size:11px !important; color:#e8590c !important; }
#sk-shikyu-menu .sk-shikyu-item:hover .sk-sk-factor { color:#ffd8a8 !important; }
/* ダークモード */
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-lr-rank, .dvtv-sekisan-wrap[data-theme="dark"] .sk-lr-rank { background:#232a3b !important; border-color:#495057 !important; }
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-lr-name, .dvtv-sekisan-wrap[data-theme="dark"] .sk-lr-name { color:#e9ecef !important; }

/* ============================================================
   v3.5.2: 費目内訳ポップアップ + 末尾整列ボタン
   (v3.5.0でビルド工程の不備により未追記だったスタイル)
   ============================================================ */
.dvtv-sekisan-wrap .sk-himoku-btn { margin-left:6px !important; padding:1px 6px !important; font-size:10px !important; border:1px solid #2b8a3e !important; border-radius:10px !important; background:#ebfbee !important; color:#2b8a3e !important; cursor:pointer !important; vertical-align:middle !important; }
.dvtv-sekisan-wrap .sk-himoku-btn:hover { background:#2b8a3e !important; color:#fff !important; }
#sk-himoku-pop { position:absolute !important; z-index:100060 !important; width:540px !important; max-width:94vw !important; background:#fff !important; border:2px solid #2b8a3e !important; border-radius:10px !important; box-shadow:0 10px 28px rgba(0,0,0,.25) !important; overflow:hidden !important; }
#sk-himoku-pop .sk-hp-head { display:flex !important; flex-direction:row !important; align-items:center !important; gap:10px !important; padding:7px 12px !important; background:linear-gradient(135deg,#2b8a3e,#40c057) !important; color:#fff !important; cursor:move !important; user-select:none !important; }
#sk-himoku-pop.is-dragging .sk-hp-head { cursor:grabbing !important; }
#sk-himoku-pop .sk-hp-title { font-weight:700 !important; font-size:13px !important; flex:1 1 auto !important; }
#sk-himoku-pop .sk-hp-pin-note { font-size:10px !important; color:#d3f9d8 !important; white-space:nowrap !important; }
#sk-himoku-pop .sk-hp-close { border:none !important; background:rgba(255,255,255,.2) !important; color:#fff !important; border-radius:6px !important; padding:2px 8px !important; cursor:pointer !important; width:auto !important; }
#sk-himoku-pop .sk-hp-close:hover { background:rgba(255,255,255,.35) !important; }
#sk-himoku-pop .sk-hp-body { padding:10px 12px !important; max-height:380px !important; overflow-y:auto !important; }
#sk-himoku-pop .sk-hp-table { width:100% !important; border-collapse:collapse !important; font-size:12px !important; }
#sk-himoku-pop .sk-hp-table th { background:#f1f3f5 !important; color:#495057 !important; padding:4px 8px !important; border-bottom:2px solid #dee2e6 !important; text-align:left !important; font-size:11px !important; }
#sk-himoku-pop .sk-hp-table td { padding:4px 8px !important; border-bottom:1px solid #f1f3f5 !important; color:#212529 !important; }
#sk-himoku-pop .sk-hp-table td.r { text-align:right !important; font-variant-numeric:tabular-nums !important; }
#sk-himoku-pop .sk-hp-table tr.sk-hp-base td { border-top:2px solid #adb5bd !important; font-weight:700 !important; background:#f8f9fa !important; }
#sk-himoku-pop .sk-hp-sum { margin-top:8px !important; padding:8px 10px !important; background:#ebfbee !important; border-radius:8px !important; font-size:12px !important; color:#2b8a3e !important; line-height:1.6 !important; }
#sk-himoku-pop .sk-hp-tag { font-size:10px !important; color:#e8590c !important; background:#fff4e6 !important; border-radius:8px !important; padding:0 5px !important; }
#sk-himoku-pop .sk-hp-empty { padding:16px !important; text-align:center !important; color:#868e96 !important; font-size:12px !important; }

/* ============================================================
   v3.6.0: 項目行の最下部まとめ表示
   ============================================================ */
.dvtv-sekisan-wrap tr.sk-items-bottom-head td { background:linear-gradient(135deg,#1a1a2e,#0f3460) !important; color:#fff !important; font-weight:700 !important; font-size:12px !important; padding:8px 12px !important; border-top:3px solid #4c6ef5 !important; letter-spacing:.02em !important; }
.dvtv-sekisan-wrap .sk-item-kno-badge { display:inline-block !important; margin-left:4px !important; padding:0 6px !important; font-size:10px !important; font-weight:700 !important; color:#364fc7 !important; background:#edf2ff !important; border:1px solid #bac8ff !important; border-radius:8px !important; white-space:nowrap !important; vertical-align:middle !important; }
.dvtv-sekisan-wrap #sk-items-bottom-toggle.is-active { background:#4c6ef5 !important; color:#fff !important; border-color:#364fc7 !important; }

/* v3.6.1: 合算行と工種区切り */
.dvtv-sekisan-wrap tr.sk-items-merged-row td { background:#f3f0ff !important; font-weight:600 !important; border-bottom:1px solid #d0bfff !important; }
#sk-himoku-pop .sk-hp-kno-sec { margin:10px 0 4px !important; font-size:11px !important; font-weight:700 !important; color:#364fc7 !important; border-bottom:1px dashed #bac8ff !important; padding-bottom:2px !important; }

/* ============================================================
   v3.7.0 並び替えモーダル (工種 / 分類)
   101の分類並び替えと同一デザイン。pointer方式でPC・タッチ両対応。
   ============================================================ */
.sk-buzai-header { flex-wrap: wrap; }
.sk-sort-ov { position: fixed; inset: 0; background: rgba(15,23,42,.55); display: none;
  align-items: center; justify-content: center; z-index: 100000; }
.sk-sort-ov.sk-sort-open { display: flex; }
.sk-sort-box { width: min(94vw, 500px); max-height: 86vh; display: flex; flex-direction: column;
  background: #fff; border-radius: 14px; overflow: hidden; box-shadow: 0 20px 60px rgba(0,0,0,.35); }
.sk-sort-hd { display: flex; align-items: center; gap: 8px; padding: 12px 14px;
  background: linear-gradient(135deg,#1e3a8a,#312e81); color: #fff; font-weight: 800; font-size: 14px; }
.sk-sort-hd span { flex: 1; }
.sk-sort-x { border: 0; background: rgba(255,255,255,.18); color: #fff; width: 28px; height: 28px;
  border-radius: 8px; cursor: pointer; font-size: 14px; line-height: 1; }
.sk-sort-note { padding: 10px 14px; font-size: 12px; color: #64748b; line-height: 1.6; background: #f8fafc; }
.sk-sort-scope { padding: 8px 14px; border-bottom: 1px solid #e2e8f0; font-size: 13px; }
.sk-sort-scope label { display: flex; align-items: center; gap: 8px; }
.sk-sort-scope select { flex: 1; min-width: 0; padding: 6px 8px; border: 1px solid #cbd5e1; border-radius: 6px; font-size: 13px; }
#sk-sort-list { list-style: none; margin: 0; padding: 10px 14px; overflow: auto; flex: 1; }
.sk-sort-item { display: flex; align-items: center; gap: 8px; padding: 9px 10px; margin: 0 0 6px 0;
  border: 2px solid #cbd5e1; border-radius: 8px; background: #fff; color: #1e293b;
  cursor: grab; user-select: none; touch-action: none; font-size: 13px; }
.sk-sort-item:hover { border-color: #4c6ef5; }
.sk-sort-item.is-selected { border-color: #e03131; background: #fff5f5; font-weight: 700; }
.sk-sort-item.is-dragging { opacity: .5; cursor: grabbing; }
.sk-sort-item.sk-drop-before { box-shadow: 0 -3px 0 0 #4f46e5; }
.sk-sort-item.sk-drop-after { box-shadow: 0 3px 0 0 #4f46e5; }
.sk-sort-grip { color: #94a3b8; }
.sk-sort-nm { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk-sort-cnt { font-size: 11px; color: #4c6ef5; background: #edf2ff; border-radius: 10px; padding: 1px 8px; }
.sk-sort-empty { list-style: none; padding: 16px 4px; color: #94a3b8; font-size: 13px; text-align: center; }
.sk-sort-ft { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-top: 1px solid #e2e8f0; }
.sk-sort-btn { border: 1px solid #cbd5e1; background: #fff; color: #1e293b; border-radius: 8px;
  padding: 8px 14px; font-size: 13px; font-weight: 700; cursor: pointer; }
.sk-sort-btn:hover { border-color: #4c6ef5; }
.sk-sort-go { background: linear-gradient(135deg,#f59e0b,#d97706); color: #fff; border-color: transparent; }
body.sk-sorting { user-select: none; -webkit-user-select: none; }
body.sk-sorting * { cursor: grabbing !important; }

/* v3.8.0 同名工種の統合モーダル */
.sk-merge-item { list-style: none; padding: 10px 12px; margin: 0 0 6px 0; border: 2px solid #cbd5e1;
  border-radius: 8px; background: #fff; }
.sk-merge-item:hover { border-color: #4c6ef5; }
.sk-merge-lb { display: flex; align-items: center; gap: 8px; cursor: pointer; font-size: 13px; }
.sk-merge-lb input { width: 16px; height: 16px; accent-color: #4c6ef5; flex: 0 0 auto; }
.sk-merge-nm { flex: 1; min-width: 0; font-weight: 700; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sk-merge-sub { font-size: 11.5px; color: #64748b; margin-top: 5px; padding-left: 24px; line-height: 1.6; }
.sk-merge-sum { font-size: 12px; color: #64748b; font-weight: 700; }

/* v3.13.0: ランク乖離バッジ(マスタ値≠実効値の可視化) */
.sk-keihi-diverge-badge{display:inline-block!important;margin-left:6px!important;padding:1px 8px!important;border-radius:999px!important;background:linear-gradient(135deg,#f97316,#ea580c)!important;color:#fff!important;font-size:10px!important;font-weight:800!important;white-space:nowrap!important;box-shadow:0 1px 4px rgba(234,88,12,.4)!important;vertical-align:middle!important;cursor:help!important}
.sk-k2-form input.sk-k2-diverge{border:2px solid #f97316!important;background:#fff7ed!important;box-shadow:0 0 0 3px rgba(249,115,22,.15)!important}

/* ============================================================
   v3.14.0: 提出合計の丸めトグル (Access C041 CK_丸め金額 相当)
   サイドバーの「積算計算 & 保存」直上に配置。
   ダークモードはダッシュボード共有の data-theme を高詳細度で上書き。
   ============================================================ */
.dvtv-sekisan-wrap .sk-marume-toggle{
    display:flex!important; align-items:center!important; gap:8px!important;
    margin:0 0 8px!important; padding:8px 10px!important; cursor:pointer!important;
    border:1px solid #d8dee9!important; border-radius:8px!important;
    background:linear-gradient(180deg,#fff,#f6f8fb)!important;
    transition:border-color .15s,box-shadow .15s!important; user-select:none!important;
}
.dvtv-sekisan-wrap .sk-marume-toggle:hover{
    border-color:#667eea!important; box-shadow:0 0 0 3px rgba(102,126,234,.12)!important;
}
.dvtv-sekisan-wrap .sk-marume-toggle input{ position:absolute!important; opacity:0!important; width:0!important; height:0!important; }
.dvtv-sekisan-wrap .sk-marume-track{
    flex:0 0 auto!important; width:36px!important; height:20px!important; border-radius:999px!important;
    background:#c7cedb!important; position:relative!important; transition:background .18s!important;
}
.dvtv-sekisan-wrap .sk-marume-thumb{
    position:absolute!important; top:2px!important; left:2px!important; width:16px!important; height:16px!important;
    border-radius:50%!important; background:#fff!important; box-shadow:0 1px 3px rgba(0,0,0,.25)!important;
    transition:transform .18s!important;
}
.dvtv-sekisan-wrap .sk-marume-toggle input:checked + .sk-marume-track{
    background:linear-gradient(135deg,#667eea,#764ba2)!important;
}
.dvtv-sekisan-wrap .sk-marume-toggle input:checked + .sk-marume-track .sk-marume-thumb{
    transform:translateX(16px)!important;
}
.dvtv-sekisan-wrap .sk-marume-toggle input:focus-visible + .sk-marume-track{
    box-shadow:0 0 0 3px rgba(102,126,234,.35)!important;
}
.dvtv-sekisan-wrap .sk-marume-text{
    display:flex!important; flex-direction:column!important; line-height:1.25!important;
    font-size:12px!important; font-weight:700!important; color:#2d3748!important;
}
.dvtv-sekisan-wrap .sk-marume-text small{
    font-size:10px!important; font-weight:400!important; color:#7b8494!important;
}
html body .dvtv-sekisan-wrap[data-theme="dark"] .sk-marume-toggle{
    border-color:#3a4356!important; background:linear-gradient(180deg,#232a3a,#1d2331)!important;
}
html body .dvtv-sekisan-wrap[data-theme="dark"] .sk-marume-text{ color:#e6e9f0!important; }
html body .dvtv-sekisan-wrap[data-theme="dark"] .sk-marume-text small{ color:#98a1b3!important; }
html body .dvtv-sekisan-wrap[data-theme="dark"] .sk-marume-track{ background:#4a5468!important; }

/* ============================================================
   v3.15.0: 高さ固定の撤廃に伴う調整
   (v3.14.2の応急処置 overflow-y:auto + 過度な圧縮 は役目を終えたため撤去。
    ボタンの詰めは視認性を損なわない範囲に戻す)
   ============================================================ */

/* WordPress管理バー(32px)の下へ潜らせない。
   ページスクロール方式になったため、sticky要素は実ビューポート基準で止まる。 */
html body.admin-bar .dvtv-sekisan-wrap .sk-side-shared{
    top:44px!important; max-height:calc(100vh - 56px)!important;
}

/* 台帳ヘッダは従来 .sk-main-pane の内側スクロールに対して固定されていた。
   ページスクロールに変わったため、管理バー分だけ位置を送る。 */
html body.admin-bar .dvtv-sekisan-wrap .sk-buzai-table th{ top:32px!important; }

/* サイドバー内の要素間隔(v3.14.2で4pxまで詰めたものを6pxへ復帰)。
   高さ制約が無くなったので圧縮の必要がない。 */
html body .dvtv-sekisan-wrap .sk-side-shared hr{
    margin:4px 0!important; border:0!important; border-top:1px solid #e3e7f5!important;
}
html body .dvtv-sekisan-wrap .sk-side-shared .sk-action-log{
    flex:1 1 auto!important; min-height:120px!important;
}
html body .dvtv-sekisan-wrap .sk-side-shared .sk-action-log .sk-action-log-body{
    min-height:0!important; max-height:none!important;
}
html body .dvtv-sekisan-wrap .sk-side-shared::-webkit-scrollbar{ width:6px!important; }
html body .dvtv-sekisan-wrap .sk-side-shared::-webkit-scrollbar-thumb{
    background:#c5cae9!important; border-radius:3px!important;
}

/* 丸めトグル: 高さ制約が無くなったため標準サイズへ戻す */
html body .dvtv-sekisan-wrap .sk-marume-toggle{ flex:0 0 auto!important; }

/* 1100px以下では回り込みレイアウトになるため sticky を解除 */
@media (max-width: 1100px){
    html body .dvtv-sekisan-wrap .sk-side-shared{
        position:static!important; top:auto!important;
        max-height:none!important; overflow-y:visible!important;
    }
    html body.admin-bar .dvtv-sekisan-wrap .sk-side-shared{
        top:auto!important; max-height:none!important;
    }
}

html body .dvtv-sekisan-wrap[data-theme="dark"] .sk-side-shared hr{ border-top-color:#3a4356!important; }
html body .dvtv-sekisan-wrap[data-theme="dark"] .sk-side-shared::-webkit-scrollbar-thumb{ background:#4a5468!important; }

/* ============================================================
   v3.25.0: 設定単価パネル — 画面下部に固定表示
   台帳の下に置くと編集中の行から遠く離れ、どれを触っているか
   分からなくなるとの指摘(2026-08-27 社長)を受け、行を選択している
   間だけ画面下に貼り付ける。原版Accessは明細と入力欄が常に
   同一画面に収まっていた。
   ============================================================ */
.sk-setpanel {
    position: fixed !important;
    right: 16px !important;
    bottom: 16px !important;
    z-index: 9990 !important;
    margin: 0 !important;
    /* v3.26.2: 間延び解消のため余白を圧縮 (12/14 → 8/10) */
    padding: 8px 10px !important;
    border: 2px solid #7c3aed !important;
    border-radius: 10px !important;
    background: #ffffff !important;
    box-shadow: 0 8px 28px rgba(15,23,42,.28) !important;
    max-width: 660px !important;
    width: auto !important;
    min-width: 480px !important;
    /* v3.27.1: 中身の高さぶんだけにする。left/top を指定して移動したとき、
       right/bottom が残っていると上下左右に引っ張られてパネルが画面下端まで
       伸びるため、高さは常に auto で固定しておく。 */
    height: auto !important;
    max-height: calc(100vh - 24px) !important;
    overflow: auto !important;
    /* 行未選択のときは邪魔なので隠す */
    display: none !important;
}
.sk-setpanel.is-active { display: block !important; }
/* v3.27.0: 見出しをつかんで移動できる。ドラッグ中は選択を無効にして掴みやすくする。 */
.sk-setpanel-head { cursor: move !important; user-select: none !important; }
.sk-setpanel-head input, .sk-setpanel-head button { cursor: auto !important; }
.sk-setpanel-head .sk-sp-close { cursor: pointer !important; }
.sk-setpanel.is-dragging { opacity: .92 !important; box-shadow: 0 12px 36px rgba(15,23,42,.42) !important; }

/* v3.26.2: 見出しは1行に収める。従来はキーヘルプが flex:1 1 100% で必ず改行され、
   さらに ×ボタンが3行目へ落ちて見出しだけで3行を使っていた。 */
.sk-setpanel-head {
    display: flex !important; align-items: center; gap: 8px; flex-wrap: nowrap !important;
    margin-bottom: 6px !important; padding-bottom: 5px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}
.sk-setpanel-title {
    flex: 0 0 auto !important;
    font-weight: 800 !important; font-size: 12px !important;
    color: #fff !important; background: #7c3aed !important;
    padding: 2px 8px !important; border-radius: 6px !important; white-space: nowrap !important;
}
.sk-setpanel-row {
    flex: 0 1 auto !important;
    font-size: 12px !important; font-weight: 700 !important; color: #0f172a !important;
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 42% !important;
}
.sk-sp-keyhelp {
    flex: 1 1 auto !important; min-width: 0 !important;
    font-size: 10px !important; color: #b91c1c !important;
    border: 1px solid #fca5a5 !important; background: #fef2f2 !important;
    padding: 1px 6px !important; border-radius: 5px !important;
    overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important;
}
.sk-sp-close { flex: 0 0 auto !important; border: none; background: transparent; cursor: pointer; font-size: 17px !important; color: #64748b !important; line-height: 1; margin-left: 0 !important; padding: 0 2px !important; }

/* v3.26.0: 設定単価パネル内のメーカーランク行（照明器具/盤類の行を選んだときだけ表示）。
   独立していた旧ランクパネルを廃してここへ統合した。
   ボタン自体は既存の .sk-lr-rank 系スタイルをそのまま使う。 */
.sk-sp-ranks {
    display: flex !important; align-items: center !important; flex-wrap: nowrap !important;
    gap: 6px !important; margin-bottom: 6px !important; padding-bottom: 5px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}
.sk-sp-ranks-lbl {
    flex: 0 0 auto !important;
    font-weight: 800 !important; font-size: 11px !important; white-space: nowrap !important;
    color: #364fc7 !important;
}
/* v3.26.2: ラベルと5つのボタンが1行に収まるよう小型化。
   従来は .sk-lr-rank(min-width:92px/padding:5px 12px)が5個で幅を超え、
   「他」だけ2行目へ折り返していた。 */
.sk-sp-ranks-btns { flex: 1 1 auto !important; display: flex !important; flex-wrap: nowrap !important; gap: 5px !important; min-width: 0 !important; }
.sk-sp-ranks-btns .sk-lr-rank { flex: 1 1 0 !important; min-width: 0 !important; padding: 3px 6px !important; border-width: 1px !important; border-radius: 6px !important; }
.sk-sp-ranks-btns .sk-lr-name { font-size: 12px !important; white-space: nowrap !important; }
.sk-sp-ranks-btns .sk-lr-rates { font-size: 10px !important; white-space: nowrap !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-sp-ranks,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-sp-ranks { border-bottom-color: #334155 !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-sp-ranks-lbl,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-sp-ranks-lbl { color: #a5b4fc !important; }

.sk-setpanel-grid {
    /* v3.26.2: 行間と内側の余白を詰める (gap 4→3 / padding 6→4) */
    display: flex !important; flex-direction: column !important; gap: 3px !important;
    background: #111827 !important;
    border: 2px solid #000 !important; border-radius: 6px !important;
    padding: 4px !important;
}
.sk-sp-line { display: flex !important; align-items: center !important; gap: 6px !important; }
.sk-sp-lbl {
    min-width: 126px !important; font-size: 12px !important; font-weight: 700 !important;
    color: #ffffff !important; white-space: nowrap; letter-spacing: 0;
}
.sk-sp-line input {
    width: 58px !important; padding: 3px 5px !important;
    font-size: 13px !important; font-weight: 700 !important; text-align: right !important;
    border: 1px solid #94a3b8 !important; border-radius: 3px !important;
    background: #fff !important; color: #0f172a !important;
}
.sk-sp-line input:focus {
    outline: none !important; border-color: #7c3aed !important;
    box-shadow: 0 0 0 3px rgba(167,139,250,.55) !important;
}
.sk-sp-line input:disabled { background: #e2e8f0 !important; color: #94a3b8 !important; }
.sk-sp-line--main input {
    width: 100% !important; flex: 1 1 auto !important;
    background: #fde047 !important; border-color: #a16207 !important;
    color: #1c1917 !important; font-size: 14px !important;
}
.sk-sp-line--main input:disabled { background: #fef9c3 !important; color: #a8a29e !important; }
.sk-sp-out {
    flex: 1 1 auto !important; min-width: 96px !important;
    text-align: right !important; font-size: 14px !important; font-weight: 800 !important;
    color: #0f172a !important; background: #ffffff !important;
    border: 1px solid #64748b !important; border-radius: 3px !important;
    padding: 3px 6px !important;
}
.sk-sp-out--teika {
    font-size: 11px !important; font-weight: 700 !important;
    color: #cbd5e1 !important; background: transparent !important;
    border: 1px dashed #475569 !important; flex: 0 0 auto !important; min-width: 96px !important;
}
/* v3.26.2: 保存ボタンと注記を1行に並べる。従来は .sk-sp-note が flex:1 1 100% で
   必ず改行され、ボタン行と注記行で2行を使っていた。 */
.sk-sp-actions { display: flex !important; align-items: center; gap: 8px; margin-top: 6px !important; flex-wrap: nowrap !important; justify-content: flex-start !important; }
.sk-sp-save {
    flex: 0 0 auto !important;
    padding: 5px 14px !important; border: none !important; border-radius: 7px !important;
    background: linear-gradient(135deg, #6d28d9, #9333ea) !important; color: #fff !important;
    font-size: 12px !important; font-weight: 800 !important; cursor: pointer !important;
    box-shadow: 0 2px 6px rgba(109,40,217,.35) !important; white-space: nowrap !important;
}
.sk-sp-save:disabled { opacity: .35 !important; cursor: default !important; box-shadow: none !important; }
.sk-sp-note { font-size: 10px !important; color: #475569 !important; flex: 1 1 auto !important; min-width: 0 !important; line-height: 1.35 !important; }

/* v3.26.2: 画面が狭いときだけ折り返しを許す。広い画面では1行のまま詰める。 */
@media (max-width: 700px) {
    .sk-setpanel { min-width: 0 !important; }
    .sk-setpanel-head { flex-wrap: wrap !important; }
    .sk-sp-keyhelp { flex: 1 1 100% !important; order: 3 !important; white-space: normal !important; }
    .sk-sp-ranks { flex-wrap: wrap !important; }
    .sk-sp-ranks-btns { flex-wrap: wrap !important; }
    .sk-sp-ranks-btns .sk-lr-rank { flex: 0 0 auto !important; }
    .sk-sp-lbl { min-width: 104px !important; }
    .sk-sp-actions { flex-wrap: wrap !important; }
}

/* v3.25.1: 選択行の背景をはっきり塗る(社長指示)。
   原版Accessは選択行が青一色に反転する。行色の凡例(工種見出し・費目行・
   一式行)より優先させる必要があるため、tr側の背景指定に打ち勝つよう
   td へ直接指定し、費目行のピンクや一式行の水色も上書きする。
   文字色も反転させて可読性を確保する。 */
#sk-buzai-tbody tr.sk-row-selected > td,
#sk-buzai-tbody tr.sk-row-selected.sk-koushu-child > td,
#sk-buzai-tbody tr.sk-row-selected.sk-buzai-row > td {
    background: #6d28d9 !important;
    background-image: none !important;
    color: #ffffff !important;
}
#sk-buzai-tbody tr.sk-row-selected > td,
#sk-buzai-tbody tr.sk-row-selected > td * {
    color: #ffffff !important;
}
#sk-buzai-tbody tr.sk-row-selected > td:first-child {
    box-shadow: inset 4px 0 0 #fbbf24 !important;   /* 左端に黄色の指標 */
}
/* 選択行内の入力欄・バッジは白背景を保ち、押せることが分かるようにする */
#sk-buzai-tbody tr.sk-row-selected > td input,
#sk-buzai-tbody tr.sk-row-selected > td .sk-tcf-reset-btn,
#sk-buzai-tbody tr.sk-row-selected > td .sk-editable-rate {
    background: #ffffff !important;
    color: #0f172a !important;
}
#sk-buzai-tbody tr.sk-row-selected > td .sk-tcf-reset-btn,
#sk-buzai-tbody tr.sk-row-selected > td .sk-tcf-reset-btn * {
    color: #b45309 !important;
}

.dvtv-sekisan-wrap[data-theme="dark"] .sk-setpanel { background: #0f172a !important; border-color: #a78bfa !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-setpanel-head { border-bottom-color: #334155 !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-setpanel-row { color: #f1f5f9 !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-sp-keyhelp {
    color: #fca5a5 !important; background: #450a0a !important; border-color: #7f1d1d !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-sp-note { color: #94a3b8 !important; }

@media (max-width: 900px) {
    .sk-setpanel {
        left: 8px !important; right: 8px !important; bottom: 8px !important;
        max-width: none !important; min-width: 0 !important;
    }
    .sk-sp-lbl { min-width: 110px !important; font-size: 12px !important; }
    .sk-sp-out { min-width: 90px !important; font-size: 14px !important; }
    .sk-sp-out--teika { display: none !important; }
    .sk-sp-save { flex: 1 1 auto !important; }
}

/* ============================================================
   v3.28.1: (3)部材単価タブ — グレーアウトを濃くし、点滅を実際に効かせる
   v3.28.0では
     ・グレーアウトの背景(#f1f5f9)が白に近く、触れる欄との差が分からなかった
     ・@keyframes 内の !important は仕様上無視される上、通常宣言の
       「background: … !important」がアニメーションより優先されるため
       点滅がまったく起きていなかった
   の2点を修正する(2026-08-27 社長指摘)。
   ============================================================ */

/* ── 触れない列(既設定)。斜線＋濃いグレーで「入力できない」と一目で分かるようにする ── */
.dvtv-sekisan-wrap .sk-k3-table tbody td.sk-k3-ro {
    color: #7c8698 !important;
    background-image: repeating-linear-gradient(135deg,
        rgba(255,255,255,.55) 0 6px, rgba(255,255,255,0) 6px 12px) !important;
    cursor: not-allowed !important;
    user-select: none !important;
    font-weight: 600 !important;
}
/* 背景色だけ点滅中は出さない。出すと既設定の2列だけ点滅から取り残されて
   1行の中でまだらになる(斜線は background-image なので点滅中も残る)。 */
.dvtv-sekisan-wrap .sk-k3-table tbody tr:not(.sk-k3-blink) > td.sk-k3-ro {
    background-color: #dde3ea !important;
}
/* ── 触れる列(変更)の入力欄を逆に強調して対比させる ── */
.dvtv-sekisan-wrap .sk-k3-table tbody td .k3-joritsu,
.dvtv-sekisan-wrap .sk-k3-table tbody td .k3-genka {
    background: #ffffff !important;
    border: 2px solid #4c6ef5 !important;
    border-radius: 5px !important;
    font-weight: 700 !important;
    color: #0f172a !important;
}
.dvtv-sekisan-wrap .sk-k3-table tbody td .k3-joritsu:focus,
.dvtv-sekisan-wrap .sk-k3-table tbody td .k3-genka:focus {
    outline: none !important;
    box-shadow: 0 0 0 3px rgba(76,110,245,.35) !important;
}

/* ── 台帳で選んだ行に対応する係数行 ──
   点滅中(.sk-k3-blink)は background の !important 宣言を出さない。
   出すとアニメーションが負けて色が変わらないため、:not() で除外している。 */
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-linked:not(.sk-k3-blink) > td {
    background-color: #fff3bf !important;
}
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-linked > td:first-child {
    border-left: 5px solid #f59e0b !important;
    font-weight: 800 !important; color: #b45309 !important;
}
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-linked > td.sk-k3-ro {
    color: #7c6410 !important;
}
/* 点滅: keyframes 側に !important は書かない(仕様上無視されるため) */
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-blink > td {
    /* v3.33.1: 0.45秒×8回(3.6秒)は長すぎてちらつきに感じられたため 3回(1.35秒)へ */
    animation: skK3Blink .45s ease-in-out 0s 3 both;
}
@keyframes skK3Blink {
    0%, 100% { background-color: #fff3bf; }
    50%      { background-color: #fbbf24; }
}
/* 動きを減らす設定の環境では点滅させず、枠線で示す */
@media (prefers-reduced-motion: reduce) {
    .dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-blink > td {
        animation: none !important;
        background-color: #fff3bf !important;
        outline: 2px solid #f59e0b !important; outline-offset: -2px !important;
    }
}
/* ダークモード */
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody td.sk-k3-ro,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody td.sk-k3-ro {
    color: #64748b !important;
    background-image: repeating-linear-gradient(135deg,
        rgba(255,255,255,.06) 0 6px, rgba(255,255,255,0) 6px 12px) !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody tr:not(.sk-k3-blink) > td.sk-k3-ro,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody tr:not(.sk-k3-blink) > td.sk-k3-ro {
    background-color: #232c3a !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody tr.sk-k3-linked:not(.sk-k3-blink) > td,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-linked:not(.sk-k3-blink) > td {
    background-color: #4d3d10 !important; color: #fde68a !important;
}

/* ── v3.29.0: 選択中の部材と関係ない行のロック ── */
.dvtv-sekisan-wrap .sk-k3-lockbox {
    display: inline-flex !important; align-items: center !important; gap: 5px !important;
    margin-left: 14px !important; font-size: 12px !important; font-weight: 700 !important;
    color: #334155 !important; cursor: pointer !important; user-select: none !important;
}
.dvtv-sekisan-wrap .sk-k3-lockbox input { width: 15px !important; height: 15px !important; cursor: pointer !important; margin: 0 !important; }
.dvtv-sekisan-wrap .sk-k3-lock-hint { font-size: 11px !important; font-weight: 600 !important; color: #b45309 !important; }
/* v3.30.0: 手動単価・行固定の行を選んでいるときの警告 */
.dvtv-sekisan-wrap .sk-k3-lock-hint.is-warn {
    color: #b91c1c !important; background: #fef2f2 !important;
    border: 1px solid #fca5a5 !important; border-radius: 5px !important;
    padding: 1px 7px !important;
}
/* 編集できない行: 全体を薄くし、入力欄も灰色にして触れないと分かるようにする */
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-dim > td { opacity: .45 !important; }
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-dim > td .k3-joritsu,
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-dim > td .k3-genka {
    background: #e2e8f0 !important; border-color: #cbd5e1 !important;
    color: #94a3b8 !important; cursor: not-allowed !important; font-weight: 600 !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-lockbox,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-lockbox { color: #cbd5e1 !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody tr.sk-k3-dim > td .k3-joritsu,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-dim > td .k3-genka {
    background: #1e293b !important; border-color: #334155 !important; color: #64748b !important;
}

/* ── v3.31.0: 係数表からの行選択 ── */
.dvtv-sekisan-wrap .sk-k3-pickhint {
    margin-left: 12px !important; font-size: 11px !important; font-weight: 600 !important;
    color: #475569 !important;
}
/* 行そのものが選べることを示す */
.dvtv-sekisan-wrap .sk-k3-table tbody tr[data-sozai] { cursor: pointer !important; }
.dvtv-sekisan-wrap .sk-k3-table tbody tr[data-sozai]:hover > td { background-color: #eef2ff !important; }
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-dim:hover > td { background-color: #e9edf5 !important; }
/* 逆方向の連動: その分類を使っている台帳の部材行 (選択中の行は紫のまま) */
/* v3.34.1: 台帳は費目行のピンク・一式行の水色・通常行の白が混在するため、
   薄い黄色では埋もれて区別できなかった。濃い黄＋上下の橙線ではっきり分ける。 */
#sk-buzai-tbody tr.sk-scd-linked:not(.sk-row-selected) > td {
    background: #ffe08a !important;
    background-image: none !important;
    color: #4a3a08 !important;
    border-top: 2px solid #ea580c !important;
    border-bottom: 2px solid #ea580c !important;
}
#sk-buzai-tbody tr.sk-scd-linked:not(.sk-row-selected) > td:first-child {
    box-shadow: inset 7px 0 0 #ea580c !important;
    font-weight: 800 !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-pickhint,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-pickhint { color: #94a3b8 !important; }
.dvtv-sekisan-wrap[data-theme="dark"] #sk-buzai-tbody tr.sk-scd-linked:not(.sk-row-selected) > td,
.dvtv-dash-wrap.dvtv-dark #sk-buzai-tbody tr.sk-scd-linked:not(.sk-row-selected) > td {
    background: #3f320d !important;
}

/* ── v3.32.0: 分類ごとの使用数バッジ／未使用の分類 ── */
.dvtv-sekisan-wrap .sk-k3-table tbody .sk-k3-use {
    display: inline-block !important; margin-left: 8px !important;
    padding: 0 6px !important; border-radius: 9px !important;
    font-size: 10px !important; font-weight: 800 !important; line-height: 17px !important;
    background: #dbeafe !important; color: #1d4ed8 !important; border: 1px solid #93c5fd !important;
}
.dvtv-sekisan-wrap .sk-k3-table tbody .sk-k3-use.is-none {
    background: #f1f5f9 !important; color: #94a3b8 !important; border-color: #cbd5e1 !important;
}
/* 使っていない分類は分類名も薄く（入力は可能なまま） */
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-unused > td:nth-child(2) { color: #94a3b8 !important; }
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody .sk-k3-use,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody .sk-k3-use {
    background: #1e3a5f !important; color: #93c5fd !important; border-color: #2c5282 !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody .sk-k3-use.is-none,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody .sk-k3-use.is-none {
    background: #1e293b !important; color: #64748b !important; border-color: #334155 !important;
}

/* v3.33.0: 係数表へ重ねていたロックのオーバーレイは撤去（台帳の行へ表示する方式に変更）。
   .sk-k3-table-wrap の position:relative は他の絶対配置でも使うため残す。 */
.dvtv-sekisan-wrap .sk-k3-table-wrap { position: relative !important; }

/* ── v3.33.0: 台帳側 — 選択中の分類でロックされている行 ── */
#sk-buzai-tbody tr.sk-scd-locked:not(.sk-row-selected) > td {
    background: #fff1f2 !important;
    background-image: repeating-linear-gradient(135deg,
        rgba(190,18,60,.07) 0 7px, rgba(190,18,60,0) 7px 14px) !important;
}
#sk-buzai-tbody tr.sk-scd-locked:not(.sk-row-selected) > td:first-child {
    box-shadow: inset 5px 0 0 #e11d48 !important;
}
/* 選択中(紫)の行では白抜きバッジにして読めるようにする */

/* ── v3.32.1: 選んだ分類の率が効く部材の一覧（係数表の直下） ── */
/* v3.32.2: 表示は is-on クラスで制御する。
   display:flex を !important で常時指定していたため、HTMLの style="display:none" も
   jQuery の .show()/.hide() も打ち消され、出したいときに出ず消したいときに消えない
   状態だった（2026-08-27 社長指摘「どれか区別できません」の直接の原因）。 */
.dvtv-sekisan-wrap .sk-k3-target { display: none !important; }
.dvtv-sekisan-wrap .sk-k3-target.is-on {
    display: flex !important; align-items: flex-start !important; flex-wrap: wrap !important;
    gap: 6px 8px !important; margin: 6px 0 0 !important; padding: 7px 10px !important;
    background: #fffbeb !important; border: 1px solid #fcd34d !important;
    border-radius: 7px !important; max-height: 84px !important; overflow: auto !important;
}
.dvtv-sekisan-wrap .sk-k3-target-lbl {
    flex: 0 0 auto !important; font-size: 11px !important; font-weight: 800 !important;
    color: #b45309 !important; white-space: nowrap !important;
}
.dvtv-sekisan-wrap .sk-k3-target-list { display: flex !important; flex-wrap: wrap !important; gap: 5px !important; }
.dvtv-sekisan-wrap .sk-k3-target-item {
    display: inline-block !important; padding: 1px 8px !important;
    background: #fff !important; border: 1px solid #fbbf24 !important; border-radius: 10px !important;
    font-size: 11px !important; font-weight: 700 !important; color: #78350f !important;
    max-width: 320px !important; overflow: hidden !important; text-overflow: ellipsis !important;
    white-space: nowrap !important;
}
.dvtv-sekisan-wrap .sk-k3-target-item.is-lock {
    background: #f1f5f9 !important; border-color: #cbd5e1 !important; color: #64748b !important;
    text-decoration: line-through !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-target,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-target {
    background: #2a2410 !important; border-color: #78350f !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-target-item,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-target-item {
    background: #1f2937 !important; border-color: #78350f !important; color: #fde68a !important;
}

/* ── v3.32.2: 対象部材ボタン／台帳側のフラッシュ ── */
.dvtv-sekisan-wrap .sk-k3-target-item { cursor: pointer !important; text-align: left !important; }
.dvtv-sekisan-wrap .sk-k3-target-item:hover { filter: brightness(.94) !important; }
.dvtv-sekisan-wrap .sk-k3-target-item b { font-weight: 800 !important; margin-right: 3px !important; }
/* 台帳側: 対象行を一瞬強く光らせる（クリックで飛んだ先を見失わないため） */
#sk-buzai-tbody tr.sk-scd-flash > td {
    animation: skScdFlash .45s ease-in-out 0s 3 both;
}
@keyframes skScdFlash {
    0%, 100% { background-color: #ffe8b0; }
    50%      { background-color: #f97316; }
}
@media (prefers-reduced-motion: reduce) {
    #sk-buzai-tbody tr.sk-scd-flash > td {
        animation: none !important; outline: 3px solid #f59e0b !important; outline-offset: -3px !important;
    }
}

/* ── v3.34.0: 分類名に添えるメーカー名（照明器具/盤類の判別用） ── */
/* メーカー名が無い分類は「CD57」のように素材分類CDを出す（同名の分類を区別するため） */
.dvtv-sekisan-wrap .sk-k3-table tbody .sk-k3-maker {
    display: inline-block !important; margin-left: 6px !important;
    padding: 0 7px !important; border-radius: 9px !important;
    font-size: 11px !important; font-weight: 800 !important; line-height: 17px !important;
    background: #ede9fe !important; color: #6d28d9 !important; border: 1px solid #c4b5fd !important;
}
.dvtv-sekisan-wrap[data-theme="dark"] .sk-k3-table tbody .sk-k3-maker,
.dvtv-dash-wrap.dvtv-dark .dvtv-sekisan-wrap .sk-k3-table tbody .sk-k3-maker {
    background: #2e1065 !important; color: #c4b5fd !important; border-color: #5b21b6 !important;
}

/* ── v3.34.1: 係数表と台帳の対応を示す「◆」の印（色に頼らない目印） ── */
/* 背景色だけでは周囲の行色(白・ピンク・水色)とのコントラスト比が1.1前後にしかならず、
   人の目では見分けられないことを検算で確認した。区別はこのバッジの文字で行い、
   背景色は補助に留める。文字色は白地に濃橙(コントラスト比5以上)で読みやすくする。 */
/* 選択中(紫)の行でも白地のまま読める */

/* ============================================================
   v3.35.0: 行の種別を文字で示す（色に頼らない識別）
   モニタによっては行色も凡例の色チップも同じに見えるため
   (2026-08-27 社長からモニタ実写の提示)、白地＋黒枠＋濃い文字の
   小さな印を品名の先頭に置く。文字と枠線で判別できるので、
   色が沈む環境でも区別できる。
   ============================================================ */
/* 種別ごとに枠線の形も変える（白黒でも見分けられるように） */
/* 「材」は薄い灰(#94a3b8)だとコントラスト比2.56で読みにくかったため濃くする */
/* 選択中(紫)の行でも読めるように白地のまま保つ */
/* 凡例内では行内と同じ見た目にする */

/* ============================================================
   v3.36.0: 行の色分けを彩度の高い色にする
   薄いパステル(#e3f2fd / #f3e5f5 等)ではモニタで見分けられないとの指摘
   (2026-08-27 社長。原色レベルの色分けが必要との実例提示)。
   ・行の左端に 14px の濃い色帯を入れる（背景を濃く塗ると文字が読めなくなるため）
   ・種別の印(材/式/費)も同じ色で塗りつぶし、白文字にする
   ・背景も彩度を上げるが、黒文字が読める明度は保つ
   色は 材=青 / 式=緑 / 費=赤紫 / 対応行=橙 / ロック=赤 で統一し、
   帯・印・バッジが同じ色になるので対応が追いやすい。
   ============================================================ */

/* ── 行の左端の色帯（種別ごと） ──
   v3.36.0: ::before の絶対配置ではブラウザによって高さが出ないことがあるため、
   確実に描画される border-left に変更した。 */
.sk-buzai-table tbody tr.sk-buzai-row > td:first-child {
    border-left: 12px solid #2563eb !important;   /* 通常部材 = 青 */
}
.sk-buzai-table tbody tr.sk-row-ikkatsu > td:first-child { border-left-color: #047857 !important; } /* 一式 = 緑 */
.sk-buzai-table tbody tr.sk-row-shukei  > td:first-child { border-left-color: #c026d3 !important; } /* 費目 = 赤紫 */
.sk-buzai-table tbody tr.sk-scd-linked  > td:first-child { border-left-color: #ea580c !important; } /* 対応行 = 橙 */
.sk-buzai-table tbody tr.sk-scd-locked  > td:first-child { border-left-color: #dc2626 !important; } /* ロック = 赤 */

/* ── 行の背景（黒文字が読める明度を保ちつつ彩度を上げる） ── */
.sk-buzai-table .sk-row-ikkatsu td { background: #a7f3d0 !important; color: #064e3b !important; }
.sk-buzai-table .sk-row-shukei  td { background: #f5d0fe !important; color: #701a75 !important; }
#sk-buzai-tbody tr.sk-scd-linked:not(.sk-row-selected) > td { background: #fde047 !important; color: #422006 !important; }
#sk-buzai-tbody tr.sk-scd-locked:not(.sk-row-selected) > td { background: #fecaca !important; color: #7f1d1d !important; }

/* ── 種別の印を色で塗りつぶす（白文字・同色の枠） ── */
/* 緑#059669 に白文字はコントラスト比3.77で不足だったため濃い緑へ */

/* ── 状態バッジも塗りつぶしで統一 ── */

/* ── 係数表の選択行も同じ橙で揃える ── */
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-linked:not(.sk-k3-blink) > td { background-color: #fde047 !important; }
.dvtv-sekisan-wrap .sk-k3-table tbody tr.sk-k3-linked > td:first-child { border-left: 10px solid #ea580c !important; }

/* ── 凡例の印も行と同じ見た目 ── */
.sk-row-legend .sk-legend-chip--koushu  { background: #7c3aed !important; }
.sk-row-legend .sk-legend-chip--normal  { background: #2563eb !important; }
.sk-row-legend .sk-legend-chip--ikkatsu { background: #059669 !important; }
.sk-row-legend .sk-legend-chip--shukei  { background: #c026d3 !important; }
.sk-row-legend .sk-legend-chip--edit    { background: #fde047 !important; }
/* v3.36.0: 凡例のチップを行の左端の色帯と同じ配色にする */
.sk-row-legend .sk-legend-chip--normal  { background: #2563eb !important; }
.sk-row-legend .sk-legend-chip--ikkatsu { background: #047857 !important; }
.sk-row-legend .sk-legend-chip--shukei  { background: #c026d3 !important; }
.sk-row-legend .sk-legend-chip--linked  { background: #ea580c !important; }
.sk-row-legend .sk-legend-chip--locked  { background: #dc2626 !important; }
.sk-row-legend .sk-legend-chip--dim     { background: #9aa5b1 !important; }
/* チップを帯らしく縦長にして、行の左端の見た目と揃える */
.sk-row-legend .sk-legend-chip {
    display: inline-block !important; width: 12px !important; height: 16px !important;
    border-radius: 2px !important; margin-right: 5px !important;
    vertical-align: middle !important; border: 1px solid rgba(0,0,0,.25) !important;
}

/* ── v3.36.0: 適応外の行をグレーアウト ──
   集計係数設定で分類を選ぶと、その率が効かない行を薄い灰色に落とす。
   色の違いを見分けるより明暗の差の方が確実なため、該当行だけが浮き上がる。
   選択を解除すると元に戻る。 */
#sk-buzai-tbody tr.sk-ledger-dim > td {
    /* 白黒にしたときの明るさで 対応行(黄=215) と 52 の差が付く灰色。
       #f1f5f9(244)や#c8d0da(207)では差が8〜29しかなく、明暗でも区別できなかった。 */
    background: #9aa5b1 !important;
    background-image: none !important;
    color: #5b6672 !important;
    border-left-color: #7c8794 !important;
}
/* 中の文字・バッジもまとめて沈める */
#sk-buzai-tbody tr.sk-ledger-dim > td * {
    opacity: .5 !important;
    filter: grayscale(1) !important;
}
/* 灰色に落とした行でも、マウスを乗せれば位置が分かる */
#sk-buzai-tbody tr.sk-ledger-dim:hover > td { background: #b5bec9 !important; }

/* ── v3.36.1: 個別編集済（手動単価・率ロック）の表示 ──
   v3.36.0で行内の文字をすべて撤去したが、この表示だけは残す指示
   (2026-08-27 社長)。係数を変えても動かない行だと分かる必要があるため。
   赤地に白文字（コントラスト比4.70）で、色が沈むモニタでも文字で判別できる。 */
#sk-buzai-tbody .sk-lockednote {
    display: inline-block !important; margin-left: 8px !important;
    padding: 1px 8px !important; border-radius: 4px !important;
    background: #dc2626 !important; color: #ffffff !important;
    border: 2px solid #991b1b !important;
    font-size: 11px !important; font-weight: 800 !important; white-space: nowrap !important;
    vertical-align: middle !important;
}
/* 選択中(紫)の行では白地にして読めるようにする */
#sk-buzai-tbody tr.sk-row-selected .sk-lockednote {
    background: #ffffff !important; color: #991b1b !important; border-color: #ffffff !important;
}
/* グレーアウト中の行では他と同じく沈める */
#sk-buzai-tbody tr.sk-ledger-dim .sk-lockednote {
    background: #7c8794 !important; border-color: #7c8794 !important; color: #e2e8f0 !important;
}

/* ── v3.36.2: オプション行（2段目）──
   チェックボックスと注記を1行に並べ、内容の文字数が変わってもレイアウトが
   動かないようにする。注記は幅を決めて右端で省略する。 */
.dvtv-sekisan-wrap .sk-k3-optbar {
    display: flex !important; align-items: center !important;
    flex-wrap: wrap !important; gap: 6px 14px !important;
    margin-bottom: 10px !important; padding-bottom: 8px !important;
    border-bottom: 1px solid #e2e8f0 !important;
}
.dvtv-sekisan-wrap .sk-k3-optbar .sk-k3-lockbox {
    flex: 0 0 auto !important; margin-left: 0 !important;
    white-space: nowrap !important; align-items: center !important;
}
.dvtv-sekisan-wrap .sk-k3-optbar .sk-k3-lockbox > span { white-space: nowrap !important; }
/* 件数の注記は幅を固定して、桁数が変わってもボタン位置に影響させない */
.dvtv-sekisan-wrap .sk-k3-optbar .sk-k3-lock-hint {
    display: inline-block !important;
    min-width: 118px !important; max-width: 118px !important;
    overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important;
    margin-left: 2px !important;
}
/* 「他 N 行は編集不可」より長い警告文だけは幅の制限を外して読めるようにする */
.dvtv-sekisan-wrap .sk-k3-optbar .sk-k3-lock-hint.is-warn {
    min-width: 0 !important; max-width: none !important; white-space: normal !important;
    flex: 1 1 100% !important; margin-left: 0 !important;
}
.dvtv-sekisan-wrap .sk-k3-optbar .sk-k3-pickhint {
    flex: 1 1 240px !important; min-width: 0 !important; margin-left: 0 !important;
    overflow: hidden !important; text-overflow: ellipsis !important; white-space: nowrap !important;
}

/* v3.40.1: (5)その他計算設定 — 未使用項目の絞り込みコントロール */
.sk-k5-filter { margin: 6px 0 10px; font-size: 12px; display: flex; gap: 14px; align-items: center; }
.sk-k5-filter label { cursor: pointer; user-select: none; }
.sk-k5-hidden-note { color: #c2410c; font-weight: 600; }

/* v3.40.5: (1)数量Net・補給率タブ — 適用タイミングの注意書きを赤太字で強調 */
.sk-hint-warn {
    margin: 8px 0 10px;
    padding: 9px 14px;
    border: 2px solid #dc2626;
    border-radius: 6px;
    background: #fef2f2;
    color: #b91c1c;
    font-size: 14.5px;
    font-weight: 700;
    line-height: 1.8;
}
.sk-hint-warn strong { color: #991b1b; text-decoration: underline; text-underline-offset: 3px; }

/* v3.44.3: 数値列の幅を整え、名称と操作を各1段にまとめる。狭い画面は既存の横スクロールを使用。 */
#dvtv-sekisan-app .sk-main-pane{min-width:0;}
#dvtv-sekisan-app #sk-buzai-table{width:100%!important;min-width:1280px!important;table-layout:fixed!important;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-no{width:50px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-qty{width:76px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-unit{width:40px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-bugar{width:54px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-base{width:86px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-rate{width:52px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-price{width:94px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-amount{width:104px;}
#dvtv-sekisan-app #sk-buzai-table col.sk-col-shikyu{width:68px;}
#dvtv-sekisan-app #sk-buzai-table th,#dvtv-sekisan-app #sk-buzai-table td{box-sizing:border-box;}
#dvtv-sekisan-app #sk-buzai-table tr.sk-buzai-row>td{padding:5px 6px;vertical-align:middle;line-height:1.35;}
#dvtv-sekisan-app #sk-buzai-table td.num{white-space:nowrap;}
#dvtv-sekisan-app #sk-buzai-table td.sk-name-cell{white-space:normal;}
#dvtv-sekisan-app .sk-material-name{display:block;font-size:15px!important;font-weight:700!important;line-height:1.4!important;overflow-wrap:anywhere;}
#dvtv-sekisan-app .sk-row-actions{display:flex;align-items:center;gap:4px;flex-wrap:wrap;margin-top:3px;}
#dvtv-sekisan-app .sk-row-actions>button{flex:0 0 auto;margin:0!important;line-height:1.3!important;white-space:nowrap;}
#dvtv-sekisan-app .sk-material-actions{display:inline-flex;align-items:center;gap:4px;margin:0;vertical-align:middle;flex:0 0 auto;flex-wrap:nowrap;}
/* v3.44.4: ★ランク・名称/規格・マスタ差替を同じ丸枠に統一。
   選択行でも淡い背景と青文字を保ち、文字を白くする行スタイルより優先する。 */
#dvtv-sekisan-app .sk-row-actions .sk-light-rank-btn,
#dvtv-sekisan-app .sk-row-actions .sk-material-actions button {
    display:inline-flex!important;
    align-items:center!important;
    justify-content:center!important;
    flex:0 0 auto!important;
    box-sizing:border-box!important;
    width:auto!important;
    height:auto!important;
    min-width:0!important;
    min-height:24px!important;
    padding:2px 8px!important;
    margin:0!important;
    border:1px solid #4c6ef5!important;
    border-radius:999px!important;
    background:#edf2ff!important;
    color:#364fc7!important;
    box-shadow:none!important;
    font-size:11px!important;
    font-weight:500!important;
    line-height:1.3!important;
    letter-spacing:normal!important;
    text-transform:none!important;
    white-space:nowrap!important;
    vertical-align:middle!important;
    cursor:pointer!important;
}
#dvtv-sekisan-app .sk-row-actions .sk-light-rank-btn:hover,
#dvtv-sekisan-app .sk-row-actions .sk-material-actions button:hover {
    background:#dbe4ff!important;
    color:#243b9c!important;
    border-color:#364fc7!important;
}
#dvtv-sekisan-app .sk-row-actions .sk-light-rank-btn:focus-visible,
#dvtv-sekisan-app .sk-row-actions .sk-material-actions button:focus-visible {
    outline:2px solid #364fc7!important;
    outline-offset:2px!important;
}
#dvtv-sekisan-app #sk-buzai-table td.sk-editable input{box-sizing:border-box;max-width:100%;}

/* v3.44.0: 台帳の数量を直接入力。行高を増やさず編集可能と分かる枠を付ける。 */
#dvtv-sekisan-app .sk-qty-input{box-sizing:border-box;width:100%;min-width:0;max-width:96px;padding:4px 5px;border:1px solid #8da9c9;border-radius:4px;background:#fff;color:#172d46;text-align:right;font:inherit;line-height:1.3;}
#dvtv-sekisan-app .sk-qty-input:focus{outline:2px solid #2676ce;outline-offset:1px;}
#dvtv-sekisan-app .sk-qty-input:disabled{opacity:.65;cursor:wait;}

/* メーカー対象外の行ではjQueryのhideを優先する。 */
#sk-sp-ranks[style*="display: none"],#sk-sp-ranks[style*="display:none"]{display:none!important;}
#sk-buzai-tbody tr.sk-row-selected > td input.sk-qty-input{background:#fff!important;color:#172d46!important;}
