/**
 * quotation_detail_dialog.css — 报价单明细弹窗样式分册（qdd- 前缀，独立命名空间）
 *
 * 用途：modules/quotation/detail_dialog.js（QuotationDetailDialog 明细弹窗）专用样式，
 *      含遮罩/弹窗壳/概要条/明细表格/单元格编辑态/底栏/spinner。
 * 注入方式：通过 <link rel="stylesheet" href="/static/css/quotation_detail_dialog.css?v={{版本}}">
 *      引入（接线任务负责挂到 templates/pages/quotation/list.html）；本分册不依赖页内
 *      style 块，JS 侧只挂类名、禁止注入 style/cssText。
 * 规范对齐 AGENTS.md：6px 圆角外框、表头 #f6f8fa、表格/结构线 #57606a（2026-10-28
 *      用户拍板统一加深）、主色 #0969da、文字 #24292f/#57606a/#8c959f；
 *      类名一律 qdd- 前缀，严禁与 .qa- / .ol- / .qt- 族重名。
 * ⚠CSS 注释内禁止出现「星号-斜杠」序列：会提前闭合注释，把后面的注释残骸连同
 *   下一条规则拼成非法选择器整条吞掉（2026-10-27 实证 .qdd-mask 丢失、弹窗
 *   渲染到视口外不可见——无头浏览器量化定位）。
 */

/* ===== 遮罩与弹窗壳 ===== */
.qdd-mask{position:fixed;inset:0;background:rgba(31,35,40,0.5);z-index:200;display:flex;justify-content:center;align-items:center}
/* 整窗可调（订单弹窗同款）：右下角 resize:both 调宽高（overflow 非 visible 才显示手柄），
 * 配合 JS 标题栏拖动平移 + qdd_panel_size 尺寸记忆 */
