@font-face{font-family:'Noto Sans SC';src:url('/fonts/NotoSansSC.woff2') format('woff2');font-weight:100 900;font-display:swap}@font-face{font-family:'IBM Plex Mono';src:url('/fonts/IBMPlexMono-Regular.woff2') format('woff2');font-weight:400 500;font-display:swap}@font-face{font-family:'IBM Plex Mono';src:url('/fonts/IBMPlexMono-SemiBold.woff2') format('woff2');font-weight:600 800;font-display:swap}
:root{--ink:#15181D;--muted:#5B6370;--paper:#F3F4F6;--line:#E3E6EB;--blue:#1F5EFF;--warn:#B04A00;--warn-bg:#FFF1DC;--good:#0F7B4A;--good-bg:#E3F4EA}
.ui-v14{margin:0!important;background:var(--paper)!important;color:var(--ink)!important;font-family:'Noto Sans SC',system-ui,sans-serif!important;font-size:14px;line-height:1.6;display:block!important;min-width:0!important}.ui-v14 *{box-sizing:border-box}.ui-v14 [hidden]{display:none!important}.ui-v14 a{color:var(--blue);text-underline-offset:3px}.ui-v14 button,.ui-v14 input,.ui-v14 select,.ui-v14 textarea{font:inherit;min-height:44px;border-radius:8px;border:1px solid #D5D9E0;padding:10px 12px;max-width:100%;color:var(--ink);background:white}.ui-v14 button{cursor:pointer}.ui-v14 button:disabled{cursor:default;opacity:.6}.ui-v14 button.primary,.ui-v14 button[type=submit]{background:var(--blue);border-color:var(--blue);color:white}.ui-v14 button:focus-visible,.ui-v14 a:focus-visible,.ui-v14 input:focus-visible{outline:3px solid #9DB8FF;outline-offset:2px}.ui-v14 h1{font-size:26px;line-height:1.4;margin:0}.ui-v14 h2{font-size:18px;margin:0 0 14px}.ui-v14 h3{font-size:16px;margin:0 0 8px}.ui-v14 p{margin:6px 0 12px}.ui-v14 .mono,.ui-v14 .number,.ui-v14 input[type=number]{font-family:'IBM Plex Mono',monospace;font-variant-numeric:tabular-nums}.ui-v14 .muted{color:var(--muted);font-size:13px}.ui-v14 .warn{color:var(--warn);background:var(--warn-bg)}.ui-v14 .good{color:var(--good);background:var(--good-bg)}.ui-v14 .badge{display:inline-flex;align-items:center;padding:3px 8px;border-radius:5px;font-size:12px}.ui-v14 .pending{color:var(--muted);background:#EEF1F5;border:1px dashed #B8BEC8;padding:8px 12px;border-radius:8px;display:inline-block}.ui-v14 .ui-topbar{background:var(--ink)!important;color:white!important;min-height:64px;padding:10px 24px;display:flex!important;flex-wrap:wrap;align-items:center;gap:22px;position:relative;z-index:2;margin:0;border:0;border-radius:0}.ui-v14 .ui-brand{display:flex;align-items:center;gap:10px;color:white;text-decoration:none;font-weight:700;letter-spacing:1px;white-space:nowrap}.ui-v14 .ui-mark{width:28px;height:28px;border-radius:6px;background:var(--blue);display:inline-grid;place-items:center;color:white}.ui-v14 .ui-nav{display:flex;flex:1;gap:4px;flex-wrap:wrap;align-items:center}.ui-v14 .ui-nav a{padding:9px 12px;min-height:44px;color:#C9CED6;text-decoration:none;display:inline-flex;align-items:center;border-radius:8px}.ui-v14 .ui-nav a.active{color:white;background:#2A2F38}.ui-v14 .ui-person{color:#C9CED6;font-size:13px}.ui-v14 .ui-entity{display:flex;gap:3px;background:#2A2F38;border-radius:9px;padding:3px}.ui-v14 .ui-entity button{background:transparent;border:0;color:#C9CED6;min-height:38px;white-space:nowrap;font-size:13px}.ui-v14 .ui-entity button.active{background:white;color:var(--ink)}.ui-v14 .ui-main{max-width:1440px;margin:auto;padding:24px;display:flex;flex-direction:column;gap:20px;min-width:0}.ui-v14 .page-heading{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:16px}.ui-v14 .ui-note{font-size:12px;color:var(--warn);background:var(--warn-bg);padding:6px 10px;border-radius:6px}.ui-v14 .cards-5{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.ui-v14 .card,.ui-v14 .panel{background:white;border:1px solid var(--line);border-radius:12px;padding:20px;min-width:0}.ui-v14 .kpi .value{font:600 28px/1.5 'IBM Plex Mono',monospace;margin:6px 0;overflow-wrap:anywhere}.ui-v14 .grid-2{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr);gap:20px;align-items:start}.ui-v14 .grid-3{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}.ui-v14 .stack{display:flex;flex-direction:column;gap:14px}.ui-v14 .row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}.ui-v14 .between{justify-content:space-between}.ui-v14 .scroll{overflow-x:auto;max-width:100%}.ui-v14 table{width:100%;border-collapse:collapse;font-size:14px}.ui-v14 th{font-size:12px;color:var(--muted);font-weight:500;text-align:left;white-space:nowrap}.ui-v14 td,.ui-v14 th{padding:12px 10px;border-bottom:1px solid var(--line);vertical-align:top}.ui-v14 td.num,.ui-v14 th.num{text-align:right;font-family:'IBM Plex Mono',monospace}.ui-v14 label{display:flex;flex-direction:column;gap:6px;font-size:13px;min-width:0}.ui-v14 .fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}.ui-v14 .ui-tabs{display:flex;gap:5px;flex-wrap:wrap;background:#E3E6EB;padding:3px;border-radius:10px}.ui-v14 .ui-tabs button{border:0;background:transparent;color:var(--muted)}.ui-v14 .ui-tabs .active{background:white;color:var(--ink)}.ui-v14 .province-map{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));grid-auto-rows:52px;gap:4px;min-width:0}.ui-v14 .province-map button{padding:3px;min-height:0;display:flex;flex-direction:column;align-items:center;justify-content:center;border:0;font-size:12px;line-height:1.3}.ui-v14 .province-map small{font:11px 'IBM Plex Mono',monospace}.ui-v14 .city-row{display:grid;grid-template-columns:75px 1fr 80px;gap:8px;align-items:center;padding:8px 0}.ui-v14 .bar-track{height:10px;background:#EEF1F5;border-radius:3px;overflow:hidden}.ui-v14 .bar-track i{display:block;height:100%;background:var(--blue)}.ui-v14 .chart{height:170px;display:flex;align-items:end;gap:10px;border-bottom:1px solid var(--line);padding-top:25px}.ui-v14 .chart-col{flex:1;display:flex;align-items:center;flex-direction:column;justify-content:end;height:100%;min-width:0}.ui-v14 .chart-col i{display:block;background:#B9C9F5;width:100%;border-radius:4px 4px 0 0;min-height:2px}.ui-v14 .chart-col:last-child i{background:var(--blue)}.ui-v14 .chart-col small{font:11px 'IBM Plex Mono',monospace}.ui-v14 .approval-item{border-top:1px solid var(--line);padding:14px 0}.ui-v14 .progress-steps{display:grid;grid-template-columns:repeat(5,1fr);gap:4px;margin-top:8px}.ui-v14 .progress-steps span{border-top:5px solid #E3E6EB;padding-top:5px;color:var(--muted);font-size:12px}.ui-v14 .progress-steps .done{border-color:var(--good);color:var(--good)}.ui-v14 .aging{display:flex;height:28px;border-radius:6px;overflow:hidden;gap:2px}.ui-v14 .aging>div{min-width:0}.ui-v14 .summary-card{position:sticky;top:18px}.ui-v14 .notice-error{padding:14px;border:2px solid #B42318;background:#FFF1F0;color:#B42318;border-radius:10px}.ui-v14 .notice-success{padding:14px;background:var(--good-bg);border:2px solid var(--good);color:var(--good);border-radius:10px}.ui-v14 .work-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px}.ui-v14 .work-cards button{padding:20px;text-align:left;border-radius:16px;min-height:132px;display:flex;flex-direction:column;justify-content:space-between;font-size:22px;font-weight:700}.ui-v14 .work-cards strong{font:600 44px 'IBM Plex Mono',monospace}.ui-v14.warehouse-page button,.ui-v14.warehouse-page input,.ui-v14.mobile-page button,.ui-v14.mobile-page a.action{min-height:56px}.ui-v14.warehouse-page{font-size:18px}.ui-v14.warehouse-page h2{font-size:24px}.ui-v14 .pick-row{display:grid;grid-template-columns:150px minmax(0,1fr) 100px;gap:16px;align-items:center;padding:16px 18px;border:2px solid var(--line);border-radius:12px;font-size:22px;margin-bottom:12px}.ui-v14 .pick-row .loc{font:600 26px 'IBM Plex Mono',monospace}.ui-v14 .scan-panel{background:var(--ink);color:white;border:0;border-radius:16px;padding:24px}.ui-v14 .scan-panel .muted{color:#C9CED6}.ui-v14 .scan-panel input{width:100%;font-size:20px}.ui-v14.mobile-page .ui-main{max-width:520px;padding:16px}.ui-v14.mobile-page .ui-topbar{padding:16px;display:block!important}.ui-v14.mobile-page .ui-nav{display:none}.ui-v14.mobile-page .mobile-kpis{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:14px}.ui-v14.mobile-page .mobile-kpis .kpi{background:#2A2F38;border:0;color:white;padding:12px}.ui-v14.mobile-page .mobile-kpis .muted{color:#C9CED6}.ui-v14 .mobile-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.ui-v14 .mobile-actions a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;text-decoration:none;color:var(--ink);min-height:80px;background:white;border:1px solid var(--line);border-radius:12px;font-size:13px}.ui-v14 .mobile-actions b{display:grid;place-items:center;width:32px;height:32px;background:var(--blue);color:white;border-radius:9px}.ui-v14 .quote-paper{width:794px;max-width:100%;min-height:1123px;margin:auto;background:white;padding:56px 60px;display:flex;flex-direction:column;gap:28px}.ui-v14 .quote-head{display:flex;justify-content:space-between;gap:24px;border-bottom:3px solid var(--ink);padding-bottom:20px}.ui-v14 .quote-head .logo-placeholder{width:56px;height:56px;border:2px dashed #C9CED6;border-radius:8px;display:grid;place-items:center;color:#8A929E;flex-shrink:0;font-size:11px}.ui-v14 .quote-head img{max-width:80px;max-height:70px;object-fit:contain}.ui-v14 .quote-paper th{background:var(--ink);color:white}.ui-v14 .quote-totals{margin-left:auto;width:300px;max-width:100%}.ui-v14 .seal{width:110px;height:110px;border:2px dashed #E3A3A3;border-radius:55px;display:grid;place-items:center;color:#C46A6A}.ui-v14.ui-legacy main{max-width:1440px!important;margin:0 auto!important;padding:24px!important;min-width:0}.ui-v14.ui-legacy aside{position:static!important;width:auto!important;height:auto!important;background:white!important;color:var(--ink)!important;display:flex!important;flex-wrap:wrap;gap:6px;padding:12px 24px!important;border-bottom:1px solid var(--line)}.ui-v14.ui-legacy aside a{color:var(--muted)!important;min-height:44px;display:inline-flex;align-items:center;padding:8px 12px}.ui-v14.ui-legacy .task-card,.ui-v14.ui-legacy form,.ui-v14.ui-legacy .panel{border-color:var(--line)!important;border-radius:12px!important;background:white}.ui-v14.ui-legacy header:not(.ui-topbar){background:transparent;color:var(--ink);padding:0;border:0}.ui-v14.ui-legacy .home{background:transparent}.ui-v14.ui-legacy .cards a{background:white;border:1px solid var(--line);border-radius:12px;color:var(--ink)}
@media(max-width:1000px){.ui-v14 .cards-5{grid-template-columns:repeat(3,minmax(0,1fr))}.ui-v14 .grid-2{grid-template-columns:1fr}.ui-v14 .grid-3{grid-template-columns:1fr}.ui-v14 .summary-card{position:static}.ui-v14 .work-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:600px){.ui-v14 .ui-topbar{padding:12px 16px;gap:10px}.ui-v14 .ui-nav{order:3;flex-basis:100%;overflow:auto;flex-wrap:nowrap}.ui-v14 .ui-nav a{white-space:nowrap}.ui-v14 .ui-main,.ui-v14.ui-legacy main{padding:16px!important}.ui-v14 .cards-5{grid-template-columns:repeat(2,minmax(0,1fr))}.ui-v14 .cards-5 .kpi:last-child{grid-column:1/-1}.ui-v14 h1{font-size:24px}.ui-v14 .card{padding:16px}.ui-v14 .kpi .value{font-size:24px}.ui-v14 button,.ui-v14 input,.ui-v14 select{min-height:56px}.ui-v14 .province-map{grid-auto-rows:45px;gap:2px}.ui-v14 .province-map button{font-size:10px;min-height:0}.ui-v14 .province-map small{font-size:8px}.ui-v14 .pick-row{grid-template-columns:100px minmax(0,1fr);font-size:19px;padding:12px;gap:8px}.ui-v14 .pick-row .loc{font-size:20px}.ui-v14 .pick-row strong{grid-column:2}.ui-v14 .work-cards button{font-size:20px;padding:14px;min-height:120px}.ui-v14 .work-cards strong{font-size:36px}.ui-v14 .quote-paper{padding:24px 16px;min-height:100vh;gap:20px}.ui-v14 .quote-head{flex-direction:column;gap:12px}.ui-v14 .quote-paper table{min-width:560px}.ui-v14 .quote-paper .fields{grid-template-columns:1fr}.ui-v14 .ui-entity{flex-wrap:wrap}.ui-v14 .ui-entity button{min-height:44px}}@media print{.ui-topbar,.no-print{display:none!important}.ui-v14 .quote-paper{width:210mm;min-height:297mm;padding:15mm;max-width:none}.ui-v14{background:white!important}@page{size:A4;margin:0}}

.ui-v14 #notice:empty{display:none}.ui-v14 .card>table,.ui-v14 .card>.scroll{margin-top:4px}.ui-v14 .ui-tabs a{padding:10px 14px;min-height:44px;text-decoration:none;display:inline-flex;align-items:center}
@media(max-width:600px){.ui-v14 .card>.grid-2[style]{grid-template-columns:1fr!important}}

.ui-v14.mobile-page .ui-topbar{max-width:520px;margin:0 auto}.ui-v14 .scan-panel a{color:#9DB8FF}.ui-v14 .work-cards .warn{border-color:#F2C894}.ui-v14 .mobile-actions a{min-height:80px}.ui-v14 #sales-form aside{display:block;background:white}
@media(max-width:600px){.ui-v14 #sales-form table{display:block}.ui-v14 #sales-form thead{display:none}.ui-v14 #sales-lines{display:block}.ui-v14 #sales-lines .sale-line{display:grid;grid-template-columns:1fr 1fr;gap:8px;border:1px solid #E3E6EB;padding:12px;border-radius:12px;margin-bottom:12px}.ui-v14 .sale-line td{display:flex;flex-direction:column;border:0;padding:0;min-width:0}.ui-v14 .sale-line td:before{content:attr(data-label);font-size:12px;color:#5B6370;margin-bottom:4px}.ui-v14 .sale-line td:first-child,.ui-v14 .sale-line td:last-child{grid-column:1/-1}.ui-v14 .sale-line input,.ui-v14 .sale-line select{width:100%!important;max-width:100%}.ui-v14.mobile-page .ui-main{gap:14px}.ui-v14 .pick-row small{font-size:12px}}

.ui-v14 .ui-entity button{min-height:44px}.ui-v14.warehouse-page #receiving a{display:inline-flex;align-items:center;justify-content:center;min-height:56px;padding:12px 18px;background:#1F5EFF;color:white;border-radius:8px;text-decoration:none}.ui-v14 .scan-panel input{font-family:'IBM Plex Mono',monospace}
@media(max-width:600px){.ui-v14 .province-map{grid-auto-rows:56px}.ui-v14 .province-map button,.ui-v14 .ui-entity button{min-height:56px}}

/* Narrow tables remain readable; the overflow is inside each card. */
.ui-v14 .no-print>a{display:inline-flex;align-items:center;min-height:44px;padding:8px 4px}
@media(max-width:600px){.ui-v14 .no-print>a{min-height:56px}.ui-v14 .card .scroll table{min-width:480px}.ui-v14 #sales-form .scroll table{min-width:0}.ui-v14 .scroll:before{content:"表格可左右滑动查看";display:block;color:#5B6370;font-size:12px;margin-bottom:8px}.ui-v14 #sales-form .scroll:before{display:none}}

/* Desktop composition follows the six reference canvases; mobile stays one column. */
@media(min-width:1001px){
.ui-v14[data-ui-page=main] #content{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr);gap:20px}
.ui-v14[data-ui-page=main] #content>.cards-5,.ui-v14[data-ui-page=main] #content>.grid-2,.ui-v14[data-ui-page=main] #content>.grid-3,.ui-v14[data-ui-page=main] #content>p{grid-column:1/-1}
.ui-v14[data-ui-page=main] #content>.card{height:100%}
.ui-v14[data-ui-page=money] #content{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr);gap:20px;align-items:start}
.ui-v14[data-ui-page=money] #content>.card:first-child,.ui-v14[data-ui-page=money] #content>.ui-tabs{grid-column:1/-1}
.ui-v14[data-ui-page=money] #content>.card:nth-child(3){grid-column:1;grid-row:3/span 2}
.ui-v14[data-ui-page=money] #content>.card:nth-child(4){grid-column:2;grid-row:3}
.ui-v14[data-ui-page=money] #content>.card:nth-child(5){grid-column:2;grid-row:4}
.ui-v14[data-ui-page=warehouse] #content{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(300px,1fr);gap:20px;align-items:start}
.ui-v14[data-ui-page=warehouse] #content>.work-cards{grid-column:1/-1}
.ui-v14[data-ui-page=warehouse] #content>.grid-2{display:contents}
.ui-v14[data-ui-page=warehouse] #content>.grid-2>.card{grid-column:1;grid-row:2/span 2}
.ui-v14[data-ui-page=warehouse] #content>.grid-2>.scan-panel{grid-column:2;grid-row:2}
.ui-v14[data-ui-page=warehouse] #content>.card{grid-column:2;grid-row:3}
.ui-v14[data-ui-page=sales] #content>.card .approval-item{display:grid;grid-template-columns:minmax(260px,1.2fr) minmax(280px,1fr);gap:4px 24px;align-items:center}
.ui-v14[data-ui-page=sales] #content>.card .approval-item>.muted{grid-column:1/-1;font-size:11px}
}

/* CJK falls back to Noto; ASCII amounts, quantities and document numbers use Plex everywhere. */
.ui-v14{font-family:"IBM Plex Mono","Noto Sans SC",system-ui,sans-serif!important}

.ui-v14 .mobile-bottom{display:grid;grid-template-columns:repeat(4,1fr);gap:4px;background:white;border-top:1px solid #E3E6EB;padding:8px;border-radius:10px;position:sticky;bottom:0;z-index:3}.ui-v14 .mobile-bottom a,.ui-v14 .mobile-bottom .pending{min-height:56px;padding:6px 2px;display:flex;align-items:center;justify-content:center;text-align:center;font-size:12px;text-decoration:none}.ui-v14 #region-matrix td:not(:first-child){border:2px solid white;text-align:center}
