/* 新增商品抽屉布局（尺寸按参考页实测：抽屉1200、左栏182、标签86、控件240、列距97） */
.jl-root, .ge-drawer { font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", "PingFang SC", "Microsoft YaHei", sans-serif; font-size: 12px; color: var(--jl-text); }
.jl-root *, .ge-drawer *, .jl-root *::before, .ge-drawer *::before, .jl-root *::after, .ge-drawer *::after { box-sizing: border-box; }
.ge-drawer { z-index: 1000; }
.ge-drawer .jl-drawer-content-wrapper { transform: translateX(100%); transition: transform .3s cubic-bezier(.23,1,.32,1), box-shadow .3s; }
.ge-drawer.ge-shown .jl-drawer-content-wrapper { transform: none; }
.ge-drawer .jl-drawer-mask { opacity: 0; transition: opacity .3s; }
.ge-drawer.ge-shown .jl-drawer-mask { opacity: 1; }
.ge-drawer .jl-drawer-header { padding: 24px 24px 24px 32px; border-bottom: 0; }
.ge-drawer .jl-drawer-body { padding: 0; overflow: hidden; }
.ge-drawer .jl-drawer-footer { padding: 16px 24px; }
.ge-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 22px; padding: 0; border: 0; background: none; color: rgba(0,0,0,.85); font-size: 14px; cursor: pointer; }
.ge-icon-btn:hover { color: var(--jl-primary); }
.ge-icon-btn:focus-visible, .ge-q:focus-visible, .ge-drop:focus-visible, .ge-sortable:focus-visible, .ge-picker:focus-visible { outline: 2px solid var(--jl-primary-3); outline-offset: 1px; }
.ge-footer { display: flex; justify-content: flex-end; width: 100%; }
.ge-wrap { display: flex; height: 100%; border-top: 1px solid #eee; }

/* 左侧锚点 */
.ge-left { width: 182px; height: 100%; margin-right: 1px; overflow: auto; background: #fff; flex: none; }
.ge-anchor-root { width: 100%; padding: 8px 0 4px; }
.ge-anchor.jl-anchor-wrapper { margin-left: -4px; padding-left: 4px; overflow: visible; }
.ge-anchor .jl-anchor { padding-left: 2px; }
.ge-anchor .jl-anchor-ink::before { background-color: #fff; }
.ge-anchor .jl-anchor-ink-ball { display: none !important; }
.ge-sortable { display: flex; align-items: center; width: calc(100% - 12px); margin: 3px 6px; border: 1px solid transparent; border-radius: 8px; background: transparent; cursor: grab; touch-action: none; transition: background-color .2s, border-color .2s, box-shadow .2s, opacity .2s; }
.ge-sortable:hover { background: #f7f8fa; border-color: #e5e6eb; }
.ge-sortable:active { cursor: grabbing; }
.ge-sortable.ge-dragging { opacity: .45; }
.ge-sortable.ge-drop-target { border-color: var(--jl-primary-3); background: var(--jl-primary-1); }
.ge-drag-handle { display: inline-flex; align-items: center; justify-content: center; flex-shrink: 0; width: 20px; height: 20px; margin-left: 6px; color: #c9cdd4; font-size: 12px; opacity: .45; pointer-events: none; transition: opacity .2s, color .2s; }
.ge-sortable:hover .ge-drag-handle { opacity: 1; color: #4e5969; }
.ge-anchor-content { flex: 1 1 0%; min-width: 0; }
.ge-anchor .jl-anchor-link { display: flex; align-items: center; height: 36px; margin: 0; padding: 0 0 0 12px !important; border-radius: 0 6px 6px 0; font-size: 12px; line-height: 36px; }
.ge-anchor .jl-anchor-link-title { margin-bottom: 0; color: var(--jl-text); }
.ge-anchor .jl-anchor-link-active > .jl-anchor-link-title { color: var(--jl-primary); }
.ge-anchor .ge-pic-link { position: relative; height: 72px; align-items: start; }
.ge-pic-quick { position: absolute; top: 36px; left: -4px; display: flex; justify-content: space-between; width: 142px; padding: 0 16px; border-radius: 4px; background: #f7f8fa; cursor: pointer; line-height: 36px; }
.ge-pic-quick::before { content: ""; position: absolute; top: -20px; left: -6px; width: 1px; height: 18px; background: #86909c; }
.ge-pic-quick::after { content: ""; position: absolute; top: -22px; left: -8px; width: 5px; height: 5px; border-radius: 50%; background: #86909c; }
.ge-pic-quick > div { display: flex; align-items: center; gap: 1px; }
.ge-pic-quick a { color: var(--jl-text); }
.ge-pic-quick a:hover { color: var(--jl-primary); }
.ge-ai-text { position: absolute; top: -31px; right: 45px; display: inline-flex; align-items: center; gap: 2px; font-size: 14px; font-weight: 600; color: #722ed1; line-height: 22px; }
.ge-ai-text .anticon { font-size: 13px; }
.ge-left .jl-divider-horizontal { margin: 24px 0; }
.ge-reset-order { display: block; width: calc(100% - 24px); margin: 10px 12px 4px; padding: 6px 10px; border: 1px dashed #e5e6eb; border-radius: 6px; background: #fafbfc; color: #86909c; font-size: 12px; line-height: 18px; text-align: center; cursor: pointer; transition: color .2s, border-color .2s, background-color .2s; }
.ge-reset-order:hover { color: var(--jl-primary); border-color: var(--jl-primary-3); background: var(--jl-primary-1); }

/* 右侧分区 */
.ge-right { flex: 1 1 0%; overflow: auto; border-left: 1px solid #eee; scrollbar-width: none; position: relative; }
.ge-right::-webkit-scrollbar { display: none; width: 0; }
.ge-section { padding: 0 32px 0 16px; background: #fff; }
.ge-section:last-child { margin-bottom: 24px; }
.ge-title { display: flex; align-items: center; height: 40px; margin: 24px 0; padding-left: 16px; color: var(--jl-text); font-weight: 500; font-size: 14px; line-height: 40px; background: #f7f8fa; }
.ge-tip-text { margin-left: 16px; color: #868d9c; font-weight: 400; font-size: 12px; line-height: 20px; }
.ge-tip-btn { margin-left: 16px; font-weight: 400; font-size: 12px; line-height: 20px; color: var(--jl-primary); cursor: pointer; }
.ge-form { display: flex; flex-wrap: wrap; padding-left: 60px; }
.ge-form .ge-item { width: 326px; margin: 0 97px 16px 0; }
.ge-form .ge-item.ge-wide { width: 100%; margin-right: 0; }
.ge-form .ge-item.ge-wide .jl-form-item-control { flex: none; width: 663px; max-width: 663px; }
.ge-item .jl-form-item-row { flex-wrap: nowrap; }
.ge-item .jl-form-item-label { flex: none; width: 86px; text-align: right; }
.ge-item .jl-form-item-label > label { height: 28px; padding-right: 10px; font-size: 12px; color: var(--jl-text); }
.ge-item .jl-form-item-label > label::after { display: none; }
.ge-item .jl-form-item-control { flex: none; width: 240px; max-width: 240px; min-width: 0; }
.ge-item .jl-form-item-control-input { min-height: 28px; }
.ge-control { position: relative; display: flex; align-items: center; }
.ge-control > .jl-input-affix-wrapper, .ge-control > .jl-input-number, .ge-control > .jl-select, .ge-control > .jl-input { flex: none; }
.ge-control > .jl-input-affix-wrapper:not([style*="width"]) { width: 100%; }
.ge-after { position: absolute; top: 0; left: calc(100% + 6px); display: flex; align-items: center; height: 28px; white-space: nowrap; }
.ge-maintain { color: var(--jl-primary); cursor: pointer; }
.ge-maintain:hover { color: var(--jl-primary-hover); }
.ge-q { display: inline-flex; align-items: center; color: rgba(0,0,0,.85); font-size: 14px; margin-right: 5px; cursor: help; }
.ge-q-small { font-size: 10px; margin: 0 0 0 5px; color: #86909c; }
.ge-combo { display: flex; }
.ge-combo .jl-select .jl-select-selector { border-top-right-radius: 0; border-bottom-right-radius: 0; }
.ge-combo .jl-input-number, .ge-combo .ge-formula-select .jl-select-selector { margin-left: -1px; border-top-left-radius: 0; border-bottom-left-radius: 0; }
.ge-mode-select .jl-select-selection-item { padding-right: 0 !important; }
.ge-mode-select .jl-select-selector { background: #f7f8fa !important; }
.ge-mode-select .jl-select-arrow { right: 5px; color: #4e5969; font-size: 9px; }
.ge-dims { display: flex; gap: 7px; }
.ge-dims .jl-input-number { flex: none; }
.ge-picker { cursor: pointer; }
.ge-picker .jl-input { cursor: pointer; }
.ge-menu-icon { color: rgba(0,0,0,.45); font-size: 14px; }
.ge-clear { display: none; color: rgba(0,0,0,.25); margin-right: 4px; cursor: pointer; }
.ge-picker:hover .ge-clear { display: inline-flex; }
.ge-clear:hover { color: rgba(0,0,0,.45); }
.ge-note .jl-form-item-control { width: 663px !important; max-width: 663px !important; }
.ge-textarea { position: relative; display: block; width: 100%; }
.ge-textarea textarea.jl-input { height: 68px; min-height: 68px; resize: vertical; padding-bottom: 18px; }
.ge-textarea::after { content: attr(data-count); position: absolute; right: 8px; bottom: 3px; margin: 0; color: #86909c; pointer-events: none; }
.ge-form .ge-item.ge-note { margin-bottom: 16px; }

/* 表格（供应商 / 预售：art-table 样式） */
.ge-supplier { padding: 0 16px; }
.ge-art { position: relative; border-radius: 4px; }
.ge-art-scroll { overflow-x: auto; }
.ge-art table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; font-size: 12px; color: var(--jl-text); }
.ge-art th { height: 32px; padding: 0 5px; background: #f2f3f5; border: 1px solid #e5e6eb; border-left: 0; font-weight: 600; text-align: left; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ge-art th:first-child { border-left: 1px solid #e5e6eb; border-top-left-radius: 4px; }
.ge-art th:last-child { border-top-right-radius: 4px; }
.ge-art td { height: 33px; padding: 0 5px; border-bottom: 1px solid #e5e6eb; border-right: 1px solid #e5e6eb; background: #fff; }
.ge-art td:first-child { border-left: 1px solid #e5e6eb; }
.ge-art tbody tr:last-child td:first-child { border-bottom-left-radius: 4px; }
.ge-art tbody tr:last-child td:last-child { border-bottom-right-radius: 4px; }
.ge-art tbody tr:hover td { background: #f7f8fa; }
.ge-supplier-table { min-width: 1458px; }
.ge-lock-left { position: sticky; left: 0; z-index: 2; }
.ge-lock-right { position: sticky; right: 0; z-index: 2; box-shadow: -6px 0 8px -6px rgba(152,152,152,.5); }
.ge-art th.ge-lock-left, .ge-art th.ge-lock-right { background: #f2f3f5; }
.ge-index { text-align: center; }
.ge-supplier-cell { position: relative; display: flex; align-items: center; height: 22px; cursor: pointer; }
.ge-supplier-edit { position: absolute; top: 50%; right: 10px; display: none; width: 22px; height: 22px; margin-top: -11px; line-height: 22px; text-align: center; background: #fff; border-radius: 4px; color: var(--jl-primary); font-size: 14px; }
.ge-supplier-table tr:hover .ge-supplier-edit, .ge-supplier-cell:focus-within .ge-supplier-edit { display: inline-flex; align-items: center; justify-content: center; }
.ge-supplier-cell:not(:has(.ge-ellipsis:empty)) .ge-supplier-edit { right: 0; }
.ge-ellipsis { display: block; min-width: 0; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ge-ops { display: table-cell; }
.ge-ops a, .ge-ops .ge-default { display: inline-block; width: 50%; text-align: center; color: var(--jl-primary); cursor: pointer; }
.ge-ops .ge-default { color: #c9cdd4; cursor: default; }
.ge-add-row { margin-left: 58px; }
.ge-hint { margin-left: 8px; color: #86909c; }

/* 图片附件 */
.ge-section[data-ge-section="pic"] { padding-bottom: 0; }
.ge-pic { width: 720px; margin-left: 110px; }
.ge-upload-head { display: flex; align-items: center; justify-content: space-between; height: 40px; }
.ge-upload-title { display: flex; align-items: center; }
.ge-upload-title > span:first-child { width: 32px; color: var(--jl-text); }
.ge-upload-limit { display: inline-flex; align-items: center; color: #86909c; }
.ge-url-btn { padding: 0; margin-left: 16px; height: auto; font-size: 12px; }
.ge-upload-tabs .jl-radio-button-wrapper { height: 32px; padding: 0 7px; font-size: 14px; line-height: 30px; }
.ge-drop { position: relative; display: flex; align-items: center; justify-content: center; height: 130px; margin: 0 0 16px 32px; border: 1px dashed #d5d9e0; border-radius: 2px; background: #fafafa; cursor: pointer; transition: border-color .3s; text-align: center; }
.ge-drop:hover, .ge-drop.ge-drop-hover { border-color: var(--jl-primary); }
.ge-drop-inner { display: flex; flex-direction: column; align-items: center; }
.ge-drop-icon { font-size: 22px; color: var(--jl-primary); margin-bottom: 6px; }
.ge-drop-label { color: rgba(0,0,0,.85); line-height: 20px; }
.ge-drop-sub { color: rgba(0,0,0,.85); line-height: 20px; margin-top: 7px; }
.ge-ai-switch { position: absolute; top: 8px; right: 8px; display: inline-flex; align-items: center; gap: 9px; height: 18px; padding: 0 0 0 22px; border-radius: 9px; background: #e8d9ff; color: #722ed1; line-height: 18px; cursor: default; }
.ge-ai-switch .jl-switch { margin: 0; }
.ge-thumbs { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 12px 32px; }
.ge-thumb { position: relative; width: 80px; height: 80px; padding: 4px; border: 1px solid #d5d9e0; border-radius: 2px; background: #fff; }
.ge-thumb-main { border-color: var(--jl-primary); }
.ge-thumb img { display: block; width: 100%; height: 100%; object-fit: contain; }
.ge-thumb-mask { position: absolute; inset: 4px; display: flex; align-items: center; justify-content: center; gap: 6px; background: rgba(0,0,0,.5); opacity: 0; transition: opacity .2s; }
.ge-thumb:hover .ge-thumb-mask, .ge-thumb:focus-within .ge-thumb-mask { opacity: 1; }
.ge-thumb-mask a { color: rgba(255,255,255,.85); font-size: 14px; cursor: pointer; }
.ge-thumb-mask a:hover { color: #fff; }
.ge-thumb-text { font-size: 12px !important; }
.ge-thumb-badge { position: absolute; left: 0; bottom: 0; padding: 0 4px; background: var(--jl-primary); color: #fff; font-size: 10px; line-height: 16px; }
.ge-camera { flex-direction: column; height: auto; min-height: 130px; padding: 12px; cursor: default; }
.ge-camera video { max-width: 100%; max-height: 240px; background: #000; }
.ge-camera-bar { display: flex; gap: 8px; margin-top: 8px; }
.ge-camera-tip { color: #86909c; margin-top: 4px; }
.ge-attach { display: flex; width: 500px; margin-left: 110px; padding-bottom: 0; }
.ge-attach-title { height: 32px; margin-right: 10px; color: rgba(0,0,0,.85); line-height: 20px; }
.ge-attach p { margin: 0 0 12px 8px; opacity: .7; line-height: 20px; }
.ge-attach a { color: var(--jl-primary); cursor: pointer; }
.ge-cat-attr { min-height: 20px; margin-top: 20px; color: #c9cdd4; text-align: center; line-height: 19px; }

/* 其它信息 */
.ge-other-form { padding-left: 60px; }
.ge-other-grid { display: flex; flex-wrap: wrap; width: 100%; }
.ge-other-grid .ge-item { width: 324px; margin: 0 0 16px; }
.ge-other-grid .ge-item:nth-child(odd) { margin-right: 105px; }
.ge-other-grid .ge-item .jl-form-item-label { width: 92px; }
.ge-other-attrs { margin-top: 0; }

/* 商品库存 */
.ge-sync { display: inline-flex; align-items: center; margin-left: 40px; font-size: 12px; font-weight: 500; }
.ge-sync-label { margin-right: 8px; font-weight: 400; }
.ge-sync .jl-switch { margin-right: 12px; }
.ge-sync-text { font-weight: 400; }
.ge-sync-text a { color: var(--jl-primary); }
.ge-stock { padding: 0 0 0 16px; }
.ge-stock-table { width: 100%; border-collapse: separate; border-spacing: 0; table-layout: fixed; border: 1px solid #f0f0f0; border-right: 0; border-radius: 2px; font-size: 12px; }
.ge-stock-table th { height: 35px; padding: 8px 2px; background: #f2f3f5; border-right: 1px solid #f0f0f0; border-bottom: 1px solid #f0f0f0; font-weight: 600; text-align: left; white-space: nowrap; color: var(--jl-text); }
.ge-stock-table td { height: 29px; padding: 2px; border-right: 1px solid #f0f0f0; border-bottom: 1px solid #f0f0f0; }
.ge-stock-table tr:last-child td { border-bottom: 0; }
.ge-stock-table td:nth-child(1), .ge-stock-table td:nth-child(2) { padding-left: 3px; }
.ge-stock-cell { display: flex; align-items: center; }
.ge-mode-btn { display: inline-flex; align-items: center; justify-content: center; width: 14px; height: 16px; margin-left: 5px; padding: 0; border: 0; background: none; color: #4e5769; font-size: 14px; cursor: pointer; }
.ge-mode-btn:hover { color: var(--jl-primary); }
.ge-stock-table .jl-input-number-disabled { background: #edf0f5; }

/* 预售 */
.ge-presale { margin: 0 16px; }
.ge-presale td { height: 38px; padding: 0 5px; }

/* 仓位库容 */
.ge-cap-form .ge-item { width: 320px; margin-right: 108px; }
.ge-cap-form .ge-item .jl-form-item-control { width: 234px; max-width: 234px; }
.ge-cap-form .ge-item:nth-child(even) { margin-right: 0; }

/* 其它设置 */
.ge-setting-form .ge-item { margin-right: 100px; }
.ge-setting-form .ge-item .jl-form-item-label > label, .ge-setting-form .ge-after { height: 24px; }
.ge-setting-form .ge-item .jl-form-item-control-input { min-height: 24px; }
.ge-setting-form .ge-item:nth-child(2) { margin-right: 0; }
.ge-setting-form .ge-after .ge-q { margin-right: 0; }
.ge-setting-form .ge-status { width: 100%; }
.ge-setting-form .ge-status .jl-form-item-control { width: auto; max-width: none; }
.ge-status .jl-radio-wrapper { margin-right: 18px; }
.ge-status .ge-q { margin: 0 0 0 4px; font-size: 12px; }
.ge-setting-form .jl-select-sm .jl-select-selector { height: 24px !important; }

/* 选择弹层 */
.jl-root .jl-select-dropdown { z-index: 1050; }
.jl-kit-search { padding: 4px 8px 8px; }
.jl-kit-footer { padding: 6px 12px 2px; border-top: 1px solid #f0f0f0; }
.jl-kit-footer a { color: var(--jl-primary); cursor: pointer; }
.ge-picker-dropdown { padding: 4px 0 !important; }
.ge-picker-pop { height: 324px; display: flex; flex-direction: column; }
.ge-picker-search { padding: 0 4px 4px; border-bottom: 1px solid #f0f0f0; }
.ge-picker-search .jl-input-affix-wrapper { border-color: transparent; background: #f2f3f5; }
.ge-picker-search .jl-input { background: transparent; }
.ge-picker-list { flex: 1; overflow: auto; padding: 4px; }
.ge-tree .jl-tree-treenode { width: 100%; padding: 0 0 2px; cursor: pointer; }
.ge-tree .jl-tree-node-content-wrapper { flex: 1; }
.ge-picker-empty { position: relative; height: 100%; }
.ge-empty-pop { position: absolute; top: 4px; left: 70px; width: 165px; padding: 4px 0; border-radius: 2px; background: #fff; box-shadow: 0 3px 6px -4px rgba(0,0,0,.12), 0 6px 16px 0 rgba(0,0,0,.08), 0 9px 28px 8px rgba(0,0,0,.05); }
.ge-empty-text, .ge-empty-pop a { display: block; padding: 5px 8px; line-height: 18px; }
.ge-empty-text { color: #868d9c; }
.ge-empty-pop a { color: var(--jl-primary); cursor: pointer; }

/* 弹窗 */
.jl-root .jl-modal-root .jl-modal-mask, .jl-root .jl-modal-root .jl-modal-wrap { z-index: 1000; }
.jl-root { position: absolute; top: 0; left: 0; width: 100%; z-index: 1000; }
.jl-root .jl-tooltip { z-index: 1070; }
.jl-root .jl-message { z-index: 1010; }
.ge-modal-form { display: flex; flex-direction: column; gap: 16px; }
.ge-modal-form .ge-item { width: 100%; }
.ge-modal-form .ge-item .jl-form-item-control { width: 280px; max-width: 280px; }
.ge-native-select { width: 100%; height: 28px; padding: 0 7px; border: 1px solid var(--jl-border); border-radius: 2px; font-size: 12px; color: var(--jl-text); background: #fff; }
.ge-url-label { margin: 0 0 8px; }
.ge-dict-add { display: flex; gap: 8px; margin-bottom: 12px; }
.ge-dict-add .jl-input { flex: 1; }
.ge-dict-list { max-height: 320px; overflow: auto; border: 1px solid #f0f0f0; border-radius: 2px; }
.ge-dict-row { display: flex; justify-content: space-between; padding: 6px 12px; border-bottom: 1px solid #f0f0f0; }
.ge-dict-row:last-child { border-bottom: 0; }
.ge-dict-row a { color: var(--jl-primary); cursor: pointer; }
.ge-muted { color: #86909c; }
.ge-retain-modal .jl-modal-body { padding-top: 12px; }
.ge-retain-alert { display: flex; align-items: flex-start; padding: 8px 15px; border: 1px solid var(--jl-primary-3); background: var(--jl-primary-1); }
.ge-alert-icon { margin: 3px 8px 0 0; font-size: 20px; color: var(--jl-primary); }
.ge-retain-alert .jl-alert-message { font-size: 14px; line-height: 20px; color: var(--jl-text); }
.ge-retain-sub { margin: 18px 0 20px; font-size: 14px; color: var(--jl-text); }
.ge-retain-grid { display: grid; grid-template-columns: repeat(4, 1fr); row-gap: 8px; }
.ge-retain-foot { display: flex; align-items: center; justify-content: space-between; text-align: left; }
.ge-retain-foot .jl-btn + .jl-btn { margin-left: 8px; }
.ge-retain-modal .jl-modal-footer { border-top: 0; padding-top: 0; }

/* 选择供应商 */
.ge-supplier-modal .jl-modal-body { padding: 24px 24px 0; }
.ge-sm-head { position: relative; display: flex; align-items: center; justify-content: space-between; margin-bottom: 16px; }
.ge-sm-title { font-size: 16px; font-weight: 600; color: var(--jl-text); }
.ge-sm-search { margin-right: 40px; }
.ge-sm-search .jl-input-affix-wrapper { width: 224px; }
.ge-sm-close { position: absolute; right: 0; top: 2px; width: 16px; height: 22px; padding: 0; border: 0; background: none; font-size: 16px; color: rgba(0,0,0,.85); cursor: pointer; }
.ge-sm-tabs { margin: 0 -24px; padding: 0 24px; border-bottom: 1px solid #f0f0f0; }
.ge-sm-tab-active { display: inline-block; padding: 4px 0 2px; border-bottom: 2px solid var(--jl-primary); color: var(--jl-primary); font-size: 14px; }
.ge-sm-tools { display: flex; align-items: center; gap: 24px; margin: 8px 0 12px; }
.ge-sm-tools a, .ge-sm-foot a { color: var(--jl-primary); cursor: pointer; }
.ge-sm-body { position: relative; display: flex; height: 470px; }
.ge-sm-list { flex: 1; overflow: auto; padding-right: 40px; }
.ge-sm-letter { margin: 6px 0 8px; padding-left: 6px; border-left: 2px solid var(--jl-primary); font-weight: 600; line-height: 14px; }
.ge-sm-items { display: grid; grid-template-columns: repeat(4, 1fr); row-gap: 8px; padding: 4px 10px 8px; }
.ge-sm-items .jl-radio-wrapper span:last-child { overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.ge-sm-letters { position: absolute; right: -10px; top: 0; display: flex; flex-direction: column; gap: 3px; }
.ge-sm-letters a { color: var(--jl-text); line-height: 15px; text-align: center; cursor: pointer; }
.ge-sm-letters a:hover { color: var(--jl-primary); }
.ge-sm-foot { display: flex; align-items: center; justify-content: space-between; }
.ge-sm-foot .jl-btn + .jl-btn { margin-left: 8px; }
.ge-supplier-modal .jl-modal-footer { border-top: 0; padding: 16px 24px 16px; }

/* 基本售价公式 */
.ge-formula-modal .jl-modal-body { padding: 0 16px 16px; }
.ge-fm { display: flex; gap: 16px; height: 534px; }
.ge-fm-list { width: 228px; flex: none; padding: 4px; border-radius: 8px; background: #f7f8fa; }
.ge-fm-list-head { display: flex; justify-content: space-between; align-items: center; height: 36px; padding: 0 8px 0 12px; font-size: 14px; font-weight: 600; color: var(--jl-text); }
.ge-fm-list-head a { display: inline-flex; align-items: center; gap: 6px; font-size: 12px; font-weight: 400; color: var(--jl-primary); cursor: pointer; }
.ge-fm-items { margin-top: 4px; padding: 8px 0; border-radius: 4px; background: #fff; }
.ge-fm-item { display: flex; align-items: center; gap: 8px; height: 32px; padding: 0 10px; color: var(--jl-text); cursor: pointer; }
.ge-fm-item .anticon-holder { color: #86909c; }
.ge-fm-item-active { background: var(--jl-primary-1); color: var(--jl-primary); }
.ge-fm-item .ge-ellipsis { flex: 1; }
.ge-fm-del { display: none; color: #86909c; }
.ge-fm-item:hover .ge-fm-del { display: inline-flex; }
.ge-fm-main { flex: 1; min-width: 0; }
.ge-fm-edit-head { display: flex; justify-content: space-between; align-items: center; height: 20px; font-size: 14px; font-weight: 600; color: var(--jl-text); }
.ge-fm-hint { font-size: 12px; font-weight: 400; color: #86909c; }
.ge-fm-editor { display: flex; flex-wrap: wrap; align-content: flex-start; gap: 4px; height: 72px; margin-top: 2px; padding: 4px; overflow: auto; border: 1px solid var(--jl-border); border-radius: 2px; }
.ge-fm-chip { padding: 0 5px; border-radius: 2px; background: #f2f3f5; line-height: 24px; cursor: pointer; user-select: none; }
.ge-fm-chip:hover { background: #ffece8; text-decoration: line-through; }
.ge-fm-bottom { display: flex; gap: 16px; margin-top: 16px; }
.ge-fm-left { flex: 1; }
.ge-fm-sub { margin: 8px 0 16px; color: #86909c; font-weight: 600; }
.ge-fm-sub.ge-fm-dark { color: var(--jl-text); }
.ge-fm-tokens { display: grid; grid-template-columns: repeat(4, 128px); gap: 8px; margin-bottom: 16px; }
.ge-fm-token { display: flex; justify-content: space-between; align-items: center; height: 32px; padding: 0 8px; border-radius: 2px; background: #f7f8fa; cursor: pointer; white-space: nowrap; }
.ge-fm-token .anticon { color: var(--jl-primary); font-size: 14px; }
.ge-fm-token:hover { background: var(--jl-primary-1); }
.ge-fm-round { margin-bottom: 16px; }
.ge-fm-round .jl-radio-wrapper { margin-right: 24px; }
.ge-fm-round .ge-q { margin: 0 0 0 4px; font-size: 12px; color: #86909c; }
.ge-fm-pad { display: grid; grid-template-columns: 60px 60px; gap: 8px; width: 128px; flex: none; align-content: start; }
.ge-fm-custom { grid-column: span 2; padding: 6px 5px; border-radius: 2px; background: #f7f8fa; font-weight: 600; }
.ge-fm-custom .jl-input { margin-top: 6px; font-weight: 400; }
.ge-fm-key { height: 72px; border: 0; border-radius: 2px; background: #f7f8fa; font-size: 20px; color: var(--jl-text); cursor: pointer; }
.ge-fm-key:hover { background: var(--jl-primary-1); color: var(--jl-primary); }
.ge-fm-clear { grid-column: span 2; font-size: 12px; font-weight: 600; }

/* —— 对齐修正（与参考页逐项比对） —— */
.ge-drawer, .jl-root { line-height: 1.5715; }
.ge-drawer a, .jl-root a { text-decoration: none; background-color: transparent; outline: none; cursor: pointer; transition: color .3s; }
.ge-drawer .jl-drawer-header { height: 70px; align-items: center; }
.ge-drawer .jl-drawer-title { font-size: 16px; font-weight: 600; line-height: 22px; color: rgba(0,0,0,.85); }
.ge-drawer .jl-drawer-extra, .ge-drawer .jl-drawer-extra .jl-space-item { display: flex; align-items: center; height: 22px; }
.ge-footer .jl-btn { padding: 3px 12px; }
.ge-item .jl-radio-group { display: flex; flex-wrap: nowrap; white-space: nowrap; }
.ge-item .jl-radio-wrapper { margin-right: 0; font-size: 12px; }
.ge-setting-form .ge-status .jl-radio-wrapper { margin-right: 18px; }
.jl-select-arrow .anticon-down { font-size: 10px; }
.ge-drawer .jl-select-arrow { color: #86909c; }
.ge-drawer h4 { margin-top: 24px; margin-bottom: 24px; }

.ge-form .ge-item.ge-note { margin-bottom: 0; }
.ge-section[data-ge-section="base"] { padding-bottom: 0; }
.ge-add-row { margin-top: -9px; position: relative; }
.ge-title > .ge-q { margin-left: 4px; font-size: 12px; }
.ge-pic-quick::before { top: -14px; left: 9px; height: 16px; }
.ge-pic-quick::after { top: -17px; left: 7px; }
.jl-kit-arrow { font-size: 12px; color: #86909c; }
.ge-drawer .jl-select-arrow { width: 12px; height: 12px; margin-top: -6px; }
.ge-add-row { display: block; margin-top: -8px; }
.ge-stock-table th { box-sizing: border-box; height: 35px; }
.ge-stock-table td { box-sizing: border-box; height: 29px; }
.ge-art-scroll { scrollbar-width: none; }
.ge-art-scroll::-webkit-scrollbar { height: 0; }
.ge-art-scroll:hover { scrollbar-width: thin; }
.ge-stock-table { line-height: 18px; }
.ge-stock-table td .jl-input-number, .ge-stock-table td > div { vertical-align: top; }
.ge-stock-table td > div:not(.ge-stock-cell) { display: block; }
.ge-stock-table td { padding: 2px 3px; }
.ge-stock-table td .jl-input-number { display: block; }
.ge-stock-cell .jl-input-number { flex: none; }
.ge-stock-table { border-bottom: 0; }
.ge-stock-table tr:last-child td { border-bottom: 1px solid #f0f0f0; }
.ge-after > .ge-q:first-child { margin-left: 6px; }
.ge-tree { display: block; }
.ge-tree .jl-tree-treenode { display: flex; align-items: center; height: 28px; padding: 0 4px; border-radius: 2px; color: var(--jl-text); }
.ge-tree .jl-tree-treenode:hover { background: #f5f5f5; }
.ge-tree .jl-tree-treenode-selected { background: var(--jl-primary-1); color: var(--jl-primary); }
.ge-tree .jl-tree-indent-unit { display: inline-block; width: 16px; }
.ge-tree .jl-tree-switcher { width: 8px; }
.ge-tree .jl-tree-node-content-wrapper { padding: 0 4px; line-height: 28px; background: transparent !important; overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }
.jl-root .jl-modal-title { font-size: 16px; font-weight: 600; line-height: 22px; color: var(--jl-text); }
.jl-root .jl-modal-header { border-bottom: 0; padding: 24px 24px 16px; }
.ge-fm-key { font-size: 22px; font-weight: 500; }
.ge-formula-modal { top: 108px; }