.qdd-modal{background:#fff;border:1px solid #57606a;border-radius:6px;width:960px;max-width:96vw;max-height:92vh;min-width:640px;min-height:360px;display:flex;flex-direction:column;box-shadow:0 1px 3px rgba(36,41,47,0.06);resize:both;overflow:hidden}
.qdd-modal-loading{max-width:420px;min-width:0;min-height:0;padding:40px 24px;resize:none}

/* ===== 头部 ===== */
.qdd-header{display:flex;justify-content:space-between;align-items:center;padding:14px 20px;border-bottom:1px solid #57606a;flex-shrink:0}
.qdd-header h3{font-size:16px;font-weight:600;color:#24292f;margin:0}
.qdd-sub{font-size:12px;font-weight:400;color:#8c959f;margin-left:10px}
.qdd-close{background:none;border:none;font-size:20px;line-height:1;cursor:pointer;color:#8c959f;padding:0 2px}
.qdd-close:hover{color:#24292f}

/* ===== 基本信息（订单弹窗 .of-head/.of-field 原样复刻：同类名同规则，零改样式） ===== */
.of-head { display:grid; grid-template-columns: 2fr 1fr 1fr; gap:8px 16px;
  padding:12px 24px 4px; flex:0 0 auto; align-items:center; }
.of-head .of-field > label { width:58px; text-align:justify; text-align-last:justify; }
.of-field { display:flex; align-items:center; gap:6px; font-size:13px; min-width:0; }
.of-field > label { flex:0 0 auto; color:#57606a; white-space:nowrap; }
.of-field input { flex:1 1 auto; min-width:0; height:28px;
  border:1px solid #57606a; border-radius:4px; padding:2px 8px; font-size:13px;
  color:#24292f; background:#fff; box-sizing:border-box; }
.of-field input[readonly] { background:#f6f8fa; color:#57606a; }

/* ===== 锁定/未完成提示条 ===== */
.qdd-notice{margin:12px 24px 0;padding:8px 12px;font-size:12px;color:#57606a;background:#f6f8fa;border:1px solid #57606a;border-radius:6px}

/* ===== 内容区 ===== */
.qdd-body{padding:16px 20px;overflow-y:auto}

/* ===== 工具条（订单 .of-toolbar/.of-tool 同款） ===== */
.qdd-toolbar{display:flex;align-items:center;gap:8px;padding:10px 24px 0;flex:0 0 auto}
.qdd-tool{height:32px;padding:5px 14px;font-size:14px;border-radius:6px;border:1px solid #d0d7de;background:#fff;color:#24292f;cursor:pointer}
.qdd-tool:hover:not(:disabled){background:#f6f8fa}
.qdd-tool:disabled{color:#8c959f;background:#f6f8fa;cursor:not-allowed;border-color:#d0d7de}
/* 编辑态高亮（工具条「编辑」按钮进入编辑中） */
.qdd-tool.on{background:#0969da;border-color:#0969da;color:#fff}
.qdd-tool-sep{width:1px;height:20px;background:#57606a;display:inline-block}

/* ===== 明细网格（订单 .of-grid 同款形态：input 单元格/行点选/工具条） ===== */
.qdd-grid-bar{display:flex;align-items:center;gap:8px;padding:8px 24px;flex:0 0 auto}
.qdd-grid-wrap{margin:0 24px;border:1px solid #57606a;border-radius:6px;overflow:auto;position:relative;flex:1 1 auto;min-height:160px;max-height:max(34vh,calc(88vh - 380px))}
/* separate+spacing:0：collapse+sticky 表头 Chrome 边框重影缺陷规避（2026-10-28，
   与报价列表 .qt-table 同修）；线为单侧右/下定义，separate 下相邻不会叠成双线 */
.qdd-grid{border-collapse:separate;border-spacing:0;font-size:12px;table-layout:fixed;min-width:100%}
.qdd-grid th{background:#f6f8fa;border-bottom:1px solid #57606a;padding:8px 6px;text-align:left;font-weight:600;color:#24292f;position:sticky;top:0;z-index:2;white-space:nowrap;position:relative}
.qdd-grid td{border-bottom:1px solid #57606a;padding:3px 4px;vertical-align:middle}
/* 列分隔线（2026-10-27 用户要求明细表格展示列线）：th/td 统一右线；
   2026-10-28 用户要求表格线统一加深，全站报价表格线单色 #57606a */
.qdd-grid th,.qdd-grid td{border-right:1px solid #57606a}
.qdd-grid th:last-child,.qdd-grid td:last-child{border-right:none}
.qdd-grid tbody tr:hover td{background:#f6f8fa}
/* 样图列点击上传/替换（可编辑态） */
.qdd-grid td.qdd-img-cell{cursor:pointer}
.qdd-grid td.qdd-img-cell:hover{box-shadow:inset 0 0 0 1px #0969da}
/* 行内删钮（编辑态渲染，hover 浮现）：删除不依赖先点选，点谁删谁 */
.qdd-grid td.qdd-rowidx{position:relative;white-space:nowrap}
.qdd-rowdel{display:none;background:none;border:none;color:#cf222e;font-size:14px;line-height:1;cursor:pointer;padding:0 2px;vertical-align:middle}
.qdd-grid tbody tr:hover .qdd-rowdel{display:inline-block}
.qdd-row-del .qdd-rowdel{color:#0969da}
/* 已删行胶囊（网格条内）：n>0 显示，可撤销最近一次删除 */
.qdd-removed-pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#9a6700;background:#fff8c5;border:1px solid #d4a72c66;border-radius:6px;padding:4px 10px}
.qdd-undo-btn{background:none;border:none;color:#0969da;font-size:12px;cursor:pointer;padding:0;font-weight:600}
.qdd-undo-btn:hover{text-decoration:underline}
/* 底栏按钮加大加长（2026-10-28 用户要求） */
.qdd-footer-btns .btn{min-width:112px;height:38px;padding:9px 28px;font-size:14px}
.qdd-empty .qdd-undo-btn{margin-left:4px}
.qdd-grid th.c,.qdd-grid td.c{text-align:center}
.qdd-grid th.r,.qdd-grid td.r{text-align:right}
.qdd-grid input[type=text],.qdd-grid input[type=number]{width:100%;box-sizing:border-box;height:26px;border:1px solid transparent;border-radius:4px;padding:2px 6px;font-size:12px;background:transparent;color:#24292f;min-width:0}
.qdd-grid input:hover{border-color:#57606a}
.qdd-grid input:focus{outline:none;border-color:#0969da;background:#fff}
.qdd-grid input.ro{color:#57606a}
.qdd-grid .chk{width:14px;height:14px;accent-color:#0969da;cursor:pointer}
.qdd-grid .thumb{max-height:30px;max-width:56px;display:block;border:1px solid #d0d7de;border-radius:3px;cursor:zoom-in}
.qdd-grid .thumb:hover{border-color:#0969da}
.qdd-grid .noimg{color:#8c959f;font-size:12px}
.qdd-grid tbody tr.qdd-row-cancelled td{color:#8c959f;text-decoration:line-through;background:#fafbfc}
.qdd-grid tbody tr.qdd-row-del td{color:#8c959f;background:#fafbfc;text-decoration:line-through;opacity:0.75}

/* ===== 旧表格样式（弹窗加载壳/选品弹窗复用） ===== */
.qdd-table{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}
.qdd-table th{background:#f6f8fa;color:#57606a;font-weight:600;text-align:left;padding:9px 12px;white-space:nowrap;border-bottom:1px solid #57606a;position:relative}
.qdd-table td{padding:9px 12px;border-bottom:1px solid #57606a;color:#24292f;word-break:break-all}
.qdd-table tbody tr:last-child td{border-bottom:none}
.qdd-table tbody tr:hover{background:#f6f8fa}
.qdd-table .num{text-align:right;font-variant-numeric:tabular-nums}
.qdd-op-col{width:64px;text-align:right}

/* cancelled 行：划线灰显（不参与合计），取消原因在行 title */
.qdd-row-cancelled td{color:#8c959f;text-decoration:line-through;background:#fafbfc}
.qdd-row-cancelled td.qdd-cell-static{cursor:default}
.qdd-row-cancelled:hover{background:#fafbfc}

/* 待删行：弱化 + 虚线提示（未提交，可撤销） */
.qdd-row-del td{color:#8c959f;background:#fafbfc;text-decoration:line-through;opacity:0.75}

/* ===== 可编辑单元格：悬停提示，点击变输入框 ===== */
.qdd-cell{min-width:48px}
.qdd-cell-static{cursor:default}
td[data-qdd-act="edit"]{cursor:pointer}
td[data-qdd-act="edit"]:hover{box-shadow:inset 0 0 0 1px #0969da}
.qdd-cell-input{width:100%;box-sizing:border-box;padding:2px 4px;font-size:13px;font-family:inherit;color:#24292f;border:1px solid #0969da;border-radius:4px;outline:none;background:#fff}
.qdd-cell-input:focus{box-shadow:0 0 0 2px rgba(9,105,218,0.15)}

/* ===== 加一行（选品添加 + 手工添加双按钮） ===== */
.qdd-add-row{margin-top:12px;display:flex;gap:8px}

/* ===== 删行文字按钮（操作列弱化） ===== */
.qdd-btn-del{background:none;border:none;padding:2px 4px;font-size:12px;color:#cf222e;cursor:pointer;border-radius:4px}
.qdd-btn-del:hover{text-decoration:underline}
.qdd-row-del .qdd-btn-del{color:#0969da}

.qdd-ver{font-size:11px;color:#c3cad3;user-select:none}

/* ===== 底部操作条 ===== */
/* 返回/保存按钮绝对定位水平居中（2026-10-28 用户要求）：合计留守左侧不参与挤占，
   居中不受左侧合计文字宽度影响 */
.qdd-footer{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:12px 20px;border-top:1px solid #57606a;flex-shrink:0;position:relative;min-height:64px}
.qdd-total{font-size:13px;color:#57606a}
.qdd-total b{font-size:15px;color:#24292f;font-variant-numeric:tabular-nums;margin-left:4px}
.qdd-footer-btns{display:flex;gap:8px;position:absolute;left:50%;top:50%;transform:translate(-50%,-50%)}
#qddSaveBtn:disabled{opacity:0.5;cursor:not-allowed}

/* ===== 空态与加载 ===== */
.qdd-empty{padding:28px 16px;text-align:center;font-size:13px;color:#8c959f}
.qdd-loading{display:flex;align-items:center;justify-content:center;gap:10px;font-size:13px;color:#57606a}
.qdd-spinner{display:inline-block;width:16px;height:16px;border:2px solid #d0d7de;border-top-color:#0969da;border-radius:50%;animation:qddSpin 0.8s linear infinite}
@keyframes qddSpin{to{transform:rotate(360deg)}}

/* ===== 选品弹窗（product_picker.js，qpp- 前缀；复用 qdd- 遮罩/表格/空态/spinner） ===== */
.qpp-mask{position:fixed;inset:0;background:rgba(31,35,40,0.5);z-index:210;display:flex;justify-content:center;align-items:center}
.qpp-panel{background:#fff;border:1px solid #57606a;border-radius:6px;width:760px;max-width:94vw;height:560px;max-height:88vh;display:flex;flex-direction:column;box-shadow:0 1px 3px rgba(36,41,47,0.06);resize:both;overflow:hidden;min-width:560px;min-height:360px}
.qpp-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px;border-bottom:1px solid #57606a;flex-shrink:0}
.qpp-header h3{font-size:15px;font-weight:600;color:#24292f;margin:0}
.qpp-close{background:none;border:none;font-size:20px;line-height:1;cursor:pointer;color:#8c959f;padding:0 2px}
.qpp-close:hover{color:#24292f}
.qpp-tabs{display:flex;gap:0;padding:0 16px;border-bottom:1px solid #57606a;flex-shrink:0}
.qpp-tab{background:none;border:none;border-bottom:2px solid transparent;padding:9px 14px;font-size:13px;color:#57606a;cursor:pointer}
.qpp-tab:hover{color:#24292f}
.qpp-tab.active{color:#0969da;font-weight:600;border-bottom-color:#0969da}
.qpp-search{display:flex;gap:8px;padding:12px 16px 0;flex-shrink:0}
.qpp-search-input{flex:1;height:32px;padding:0 10px;font-size:13px;color:#24292f;border:1px solid #57606a;border-radius:6px;outline:none}
.qpp-search-input:focus{border-color:#0969da;box-shadow:0 0 0 2px rgba(9,105,218,0.15)}
.qpp-body{flex:1;overflow-y:auto;padding:12px 16px}
.qpp-table-wrap{max-height:none}
.qpp-table tbody tr{cursor:pointer}
.qpp-table tbody tr:hover{background:#f6f8fa}
.qpp-tax{font-size:11px;color:#8c959f;margin-left:2px}
.qpp-footer{display:flex;justify-content:flex-end;padding:8px 16px;border-top:1px solid #57606a;flex-shrink:0}
.qpp-hint{font-size:12px;color:#8c959f}
