/**
* 收银台全站统一视觉(对齐 settlement.html:蓝顶、浅灰底、12px 圆角、触控友好)
* 使用方式:在 style.css 之后引入;根节点 html.pos-app-root + body.pos-page
*/
:root {
--pos-blue: #5c7cfa;
--pos-blue-dark: #4f6cf8;
--pos-orange: #ff6b35;
--pos-navy: #1e3a5f;
--pos-navy2: #152a45;
--pos-green: #22c55e;
--pos-bg: #eef2f8;
--pos-text: #0f172a;
--pos-muted: #64748b;
--pos-border: #e2e8f0;
--pos-card-shadow: 0 2px 12px rgba(15, 23, 42, 0.06);
}
html.pos-app-root {
-webkit-tap-highlight-color: rgba(91, 123, 250, 0.28);
}
body.pos-page {
margin: 0;
min-height: 100vh;
min-height: 100dvh;
font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Oxygen', 'Ubuntu', 'Cantarell', 'Fira Sans', 'Droid Sans', 'Helvetica Neue', sans-serif;
font-size: 14px;
background-color: var(--pos-bg) !important;
color: var(--pos-text);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
overflow-x: hidden;
padding-bottom: env(safe-area-inset-bottom, 0px);
}
body.pos-page #app {
min-height: 100vh;
min-height: 100dvh;
display: flex;
flex-direction: column;
box-sizing: border-box;
}
/* ========= 顶栏:与 settlement settlement-pos-header / header 一致 ========= */
.pos-page .header,
.pos-topbar {
display: flex;
align-items: center;
justify-content: space-between;
flex-shrink: 0;
min-height: 64px;
height: auto !important;
margin-bottom: 0 !important;
padding: max(8px, env(safe-area-inset-top, 0px)) 16px 10px !important;
padding-left: max(16px, env(safe-area-inset-left, 0px)) !important;
padding-right: max(16px, env(safe-area-inset-right, 0px)) !important;
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%) !important;
box-shadow: 0 4px 16px rgba(79, 108, 248, 0.35) !important;
color: #fff;
}
.pos-page .header .home-left,
.pos-page .header .home-center,
.pos-page .header .home-right {
line-height: normal !important;
}
.pos-page .header .home-left {
width: auto !important;
flex: 0 0 auto;
display: flex;
align-items: center;
gap: 8px;
}
.pos-page .header .home-center {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
text-align: center;
font-size: 22px !important;
font-weight: 700 !important;
letter-spacing: 0.02em;
width: auto !important;
}
.pos-page .header .home-right {
flex: 0 0 auto;
min-width: 72px;
display: flex;
align-items: center;
justify-content: flex-end;
}
.pos-page .header .home-left a,
.pos-page .header .home-right a {
color: #fff !important;
text-decoration: none;
font-weight: 600;
font-size: 16px;
display: inline-flex;
align-items: center;
min-height: 44px;
padding: 8px 12px;
border-radius: 10px;
touch-action: manipulation;
}
.pos-page .header .home-left a:active,
.pos-page .header .home-right a:active {
opacity: 0.88;
}
/* 与 settlement.html 顶栏同结构(.settlement-pos-header + 工具按钮) */
.pos-page .header.settlement-pos-header {
padding-top: max(4px, env(safe-area-inset-top, 0px)) !important;
}
.pos-page .pos-header-left-cluster {
display: flex;
align-items: center;
gap: 6px;
}
.pos-page .pos-header-tool-row {
display: flex;
align-items: center;
gap: 8px;
}
.pos-page .pos-header-menu-btn,
.pos-page .pos-header-tool-btn {
display: inline-flex !important;
align-items: center;
justify-content: center;
width: 48px;
height: 48px;
padding: 0 !important;
min-height: unset !important;
border: none;
border-radius: 12px;
background: rgba(255, 255, 255, 0.15);
color: #fff;
cursor: pointer;
touch-action: manipulation;
transition: background 0.15s ease, opacity 0.15s ease;
box-sizing: border-box;
}
.pos-page a.pos-header-tool-btn {
text-decoration: none !important;
}
.pos-page .pos-header-menu-btn:active,
.pos-page .pos-header-tool-btn:active {
opacity: 0.88;
background: rgba(255, 255, 255, 0.22);
}
.pos-page .pos-back-link {
display: inline-flex !important;
align-items: center;
gap: 8px;
color: #fff !important;
font-size: 16px !important;
font-weight: 600;
border-radius: 10px;
padding: 8px 12px !important;
min-height: 44px;
text-decoration: none !important;
box-sizing: border-box;
}
.pos-page .pos-back-link .pos-inline-svg {
color: #fff;
}
.pos-page .pos-inline-svg {
width: 24px;
height: 24px;
flex-shrink: 0;
display: block;
}
.pos-page .pos-header-icon {
width: 26px;
height: 26px;
}
.pos-page .home-center.settlement-pos-title {
gap: 10px;
}
.pos-page .settlement-touch {
touch-action: manipulation;
}
.pos-topbar__title {
font-size: 22px;
font-weight: 700;
letter-spacing: 0.02em;
}
/* ========= 主内容区 ========= */
.pos-page .content {
flex: 1;
display: flex;
min-height: 0;
height: auto !important;
gap: 12px;
padding-top: 12px !important;
padding-left: max(12px, env(safe-area-inset-left, 0px));
padding-right: max(12px, env(safe-area-inset-right, 0px));
padding-bottom: 12px;
box-sizing: border-box;
align-items: stretch;
}
.pos-page .left,
.pos-page .right,
.pos-page .member-content,
.pos-card {
border-radius: 12px !important;
box-shadow: var(--pos-card-shadow) !important;
}
.pos-page .left,
.pos-page .right {
background: #fff;
}
/* 首页快捷入口 */
.pos-page .home-icon-list {
border-radius: 12px !important;
box-shadow: var(--pos-card-shadow) !important;
transition: transform 0.12s ease, box-shadow 0.15s ease;
}
.pos-page .home-icon-list:active {
transform: scale(0.98);
}
.pos-page .home-icon-list a {
color: var(--pos-blue) !important;
}
.pos-form-group {
margin-bottom: 18px;
}
.pos-form-group label {
display: block;
margin-bottom: 8px;
font-weight: 600;
color: var(--pos-text);
font-size: 14px;
}
.pos-input,
.pos-select {
width: 100%;
min-height: 48px;
padding: 12px 14px;
font-size: 16px;
border: 2px solid var(--pos-border);
border-radius: 12px;
box-sizing: border-box;
background: #fff;
color: var(--pos-text);
outline: none;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.pos-input:focus,
.pos-select:focus {
border-color: var(--pos-blue);
box-shadow: 0 0 0 3px rgba(92, 124, 250, 0.2);
}
.pos-input::placeholder {
color: #94a3b8;
}
.pos-btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 48px;
padding: 12px 22px;
font-size: 16px;
font-weight: 600;
border-radius: 12px;
border: none;
cursor: pointer;
touch-action: manipulation;
transition: opacity 0.12s ease, transform 0.12s ease;
box-sizing: border-box;
}
.pos-btn:active {
opacity: 0.9;
transform: scale(0.98);
}
.pos-btn--primary {
width: 100%;
margin-top: 8px;
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.3);
}
.pos-btn--secondary {
background: #e8e8e8;
color: var(--pos-text);
}
.pos-btn--ghost {
background: #fff;
color: var(--pos-muted);
border: 1px solid var(--pos-border);
}
.pos-btn--ghost-dark {
background: #e2e8f0;
color: var(--pos-text);
border: none;
}
/* ========= 订单页 / 标签 ========= */
.pos-container {
flex: 1;
padding: 16px;
box-sizing: border-box;
overflow: auto;
-webkit-overflow-scrolling: touch;
}
.pos-tabs {
display: flex;
gap: 8px;
margin-bottom: 16px;
border-bottom: 2px solid var(--pos-border);
flex-wrap: wrap;
}
.pos-tab-btn {
background: none;
border: none;
padding: 12px 18px;
font-size: 15px;
font-weight: 500;
cursor: pointer;
border-bottom: 3px solid transparent;
color: var(--pos-muted);
margin-bottom: -2px;
touch-action: manipulation;
}
.pos-tab-btn:hover {
color: var(--pos-blue);
}
.pos-tab-btn.active {
color: var(--pos-blue);
border-bottom-color: var(--pos-blue);
font-weight: 700;
}
.pos-order-card {
background: #fff;
border-radius: 12px;
padding: 18px;
box-shadow: var(--pos-card-shadow);
border: 1px solid var(--pos-border);
transition: box-shadow 0.15s ease;
}
.pos-order-card:hover {
box-shadow: 0 4px 16px rgba(15, 23, 42, 0.08);
}
.pos-btn-back {
background: rgba(255, 255, 255, 0.18);
border: none;
color: #fff;
padding: 10px 16px;
border-radius: 10px;
font-size: 15px;
font-weight: 600;
cursor: pointer;
touch-action: manipulation;
}
.pos-btn-back:active {
opacity: 0.88;
}
.pos-pill {
background: rgba(255, 255, 255, 0.2);
padding: 8px 14px;
border-radius: 10px;
font-size: 13px;
}
/* ========= iframe 内嵌表单(from.html 新建会员) ========= */
/* 覆盖 style.css 全局 body{height:100vh;overflow:hidden},避免内容被裁切且无法滚动 */
html.pos-html--embed-fill {
height: 100%;
}
body.pos-page--embed {
height: 100% !important;
max-height: 100% !important;
margin: 0 !important;
padding: 0 !important;
overflow: hidden !important;
display: flex !important;
flex-direction: column !important;
align-items: stretch !important;
justify-content: flex-start !important;
box-sizing: border-box;
background: #fff !important;
}
body.pos-page--embed #app.pos-embed-app {
flex: 1 1 auto;
display: flex;
flex-direction: column;
min-height: 0;
width: 100%;
max-width: none;
margin: 0;
height: 100%;
}
.pos-embed-form {
flex: 1 1 auto;
display: flex;
flex-direction: column;
min-height: 0;
max-height: 100%;
width: 100%;
max-width: none;
margin: 0;
padding: 0;
background: #fff;
border-radius: 0;
border: none;
box-shadow: none;
box-sizing: border-box;
overflow: hidden;
}
/* 与 pos-serial-modal 一致:白底顶栏 + 标题 + 右上角关闭 */
.pos-embed-head {
flex-shrink: 0;
display: flex;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
padding: 16px 18px;
border-bottom: 1px solid var(--pos-border);
background: #fff;
}
.pos-embed-head__text {
flex: 1 1 auto;
min-width: 0;
}
.pos-embed-title {
margin: 0;
font-size: 18px;
font-weight: 700;
color: var(--pos-text);
line-height: 1.3;
}
.pos-embed-sub {
margin: 8px 0 0;
font-size: 13px;
font-weight: 400;
line-height: 1.5;
color: var(--pos-muted);
}
.pos-embed-close {
flex-shrink: 0;
width: 44px;
height: 44px;
border: none;
border-radius: 10px;
background: #f1f5f9;
color: var(--pos-muted);
font-size: 22px;
line-height: 1;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
}
.pos-embed-close:hover {
background: #e2e8f0;
color: var(--pos-text);
}
.pos-embed-body {
flex: 1 1 auto;
min-height: 0;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
padding: 14px 18px;
background: #fff;
}
.pos-embed-section {
margin: 0;
}
.pos-embed-section--optional {
margin-top: 6px;
padding-top: 18px;
border-top: 1px solid var(--pos-border);
}
.pos-embed-section__title {
margin: 0 0 12px;
font-size: 13px;
font-weight: 700;
letter-spacing: 0.02em;
text-transform: none;
color: var(--pos-muted);
}
.pos-embed-section--optional .pos-embed-section__title {
margin-bottom: 12px;
}
.pos-embed-field {
margin-bottom: 14px;
}
.pos-embed-field:last-child {
margin-bottom: 8px;
}
.pos-embed-label {
display: flex;
align-items: center;
gap: 4px;
margin-bottom: 8px;
font-weight: 600;
font-size: 14px;
color: var(--pos-text);
}
.pos-embed-req {
color: #f87171;
font-weight: 800;
}
/* 与全站 .pos-input / .pos-select 一致;下拉开合图标与序列号弹窗内 select 观感统一 */
body.pos-page--embed .pos-embed-form .pos-input,
body.pos-page--embed .pos-embed-form .pos-select {
width: 100%;
margin: 0;
}
body.pos-page--embed .pos-embed-select {
cursor: pointer;
appearance: none;
-webkit-appearance: none;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' fill='none' stroke='%2364748b' stroke-width='2' viewBox='0 0 24 24'%3E%3Cpath stroke-linecap='round' stroke-linejoin='round' d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
background-repeat: no-repeat;
background-position: right 14px center;
padding-right: 40px;
}
/* 底栏与 pos-serial-modal__foot 一致:右对齐 + 灰取消 + 蓝主按钮 */
.pos-embed-foot {
flex-shrink: 0;
padding: 14px 18px;
padding-bottom: max(14px, env(safe-area-inset-bottom, 0px));
border-top: 1px solid var(--pos-border);
background: #fafbfc;
}
.pos-embed-foot__actions {
display: flex;
flex-wrap: wrap;
justify-content: flex-end;
align-items: center;
gap: 10px;
margin: 0;
}
.pos-embed-foot-btn {
min-height: 46px;
padding: 0 22px;
border-radius: 12px;
font-size: 15px;
font-weight: 600;
border: none;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
}
.pos-embed-foot-btn--ghost {
background: #e2e8f0;
color: var(--pos-text);
}
.pos-embed-foot-btn--primary {
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.28);
}
/* ========= home.html:新建会员 iframe 弹层(遮罩/圆角/阴影对齐 pos-serial-modal) ========= */
.pos-page .modal.pos-member-form-modal {
padding: max(12px, env(safe-area-inset-top, 0px)) 14px max(12px, env(safe-area-inset-bottom, 0px));
align-items: center;
justify-content: center;
box-sizing: border-box;
background: rgba(15, 23, 42, 0.45) !important;
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
}
.pos-member-form-modal__panel {
width: min(820px, calc(100vw - 28px));
height: min(86vh, 720px);
max-height: calc(100vh - 24px);
min-height: min(360px, 70vh);
display: flex;
flex-direction: column;
border-radius: 12px;
overflow: hidden;
background: #fff;
border: 1px solid var(--pos-border);
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.15);
box-sizing: border-box;
}
.pos-member-form-modal__iframe {
flex: 1 1 auto;
display: block;
width: 100%;
min-height: 0;
height: 100%;
border: 0;
vertical-align: top;
}
@supports (height: 100dvh) {
.pos-member-form-modal__panel {
height: min(86dvh, 720px);
max-height: calc(100dvh - 24px);
}
}
/* 首页其它 .modal(如选择会员):遮罩与内边距对齐 pos-serial-modal */
.pos-page .modal:not(.pos-member-form-modal) {
background: rgba(15, 23, 42, 0.45) !important;
backdrop-filter: blur(2px);
-webkit-backdrop-filter: blur(2px);
padding: max(12px, env(safe-area-inset-top, 0px)) 14px max(12px, env(safe-area-inset-bottom, 0px));
box-sizing: border-box;
}
/* ========= 收银首页 home.html:业务提示(全屏遮罩 + 居中大卡片,与内联样式一致) ========= */
.pos-page .pos-home-toast {
position: fixed;
inset: 0;
z-index: 100050;
display: flex;
align-items: center;
justify-content: center;
padding: max(20px, env(safe-area-inset-top, 0px)) 24px max(20px, env(safe-area-inset-bottom, 0px)) 24px;
box-sizing: border-box;
background: rgba(15, 23, 42, 0.52);
backdrop-filter: blur(4px);
-webkit-backdrop-filter: blur(4px);
}
.pos-page .pos-home-toast__panel {
position: relative;
display: block;
width: 100%;
min-width: min(360px, calc(100vw - 32px));
max-width: min(500px, calc(100vw - 32px));
max-height: min(72vh, 560px);
overflow-x: hidden;
overflow-y: auto;
padding: 0;
border-radius: 20px;
background: linear-gradient(180deg, #f8faff 0%, #ffffff 28%, #ffffff 100%);
border: 1px solid rgba(226, 232, 240, 0.95);
box-shadow:
0 0 0 1px rgba(255, 255, 255, 0.6) inset,
0 8px 12px -4px rgba(15, 23, 42, 0.08),
0 24px 56px -12px rgba(15, 23, 42, 0.28),
0 48px 80px -20px rgba(79, 108, 248, 0.12);
box-sizing: border-box;
}
.pos-page .pos-home-toast__accent {
display: block;
height: 6px;
background: linear-gradient(90deg, #4f6cf8 0%, #5c7cfa 35%, #818cf8 70%, #a5b4fc 100%);
}
.pos-page .pos-home-toast__main {
padding: 32px 36px 40px;
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 24px;
box-sizing: border-box;
}
.pos-page .pos-home-toast__icon {
width: 88px;
height: 88px;
border-radius: 50%;
background: linear-gradient(160deg, #eef2ff 0%, #e0e7ff 45%, #c7d2fe 100%);
color: var(--pos-blue-dark);
display: flex;
align-items: center;
justify-content: center;
box-shadow:
0 0 0 10px rgba(92, 124, 250, 0.12),
0 12px 28px rgba(79, 108, 248, 0.28);
}
.pos-page .pos-home-toast__icon svg {
width: 44px;
height: 44px;
display: block;
}
.pos-page .pos-home-toast__body {
width: 100%;
min-width: 0;
}
.pos-page .pos-home-toast__label {
margin: 0 0 10px;
font-size: 14px;
font-weight: 600;
letter-spacing: 0.2em;
color: var(--pos-muted);
}
.pos-page .pos-home-toast__text {
margin: 0;
font-size: clamp(18px, 2.2vw, 22px);
line-height: 1.5;
font-weight: 700;
color: var(--pos-text);
letter-spacing: 0.02em;
overflow-wrap: anywhere;
word-break: break-word;
}
.pos-page .pos-home-toast__close {
position: absolute;
top: 12px;
right: 12px;
z-index: 2;
width: 44px;
height: 44px;
margin: 0;
border: none;
border-radius: 12px;
background: rgba(255, 255, 255, 0.92);
color: var(--pos-muted);
font-size: 24px;
line-height: 1;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
padding: 0;
display: inline-flex;
align-items: center;
justify-content: center;
box-shadow: 0 2px 8px rgba(15, 23, 42, 0.08);
transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
}
.pos-page .pos-home-toast__close:hover {
background: #f1f5f9;
color: var(--pos-text);
box-shadow: 0 4px 12px rgba(15, 23, 42, 0.1);
}
/* ========= 与 settlement 一致的弹层/卡片圆角(首页等复用 class 时生效) ========= */
.pos-page .modal-content {
border-radius: 12px !important;
border: 1px solid var(--pos-border);
box-shadow: 0 8px 32px rgba(15, 23, 42, 0.12);
}
.pos-page .member-search .query-button {
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%) !important;
border-radius: 12px !important;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.25);
}
.pos-page .member-search input {
border-radius: 12px !important;
border-color: var(--pos-border) !important;
}
.pos-page .member-search input:focus {
border-color: var(--pos-blue) !important;
box-shadow: 0 0 0 3px rgba(92, 124, 250, 0.2) !important;
}
/* ========= 收银首页 home.html:左右栏高度、结算条、会员区、购物车与结算页一致 ========= */
.pos-page .content > .left,
.pos-page .content > .right {
margin-left: 0 !important;
margin-right: 0 !important;
height: auto !important;
min-height: 0;
align-self: stretch;
}
.pos-page .content > .left {
flex: 0 0 42%;
width: 42% !important;
min-width: 300px;
max-width: 640px;
display: flex;
flex-direction: column;
overflow: hidden;
}
.pos-page .right.pos-home-right {
flex: 1 1 0%;
min-width: 0;
display: flex;
flex-direction: column;
overflow: hidden;
}
.pos-page .pos-home-right-main {
flex: 1 1 0%;
min-height: 0;
display: flex;
flex-direction: column;
overflow: hidden;
}
.pos-page .pos-home-cart-scroll {
flex: 1 1 0%;
min-height: 0;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
padding: 8px 10px 12px;
box-sizing: border-box;
}
.pos-page .amount-price-container {
position: static !important;
flex-shrink: 0;
height: auto !important;
min-height: 72px;
padding: 12px 0;
box-shadow: none !important;
border-top: 1px solid var(--pos-border);
background: #f8fafc;
border-radius: 0 0 12px 12px;
z-index: 1;
}
.pos-page .right-bottom.pos-home-settle-bar {
position: static !important;
width: 100%;
flex-shrink: 0;
height: auto !important;
min-height: 72px;
display: flex;
flex-direction: column;
align-items: stretch;
justify-content: center;
gap: 10px;
padding: 12px 14px;
box-sizing: border-box;
background: #f8fafc;
border-top: 1px solid var(--pos-border);
box-shadow: none !important;
border-radius: 0 0 12px 12px;
}
.pos-page .pos-home-settle-bar .right-bottom-btn-box {
display: none;
}
.pos-page .pos-home-btn-settle {
width: 100%;
margin: 0 !important;
padding: 14px 20px !important;
border-radius: 12px !important;
font-size: 17px !important;
font-weight: 700 !important;
background: linear-gradient(180deg, var(--pos-orange) 0%, #ea580c 100%) !important;
box-shadow: 0 4px 14px rgba(255, 107, 53, 0.35) !important;
}
.pos-page .pos-home-btn-settle:disabled {
cursor: not-allowed !important;
opacity: 0.5;
color: #64748b !important;
background: #e2e8f0 !important;
box-shadow: none !important;
transform: none !important;
}
.pos-page .pos-home-btn-settle:disabled:hover {
background: #e2e8f0 !important;
box-shadow: none !important;
transform: none !important;
}
/* 会员条:信息 + 底部横排三按钮 */
.pos-page .user-info-container.pos-member-strip {
flex-wrap: wrap;
align-items: flex-start;
gap: 12px 16px;
min-height: 0;
padding: 14px 14px 12px;
border-radius: 0 !important;
background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
border-bottom: 1px solid var(--pos-border);
box-shadow: none !important;
}
.pos-page .pos-member-strip__main {
display: flex;
flex-direction: column;
flex: 1 1 200px;
min-width: 0;
align-items: stretch;
gap: 12px;
width: 100%;
}
/* 上排:左头像 + 右(姓名+等级 / 电话 / 积分余额) */
.pos-page .pos-member-strip__body {
display: flex;
flex-direction: row;
align-items: flex-start;
gap: 12px;
width: 100%;
min-width: 0;
}
.pos-page .pos-member-strip__body .user-logo {
flex-shrink: 0;
}
.pos-page .pos-member-strip__body .user-logo img {
margin-right: 0;
}
.pos-page .pos-member-strip__info {
flex: 1;
min-width: 0;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 6px;
}
.pos-page .pos-member-info-name-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
min-width: 0;
width: 100%;
}
.pos-page .pos-member-info-name {
font-size: 16px;
font-weight: 600;
color: var(--pos-text, #1a1a1a);
line-height: 1.25;
min-width: 0;
}
.pos-page .pos-member-info-name-row .pos-member-level-tag {
flex-shrink: 0;
}
.pos-page .pos-member-info-phone {
margin: 0;
line-height: 1.45;
font-size: 13px;
}
.pos-page .pos-member-info-points {
margin: 0;
padding: 0;
gap: 12px 16px;
flex-wrap: wrap;
}
.pos-page .pos-member-strip .user-name {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 0 6px;
margin-bottom: 8px;
}
.pos-page .pos-member-strip .user-name__xm {
line-height: 1.25;
}
/* 权益卡:整行拉通(不与头像右栏并排) */
.pos-page .pos-member-benefits-wrap {
margin-bottom: 0;
padding: 8px 10px;
background: #f8fafc;
border-radius: 10px;
border: 1px solid var(--pos-border);
}
.pos-page .pos-member-benefits-wrap--full {
width: 100%;
box-sizing: border-box;
flex-shrink: 0;
}
.pos-page .pos-member-benefits-hd {
font-size: 11px;
font-weight: 700;
color: var(--pos-muted);
margin-bottom: 6px;
}
.pos-page .pos-member-benefits-ul {
list-style: none;
margin: 0;
padding: 0;
max-height: 140px;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
}
.pos-page .pos-member-benefit-li {
display: flex;
flex-wrap: wrap;
align-items: baseline;
justify-content: space-between;
gap: 6px 10px;
font-size: 12px;
line-height: 1.45;
padding: 6px 0;
border-bottom: 1px solid #e2e8f0;
}
.pos-page .pos-member-benefit-li:last-child {
border-bottom: none;
padding-bottom: 2px;
}
.pos-page .pos-member-benefit-name {
font-weight: 600;
color: var(--pos-text);
flex: 1 1 120px;
min-width: 0;
word-break: break-word;
}
.pos-page .pos-member-benefit-exp {
font-size: 11px;
color: var(--pos-muted);
flex-shrink: 0;
}
.pos-page .pos-member-benefit-exp--gone {
color: #b91c1c;
font-weight: 600;
}
/* 兼容旧版单行「权益卡有效期」类名(若仍有引用) */
.pos-page .pos-member-card-expire {
font-size: 12px;
color: var(--pos-muted);
margin: 6px 0 8px;
line-height: 1.35;
}
.settlement-page .pos-settlement-member-benefit,
.pos-page .pos-settlement-member-benefit {
font-size: 12px;
color: var(--pos-muted);
margin: 4px 0 6px;
line-height: 1.4;
word-break: break-all;
}
.pos-page .pos-member-actions {
flex: 1 1 100%;
flex-direction: row;
flex-wrap: wrap;
margin-left: 0 !important;
gap: 8px;
justify-content: flex-start;
}
.pos-page .pos-member-action-btn {
flex: 1 1 calc(33.333% - 8px);
min-width: 96px;
max-width: none;
width: auto !important;
height: 42px !important;
margin: 0 !important;
padding: 0 10px !important;
font-size: 13px !important;
font-weight: 600 !important;
border-radius: 10px !important;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.2) !important;
}
.pos-page .pos-member-action-btn--secondary {
background: linear-gradient(180deg, #e0e7ff 0%, #c7d2fe 100%) !important;
color: #312e81 !important;
box-shadow: 0 2px 8px rgba(99, 102, 241, 0.2) !important;
}
.pos-page .pos-member-action-btn--outline {
background: #fff !important;
color: var(--pos-muted) !important;
border: 1px solid var(--pos-border) !important;
box-shadow: none !important;
}
.pos-page .pos-member-strip--empty {
cursor: default;
min-height: 0;
}
.pos-page .pos-member-strip--empty .pos-member-strip__body .user-logo img {
margin-right: 0;
}
.pos-page .pos-member-strip-empty-tip {
font-size: 12px !important;
color: var(--pos-muted) !important;
margin-top: 4px !important;
line-height: 1.4 !important;
}
.pos-page .pos-member-strip-empty-actions {
flex: 1 1 100%;
}
/* 购物车行:对齐 settlement .pos-cart-item */
.pos-page .product-container-list.pos-cart-item {
margin: 0 0 10px;
padding: 14px 14px 12px;
background: #fff;
border-radius: 12px;
border: 1px solid var(--pos-border);
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.06);
box-sizing: border-box;
border-bottom: 1px solid var(--pos-border) !important;
}
.pos-page .product-container-list.pos-cart-item:hover {
background: #fff;
}
.pos-page .product-container-list.pos-cart-item.pos-cart-item--presale {
border-left: 4px solid var(--pos-orange);
background: linear-gradient(180deg, #fffbeb 0%, #ffffff 55%);
}
.pos-page .pos-cart-item .product-container {
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
gap: 10px;
}
.pos-page .pos-cart-item .product-left {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: flex-start;
align-content: flex-start;
gap: 6px 10px;
flex: 1 1 0%;
min-width: 0;
}
/* 名称与预售同一簇内换行;序列号标签单独一块且禁止断字 */
.pos-page .pos-cart-item .pos-cart-name-cluster {
flex: 1 1 140px;
min-width: 0;
display: flex;
flex-wrap: wrap;
align-items: flex-start;
gap: 6px 8px;
}
.pos-page .pos-cart-item .pos-cart-presale-badge {
flex-shrink: 0;
white-space: nowrap;
align-self: flex-start;
background-color: #ff6b6b;
color: #fff;
padding: 2px 8px;
border-radius: 6px;
font-size: 11px;
font-weight: 700;
line-height: 1.3;
}
.pos-page .pos-cart-item .product-name {
flex: 1 1 120px;
min-width: 0;
display: block;
line-height: 1.45;
word-break: break-word;
overflow-wrap: anywhere;
}
.pos-page .pos-cart-item .pos-cart-serial-type-tag {
flex-shrink: 0;
white-space: nowrap !important;
margin-left: 0;
align-self: flex-start;
max-width: 100%;
box-sizing: border-box;
}
.pos-page .pos-cart-item .product-right {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
flex-shrink: 0;
align-items: center;
justify-content: flex-end;
gap: 6px;
}
.pos-page .pos-cart-item .product-right .quantity {
flex-shrink: 0;
min-width: 1.5em;
text-align: center;
font-weight: 700;
font-size: 15px;
color: var(--pos-text);
}
.pos-page .pos-cart-item .price-container {
margin-top: 12px;
padding-top: 12px;
border-top: 1px solid #f1f5f9;
display: flex;
flex-direction: column;
gap: 8px;
}
.pos-page .pos-cart-item .pos-cart-price-row--single-line {
display: flex;
flex-direction: row;
flex-wrap: wrap;
align-items: center;
justify-content: space-between;
gap: 12px 20px;
width: 100%;
}
.pos-page .pos-cart-item .pos-cart-price-inline {
display: inline-flex;
flex-wrap: wrap;
align-items: baseline;
gap: 6px;
min-width: 0;
}
.pos-page .pos-cart-item .pos-cart-muted {
font-size: 12px;
font-weight: 600;
color: #94a3b8;
line-height: 1.2;
flex-shrink: 0;
}
.pos-page .pos-cart-item .pos-cart-amount-line {
font-size: 15px;
font-weight: 700;
color: var(--pos-text);
line-height: 1.3;
}
.pos-page .pos-cart-item .discount-price,
.pos-page .pos-cart-item .final-price {
font-size: 15px;
font-weight: 700;
color: var(--pos-text);
}
.pos-page .pos-cart-serial-box {
margin-top: 10px;
padding: 10px 12px;
background: #f8fafc;
border-radius: 10px;
border: 1px solid var(--pos-border);
box-sizing: border-box;
}
/* 购物车行:售后规则提示(质保时间等,来自商品档案;下单时落成明细快照) */
.pos-cart-shgz-tip {
margin-top: 8px;
padding: 6px 10px;
display: flex;
align-items: flex-start;
gap: 8px;
background: #fff1f0;
border: 1px solid #ffccc7;
border-radius: 8px;
color: #cf1322;
font-size: 12px;
line-height: 1.5;
word-break: break-all;
}
.pos-cart-shgz-tip__label {
flex: 0 0 auto;
padding: 1px 6px;
background: #cf1322;
color: #fff;
border-radius: 4px;
font-size: 11px;
font-weight: 600;
letter-spacing: 0.5px;
}
.pos-cart-shgz-tip__text {
flex: 1 1 auto;
min-width: 0;
font-weight: 500;
}
/* 分类 + 分段切换 */
.pos-page .pos-home-category-row {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 12px;
padding: 12px 14px;
flex-shrink: 0;
border-bottom: 1px solid var(--pos-border);
}
.pos-page .pos-category-toolbar {
flex: 1 1 220px;
min-width: 0;
display: flex;
align-items: center;
gap: 10px;
padding: 0 !important;
border: none !important;
}
.pos-page .pos-cat-arrow {
display: inline-flex;
align-items: center;
justify-content: center;
width: 48px;
min-width: 48px;
height: 48px;
min-height: 48px;
flex-shrink: 0;
border-radius: 12px;
background: #f1f5f9;
border: 1px solid var(--pos-border);
box-sizing: border-box;
touch-action: manipulation;
}
.pos-page .pos-cat-arrow img {
width: 22px;
height: 22px;
display: block;
}
.pos-page .pos-category-scroll {
flex: 1;
min-width: 0;
overflow-x: auto;
overflow-y: hidden;
display: flex;
flex-wrap: nowrap;
gap: 10px;
padding: 6px 4px;
scrollbar-width: thin;
-webkit-overflow-scrolling: touch;
}
.pos-page .pos-category-scroll::-webkit-scrollbar {
height: 4px;
}
.pos-page .pos-category-scroll::-webkit-scrollbar-thumb {
background: #cbd5e1;
border-radius: 4px;
}
.pos-page .pos-category-pill {
flex-shrink: 0;
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 44px;
padding: 10px 20px;
border-radius: 999px;
font-size: 15px;
font-weight: 600;
text-decoration: none !important;
color: var(--pos-muted);
background: #f1f5f9;
border: 1px solid transparent;
transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
line-height: 1.25;
cursor: pointer;
box-sizing: border-box;
touch-action: manipulation;
}
.pos-page .pos-category-pill:hover {
color: var(--pos-blue);
background: #e8edff;
}
.pos-page .pos-category-pill.is-active {
color: #fff !important;
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
box-shadow: 0 2px 10px rgba(79, 108, 248, 0.28);
}
.pos-page .pos-segmented {
display: inline-flex;
flex-shrink: 0;
align-items: stretch;
background: #f1f5f9;
border-radius: 12px;
padding: 4px;
border: 1px solid var(--pos-border);
box-sizing: border-box;
}
.pos-page .pos-segmented__btn {
border: none;
background: transparent;
min-height: 44px;
padding: 10px 18px;
font-size: 14px;
font-weight: 700;
color: var(--pos-muted);
border-radius: 10px;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
display: inline-flex;
align-items: center;
justify-content: center;
}
.pos-page .pos-segmented__btn.is-active {
background: #fff;
color: var(--pos-blue);
box-shadow: 0 1px 4px rgba(15, 23, 42, 0.08);
}
.pos-page .search-bar.pos-home-search {
margin: 10px 12px 0 !important;
flex-shrink: 0;
}
.pos-page .search-bar.pos-home-search input {
border-radius: 10px !important;
border: 1px solid var(--pos-border) !important;
border-right: 0 !important;
}
.pos-page .search-bar.pos-home-search .query-button {
border-radius: 0 10px 10px 0 !important;
margin-left: 0 !important;
}
.pos-page .pos-home-product-grid {
flex: 1 1 0%;
min-height: 0;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
margin: 12px 0 0 !important;
padding: 0 12px 16px !important;
display: flex;
flex-direction: column;
gap: 0;
box-sizing: border-box;
}
.pos-page .pos-home-product-grid > div {
display: flex;
flex-wrap: wrap;
gap: 10px;
width: 100%;
align-content: flex-start;
}
/* ========= orders.html 订单管理 / 会员订单(对齐收银台顶栏与卡片) ========= */
.orders-page .orders-pos-main {
flex: 1;
min-height: 0;
overflow: auto;
-webkit-overflow-scrolling: touch;
padding: 12px max(12px, env(safe-area-inset-left, 0px)) 24px max(12px, env(safe-area-inset-right, 0px));
box-sizing: border-box;
}
.orders-page .orders-header-tools {
display: flex;
align-items: center;
gap: 8px;
flex-wrap: wrap;
justify-content: flex-end;
}
.orders-page .orders-member-pill {
background: rgba(255, 255, 255, 0.2);
padding: 8px 12px;
border-radius: 10px;
font-size: 12px;
line-height: 1.35;
max-width: min(220px, 42vw);
text-align: left;
}
.orders-page .orders-member-pill-line {
font-weight: 600;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.orders-page .orders-member-pill-sub {
font-size: 11px;
opacity: 0.92;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.orders-page .orders-list {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr));
gap: 14px;
}
.orders-page .order-card.orders-order-card {
background: #fff;
border-radius: 12px;
padding: 0;
border: 1px solid var(--pos-border);
box-shadow: var(--pos-card-shadow);
transition: box-shadow 0.2s ease, border-color 0.2s ease;
overflow: hidden;
}
.orders-page .order-card.orders-order-card:hover {
box-shadow: 0 6px 20px rgba(15, 23, 42, 0.09);
}
.orders-page .order-card.orders-order-card.highlight {
border: 2px solid var(--pos-blue);
box-shadow: 0 4px 16px rgba(92, 124, 250, 0.25);
}
.orders-page .orders-order-card .order-header {
display: flex;
flex-direction: row;
align-items: flex-start;
justify-content: space-between;
gap: 12px;
padding: 16px 16px 14px;
margin-bottom: 0;
border-bottom: 1px solid var(--pos-border);
background: linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
}
.orders-page .orders-order-card .order-status {
flex-shrink: 0;
align-self: flex-start;
min-height: 40px;
padding: 8px 14px;
display: inline-flex;
align-items: center;
justify-content: center;
font-size: 13px;
font-weight: 700;
border-radius: 10px;
touch-action: manipulation;
}
.orders-page .orders-order-card .order-number {
color: var(--pos-text);
font-size: 15px;
font-weight: 700;
line-height: 1.35;
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 8px;
}
.orders-page .orders-order-card .order-date {
font-size: 13px;
margin-top: 4px;
}
.orders-page .order-date,
.orders-page .order-djlx-meta {
color: var(--pos-muted);
}
.orders-page .order-djlx-meta {
font-size: 12px;
margin-top: 6px;
line-height: 1.35;
}
.orders-page .status-completed {
background: #dcfce7;
color: #166534;
border-radius: 8px;
}
.orders-page .status-draft {
background: #ffedd5;
color: #c2410c;
border-radius: 8px;
}
.orders-page .orders-order-card .order-details {
margin: 0;
padding: 12px 16px;
background: #f8fafc;
border-bottom: 1px solid var(--pos-border);
}
.orders-page .orders-order-card .detail-item {
padding: 6px 0;
border-bottom: none;
font-size: 14px;
line-height: 1.45;
}
.orders-page .orders-order-card .detail-label {
color: var(--pos-muted);
font-weight: 600;
min-width: 4.5em;
}
.orders-page .orders-order-card .detail-value {
color: var(--pos-text);
text-align: right;
word-break: break-all;
}
.orders-page .orders-order-card .order-items {
margin: 0 16px 14px;
padding: 0;
background: #fff;
border: 1px solid var(--pos-border);
border-radius: 12px;
overflow: hidden;
}
.orders-page .orders-order-card .item-row {
border-bottom: 1px solid #f1f5f9;
padding: 10px 12px;
font-size: 14px;
align-items: flex-start;
}
.orders-page .orders-order-card .item-row:last-child {
border-bottom: none;
}
.orders-page .orders-order-card .item-row--head {
align-items: center;
background: #eef2f8;
font-weight: 700;
font-size: 12px;
color: var(--pos-muted);
border-bottom: 1px solid var(--pos-border);
padding-top: 10px;
padding-bottom: 10px;
}
.orders-page .orders-order-card .item-name {
word-break: break-word;
overflow-wrap: anywhere;
color: var(--pos-text);
}
.orders-page .orders-order-card .item-qty {
color: var(--pos-muted);
font-weight: 600;
}
.orders-page .orders-order-card .item-price,
.orders-page .orders-order-card .item-total {
color: var(--pos-text);
}
.orders-page .orders-order-card .item-total {
font-weight: 700;
color: var(--pos-orange);
}
.orders-page .orders-order-card .order-footer {
padding: 14px 16px 16px;
margin: 0;
border-top: 1px solid var(--pos-border);
background: #fafbfc;
}
.orders-page .order-total {
color: var(--pos-orange);
font-size: 17px;
font-weight: 800;
}
.orders-page .refund-badge {
font-weight: 700;
border-radius: 8px;
vertical-align: middle;
}
.orders-page .orders-foot-btn {
display: inline-flex;
align-items: center;
justify-content: center;
min-height: 44px;
padding: 10px 18px;
border-radius: 12px;
font-size: 14px;
font-weight: 600;
border: none;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
transition: opacity 0.15s ease, transform 0.12s ease;
box-sizing: border-box;
}
.orders-page .orders-foot-btn:active:not(:disabled) {
opacity: 0.92;
transform: scale(0.98);
}
.orders-page .orders-foot-btn--primary {
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.28);
}
.orders-page .orders-foot-btn--danger {
background: linear-gradient(180deg, var(--pos-orange) 0%, #ea580c 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(255, 107, 53, 0.3);
}
.orders-page .orders-foot-btn--danger:disabled {
background: #e2e8f0 !important;
color: #94a3b8 !important;
box-shadow: none !important;
cursor: not-allowed !important;
opacity: 0.85;
transform: none !important;
}
.orders-page .orders-foot-btn--ghost {
background: #e2e8f0;
color: var(--pos-text);
}
.orders-page .orders-foot-btn--ghost:hover {
background: #cbd5e1;
}
.orders-page .member-info-card.orders-member-hero {
background: linear-gradient(180deg, #ffffff 0%, #f8fafc 100%);
border: 1px solid var(--pos-border);
box-shadow: var(--pos-card-shadow);
border-radius: 12px;
flex-wrap: wrap;
gap: 16px;
align-items: flex-start;
}
/* 会员资产:触控块 + SVG,替代 emoji */
.orders-page .orders-member-stats {
display: flex;
flex-wrap: wrap;
gap: 10px;
flex: 1 1 260px;
justify-content: flex-start;
align-items: stretch;
min-width: 0;
}
.orders-page .orders-stat-tile {
display: flex;
flex-direction: row;
align-items: center;
gap: 12px;
flex: 1 1 140px;
min-width: min(140px, 100%);
min-height: 64px;
padding: 12px 14px;
border-radius: 12px;
border: 1px solid var(--pos-border);
box-sizing: border-box;
touch-action: manipulation;
}
.orders-page .orders-stat-tile__icon {
flex-shrink: 0;
width: 44px;
height: 44px;
border-radius: 12px;
display: flex;
align-items: center;
justify-content: center;
}
.orders-page .orders-stat-tile__icon svg {
width: 24px;
height: 24px;
}
.orders-page .orders-stat-tile__body {
display: flex;
flex-direction: column;
gap: 2px;
min-width: 0;
}
.orders-page .orders-stat-tile__label {
font-size: 12px;
font-weight: 600;
color: var(--pos-muted);
line-height: 1.2;
}
.orders-page .orders-stat-tile__value {
font-size: 17px;
font-weight: 700;
color: var(--pos-text);
line-height: 1.2;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.orders-page .orders-stat-tile--ye .orders-stat-tile__icon {
background: #dcfce7;
color: #15803d;
}
.orders-page .orders-stat-tile--ye .orders-stat-tile__value {
color: #166534;
}
.orders-page .orders-stat-tile--jf .orders-stat-tile__icon {
background: #ffedd5;
color: #c2410c;
}
.orders-page .orders-stat-tile--jf .orders-stat-tile__value {
color: #9a3412;
}
.orders-page .orders-stat-tile--qyk .orders-stat-tile__icon {
background: #ede9fe;
color: #6d28d9;
}
.orders-page .orders-stat-tile--qyk .orders-stat-tile__value {
color: #5b21b6;
}
/* 订单 Tab:全宽分段,适合手指点击 */
.orders-page .orders-tab-strip {
display: flex;
flex-direction: row;
flex-wrap: nowrap;
gap: 6px;
width: 100%;
padding: 5px;
margin-bottom: 16px;
box-sizing: border-box;
background: #e2e8f0;
border-radius: 14px;
border: 1px solid var(--pos-border);
-webkit-overflow-scrolling: touch;
overflow-x: auto;
scrollbar-width: none;
}
.orders-page .orders-tab-strip::-webkit-scrollbar {
display: none;
}
.orders-page .orders-tab-pill {
flex: 1 1 0;
min-width: 112px;
min-height: 52px;
padding: 12px 10px;
border: none;
border-radius: 11px;
background: transparent;
color: var(--pos-muted);
font-size: 15px;
font-weight: 700;
font-family: inherit;
cursor: pointer;
touch-action: manipulation;
transition: background 0.15s ease, color 0.15s ease, box-shadow 0.15s ease;
white-space: nowrap;
}
.orders-page .orders-tab-pill:active {
opacity: 0.9;
}
.orders-page .orders-tab-pill.is-active {
background: #fff;
color: var(--pos-blue);
box-shadow: 0 2px 10px rgba(15, 23, 42, 0.08);
}
.orders-page .member-label {
color: var(--pos-text);
font-size: 16px;
}
.orders-page .info-label {
color: var(--pos-muted);
}
.orders-page .info-value {
color: var(--pos-text);
font-weight: 600;
}
.orders-page .search-container {
flex-wrap: wrap;
align-items: stretch;
gap: 10px;
margin-bottom: 16px;
}
.orders-page .search-input.pos-orders-search {
flex: 1;
min-width: min(200px, 100%);
max-width: 520px;
min-height: 48px;
padding: 12px 14px;
border: 2px solid var(--pos-border);
border-radius: 12px;
font-size: 16px;
outline: none;
transition: border-color 0.15s ease, box-shadow 0.15s ease;
box-sizing: border-box;
}
.orders-page .search-input.pos-orders-search:focus {
border-color: var(--pos-blue);
box-shadow: 0 0 0 3px rgba(92, 124, 250, 0.2);
}
.orders-page .search-clear-btn {
min-height: 48px;
padding: 0 18px;
border-radius: 12px;
border: 1px solid var(--pos-border);
background: #fff;
font-weight: 600;
font-size: 14px;
color: var(--pos-muted);
cursor: pointer;
touch-action: manipulation;
}
.orders-page .search-clear-btn:hover {
background: #f8fafc;
border-color: var(--pos-blue);
color: var(--pos-blue);
}
.orders-page .empty-state,
.orders-page .loading {
color: var(--pos-muted);
}
.orders-page .empty-state {
background: #fff;
border: 1px dashed var(--pos-border);
border-radius: 12px;
padding: 48px 20px;
margin: 8px 0 16px;
box-sizing: border-box;
}
.orders-page .empty-state-icon {
font-size: 40px;
line-height: 1;
margin-bottom: 12px;
opacity: 0.85;
}
.orders-page .modal {
background: rgba(15, 23, 42, 0.45);
backdrop-filter: blur(2px);
/* 刘海屏 / 平板:避免贴边误触,触控去高亮 */
padding: max(12px, env(safe-area-inset-top, 0px)) max(14px, env(safe-area-inset-right, 0px)) max(16px, env(safe-area-inset-bottom, 0px)) max(14px, env(safe-area-inset-left, 0px));
box-sizing: border-box;
align-items: center;
justify-content: center;
-webkit-tap-highlight-color: transparent;
}
.orders-page .modal-content.orders-modal-content {
max-width: min(560px, calc(100vw - 28px));
width: 94%;
border-radius: 14px;
border: 1px solid var(--pos-border);
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.15);
padding: max(20px, env(safe-area-inset-top, 0px)) max(22px, env(safe-area-inset-right, 0px)) max(22px, env(safe-area-inset-bottom, 0px)) max(22px, env(safe-area-inset-left, 0px));
box-sizing: border-box;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
}
/* 订单详情:整体对齐收银台(settlement)— 白卡片、蓝顶装饰条、pos 阴影 */
.orders-page .modal-content.orders-modal-content--wide {
position: relative;
max-width: min(1400px, calc(100vw - 28px));
width: calc(100% - 8px);
max-height: min(
calc(100vh - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px) - 32px),
2000px
);
display: flex;
flex-direction: column;
overflow-x: hidden;
overflow-y: auto;
-webkit-overflow-scrolling: touch;
overscroll-behavior: contain;
padding: max(18px, env(safe-area-inset-top, 0px)) max(20px, env(safe-area-inset-right, 0px)) max(22px, env(safe-area-inset-bottom, 0px)) max(20px, env(safe-area-inset-left, 0px));
box-sizing: border-box;
border-radius: 16px;
background: #fff;
border: 1px solid var(--pos-border);
box-shadow: 0 8px 32px rgba(15, 23, 42, 0.12), var(--pos-card-shadow);
}
.orders-page .modal-content.orders-modal-content--wide::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
height: 4px;
border-radius: 16px 16px 0 0;
background: linear-gradient(90deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.35);
pointer-events: none;
z-index: 6;
}
.orders-page .modal-content.orders-modal-content--wide > .orders-modal-head {
flex-shrink: 0;
position: sticky;
top: 0;
z-index: 4;
background: linear-gradient(180deg, #fafbfc 0%, #ffffff 100%);
box-shadow: 0 10px 18px -14px rgba(15, 23, 42, 0.18);
border-bottom: 1px solid var(--pos-border);
margin: 0 0 18px;
padding: 6px 0 16px;
border-radius: 0;
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-title__icon {
color: var(--pos-blue);
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-close {
background: rgba(92, 124, 250, 0.12);
color: var(--pos-blue);
border-radius: 12px;
font-weight: 300;
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-close:hover {
background: rgba(92, 124, 250, 0.2);
color: var(--pos-blue-dark);
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-head .orders-modal-title {
font-size: 19px;
font-weight: 700;
color: var(--pos-navy);
}
.orders-page .orders-detail-loading {
text-align: center;
padding: 48px 24px 56px;
font-size: 16px;
font-weight: 600;
color: var(--pos-muted);
background: linear-gradient(180deg, #f8fafc 0%, #fff 100%);
border-radius: 12px;
border: 1px dashed var(--pos-border);
margin-bottom: 8px;
}
/* 订单详情弹窗:左(基本信息+商品明细+备注)右(收款与支付渠道),与收银台信息架构一致 */
.orders-page .orders-detail-body {
flex: 0 1 auto;
min-height: auto;
display: flex;
flex-direction: column;
overflow: visible;
}
.orders-page .orders-detail-layout {
display: grid;
grid-template-columns: minmax(300px, 1fr) minmax(360px, 1.08fr);
grid-template-rows: auto;
gap: 16px 24px;
align-items: start;
flex: 0 1 auto;
min-height: auto;
overflow: visible;
}
.orders-page .orders-detail-col {
min-width: 0;
overflow: visible;
padding-right: 0;
}
.orders-page .orders-detail-col--left {
grid-column: 1;
grid-row: 1;
}
.orders-page .orders-detail-col--right {
grid-column: 2;
grid-row: 1;
}
/* 右侧收款区:对齐结算页组合支付暖色卡片 */
.orders-page .orders-detail-col--pay {
grid-column: 2;
grid-row: 1;
background: linear-gradient(180deg, #fffbeb 0%, #fff7ed 36%, #ffffff 100%);
border: 1px solid #fed7aa;
border-radius: 14px;
padding: 16px 16px 14px;
box-sizing: border-box;
box-shadow: 0 2px 12px rgba(234, 88, 12, 0.1);
}
.orders-page .orders-detail-col--pay .orders-section-title {
border-left-color: #ea580c;
color: #9a3412;
}
.orders-page .orders-detail-pay-summary {
display: flex;
flex-wrap: wrap;
gap: 10px 14px;
margin-bottom: 12px;
}
.orders-page .orders-detail-pay-summary__item {
flex: 1 1 140px;
min-width: 120px;
padding: 12px 14px;
background: #fff;
border: 1px solid var(--pos-border);
border-radius: 12px;
box-sizing: border-box;
box-shadow: 0 1px 2px rgba(15, 23, 42, 0.04);
}
.orders-page .orders-detail-pay-summary__item--strong {
border: 2px solid rgba(92, 124, 250, 0.45);
background: linear-gradient(180deg, #ffffff 0%, #eef2ff 100%);
box-shadow: 0 2px 10px rgba(79, 108, 248, 0.15);
}
.orders-page .orders-detail-pay-summary__label {
display: block;
font-size: 11px;
font-weight: 600;
color: var(--pos-muted);
text-transform: none;
letter-spacing: 0.02em;
margin-bottom: 4px;
}
.orders-page .orders-detail-pay-summary__val {
display: block;
font-size: 15px;
font-weight: 700;
color: var(--pos-text);
word-break: break-all;
}
.orders-page .orders-pay-split {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 14px;
align-items: start;
}
/* 门店收款在上、会员扣减在下(始终纵向,不再并排) */
.orders-page .orders-detail-col--pay .orders-pay-split {
grid-template-columns: 1fr;
gap: 12px;
}
.orders-page .orders-pay-missing {
padding: 14px 16px;
background: #fffbeb;
border: 1px solid #fde68a;
border-radius: 12px;
margin-bottom: 10px;
}
.orders-page .orders-pay-missing__title {
font-size: 14px;
font-weight: 700;
color: #92400e;
margin-bottom: 8px;
}
.orders-page .orders-pay-missing__text {
font-size: 13px;
line-height: 1.55;
color: #78350f;
margin: 0 0 10px;
}
.orders-page .orders-pay-missing__text code {
font-size: 12px;
padding: 1px 6px;
background: rgba(255, 255, 255, 0.7);
border-radius: 4px;
}
.orders-page .orders-pay-missing__amount {
margin: 0;
font-size: 14px;
color: #92400e;
}
.orders-page .orders-detail-block {
margin-bottom: 14px;
}
.orders-page .orders-detail-block:last-child {
margin-bottom: 0;
}
/* 左侧:与列表页订单卡同系 — 白底圆角卡片 */
.orders-page .orders-detail-col--left > .orders-detail-block {
background: #fff;
border: 1px solid var(--pos-border);
border-radius: 14px;
box-shadow: var(--pos-card-shadow);
padding: 16px 16px 14px;
box-sizing: border-box;
}
.orders-page .orders-detail-col--left > .orders-detail-block .orders-section-title {
margin-top: 0;
}
/* 基本信息:内层灰底块,对齐卡片区 .order-details */
.orders-page .orders-detail-col--left > .orders-detail-block:first-child .orders-detail-grid {
background: #f8fafc;
border: 1px solid var(--pos-border);
border-radius: 12px;
padding: 4px 12px;
margin-top: 2px;
}
.orders-page .orders-detail-col--left > .orders-detail-block:first-child .detail-info-item {
border-bottom: 1px solid #e8edf3;
padding: 12px 6px;
margin: 0;
}
.orders-page .orders-detail-col--left > .orders-detail-block:first-child .detail-info-item:last-child {
border-bottom: none;
}
.orders-page .orders-detail-pay-section {
margin-bottom: 0;
}
.orders-page .orders-detail-goods-scroll {
max-height: none;
overflow-x: auto;
overflow-y: visible;
-webkit-overflow-scrolling: touch;
border: 1px solid var(--pos-border);
border-radius: 12px;
background: #fff;
}
.orders-page .orders-detail-block--goods .orders-detail-goods-scroll {
margin-top: 2px;
}
.orders-page .orders-detail-goods-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
table-layout: fixed;
}
.orders-page .orders-detail-goods-table th,
.orders-page .orders-detail-goods-table td {
padding: 10px 8px;
border-bottom: 1px solid var(--pos-border);
vertical-align: middle;
}
.orders-page .orders-detail-goods-table th {
font-size: 12px;
font-weight: 700;
color: var(--pos-muted);
background: #eef2f8;
text-align: left;
border-bottom: 1px solid var(--pos-border);
}
.orders-page .orders-detail-goods-table__cen {
text-align: center;
width: 72px;
}
.orders-page .orders-detail-goods-table__num {
text-align: right;
white-space: nowrap;
width: 96px;
}
.orders-page .orders-detail-goods-table__name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.orders-page .orders-detail-goods-table__muted {
color: var(--pos-muted);
}
.orders-page .orders-detail-goods-table__strong {
font-weight: 700;
color: var(--pos-text);
}
.orders-page .orders-detail-goods-table__row-discount .orders-detail-goods-table__discount {
color: #ea580c;
font-weight: 600;
}
.orders-page .orders-detail-goods-table__row-total .orders-detail-goods-table__total {
color: var(--pos-orange);
font-weight: 800;
font-size: 16px;
}
.orders-page .orders-detail-goods-table__foot-label {
text-align: right;
font-weight: 600;
color: var(--pos-muted);
}
.orders-page .orders-detail-goods-table tfoot td {
border-bottom: none;
padding-top: 12px;
}
/* 窄屏 / 平板竖握:单栏上下滑,更适合拇指浏览 */
@media (max-width: 900px) {
.orders-page .orders-detail-layout {
grid-template-columns: 1fr;
grid-template-rows: auto auto;
gap: 18px;
}
.orders-page .orders-detail-col--left {
grid-column: 1;
grid-row: 1;
max-height: none;
}
.orders-page .orders-detail-col--right {
grid-column: 1;
grid-row: 2;
max-height: none;
}
.orders-page .orders-detail-col--pay {
grid-column: 1;
grid-row: 2;
max-height: none;
}
.orders-page .orders-pay-split {
grid-template-columns: 1fr;
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-actions {
flex-direction: column-reverse;
align-items: stretch;
gap: 12px;
padding-top: 20px;
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-actions .orders-foot-btn {
width: 100%;
min-height: 48px;
justify-content: center;
}
}
.orders-page .orders-modal-head {
display: flex;
justify-content: space-between;
align-items: center;
gap: 12px;
border-bottom: 1px solid var(--pos-border);
padding-bottom: 14px;
margin-bottom: 20px;
}
.orders-page .orders-modal-head h2 {
margin: 0;
font-size: 18px;
font-weight: 700;
color: var(--pos-text);
}
.orders-page .orders-modal-title {
display: flex;
align-items: center;
gap: 10px;
}
.orders-page .orders-modal-title__icon {
flex-shrink: 0;
width: 22px;
height: 22px;
color: #64748b;
}
.orders-page .orders-modal-close {
flex-shrink: 0;
width: 44px;
height: 44px;
border: none;
border-radius: 10px;
background: #f1f5f9;
color: var(--pos-muted);
font-size: 22px;
line-height: 1;
cursor: pointer;
touch-action: manipulation;
}
.orders-page .orders-modal-close:hover {
background: #e2e8f0;
color: var(--pos-text);
}
/* 详情内区块标题:左色条 + 无粗下划线,贴近 settlement 区块感 */
.orders-page .orders-detail-body .orders-section-title {
display: flex;
align-items: center;
gap: 8px;
font-size: 16px;
font-weight: 700;
color: var(--pos-text);
margin: 0 0 14px;
padding: 0 0 0 12px;
border-left: 4px solid var(--pos-blue);
border-bottom: none;
line-height: 1.35;
letter-spacing: 0.02em;
}
.orders-page .orders-detail-grid {
display: grid;
grid-template-columns: repeat(2, 1fr);
gap: 12px 16px;
}
@media (max-width: 560px) {
.orders-page .orders-detail-grid {
grid-template-columns: 1fr;
}
}
.orders-page .orders-remark-box {
padding: 14px 16px;
background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%);
border-radius: 12px;
border: 1px solid var(--pos-border);
border-left: 4px solid var(--pos-muted);
color: var(--pos-text);
line-height: 1.55;
font-size: 14px;
}
.orders-page .orders-detail-pay-strong {
color: #16a34a;
font-weight: 700;
font-size: 16px;
}
.orders-page .orders-detail-pay-discount {
color: #ea580c;
}
.orders-page .orders-detail-pay-total {
color: var(--pos-blue);
font-weight: 700;
font-size: 16px;
}
.orders-page .orders-detail-pay-hint {
font-size: 12px;
color: var(--pos-muted);
line-height: 1.55;
margin: 12px 0 16px;
padding: 10px 12px;
background: rgba(255, 255, 255, 0.65);
border-radius: 10px;
border: 1px dashed #fdba74;
}
.orders-page .orders-pay-block {
margin-top: 0;
padding: 14px 14px 12px;
background: #fff;
border-radius: 12px;
border: 1px solid #e2e8f0;
border-left: 4px solid var(--pos-blue);
box-shadow: 0 1px 3px rgba(15, 23, 42, 0.05);
}
.orders-page .orders-pay-block--fkmx {
border-left-color: #db2777;
background: linear-gradient(180deg, #fff 0%, #fff1f2 100%);
border-color: #fecdd3;
}
.orders-page .orders-pay-block__title {
font-size: 14px;
font-weight: 700;
color: var(--pos-text);
margin-bottom: 10px;
}
.orders-page .orders-pay-table-wrap {
overflow-x: auto;
-webkit-overflow-scrolling: touch;
max-width: 100%;
}
.orders-page .orders-pay-table {
width: 100%;
border-collapse: collapse;
font-size: 14px;
table-layout: auto;
}
/* 四列 skmx 表需最小宽度,否则易被压成竖排文字 */
.orders-page .orders-pay-block:not(.orders-pay-block--fkmx) .orders-pay-table {
min-width: 480px;
}
.orders-page .orders-pay-table th,
.orders-page .orders-pay-table td {
padding: 10px 8px;
text-align: left;
border-bottom: 1px solid var(--pos-border);
color: var(--pos-text);
}
.orders-page .orders-pay-table th {
color: var(--pos-muted);
font-weight: 700;
font-size: 12px;
background: #eef2f8;
}
.orders-page .orders-pay-table__num {
text-align: right;
white-space: nowrap;
}
/* 长数字账户 ID:禁止 word-break:break-all 导致的逐字竖排;表格外层横向滚动 */
.orders-page .orders-pay-table__mono {
font-variant-numeric: tabular-nums;
white-space: nowrap;
word-break: normal;
overflow-wrap: normal;
}
.orders-page .orders-pay-table tbody td:first-child {
white-space: nowrap;
}
.orders-page .orders-pay-table tfoot td {
border-bottom: none;
padding-top: 12px;
}
.orders-page .orders-pay-table__foot-label {
font-weight: 600;
color: var(--pos-muted);
}
.orders-page .orders-pay-raw {
margin-top: 12px;
}
.orders-page .orders-pay-pre {
font-size: 11px;
background: #f1f5f9;
padding: 10px;
border-radius: 8px;
overflow-x: auto;
margin-top: 8px;
white-space: pre-wrap;
word-break: break-all;
}
.orders-page .orders-modal-actions {
flex-shrink: 0;
display: flex;
justify-content: flex-end;
gap: 10px;
padding-top: 16px;
margin-top: 16px;
border-top: 1px solid var(--pos-border);
}
/* 详情弹窗底栏:对齐订单卡 footer 灰底;主操作蓝渐变 */
.orders-page .modal-content.orders-modal-content--wide .orders-modal-actions {
justify-content: center;
padding: 18px 16px 4px;
margin-top: 20px;
background: linear-gradient(180deg, #fafbfc 0%, #f1f5f9 100%);
border-top: 1px solid var(--pos-border);
border-radius: 0 0 12px 12px;
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-actions .orders-foot-btn--ghost {
min-width: min(100%, 280px);
min-height: 48px;
padding: 12px 28px;
font-size: 16px;
font-weight: 700;
border-radius: 12px;
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 4px 14px rgba(79, 108, 248, 0.35);
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-actions .orders-foot-btn--ghost:hover {
filter: brightness(1.05);
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
}
.orders-page .modal-content.orders-modal-content--wide .orders-modal-actions .orders-foot-btn--ghost:active:not(:disabled) {
transform: scale(0.98);
opacity: 0.95;
}
.orders-page .form-group label {
color: var(--pos-text);
}
.orders-page .form-group input,
.orders-page .form-group textarea,
.orders-page .form-group select {
border-radius: 12px;
border: 2px solid var(--pos-border);
padding: 12px 14px;
font-size: 16px;
box-sizing: border-box;
}
.orders-page .form-group input:focus,
.orders-page .form-group textarea:focus,
.orders-page .form-group select:focus {
outline: none;
border-color: var(--pos-blue);
box-shadow: 0 0 0 3px rgba(92, 124, 250, 0.2);
}
.orders-page .return-items {
background: #f8fafc;
border: 1px solid var(--pos-border);
border-radius: 12px;
}
.orders-page .order-footer {
flex-wrap: wrap;
align-items: center;
}
.orders-page .order-buttons {
flex-wrap: wrap;
justify-content: flex-end;
}
.orders-page .member-info-card {
flex-wrap: wrap;
gap: 12px;
}
.orders-page .detail-info-label {
color: var(--pos-muted);
}
.orders-page .detail-info-value {
color: var(--pos-text);
}
/* 订单详情弹窗内:基本信息行加高,便于手指点选区域与扫读 */
.orders-page .orders-detail-body .detail-info-item {
padding: 11px 0;
min-height: 44px;
box-sizing: border-box;
align-items: flex-start;
}
.orders-page .orders-detail-body .detail-info-label {
font-size: 14px;
min-width: 104px;
padding-top: 1px;
}
.orders-page .orders-detail-body .detail-info-value {
font-size: 14px;
line-height: 1.45;
}
/* 触控屏 / 平板:加大目标与字号(含 Apple 建议最小 44pt 热区) */
@media (hover: none) and (pointer: coarse) {
.orders-page .orders-modal-close {
width: 48px;
height: 48px;
min-width: 48px;
min-height: 48px;
border-radius: 12px;
font-size: 24px;
}
.orders-page .orders-modal-head h2 {
font-size: 20px;
}
.orders-page .orders-modal-title__icon {
width: 26px;
height: 26px;
}
.orders-page .orders-foot-btn {
min-height: 48px;
padding: 14px 24px;
font-size: 16px;
}
.orders-page .orders-detail-body .orders-section-title {
font-size: 17px;
margin-bottom: 16px;
padding-bottom: 0;
}
.orders-page .orders-detail-pay-summary__item {
min-height: 76px;
padding: 14px 16px;
}
.orders-page .orders-detail-pay-summary__label {
font-size: 12px;
margin-bottom: 6px;
}
.orders-page .orders-detail-pay-summary__val {
font-size: 17px;
}
.orders-page .orders-detail-goods-table th,
.orders-page .orders-detail-goods-table td {
padding: 14px 10px;
font-size: 15px;
}
.orders-page .orders-detail-goods-table th {
font-size: 13px;
}
.orders-page .orders-pay-table th,
.orders-page .orders-pay-table td {
padding: 14px 10px;
font-size: 15px;
}
.orders-page .orders-pay-table th {
font-size: 13px;
}
.orders-page .orders-detail-pay-hint {
font-size: 13px;
line-height: 1.55;
margin: 12px 0 16px;
}
.orders-page .orders-pay-block {
padding: 16px;
}
.orders-page .orders-pay-block__title {
font-size: 15px;
margin-bottom: 12px;
}
.orders-page .orders-remark-box {
padding: 16px;
font-size: 15px;
}
.orders-page .orders-detail-body .detail-info-item {
padding: 14px 0;
min-height: 48px;
}
.orders-page .orders-detail-body .detail-info-label {
font-size: 15px;
min-width: 112px;
}
.orders-page .orders-detail-body .detail-info-value {
font-size: 16px;
}
.orders-page .orders-detail-col--pay {
padding: 14px 16px 16px 16px;
}
}
.orders-page .form-buttons.orders-modal-actions {
margin-top: 8px;
}
/* ========= 首页 home.html:序列号选择弹窗(与订单/结算 pos 风格一致) ========= */
.pos-page .pos-serial-modal {
position: fixed;
inset: 0;
z-index: 100000;
display: flex;
align-items: center;
justify-content: center;
padding: max(12px, env(safe-area-inset-top, 0px)) 14px max(12px, env(safe-area-inset-bottom, 0px));
box-sizing: border-box;
background: rgba(15, 23, 42, 0.45);
backdrop-filter: blur(2px);
}
.pos-page .pos-serial-modal__panel {
width: min(960px, 100%);
max-height: min(86vh, 720px);
display: flex;
flex-direction: column;
background: #fff;
border-radius: 12px;
border: 1px solid var(--pos-border);
box-shadow: 0 12px 40px rgba(15, 23, 42, 0.15);
overflow: hidden;
box-sizing: border-box;
}
.pos-page .pos-serial-modal__head {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: space-between;
gap: 12px;
padding: 16px 18px;
border-bottom: 1px solid var(--pos-border);
}
.pos-page .pos-serial-modal__title {
margin: 0;
font-size: 18px;
font-weight: 700;
color: var(--pos-text);
line-height: 1.3;
}
.pos-page .pos-serial-modal__hint {
font-size: 14px;
font-weight: 500;
color: var(--pos-muted);
}
.pos-page .pos-serial-modal__close {
flex-shrink: 0;
width: 44px;
height: 44px;
border: none;
border-radius: 10px;
background: #f1f5f9;
color: var(--pos-muted);
font-size: 22px;
line-height: 1;
cursor: pointer;
touch-action: manipulation;
}
.pos-page .pos-serial-modal__close:hover {
background: #e2e8f0;
color: var(--pos-text);
}
.pos-page .pos-serial-modal__body {
flex: 1 1 auto;
min-height: 0;
overflow-y: auto;
padding: 14px 18px;
-webkit-overflow-scrolling: touch;
}
.pos-page .pos-serial-modal__toolbar {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
margin-bottom: 12px;
}
.pos-page .pos-serial-modal__field {
min-width: 140px;
}
.pos-page .pos-serial-modal__field--grow {
flex: 1 1 200px;
min-width: 160px;
}
.pos-page .pos-serial-modal__toolbtn {
min-height: 44px;
padding: 0 16px;
border: none;
border-radius: 12px;
font-size: 14px;
font-weight: 600;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
}
.pos-page .pos-serial-modal__toolbtn--primary {
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.28);
}
.pos-page .pos-serial-modal__toolbtn--muted {
background: #e2e8f0;
color: var(--pos-text);
}
.pos-page .pos-serial-modal__toolbtn--green {
background: linear-gradient(180deg, var(--pos-green) 0%, #16a34a 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(34, 197, 94, 0.25);
}
.pos-page .pos-serial-modal__manual {
display: flex;
flex-wrap: wrap;
align-items: center;
gap: 10px;
margin-bottom: 12px;
}
.pos-page .pos-serial-modal__manual-input {
flex: 1 1 220px;
min-width: 0;
}
.pos-page .pos-serial-modal__picked {
margin-bottom: 14px;
padding: 12px 14px;
background: #f8fafc;
border: 1px solid var(--pos-border);
border-radius: 12px;
}
.pos-page .pos-serial-modal__picked-title {
font-size: 13px;
font-weight: 700;
color: var(--pos-muted);
margin-bottom: 10px;
}
.pos-page .pos-serial-modal__chips {
display: flex;
flex-wrap: wrap;
gap: 8px;
}
.pos-page .pos-serial-modal__chip {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 10px;
border-radius: 10px;
font-size: 13px;
font-weight: 600;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
background: linear-gradient(180deg, #fff7ed 0%, #ffedd5 100%);
color: #c2410c;
border: 1px solid #fed7aa;
}
.pos-page .pos-serial-modal__chip-x {
font-size: 16px;
line-height: 1;
opacity: 0.85;
}
.pos-page .pos-serial-modal__table-wrap {
border: 1px solid var(--pos-border);
border-radius: 12px;
overflow: auto;
max-height: min(38vh, 320px);
-webkit-overflow-scrolling: touch;
}
.pos-page .pos-serial-modal__table {
width: 100%;
border-collapse: collapse;
font-size: 13px;
}
.pos-page .pos-serial-modal__table th,
.pos-page .pos-serial-modal__table td {
padding: 10px 12px;
text-align: left;
border-bottom: 1px solid var(--pos-border);
color: var(--pos-text);
white-space: nowrap;
}
.pos-page .pos-serial-modal__table td:nth-child(4),
.pos-page .pos-serial-modal__table td:nth-child(5) {
white-space: normal;
word-break: break-all;
max-width: 160px;
}
.pos-page .pos-serial-modal__table th {
position: sticky;
top: 0;
z-index: 1;
background: #f8fafc;
font-size: 12px;
font-weight: 700;
color: var(--pos-muted);
}
.pos-page .pos-serial-modal__table tbody tr:hover {
background: #f1f5f9;
}
.pos-page .pos-serial-modal__th-check {
width: 44px;
}
.pos-page .pos-serial-modal__td-sn {
white-space: normal;
word-break: break-all;
max-width: 200px;
}
.pos-page .pos-serial-modal__badge-manual {
display: inline-block;
margin-left: 6px;
padding: 2px 8px;
font-size: 11px;
font-weight: 600;
border-radius: 6px;
background: #ecfdf5;
color: #15803d;
border: 1px dashed #86efac;
vertical-align: middle;
}
.pos-page .pos-serial-modal__status.is-instock {
color: var(--pos-green);
font-weight: 600;
}
.pos-page .pos-serial-modal__status.is-muted {
color: var(--pos-muted);
font-size: 12px;
}
.pos-page .pos-serial-modal__empty-row td {
text-align: center;
color: var(--pos-muted);
padding: 28px 12px;
white-space: normal;
}
.pos-page .pos-serial-modal__foot {
flex-shrink: 0;
display: flex;
justify-content: flex-end;
flex-wrap: wrap;
gap: 10px;
padding: 14px 18px;
border-top: 1px solid var(--pos-border);
background: #fafbfc;
}
.pos-page .pos-serial-modal__foot-btn {
min-height: 46px;
padding: 0 22px;
border-radius: 12px;
font-size: 15px;
font-weight: 600;
border: none;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
}
.pos-page .pos-serial-modal__foot-btn--ghost {
background: #e2e8f0;
color: var(--pos-text);
}
.pos-page .pos-serial-modal__foot-btn--primary {
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 2px 8px rgba(79, 108, 248, 0.28);
}
/* 购物车行:序列号标签 / 类型角标 / 选择按钮 */
.pos-page .serial-number-type-tag {
display: inline-block;
padding: 3px 10px;
border-radius: 8px;
font-size: 11px;
font-weight: 700;
margin-left: 8px;
white-space: nowrap;
vertical-align: middle;
}
.pos-page .serial-number-type-tag.warning {
background: linear-gradient(180deg, #ffedd5 0%, #fdba74 100%);
color: #9a3412;
}
.pos-page .serial-number-type-tag.success {
background: #dcfce7;
color: #166534;
}
.pos-page .serial-number-type-tag.info {
background: #e2e8f0;
color: #475569;
}
.pos-page .pos-cart-serial-box .selected-serial-tag {
display: inline-flex;
align-items: center;
padding: 4px 10px;
margin: 4px 6px 4px 0;
background: linear-gradient(180deg, #fff7ed 0%, #ffedd5 100%);
color: #c2410c;
border: 1px solid #fed7aa;
border-radius: 10px;
font-size: 12px;
font-weight: 600;
cursor: pointer;
touch-action: manipulation;
}
.pos-page .serial-number-select-btn {
margin-top: 8px;
min-height: 40px;
padding: 0 16px;
border: none;
border-radius: 10px;
font-size: 13px;
font-weight: 700;
cursor: pointer;
touch-action: manipulation;
font-family: inherit;
background: linear-gradient(180deg, var(--pos-blue) 0%, var(--pos-blue-dark) 100%);
color: #fff;
box-shadow: 0 2px 6px rgba(79, 108, 248, 0.25);
}
.pos-page .serial-number-select-btn:disabled {
background: #e2e8f0 !important;
color: #94a3b8 !important;
box-shadow: none !important;
cursor: not-allowed;
opacity: 0.9;
}