@import "tailwindcss"; :root { --ink: #17211d; --muted: #66736c; --line: #dfe6e1; --green: #007f5f; --green-dark: #005f48; --mint: #dff5ed; --paper: #f8faf8; --cream: #f2f4ee; } * { box-sizing: border-box; /* 禁止所有页面长按选择文字及弹出系统复制菜单。 */ -webkit-touch-callout: none; -webkit-user-select: none; user-select: none; } html { background: #dfe8e2; } body { margin: 0; color: var(--ink); font-family: Arial, "PingFang SC", "Microsoft YaHei", sans-serif; } img, a { -webkit-user-drag: none; } button, input { font: inherit; } button { cursor: pointer; } button:disabled { cursor: not-allowed; opacity: .55; } .app-shell { min-height: 100vh; padding: 28px; display: grid; place-items: center; position: relative; overflow: hidden; background: radial-gradient(circle at 75% 15%, rgba(234, 184, 90, .18), transparent 25%), linear-gradient(145deg, #e9efeb, #cad9d0); } .ambient { position: absolute; border-radius: 50%; filter: blur(2px); opacity: .65; } .ambient-one { width: 460px; height: 460px; background: rgba(0, 127, 95, .08); left: -180px; bottom: -180px; } .ambient-two { width: 260px; height: 260px; border: 50px solid rgba(255,255,255,.3); right: -70px; top: 40px; } .device-frame { width: min(1080px, 100%); min-height: min(760px, calc(100vh - 56px)); position: relative; z-index: 1; display: flex; flex-direction: column; background: rgba(249, 251, 248, .96); border: 1px solid rgba(255,255,255,.85); border-radius: 28px; box-shadow: 0 35px 90px rgba(28, 54, 42, .21), inset 0 1px #fff; overflow: hidden; } .app-header { height: 74px; display: flex; align-items: center; justify-content: space-between; padding: 0 38px; border-bottom: 1px solid var(--line); background: rgba(255,255,255,.72); } .brand { display: flex; align-items: center; gap: 0; margin-left: 12px; border: 0; background: none; color: var(--ink); padding: 0; text-align: left; } .brand-mark { width: 40px; height: 40px; display: grid; place-items: center; background: var(--green); color: white; border-radius: 11px; font-size: 25px; font-weight: 900; transform: skew(-5deg); } .brand > span + span { margin-left: 18px; } .brand strong, .brand small { display: block; } .brand strong { font-size: 17px; letter-spacing: .04em; } .brand small { color: #88938d; font-size: 11px; margin-top: 3px; letter-spacing: .12em; } .status-pill { display: flex; gap: 8px; align-items: center; padding: 8px 13px; border-radius: 99px; background: #edf7f2; color: #236451; font-size: 14px; font-weight: 700; } .status-dot { width: 7px; height: 7px; background: #22a06b; border-radius: 50%; box-shadow: 0 0 0 4px rgba(34,160,107,.12); } .progress-strip { display: flex; gap: 36px; justify-content: center; padding: 17px 28px; border-bottom: 1px solid var(--line); color: #9aa39e; font-size: 14px; font-weight: 700; } .progress-item { display: flex; align-items: center; gap: 8px; } .progress-item + .progress-item { margin-left: 36px; } .progress-item span { width: 21px; height: 21px; display: grid; place-items: center; border: 1px solid #ccd4cf; border-radius: 50%; font-size: 12px; } .progress-item.active { color: var(--green); } .progress-item.active span { color: white; background: var(--green); border-color: var(--green); } .content { flex: 1; display: grid; } footer { min-height: 44px; display: flex; align-items: center; justify-content: space-between; padding: 0 38px; border-top: 1px solid var(--line); color: #94a098; font-size: 12px; letter-spacing: .04em; } .production-footer { justify-content: center; } .home-view { padding: 46px clamp(36px, 6vw, 70px) 34px; display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(340px, .95fr); align-items: center; gap: clamp(36px, 6vw, 74px); position: relative; } .home-copy { min-width: 0; } .eyebrow, .step-kicker { color: var(--green); font-size: 13px; font-weight: 800; letter-spacing: .16em; text-transform: uppercase; } .eyebrow { display: flex; align-items: center; gap: 8px; } .eyebrow span { width: 20px; height: 2px; background: #e5a63c; } h1 { font-size: clamp(48px, 5.3vw, 66px); line-height: 1.03; letter-spacing: -.06em; margin: 19px 0 21px; max-width: 590px; } h1 em { font-style: normal; color: var(--green); } .home-copy > p { color: var(--muted); line-height: 1.85; font-size: 14px; } .home-start-hint { width: min(390px, 100%); display: flex; align-items: center; gap: 10px; margin-top: 25px; padding: 12px 14px; border: 1px solid #bedacd; border-radius: 12px; background: var(--mint); color: var(--green); font-size: 12px; } .home-start-hint span { width: 26px; height: 26px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 50%; background: var(--green); color: white; font-size: 11px; } .home-start-hint.loading span { animation: pulse 1s ease-in-out infinite; } @keyframes pulse { 50% { opacity: .45; transform: scale(.92); } } .admin-link { min-width: 190px; display: flex; align-items: center; justify-content: space-between; margin-top: 30px; border: 1px solid #cbd8d1; border-radius: 11px; background: rgba(255,255,255,.78); color: #53625a; padding: 11px 14px; font-size: 13px; font-weight: 800; box-shadow: 0 6px 18px rgba(30,55,43,.05); } .admin-link:hover { color: var(--green); border-color: #9fc5b5; background: white; } .admin-link-fab { position: absolute; bottom: 22px; right: 32px; display: flex; align-items: center; gap: 8px; border: 1px solid #cbd8d1; border-radius: 12px; background: rgba(255,255,255,.95); color: #53625a; padding: 13px 20px; font-size: 14px; font-weight: 800; box-shadow: 0 6px 18px rgba(30,55,43,.1); z-index: 3; } .admin-link-fab:hover { color: var(--green); border-color: #9fc5b5; background: white; } .admin-link-fab span { color: var(--green); font-size: 16px; } .back-button-fab { position: absolute; bottom: 18px; right: 28px; display: inline-flex; align-items: center; gap: 7px; border: 1px solid var(--green); border-radius: 10px; background: var(--green); color: white; padding: 10px 18px; font-size: 14px; font-weight: 800; box-shadow: 0 6px 16px rgba(0,127,95,.22); z-index: 3; } .back-button-fab:hover, .back-button-fab:active { color: white; border-color: #006e53; background: #006e53; } .identity-material-block { margin-top: 14px; } .home-notice { width: min(390px, 100%); } .home-stats { margin-top: 36px; display: flex; gap: 32px; color: #849088; font-size: 11px; } .home-stats span { padding-left: 12px; border-left: 2px solid #e0e6e1; } .home-stats b { display: block; color: var(--ink); font-size: 14px; margin-bottom: 4px; } .home-material-panel { position: relative; padding: 28px; border: 1px solid rgba(255,255,255,.9); border-radius: 23px; background: rgba(255,255,255,.7); box-shadow: 0 18px 50px rgba(30,56,43,.1), inset 0 1px #fff; } .home-material-panel::before { content: ""; position: absolute; width: 180px; height: 180px; right: -60px; top: -55px; z-index: -1; border-radius: 50%; background: rgba(0,127,95,.08); box-shadow: 0 0 0 32px rgba(0,127,95,.025); } .material-panel-heading h2 { margin: 7px 0 5px; font-size: 32px; letter-spacing: -.035em; } .material-panel-heading p { margin: 0 0 18px; color: var(--muted); font-size: 15px; } .home-material-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 14px; } .home-material-grid .material-card { min-height: 120px; padding: 22px 20px; border-radius: 16px; } .home-material-grid .material-card.selected { padding: 21px 19px; } .home-material-grid .material-card b { font-size: 24px; } .home-material-grid .material-card small { margin-top: 10px; font-size: 13px; } .home-material-grid .material-card i { font-size: 18px; } .material-selection-status { display: flex; align-items: center; gap: 8px; margin-top: 13px; padding: 9px 11px; border-radius: 9px; background: #eef1ee; color: #7c8781; font-size: 11px; font-weight: 700; } .material-selection-status span { width: 19px; height: 19px; display: grid; place-items: center; border: 1px solid #bfc8c2; border-radius: 50%; font-size: 10px; } .material-selection-status.ready { background: var(--mint); color: var(--green); } .material-selection-status.ready span { border-color: var(--green); background: var(--green); color: white; } .panel-view { width: min(760px, calc(100% - 48px)); margin: 0 auto; padding: 35px 0; position: relative; } .back-button { min-height: 38px; display: inline-flex; align-items: center; gap: 7px; margin: 0 0 12px; border: 1px solid var(--green); border-radius: 10px; background: var(--green); color: white; padding: 8px 14px; font-size: 14px; font-weight: 800; box-shadow: 0 4px 12px rgba(30,55,43,.06); } .back-button:hover, .back-button:active { color: white; border-color: #006e53; background: #006e53; } .section-heading { display: flex; justify-content: space-between; gap: 24px; align-items: flex-start; margin-bottom: 24px; } .section-heading h2, .result-view h2 { margin: 7px 0 7px; font-size: 32px; letter-spacing: -.035em; } .section-heading p, .result-view > p { margin: 0; color: var(--muted); font-size: 14px; } .refresh-button { border: 1px solid var(--line); border-radius: 10px; background: white; color: #53615a; font-size: 13px; padding: 10px 14px; } .identity-card { display: flex; align-items: center; gap: 16px; background: #fff; border: 1px solid var(--line); border-radius: 15px; padding: 18px; box-shadow: 0 8px 24px rgba(35,58,46,.05); } .avatar { width: 58px; height: 58px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 14px; background: var(--green); color: white; font-size: 24px; font-weight: 800; } .identity-card small { color: #8c9791; font-size: 14px; } .identity-card h3 { margin: 4px 0; font-size: 22px; } .identity-card p { margin: 0; color: #66736c; font-size: 15px; } .verified { margin-left: auto; background: var(--mint); color: var(--green); padding: 8px 11px; border-radius: 99px; font-size: 12px; font-weight: 700; } .verified.missing { color: #9b6b14; background: #fbf0d7; } .identity-panel-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; color: var(--green); font-size: 14px; font-weight: 800; } .identity-layout { display: flex; gap: 16px; } .identity-person-panel, .identity-operation-panel { min-width: 0; padding: 16px 18px; border: 1px solid #b7d7c9; border-radius: 16px; background: linear-gradient(135deg, #ffffff, #f4fbf7); box-shadow: 0 10px 28px rgba(35,58,46,.08); } .identity-person-panel { flex: .9 1 0; } .identity-operation-panel { flex: 1.1 1 0; } .identity-person-panel .identity-card { min-height: 88px; padding: 13px; box-shadow: none; } .identity-person-panel .identity-card h3 { font-size: 24px; } .identity-operation-panel .machine-select-row { min-height: 72px; } .identity-operation-panel .machine-select-row b { font-size: 20px; } .identity-operation-panel .full-primary { margin-top: 14px; padding: 13px 16px; font-size: 15px; } .identity-back { position: absolute; top: 0; left: 0; z-index: 1; } .identity-material-compact { min-height: 42px; justify-content: flex-start; gap: 8px; margin: 0 0 12px; padding: 8px 12px; } .identity-material-compact small, .identity-material-compact b, .identity-material-compact em { display: inline; } .identity-material-compact small { font-size: 11px; } .identity-material-compact b { margin: 0; font-size: 15px; } .identity-material-compact em { margin-left: 3px; font-size: 10px; } .identity-material-compact i { margin-left: auto; } .field-label { display: block; margin: 22px 0 8px; font-size: 13px; font-weight: 800; } .machine-picker { height: 52px; display: flex; align-items: center; gap: 10px; border: 1px solid #cfd8d2; border-radius: 12px; background: white; padding: 0 15px; } .machine-picker:focus-within { border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,127,95,.08); } .machine-picker input { flex: 1; border: 0; outline: 0; background: transparent; font-size: 14px; } .machine-picker b { color: var(--green); } .machine-select-row { min-height: 68px; display: flex; align-items: center; gap: 12px; border: 1px solid #cfd8d2; border-radius: 12px; background: white; padding: 12px 14px; } .machine-select-row.selected { border-color: #a9cbbb; background: #fbfefc; } .machine-select-icon { width: 40px; height: 40px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; background: #e9f4ef; color: var(--green); } .machine-select-row > span:nth-child(2) { flex: 1; } .machine-select-row small, .machine-select-row b { display: block; } .machine-select-row small { color: #89948e; font-size: 12px; margin-bottom: 4px; } .machine-select-row b { font-size: 17px; } .machine-select-row > button { border: 0; border-radius: 8px; background: var(--green); color: white; padding: 11px 14px; font-size: 13px; font-weight: 800; } .machine-select-row > button.machine-refresh { border: 1px solid #cbd8d1; background: white; color: #65736b; } .suggestions { margin-top: 6px; border: 1px solid var(--line); border-radius: 12px; background: white; padding: 5px; box-shadow: 0 15px 40px rgba(32,55,44,.1); } .suggestions button { width: 100%; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 8px; background: transparent; padding: 10px; text-align: left; font-size: 14px; } .suggestions button:hover { background: #eef7f2; color: var(--green); } .suggestions button small { margin-left: auto; color: #95a099; } .suggestions p { text-align: center; color: #7f8b84; font-size: 13px; } .full-primary { width: 100%; margin-top: 22px; border: 0; border-radius: 12px; background: var(--green); color: white; padding: 17px 18px; font-size: 16px; font-weight: 800; box-shadow: 0 10px 25px rgba(0,127,95,.18); } .full-primary span { float: right; } .notice { margin-top: 12px; padding: 10px 12px; border-radius: 8px; background: #f7edd8; color: #8b671e; font-size: 12px; } .notice.compact { margin: 10px 0 -10px; } .weigh-view { padding: 14px 32px 28px; position: relative; } .weigh-back { position: absolute; top: 14px; left: 32px; z-index: 1; margin: 0; } .weigh-meta { display: flex; gap: 0; border: 1px solid var(--line); background: white; border-radius: 11px; padding: 12px 16px; margin: 0 0 14px 92px; } .weigh-meta > span { min-width: 170px; display: inline-flex; align-items: center; gap: 8px; padding-right: 18px; margin-right: 18px; border-right: 1px solid var(--line); white-space: nowrap; } .weigh-meta > span.material-meta { min-width: 230px; } .weigh-meta small, .weigh-meta b { display: inline; } .weigh-meta small { color: #8a958f; font-size: 14px; margin: 0 10px 0 0; } .weigh-meta b { font-size: 17px; } .weigh-meta button { margin-left: auto; border: 0; background: none; color: var(--green); font-size: 12px; font-weight: 800; } .scale-display { min-height: 300px; display: flex; flex-direction: column; border-radius: 18px; background: #112b23; color: white; padding: 22px 28px 18px; box-shadow: inset 0 1px rgba(255,255,255,.08), 0 16px 30px rgba(16,42,33,.17); } .display-top { display: flex; justify-content: space-between; align-items: center; } .stable-badge { color: #e2c680; font-size: 14px; font-weight: 700; } .stable-badge i { display: inline-block; width: 8px; height: 8px; margin-right: 6px; border-radius: 50%; background: #e4b64e; box-shadow: 0 0 0 4px rgba(228,182,78,.13); } .stable-badge.ready { color: #83dfb8; } .stable-badge.ready i { background: #48c78e; box-shadow: 0 0 0 4px rgba(72,199,142,.13); } .unit-switch { display: flex; background: rgba(255,255,255,.07); border-radius: 8px; padding: 3px; } .unit-switch button { border: 0; border-radius: 6px; background: transparent; color: #849b91; font-size: 13px; padding: 6px 11px; } .unit-switch button.active { background: #e8f0ea; color: #15352a; font-weight: 800; } .weight-number { flex: 1; display: flex; justify-content: center; align-items: center; gap: 15px; margin: 6px 0; } .weight-number span { font-family: "Courier New", monospace; font-size: clamp(88px, 13vw, 138px); letter-spacing: -.08em; font-weight: 700; } .weight-number b { color: #8da298; font-size: 20px; } .stability-track { height: 4px; background: rgba(255,255,255,.08); border-radius: 4px; overflow: hidden; } .stability-track span { display: block; height: 100%; background: #4bd19a; transition: width .25s; } .display-details { display: flex; justify-content: center; gap: 0; margin-top: auto; padding-top: 14px; color: #789187; font-size: 14px; } .display-details > span + span { margin-left: 42px; } .display-details b { color: #dbe8e1; margin-left: 5px; } .scale-tools { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin: 11px 0 16px; } .scale-tools.has-cancel { grid-template-columns: repeat(4, 1fr); } .scale-tools button { display: flex; align-items: center; gap: 10px; border: 1px solid var(--line); border-radius: 10px; background: white; padding: 10px 13px; color: var(--green); text-align: left; font-size: 19px; } .scale-tools button:hover { border-color: #a8cabb; } .scale-tools button.cancel-total { border-color: #e3c3bd; color: #b65748; background: #fff8f6; } .scale-tools button.cancel-total b { color: #a6493c; } .scale-tools span, .scale-tools b, .scale-tools small { display: block; } .scale-tools b { color: var(--ink); font-size: 13px; } .scale-tools small { color: #909a94; font-size: 10px; margin-top: 3px; } .material-card { min-width: 0; display: flex; align-items: center; gap: 10px; position: relative; border: 1px solid var(--line); border-radius: 11px; background: white; padding: 14px 13px; text-align: left; } .material-card:hover { transform: translateY(-1px); } .material-card.selected { border: 2px solid var(--green); background: #f3faf7; padding: 13px 12px; } .material-icon { width: 33px; height: 33px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; font-size: 14px; font-weight: 900; background: #edf1ed; color: #536259; } .material-card.copper .material-icon { background: #f3e2d6; color: #a65e2e; } .material-card.wire .material-icon { background: #f3ead2; color: #b27714; } .material-card.aluminum .material-icon { background: #e5ecee; color: #60747c; } .material-card.tin .material-icon { background: #e5e6ed; color: #62687c; } .material-card b, .material-card small { display: block; white-space: nowrap; } .material-card b { font-size: 17px; letter-spacing: -.02em; } .material-card small { margin-top: 6px; color: #87928c; font-size: 10px; font-weight: 700; } .material-card i { margin-left: auto; font-size: 12px; color: var(--green); font-style: normal; } .selected-material-summary { display: flex; align-items: center; gap: 12px; border: 1px solid #bedacd; border-radius: 12px; background: #f3faf7; padding: 14px 16px; } .selected-material-summary > span:nth-child(2) { flex: 1; } .selected-material-summary small, .selected-material-summary b, .selected-material-summary em { display: block; } .selected-material-summary small { color: #7a8a82; font-size: 12px; } .selected-material-summary b { margin: 3px 0; font-size: 21px; } .selected-material-summary em { color: #8c9891; font-size: 11px; font-style: normal; } .selected-material-summary > i { color: var(--green); font-size: 11px; font-style: normal; font-weight: 800; } .full-primary.upload { margin-top: 18px; } .result-view { width: min(520px, calc(100% - 48px)); margin: auto; padding: 28px 0; text-align: center; } .success-ring { width: 66px; height: 66px; display: grid; place-items: center; margin: 0 auto 13px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 0 8px rgba(223,245,237,.55); } .success-ring span { width: 36px; height: 36px; display: grid; place-items: center; border-radius: 50%; background: var(--green); color: white; font-size: 20px; } .receipt { margin-top: 20px; border: 1px solid var(--line); border-radius: 15px; background: white; box-shadow: 0 15px 40px rgba(26,50,38,.08); overflow: hidden; text-align: left; } .receipt-head { display: flex; justify-content: space-between; padding: 12px 18px; border-bottom: 1px dashed #d9e0db; font-size: 12px; font-weight: 800; } .receipt-head small { color: #8c9691; font-weight: 400; } .receipt-weight { display: flex; align-items: center; justify-content: space-between; padding: 15px 20px; background: #f2f8f5; } .receipt-weight small, .receipt-weight b { display: block; } .receipt-weight small { color: var(--green); font-size: 12px; font-weight: 800; } .receipt-weight b { font-family: "Courier New", monospace; font-size: 29px; margin-top: 4px; } .receipt-weight em { font-family: Arial, sans-serif; font-size: 12px; font-style: normal; color: #7d8a83; } .receipt-weight > i { width: 44px; height: 44px; display: grid; place-items: center; border-radius: 11px; background: white; color: var(--green); font-style: normal; font-weight: 900; box-shadow: 0 4px 15px rgba(0,0,0,.05); } .receipt dl { padding: 5px 20px 10px; margin: 0; } .receipt dl div { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #edf0ee; font-size: 12px; } .receipt dl div:last-child { border: 0; } .receipt dt { color: #859189; } .receipt dd { margin: 0; font-weight: 800; } .upload-ok { color: var(--green); } .upload-pending { color: #b27714; } .result-view .full-primary { margin-top: 15px; } .countdown { position: relative; margin-top: 10px; color: #8b9690; font-size: 11px; overflow: hidden; } .countdown span { position: absolute; left: 0; bottom: -4px; height: 2px; background: var(--green); transition: width 1s linear; } .settings-view { width: min(980px, calc(100% - 40px)); padding: 21px 0 22px; } .settings-heading { margin-bottom: 14px; } .settings-heading h2 { font-size: 26px; } .settings-layout { display: grid; grid-template-columns: 165px minmax(0, 1fr); min-height: 456px; border: 1px solid var(--line); border-radius: 16px; background: white; overflow: hidden; box-shadow: 0 12px 35px rgba(30,55,43,.06); } .settings-tabs { padding: 12px 9px; border-right: 1px solid var(--line); background: #f2f6f3; } .settings-tabs button { width: 100%; display: flex; align-items: center; gap: 9px; position: relative; border: 0; border-radius: 9px; background: transparent; color: #6e7a73; padding: 11px 10px; font-size: 12px; text-align: left; } .settings-tabs button:hover { background: rgba(255,255,255,.8); color: var(--ink); } .settings-tabs button.active { background: white; color: var(--green); font-weight: 800; box-shadow: 0 5px 18px rgba(30,55,43,.08); } .settings-tabs button > span { width: 21px; height: 21px; display: grid; place-items: center; border-radius: 6px; background: #e4ebe7; font-size: 12px; } .settings-tabs button.active > span { background: var(--mint); } .settings-tabs button > b { margin-left: auto; min-width: 17px; height: 17px; display: grid; place-items: center; border-radius: 99px; background: #c9792d; color: white; font-size: 10px; } .settings-panel { min-width: 0; padding: 19px 22px; } .settings-panel-title { min-height: 42px; display: flex; justify-content: space-between; align-items: flex-start; margin-bottom: 15px; } .settings-panel-title.compact { min-height: 32px; margin-bottom: 10px; } .settings-panel-title > span > b, .settings-panel-title > span > small { display: block; } .settings-panel-title > span > b { font-size: 14px; } .settings-panel-title > span > small { margin-top: 4px; color: #89948e; font-size: 11px; font-weight: 400; } .settings-panel-title > em { padding: 5px 8px; border-radius: 99px; background: #e9f5ef; color: var(--green); font-size: 10px; font-style: normal; font-weight: 800; } .settings-form-grid { display: grid; gap: 11px; } .settings-form-grid.three { grid-template-columns: 1.2fr .85fr 1fr; } .settings-form-grid.two { grid-template-columns: repeat(2, minmax(0, 1fr)); } .settings-form-grid label, .password-settings label, .material-editor-row label { display: block; } .settings-form-grid label > span, .password-settings label > span, .material-editor-row label > span { display: block; margin-bottom: 6px; color: #647069; font-size: 11px; font-weight: 800; } .settings-form-grid input, .password-settings input, .material-editor-row input { width: 100%; height: 38px; border: 1px solid #d9e0dc; border-radius: 8px; background: #fafbf9; padding: 0 11px; outline: 0; font-size: 12px; color: var(--ink); } .settings-form-grid input:focus, .password-settings input:focus, .material-editor-row input:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,127,95,.06); background: white; } .settings-divider { height: 1px; margin: 18px 0 14px; background: var(--line); } .language-setting { display: flex; align-items: center; justify-content: space-between; gap: 18px; margin-top: 14px; padding: 11px 12px; border: 1px solid #e0e6e2; border-radius: 10px; background: #fbfcfb; } .language-setting > span b, .language-setting > span small { display: block; } .language-setting > span b { font-size: 12px; } .language-setting > span small { margin-top: 4px; color: #89948e; font-size: 10px; } .language-setting > div { display: flex; gap: 4px; padding: 3px; border-radius: 8px; background: #edf2ef; } .language-setting button { border: 0; border-radius: 6px; background: transparent; color: #718078; padding: 7px 9px; font-size: 10px; } .language-setting button.active { background: white; color: var(--green); font-weight: 800; box-shadow: 0 2px 8px rgba(30,55,43,.08); } .system-tools { display: flex; align-items: center; justify-content: space-between; margin-top: 10px; padding: 10px 12px; border: 1px solid #e0e6e2; border-radius: 10px; background: #fbfcfb; } .system-tools > span b, .system-tools > span small { display: block; } .system-tools > span b { font-size: 12px; } .system-tools > span small { margin-top: 4px; color: #89948e; font-size: 10px; } .system-tools > div { display: flex; } .system-tools > div button + button { margin-left: 8px; } .material-editor { display: grid; gap: 9px; } .material-editor-row { display: grid; grid-template-columns: 1fr 1.45fr 22px; align-items: end; gap: 12px; padding: 10px 12px; border: 1px solid #e1e7e3; border-radius: 10px; background: #fbfcfb; } .material-editor-row > i { align-self: center; color: #b2bbb6; font-size: 11px; font-style: normal; font-weight: 800; } .material-icon.copper { background: #f3e2d6; color: #a65e2e; } .material-icon.wire { background: #f3ead2; color: #b27714; } .material-icon.aluminum { background: #e5ecee; color: #60747c; } .material-icon.tin { background: #e5e6ed; color: #62687c; } .feature-settings { display: grid; gap: 10px; } .feature-row { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border: 1px solid #e0e6e2; border-radius: 11px; background: #fbfcfb; } .feature-icon { width: 36px; height: 36px; display: grid; place-items: center; flex: 0 0 auto; border-radius: 9px; background: var(--mint); color: var(--green); font-size: 18px; } .feature-copy { flex: 1; } .feature-copy b, .feature-copy small { display: block; } .feature-copy b { font-size: 13px; } .feature-copy small { margin-top: 4px; color: #8a958f; font-size: 10px; } .switch { width: 40px; height: 22px; position: relative; flex: 0 0 auto; } .switch input { position: absolute; opacity: 0; pointer-events: none; } .switch span { position: absolute; inset: 0; border-radius: 99px; background: #cbd4cf; transition: .2s; } .switch span::after { content: ""; position: absolute; width: 16px; height: 16px; left: 3px; top: 3px; border-radius: 50%; background: white; box-shadow: 0 2px 5px rgba(0,0,0,.15); transition: .2s; } .switch input:checked + span { background: var(--green); } .switch input:checked + span::after { transform: translateX(18px); } .path-box { display: grid; grid-template-columns: 100px 1fr auto; align-items: center; gap: 10px; margin: -3px 0 0 48px; padding: 9px 11px; border-radius: 8px; background: #f0f4f1; } .path-box small { color: #7f8b84; font-size: 10px; } .path-box code { color: #2d5748; font-family: "Courier New", monospace; font-size: 11px; font-weight: 800; } .path-box em { color: #929c96; font-size: 9px; font-style: normal; } .print-fields { display: flex; flex-wrap: wrap; gap: 7px; margin: -3px 0 0 48px; } .print-fields span { padding: 5px 7px; border-radius: 6px; background: #edf5f1; color: #497061; font-size: 9px; } .data-status-grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; } .data-status-grid > div { display: grid; grid-template-columns: 38px 1fr auto; grid-template-rows: auto auto; align-items: center; gap: 2px 10px; padding: 14px; border: 1px solid #e1e7e3; border-radius: 11px; background: #fbfcfb; } .data-status-grid > div > span { grid-row: 1 / 3; width: 38px; height: 38px; display: grid; place-items: center; border-radius: 9px; background: var(--mint); color: var(--green); font-size: 18px; } .data-status-grid small { color: #7e8a83; font-size: 10px; } .data-status-grid b { grid-column: 2; font-size: 23px; } .data-status-grid em { grid-column: 3; grid-row: 1 / 3; color: #98a29c; font-size: 10px; font-style: normal; } .path-box.data-path, .path-box.log-path { margin: 14px 0 0; } .data-actions { display: flex; align-items: center; gap: 15px; margin-top: 14px; padding-top: 14px; border-top: 1px solid var(--line); } .data-actions > span { color: #8a958f; font-size: 10px; } .secondary-action { border: 1px solid #bdd2c8; border-radius: 8px; background: white; color: var(--green); padding: 10px 13px; font-size: 11px; font-weight: 800; } .secondary-action:hover { background: #f1f8f4; } .secondary-action.small { padding: 8px 10px; } .password-settings { max-width: 540px; display: grid; grid-template-columns: repeat(2, 1fr); gap: 13px; } .password-settings label:first-child { grid-column: 1 / -1; } .password-settings .secondary-action { grid-column: 1 / -1; justify-self: start; } .log-title { margin-bottom: 8px; } .log-title > span > b { display: flex; align-items: center; gap: 7px; } .live-dot { width: 7px; height: 7px; display: inline-block; border-radius: 50%; background: #35b77c; box-shadow: 0 0 0 4px rgba(53,183,124,.12); } .log-viewer { height: 286px; margin-top: 12px; overflow-y: auto; border-radius: 10px; background: #13231d; padding: 8px 12px; color: #dce9e2; font-family: "Courier New", monospace; } .log-entry { display: grid; grid-template-columns: 72px 36px 1fr; gap: 9px; align-items: start; padding: 8px 2px; border-bottom: 1px solid rgba(255,255,255,.06); font-size: 10px; } .log-entry time { color: #6f8c80; } .log-entry > span { color: #8aa398; } .log-entry.success > span { color: #5bd19c; } .log-entry.warning > span { color: #e0b864; } .log-entry.error > span { color: #e67b6e; } .log-entry p { margin: 0; line-height: 1.45; } .settings-footer-actions { display: flex; align-items: center; justify-content: flex-end; gap: 14px; margin-top: 12px; } .settings-feedback { color: #87928c; font-size: 11px; } .settings-feedback.visible { color: var(--green); } .save-settings { min-width: 180px; border: 0; border-radius: 10px; background: var(--green); color: white; padding: 12px 15px; font-size: 12px; font-weight: 800; box-shadow: 0 8px 20px rgba(0,127,95,.16); } .save-settings span { float: right; } .modal-backdrop { position: fixed; inset: 0; z-index: 10; display: grid; place-items: center; background: rgba(13,31,24,.58); backdrop-filter: blur(5px); padding: 20px; } .modal { width: min(390px, 100%); position: relative; background: #fff; border-radius: 20px; padding: 30px; text-align: center; box-shadow: 0 30px 80px rgba(0,0,0,.28); } .modal-close { position: absolute; right: 14px; top: 11px; border: 0; background: none; color: #89938e; font-size: 25px; } .modal-icon { width: 48px; height: 48px; display: grid; place-items: center; margin: 0 auto 12px; border-radius: 13px; background: var(--mint); color: var(--green); font-size: 23px; } .modal h2 { margin: 0 0 6px; font-size: 24px; } .modal p { color: #87928c; font-size: 13px; } .modal > input { width: 100%; margin-top: 12px; border: 1px solid #cfd8d2; border-radius: 11px; padding: 13px; text-align: center; font-size: 23px; letter-spacing: .45em; outline: 0; } .modal > input:focus { border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,127,95,.08); } .password-error { display: block; color: #b44b3e; margin-top: 8px; font-size: 11px; } .numeric-readonly { cursor: pointer; caret-color: transparent; background: #f3f8f5 !important; color: var(--green) !important; font-weight: 800; } .numeric-readonly:focus { border-color: var(--green); } .numeric-display { min-height: 46px; display: flex; align-items: center; justify-content: center; margin-top: 12px; border: 1px solid #cfd8d2; border-radius: 11px; background: #f7faf8; color: var(--ink); font-family: "Courier New", monospace; font-size: 23px; font-weight: 800; letter-spacing: .08em; } .numeric-display.masked { color: var(--green); letter-spacing: .22em; } .numeric-display.placeholder, .machine-number-display.placeholder { color: #98a39d; font-family: inherit; font-size: 13px; font-weight: 500; letter-spacing: 0; } .numeric-keypad { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 12px; } .numeric-keypad button { min-height: 48px; border: 1px solid #d8e0db; border-radius: 10px; background: white; color: var(--ink); font-size: 22px; font-weight: 800; box-shadow: 0 3px 10px rgba(27, 52, 40, .05); } .numeric-keypad button:hover, .numeric-keypad button:active { border-color: #8dbda9; background: #edf8f3; color: var(--green); } .numeric-keypad .key-action { display: grid; place-items: center; color: #65726b; font-size: 16px; } .numeric-keypad .key-action small { display: block; font-size: 9px; font-weight: 700; } .numeric-keypad .key-clear { color: #a45649; font-size: 12px; } .admin-keypad-modal, .numeric-editor-modal { width: min(390px, 100%); padding: 22px 26px; } .admin-keypad-modal .modal-icon, .numeric-editor-modal .modal-icon { width: 40px; height: 40px; margin-bottom: 8px; } .admin-keypad-modal h2, .numeric-editor-modal h2 { font-size: 21px; } .admin-keypad-modal p { margin: 5px 0 7px; } .admin-keypad-modal .full-primary, .numeric-editor-modal .full-primary { margin-top: 12px; } .numeric-editor-backdrop { z-index: 20; } .machine-modal { width: min(760px, 100%); text-align: left; } .machine-modal-heading { display: flex; align-items: center; gap: 12px; padding-right: 24px; } .machine-modal-heading .modal-icon { margin: 0; flex: 0 0 auto; } .machine-modal-heading > span:nth-child(2) { flex: 1; } .machine-modal-heading h2 { font-size: 21px; } .machine-modal-heading p { margin: 4px 0 0; } .machine-search { height: 46px; display: flex; align-items: center; gap: 9px; margin-top: 18px; border: 1px solid #cfd8d2; border-radius: 10px; background: white; padding: 0 12px; } .machine-search:focus-within { border-color: var(--green); box-shadow: 0 0 0 3px rgba(0,127,95,.07); } .machine-number-display { flex: 1; min-width: 0; height: 100%; border: 0; outline: 0; background: transparent; color: var(--ink); caret-color: var(--green); font-family: "Courier New", monospace; font-size: 17px; font-weight: 800; } .machine-number-display::placeholder { color: #98a39d; font-family: Arial, "PingFang SC", "Microsoft YaHei", sans-serif; font-size: 13px; font-weight: 500; } .machine-modal-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 12px; margin-top: 10px; } .machine-modal-body.keypad-open { grid-template-columns: 220px minmax(0, 1fr); } .machine-modal-body > .numeric-keypad { align-self: start; margin-top: 0; } .machine-option-list { max-height: 250px; overflow-y: auto; display: grid; gap: 6px; margin-top: 0; align-content: start; } .machine-modal-body:not(.keypad-open) .machine-option-list { max-height: 320px; } .machine-option-list > button { width: 100%; display: flex; align-items: center; gap: 11px; border: 1px solid #e0e6e2; border-radius: 9px; background: #fbfcfb; padding: 11px 12px; text-align: left; } .machine-option-list > button:hover, .machine-option-list > button.selected { border-color: #a8cab9; background: #eff8f3; color: var(--green); } .machine-option-list > button > span { width: 28px; height: 28px; display: grid; place-items: center; border-radius: 7px; background: #e7f1ec; } .machine-option-list > button b { flex: 1; font-size: 13px; } .machine-option-list > button i { font-size: 12px; font-style: normal; } .machine-option-list > p { text-align: center; color: #8a958f; font-size: 12px; } .machine-modal-close { width: 100%; margin-top: 12px; border: 1px solid #d4ddd7; border-radius: 9px; background: white; color: #68756e; padding: 10px; font-size: 11px; } @media (max-width: 760px) { .app-shell { padding: 0; display: block; } .device-frame { min-height: 100vh; border-radius: 0; } .app-header { padding: 0 18px; } .status-pill { font-size: 0; padding: 9px; } .progress-strip { gap: 12px; padding-inline: 12px; } .progress-item { font-size: 11px; gap: 4px; } .home-view { padding: 38px 24px 34px; display: block; } h1 { font-size: 49px; } .home-material-panel { margin-top: 30px; } .home-start-hint { width: 100%; } .panel-view { width: calc(100% - 32px); padding: 27px 0; } .section-heading { display: block; } .refresh-button { margin-top: 15px; } .weigh-view { padding: 16px; } .weigh-meta > span { min-width: 0; flex: 1; } .weight-number span { font-size: 55px; } .display-details { gap: 0; } .display-details > span + span { margin-left: 15px; } .scale-tools button { justify-content: center; padding: 10px 5px; } .scale-tools button > span { display: none; } .weigh-meta > span.material-meta { display: none; } .machine-select-row { flex-wrap: wrap; } .machine-select-row > span:nth-child(2) { min-width: calc(100% - 55px); } .machine-select-row > button { flex: 1; } .settings-view { width: calc(100% - 24px); } .settings-layout { grid-template-columns: 1fr; } .settings-tabs { display: flex; overflow-x: auto; border-right: 0; border-bottom: 1px solid var(--line); padding: 7px; } .settings-tabs button { min-width: 112px; justify-content: center; } .settings-panel { padding: 17px 14px; } .settings-form-grid.three, .settings-form-grid.two { grid-template-columns: 1fr; } .material-editor-row { grid-template-columns: 1fr; } .material-editor-row label:nth-of-type(2) { grid-column: 1; } .material-editor-row > i { display: none; } .language-setting { align-items: stretch; flex-direction: column; } .language-setting > div { width: 100%; } .language-setting button { flex: 1; } .path-box { margin-left: 0; grid-template-columns: 1fr; gap: 4px; } .print-fields { margin-left: 0; } .password-settings { grid-template-columns: 1fr; } .password-settings label:first-child { grid-column: auto; } .password-settings .secondary-action { grid-column: auto; } .log-entry { grid-template-columns: 62px 34px 1fr; } .settings-footer-actions { align-items: stretch; flex-direction: column; } .save-settings { width: 100%; } .machine-modal-body, .machine-modal-body.keypad-open { grid-template-columns: 1fr; } .machine-option-list { max-height: 180px; } footer { padding: 0 16px; } } /* 工业 Android 终端的全屏横屏布局。 */ @media (orientation: landscape) and (max-height: 820px) { html, body, #root { width: 100%; min-height: 100%; } body { overflow: hidden; } .app-shell { width: 100vw; height: 100vh; min-height: 0; padding: 0; display: grid; } .ambient { display: none; } .device-frame { width: 100%; height: 100vh; min-height: 0; border: 0; border-radius: 0; box-shadow: none; } .app-header { height: 40px; flex: 0 0 auto; padding: 0 clamp(20px, 3.5vw, 40px); } .brand { gap: 0; } .brand-mark { width: 32px; height: 32px; border-radius: 8px; font-size: 20px; } .brand strong { font-size: 16px; } .status-pill { padding: 7px 12px; } .progress-strip { flex: 0 0 auto; gap: 0; padding: 9px 20px; } .progress-item + .progress-item { margin-left: 28px; } .content { min-height: 0; overflow-x: hidden; overflow-y: auto; } footer { min-height: 18px; flex: 0 0 auto; padding: 0 clamp(20px, 3.5vw, 40px); } .home-view { min-height: 100%; padding: clamp(14px, 2.6vh, 21px) clamp(28px, 4.5vw, 54px); grid-template-columns: minmax(0, .82fr) minmax(430px, 1.18fr); gap: clamp(26px, 4vw, 54px); } h1 { margin: 9px 0 11px; font-size: clamp(40px, 4.9vw, 56px); } .home-copy > p { line-height: 1.42; } .home-start-hint { margin-top: 10px; padding: 8px 12px; } .home-start-hint span { width: 23px; height: 23px; } .admin-link { margin-top: 12px; padding: 10px 13px; } .home-material-panel { padding: clamp(19px, 2.5vw, 24px); } .material-panel-heading h2 { margin-top: 5px; font-size: 25px; } .material-panel-heading p { margin-bottom: 12px; font-size: 13px; } .home-material-grid { gap: 12px; } .home-material-grid .material-card { min-height: 92px; padding: 16px 18px; } .home-material-grid .material-card.selected { padding: 15px 17px; } .home-material-grid .material-card b { font-size: 22px; } .home-material-grid .material-card small { margin-top: 8px; font-size: 13px; } .material-selection-status { margin-top: 10px; padding: 8px 10px; } .panel-view { width: min(900px, calc(100% - 40px)); padding: 12px 0; } .back-button { min-height: 36px; margin-bottom: 7px; padding: 7px 13px; border-radius: 9px; } .section-heading { margin-bottom: 12px; } .section-heading h2, .result-view h2 { margin: 4px 0; font-size: 25px; } .refresh-button { padding: 8px 12px; } .identity-card { padding: 13px 16px; } .avatar { width: 48px; height: 48px; border-radius: 11px; font-size: 21px; } .identity-card h3 { margin: 2px 0; font-size: 20px; } .field-label { margin: 12px 0 6px; } .machine-select-row { min-height: 56px; padding: 8px 12px; } .machine-select-icon { width: 36px; height: 36px; } .full-primary { margin-top: 12px; padding: 12px 16px; } .weigh-view { position: relative; width: min(1180px, calc(100% - 36px)); padding: 7px 0 10px; } .weigh-back { position: absolute; top: 7px; left: 0; z-index: 1; margin: 0; } .weigh-meta { margin: 0 0 7px 84px; padding: 7px 12px; } .weigh-meta > span { min-width: 150px; } .weigh-meta > span.material-meta { min-width: 200px; } .scale-display { padding: 14px 24px 12px; border-radius: 14px; } .weight-number { margin: 0; } .weight-number span { font-size: clamp(56px, 9vw, 80px); } .display-details { margin-top: 8px; } .scale-tools { margin: 7px 0 8px; } .scale-tools button { min-height: 42px; padding: 7px 11px; } .selected-material-summary { padding: 8px 13px; } .selected-material-summary b { font-size: 17px; } .full-primary.upload { margin-top: 8px; padding: 12px 16px; } .result-view { width: min(980px, calc(100% - 40px)); padding: 12px 0; display: grid; grid-template-columns: 290px minmax(0, 1fr); grid-template-rows: auto auto auto auto 1fr auto auto; column-gap: 22px; align-items: center; } .result-view .success-ring { grid-column: 1; grid-row: 1; } .result-view > .step-kicker { grid-column: 1; grid-row: 2; } .result-view > h2 { grid-column: 1; grid-row: 3; } .result-view > p { grid-column: 1; grid-row: 4; } .result-view > .receipt { grid-column: 2; grid-row: 1 / span 7; } .result-view > .full-primary { grid-column: 1; grid-row: 6; } .result-view > .countdown { grid-column: 1; grid-row: 7; } .success-ring { width: 48px; height: 48px; margin-bottom: 7px; box-shadow: 0 0 0 6px rgba(223,245,237,.55); } .success-ring span { width: 30px; height: 30px; font-size: 17px; } .receipt { margin-top: 0; } .receipt-head { padding: 9px 16px; } .receipt-weight { padding: 10px 18px; } .receipt-weight b { font-size: 25px; } .receipt dl { padding: 3px 18px 6px; } .receipt dl div { padding: 5px 0; } .result-view .full-primary { margin-top: 9px; padding: 11px 16px; } .countdown { margin-top: 6px; } .settings-view { width: min(1180px, calc(100% - 32px)); height: 100%; padding: 9px 0 10px; display: flex; flex-direction: column; overflow: hidden; } .settings-heading { margin-bottom: 8px; } .settings-heading h2 { font-size: 22px; } .settings-layout { flex: 1; height: auto; min-height: 0; } .settings-tabs, .settings-panel { min-height: 0; overflow-y: auto; } .settings-panel { padding: 14px 18px; } .settings-panel-title { min-height: 34px; margin-bottom: 9px; } .settings-divider { margin: 12px 0 10px; } .settings-footer-actions { margin-top: 8px; } .log-viewer { height: calc(100vh - 292px); min-height: 150px; } .modal-backdrop { padding: 12px; } .admin-keypad-modal, .numeric-editor-modal { width: min(370px, 100%); padding: 15px 21px; } .admin-keypad-modal .modal-icon, .numeric-editor-modal .modal-icon { width: 34px; height: 34px; margin-bottom: 5px; } .admin-keypad-modal h2, .numeric-editor-modal h2 { margin-bottom: 3px; font-size: 19px; } .admin-keypad-modal p { margin: 3px 0; font-size: 11px; line-height: 1.35; } .numeric-display { min-height: 37px; margin-top: 7px; font-size: 19px; } .numeric-keypad { gap: 6px; margin-top: 7px; } .numeric-keypad button { min-height: 36px; border-radius: 8px; font-size: 18px; } .numeric-keypad .key-action { font-size: 14px; } .numeric-keypad .key-clear { font-size: 11px; } .admin-keypad-modal .full-primary, .numeric-editor-modal .full-primary { margin-top: 8px; padding: 10px 14px; } .machine-modal { width: min(780px, calc(100% - 20px)); max-height: calc(100vh - 24px); padding: 17px 20px; } .machine-modal-heading .modal-icon { width: 36px; height: 36px; } .machine-modal-heading h2 { font-size: 19px; } .machine-search { height: 40px; margin-top: 9px; } .machine-modal-body { grid-template-columns: minmax(0, 1fr); gap: 10px; margin-top: 8px; } .machine-modal-body.keypad-open { grid-template-columns: 210px minmax(0, 1fr); } .machine-modal-body:not(.keypad-open) .machine-option-list { max-height: 260px; } .machine-modal-body .numeric-keypad button { min-height: 35px; } .machine-option-list { max-height: 158px; } .machine-option-list > button { padding: 7px 10px; } .machine-modal-close { margin-top: 8px; padding: 8px; } } @media (orientation: landscape) and (min-width: 1400px) and (min-height: 761px) { .device-frame { width: min(1460px, calc(100% - 64px)); min-height: min(880px, calc(100vh - 64px)); } .home-view { grid-template-columns: minmax(0, 1fr) minmax(520px, .95fr); } .panel-view { width: min(980px, calc(100% - 64px)); } .weigh-view, .settings-view { width: min(1280px, calc(100% - 64px)); } } /* 同时兼容 Android 7.1 旧版 WebView 与现代浏览器的 Flexbox 布局。 */ html, body, #root { width: 100%; height: 100%; min-height: 100%; } .app-shell { width: 100%; height: 100%; min-height: 0; display: flex; align-items: stretch; justify-content: stretch; padding: 0; } .device-frame { width: 100%; max-width: none; height: 100%; min-height: 0; border: 0; border-radius: 0; } .content { width: 100%; min-height: 0; display: block; overflow-x: hidden; overflow-y: auto; } .brand-mark, .progress-item span, .home-start-hint span, .material-selection-status span, .avatar, .machine-select-icon, .material-icon, .success-ring, .success-ring span, .receipt-weight > i, .settings-tabs button > span, .settings-tabs button > b, .feature-icon, .data-status-grid > div > span, .modal-backdrop, .modal-icon, .numeric-keypad .key-action, .machine-option-list > button > span { display: flex; align-items: center; justify-content: center; } .home-view { width: 100%; min-height: 100%; display: flex; align-items: center; padding: 24px 4vw; gap: 4vw; } .home-copy { width: 42%; flex: 0 1 42%; padding-right: 34px; } .home-material-panel { width: 58%; flex: 1 1 58%; } .home-material-grid { display: flex; flex-wrap: wrap; } .home-material-grid .material-card { width: calc(50% - 6px); flex: 0 0 calc(50% - 6px); } .home-material-grid .material-card:nth-child(odd) { margin-right: 12px; } .home-material-grid .material-card:nth-child(n+3) { margin-top: 12px; } .panel-view { width: calc(100% - 40px); max-width: 900px; } .weigh-view { width: calc(100% - 36px); max-width: 1180px; margin: 0 auto; } .result-view { width: calc(100% - 40px); max-width: 600px; } .settings-view { width: calc(100% - 32px); max-width: 1180px; margin: 0 auto; } .scale-tools { display: flex; } .scale-tools button { min-width: 0; flex: 1 1 0; } .scale-tools button + button { margin-left: 10px; } .settings-layout { display: flex; } .settings-tabs { width: 165px; flex: 0 0 165px; } .settings-panel { flex: 1 1 auto; } .settings-form-grid, .material-editor, .feature-settings, .data-status-grid, .password-settings { display: flex; flex-wrap: wrap; } .settings-form-grid > label, .password-settings > label { flex: 1 1 calc(50% - 12px); } .settings-form-grid.three > label { flex-basis: calc(33.33% - 12px); } .material-editor-row { width: 100%; display: flex; align-items: flex-end; } .material-editor-row label:first-child { flex: 1 1 40%; } .material-editor-row label:nth-of-type(2) { flex: 1 1 55%; } .material-editor-row > i { flex: 0 0 22px; } .path-box { display: flex; } .path-box small { flex: 0 0 100px; } .path-box code { flex: 1 1 auto; } .data-status-grid > div { width: calc(50% - 6px); display: flex; align-items: center; } .data-status-grid > div > span { flex: 0 0 38px; margin-right: 10px; } .data-status-grid > div > small { flex: 1 1 auto; } .data-status-grid > div > b, .data-status-grid > div > em { margin-left: 8px; } .log-entry { display: flex; } .log-entry time { flex: 0 0 72px; } .log-entry > span { flex: 0 0 36px; } .log-entry p { flex: 1 1 auto; } .numeric-keypad { display: flex; flex-wrap: wrap; } .numeric-keypad button { width: calc(33.33% - 6px); flex: 0 0 calc(33.33% - 6px); margin: 0 6px 6px 0; } .numeric-keypad button:nth-child(3n) { margin-right: 0; } .machine-modal { width: calc(100% - 20px); max-width: 780px; } .machine-modal-body { display: flex; flex-direction: column; } .machine-modal-body.keypad-open { flex-direction: row; } .machine-modal-body.keypad-open > .numeric-keypad { width: 210px; flex: 0 0 210px; } .machine-option-list { display: flex; flex: 1 1 auto; flex-direction: column; } @media (orientation: landscape) and (max-height: 820px) { .weight-number span { font-size: clamp(48px, 8vw, 68px); font-weight: 900; letter-spacing: -.05em; } .result-view { position: relative; display: block; width: calc(100% - 40px); max-width: 980px; min-height: 100%; padding: 16px 0; } .result-view > .step-kicker, .result-view > h2, .result-view > p, .result-view > .full-primary, .result-view > .countdown { width: 290px; } .result-view > .success-ring { margin-left: 121px; margin-right: 0; } .result-view > .full-primary { position: absolute; top: 230px; left: 0; display: block; min-height: 44px; margin: 0; } .result-view > .countdown { position: absolute; top: 282px; left: 0; margin: 0; } .result-view > .receipt { position: absolute; top: 14px; right: 0; width: calc(100% - 312px); margin: 0; } } @media (orientation: landscape) and (max-width: 1100px) and (max-height: 700px) { /* 1024×600 工业终端:首页仅保留废料选择,第二页按人员与操作两栏展示。 */ .home-view { display: flex; align-items: center; justify-content: center; padding: 18px 40px; } .home-material-panel { width: min(720px, 100%); flex: 0 1 720px; padding: 22px 24px; } .home-material-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .home-material-grid .material-card { width: auto; min-height: 88px; margin: 0; padding: 14px 17px; } .home-material-grid .material-card:nth-child(odd), .home-material-grid .material-card:nth-child(n+3) { margin: 0; } .material-panel-heading h2 { font-size: 27px; } .home-material-grid .material-card.selected { padding: 13px 16px; } .home-material-grid .material-card b { font-size: 21px; } .identity-view { width: calc(100% - 48px); max-width: 960px; padding: 10px 0 14px; position: relative; } .identity-view > .section-heading { min-height: 40px; margin-bottom: 10px; padding-left: 96px; } .identity-view > .section-heading h2 { font-size: 26px; } .identity-layout { display: grid; grid-template-columns: minmax(300px, .85fr) minmax(400px, 1.15fr); gap: 16px; } .identity-person-panel, .identity-operation-panel { min-width: 0; min-height: 146px; padding: 16px 18px; border: 1px solid #b7d7c9; border-radius: 16px; background: linear-gradient(135deg, #ffffff, #f4fbf7); box-shadow: 0 10px 28px rgba(35,58,46,.08); } .identity-panel-heading { display: flex; align-items: center; justify-content: space-between; margin-bottom: 13px; color: var(--green); font-size: 17px; font-weight: 800; } .identity-panel-heading .refresh-button { padding: 6px 9px; font-size: 12px; } .identity-person-panel .identity-card { min-height: 88px; padding: 13px; box-shadow: none; } .identity-person-panel .identity-card h3 { font-size: 24px; } .identity-person-panel .identity-card p { font-size: 16px; } .identity-operation-panel .machine-select-row { min-height: 72px; } .identity-operation-panel .machine-select-row b { font-size: 20px; } .identity-operation-panel .full-primary { margin-top: 14px; padding: 13px 16px; font-size: 15px; } .identity-material-compact { min-height: 36px; margin: 0 0 10px; padding: 7px 11px; border-radius: 10px; } .identity-material-compact b { font-size: 14px; } .identity-back { top: 10px; } .weigh-view { width: min(1240px, calc(100% - 24px)); } .scale-display { min-height: 280px; padding: 19px 36px 16px; border-radius: 18px; } .weight-number { margin: 8px 0; } .weight-number span { font-size: clamp(84px, 12vw, 128px); } .weight-number b { font-size: 24px; } .display-details { margin-top: 12px; font-size: 15px; } } @media (orientation: landscape) { .weight-number span { font-size: 128px !important; } }