:root{--teal:#087f8c;--teal-dark:#076773;--green:#147d54;--ink:#25313a;--muted:#74818b;--line:#e3e8eb;--bg:#f5f7f8;--blue:#3578bc;--amber:#a96a13;--red:#bc4545}*{box-sizing:border-box}body{margin:0;background:var(--bg);font:14px/1.55 "Segoe UI","Microsoft JhengHei",sans-serif;color:var(--ink);letter-spacing:0}button,input,select,textarea{font:inherit;letter-spacing:0}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.5}a{color:var(--teal);text-decoration:none}a:hover{text-decoration:underline}button:focus-visible,a:focus-visible{outline:3px solid #62bfca;outline-offset:2px}svg.lucide{width:18px;height:18px;stroke-width:1.7;flex:none}#sidebar{width:224px;position:fixed;inset:0 auto 0 0;z-index:20;background:white;border-right:1px solid var(--line);display:flex;flex-direction:column}.brand{display:flex;align-items:center;gap:12px;padding:27px 22px 30px;color:var(--ink)}.brand:hover{text-decoration:none}.brand img{width:40px;height:40px}.brand strong{font-size:17px;display:block}.brand small{font-size:11px;color:var(--muted);display:block;margin-top:1px}.workspace-label{font-size:11px;color:#8e9aa3;padding:0 24px 12px}nav{padding:0 12px;display:flex;flex-direction:column;gap:6px}nav a{display:flex;align-items:center;gap:12px;border-radius:6px;padding:12px 14px;color:#63717c;font-weight:500}nav a:hover{background:#f5f8f9;text-decoration:none}nav a.active{color:var(--teal);background:#eaf5f5;box-shadow:inset 3px 0 var(--teal)}nav .nav-count{margin-left:auto;font-size:11px;padding:0 6px;background:#dceeed;border-radius:4px}.sidebar-bottom{margin:auto 16px 18px;display:flex;align-items:center;gap:10px;border-top:1px solid var(--line);padding-top:19px}.avatar{width:34px;height:34px;display:grid;place-items:center;background:#e9eef4;color:#536f8c;border-radius:50%;font-size:13px}.sidebar-bottom strong{font-size:12px;font-weight:600}.sidebar-bottom small{display:block;font-size:10px;color:var(--muted)}.online{margin-left:auto;background:#40a97a;width:6px;height:6px;border-radius:50%}.shell{margin-left:224px;min-height:100vh;display:flex;flex-direction:column}header{height:64px;flex:none;background:white;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 32px}.breadcrumb{font-size:12px;color:var(--muted)}.breadcrumb span{margin:0 12px;color:#bcc5cb}.breadcrumb b{font-weight:500;color:#4c5963}.header-right{display:flex;align-items:center;gap:20px}.local-label{font-size:11px;color:var(--muted);display:flex;gap:7px;align-items:center}.local-label span{width:6px;height:6px;background:#40a97a;border-radius:50%}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border:1px solid transparent;background:transparent;border-radius:5px;color:#7a8790}.icon-button:hover{background:#edf3f4;color:var(--teal)}.mobile-menu{display:none}main{padding:32px;flex:1;min-width:0}.page-heading{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:25px}.page-heading h1{font-size:23px;line-height:1.3;margin:0 0 5px;font-weight:650}.page-heading p{margin:0;color:var(--muted);font-size:12px}.primary,.secondary,.danger{padding:8px 14px;min-height:36px;display:inline-flex;align-items:center;justify-content:center;gap:7px;border:1px solid var(--teal);border-radius:5px;background:var(--teal);color:white;font-weight:500;white-space:nowrap}.primary:hover{background:var(--teal-dark)}.secondary{background:white;border-color:#d7e0e4;color:#53616c}.secondary:hover{background:#f4f8f9;border-color:#b4cbce}.danger{background:white;color:var(--red);border-color:#e6c8c8}.small{padding:5px 9px;min-height:30px;font-size:12px}.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));background:white;border-block:1px solid var(--line);margin-bottom:26px}.stat{padding:20px 23px;position:relative}.stat+.stat{border-left:1px solid var(--line)}.stat-label{color:var(--muted);font-size:12px;display:flex;align-items:center;gap:7px}.stat-label svg{width:15px;height:15px}.stat-value{font-size:27px;font-weight:600;line-height:1.35;margin-top:7px;font-variant-numeric:tabular-nums}.stat small{color:#9aa4ad;font-size:10px}.stat.teal .stat-value{color:var(--teal)}.stat.amber .stat-value{color:var(--amber)}.stat.blue .stat-value{color:var(--blue)}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px;flex-wrap:wrap}.search{position:relative;flex:1;min-width:180px;max-width:390px}.search svg{position:absolute;top:10px;left:11px;width:16px;height:16px;color:#97a2ab}.search input{padding-left:36px;width:100%;height:36px;background:white}.toolbar-controls{display:flex;gap:10px;align-items:center}.toolbar-controls select{height:36px;max-width:220px}.tabs{display:flex;gap:22px;border-bottom:1px solid var(--line);margin:0 0 20px;overflow-x:auto}.tab{border:0;border-bottom:2px solid transparent;background:transparent;color:#7d8992;white-space:nowrap;padding:10px 0 13px;font-size:13px;display:flex;align-items:center;gap:8px}.tab.active{color:var(--teal);border-color:var(--teal);font-weight:600}.tab span{font-size:10px;padding:1px 5px;background:#eaf0f2;border-radius:3px;color:#88959d}.tab.active span{background:#ddf0ef;color:var(--teal)}.table-wrap{overflow-x:auto;background:white;border:1px solid var(--line);border-radius:6px}table{border-collapse:collapse;width:100%;font-size:12px}th{background:#fafbfc;color:#8a969e;text-align:left;white-space:nowrap;font-size:11px;font-weight:500;padding:12px 15px;border-bottom:1px solid var(--line)}td{padding:17px 15px;border-bottom:1px solid #edf0f2;vertical-align:middle}tbody tr:last-child td{border-bottom:0}tbody tr:hover{background:#fbfdfd}.right{text-align:right}.number{font-variant-numeric:tabular-nums;white-space:nowrap}.mono{font-family:Consolas,monospace;font-size:11px}.order-ref{color:var(--teal);font-weight:600;font-size:11px}.cell-main{font-weight:500}.sub{display:block;font-size:10px;color:#8a969f;margin-top:4px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;padding:3px 7px;border-radius:4px;white-space:nowrap;line-height:1.6;background:#eef2f4;color:#77848d}.badge.green{background:#eaf7ef;color:var(--green)}.badge.amber{background:#fff6e8;color:var(--amber)}.badge.blue{background:#edf3fc;color:var(--blue)}.badge.teal{background:#e8f5f5;color:var(--teal)}.badge.red{background:#fdf0ef;color:var(--red)}.badge svg{width:11px;height:11px}.row-actions{display:flex;gap:3px;justify-content:flex-end}.row-actions .icon-button{width:29px;height:29px}.row-actions svg{width:16px;height:16px}.empty{text-align:center;padding:65px 18px;color:var(--muted)}.empty>svg{width:32px;height:32px;color:#afc3c8;margin-bottom:8px}.empty strong{display:block;font-size:14px;color:#657781}.empty p{font-size:12px;margin:6px 0}.table-footer{display:flex;justify-content:space-between;font-size:11px;color:#929da6;margin-top:14px}.table-footer b{font-weight:400;color:#aeb7be}footer{padding:16px 32px;border-top:1px solid var(--line);color:#9aa6ae;font-size:10px;display:flex;justify-content:space-between}.selection-bar{display:flex;justify-content:space-between;align-items:center;background:#edf7f7;border:1px solid #d6eae9;padding:12px 15px;border-radius:5px;margin-bottom:14px;gap:12px;font-size:12px}.hint{font-size:12px;color:var(--muted);margin:8px 0 20px}.progress{height:4px;background:#e9eff1;border-radius:2px;overflow:hidden;min-width:90px;max-width:150px;margin-top:7px}.progress>span{display:block;background:var(--teal);height:100%}.stock-value{font-weight:600}.stock-zero{color:var(--amber)}.panel-title{font-size:15px;font-weight:600;margin:26px 0 12px}.split-summary{display:flex;flex-wrap:wrap;gap:22px;font-size:12px;color:#7c8992;margin:12px 0 20px}.split-summary b{display:block;font-size:15px;font-weight:600;color:var(--ink);margin-top:3px}.notice{padding:10px 13px;background:#f0f7f8;border-left:3px solid #67aeb8;color:#63818b;font-size:12px;margin:14px 0}.error-panel{padding:24px;color:var(--red);background:#fff;border:1px solid #eccaca}input,select,textarea{border:1px solid #dbe2e6;border-radius:4px;padding:8px 10px;color:var(--ink);background:white;min-width:0}input:focus,select:focus,textarea:focus{outline:2px solid #b7dfe1;outline-offset:0;border-color:#7fbcc2}input[type=checkbox]{accent-color:var(--teal);width:15px;height:15px;cursor:pointer}input[type=number]{font-variant-numeric:tabular-nums}dialog{border:1px solid #d8e1e5;border-radius:8px;width:min(880px,calc(100% - 32px));max-height:90vh;padding:0;box-shadow:0 20px 60px #142e4026;color:var(--ink)}dialog::backdrop{background:#20333f6b}body:has(dialog[open]){overflow:hidden}.modal-header{padding:21px 24px 18px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;gap:12px}.modal-header h2{font-size:18px;margin:0}.modal-header small{display:block;font-size:11px;color:var(--muted);margin-top:4px}.modal-body{padding:22px 24px}.modal-footer{display:flex;justify-content:flex-end;gap:10px;padding:16px 24px;border-top:1px solid var(--line);background:#fafcfc}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px 20px}.form-field{display:flex;flex-direction:column;gap:6px;font-size:12px;color:#687882}.form-field input,.form-field select,.form-field textarea{width:100%;font-size:13px}.form-field.wide{grid-column:1/-1}.form-field em{font-style:normal;color:#d26d60}.form-field small{font-size:10px;color:#8c99a1}.item-table{margin:15px 0}.item-table th,.item-table td{padding:9px 8px}.item-table input,.item-table select{width:100%;padding:7px 6px;font-size:12px}.item-table td:nth-child(2),.item-table td:nth-child(3){width:90px}.item-table td:first-child{min-width:220px}.item-table td:last-child{width:37px}.form-section-title{display:flex;align-items:center;justify-content:space-between;margin:22px 0 6px;font-weight:600;font-size:14px}.total-row{display:flex;justify-content:flex-end;align-items:center;gap:22px;font-size:12px;color:#78878f;margin-top:15px}.total-row strong{font-size:19px;color:var(--teal)}.form-error{color:var(--red);font-size:12px;min-height:19px;padding-top:7px}.detail-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;font-size:12px;margin:4px 0 20px}.detail-grid span{color:#8a969e;display:block;font-size:11px;margin-bottom:3px}.detail-table th,.detail-table td{padding:10px 9px}.detail-table{min-width:560px}.dialog-tools{display:flex;gap:8px;flex-wrap:wrap}.document-heading{display:flex;align-items:center;justify-content:space-between;border-bottom:2px solid var(--teal);padding:0 0 18px;margin-bottom:22px}.document-heading img{width:40px;height:40px}.document-heading h2{font-size:22px;margin:0}.document-heading p{font-size:11px;color:var(--muted);margin:3px 0}.signature-box{border:1px dashed #bdcdd3;padding:18px;display:flex;justify-content:space-between;gap:20px;margin:28px 0 10px;font-size:12px}.sign-form{display:flex;align-items:center;gap:10px;margin-top:18px}.sign-form input{flex:1}.history{display:flex;gap:10px;padding:12px 0;border-bottom:1px solid var(--line);align-items:center}.history svg{color:var(--teal);width:16px;height:16px}.history div{flex:1}.history strong{font-size:12px;font-weight:500}.history small{font-size:10px;color:var(--muted)}#toast{position:fixed;bottom:25px;left:calc(50% + 80px);transform:translateX(-50%) translateY(20px);background:#243c43;color:white;z-index:100;padding:12px 20px;border-radius:6px;opacity:0;pointer-events:none;transition:.2s;font-size:12px;max-width:90vw}#toast.visible{opacity:1;transform:translateX(-50%)}#toast.error{background:#973c3c}.table-input{max-width:95px;width:100%}.item-product{font-size:12px;max-width:260px}.check-cell{width:30px}.busy{opacity:.6;pointer-events:none}
.text-button{padding:0;background:none;border:0;text-align:left;cursor:pointer}.text-button:hover{text-decoration:underline}
.sidebar-close,.mobile-shade{display:none}.modal-body .table-wrap table{min-width:540px}
.print-only{display:none}@media print{.print-only{display:block}}
@media(min-width:1600px){main{padding:36px 44px}header{padding-inline:44px}}
@media(max-width:1150px){#sidebar{width:195px}.shell{margin-left:195px}main{padding:24px}header{padding:0 24px}.brand{padding-inline:17px}.stat{padding:17px}td{padding:14px 11px}.stats{margin-bottom:22px}.toolbar-controls select{max-width:170px}}
@media(max-width:800px){#sidebar{transform:translateX(-100%);transition:.2s;width:224px;box-shadow:3px 0 20px #19343b16}.shell{margin-left:0}body.menu-open #sidebar{transform:translateX(0)}.mobile-menu{display:inline-flex}header{padding:0 16px;gap:10px;height:56px}.breadcrumb{flex:1}.breadcrumb span{margin-inline:7px}.local-label{display:none}.header-right{gap:0}main{padding:23px 16px}.page-heading h1{font-size:21px}.page-heading{margin-bottom:20px}.stats{grid-template-columns:repeat(2,minmax(0,1fr))}.stat{padding:15px 17px}.stat:nth-child(3){border-left:0;border-top:1px solid var(--line)}.stat:nth-child(4){border-top:1px solid var(--line)}.stat-value{font-size:24px}.tabs{gap:19px}.toolbar{align-items:stretch}.search{max-width:none}.toolbar-controls{flex:1}.toolbar-controls select{width:100%;max-width:none}.selection-bar{align-items:flex-start}.detail-grid{grid-template-columns:repeat(2,1fr)}footer{padding-inline:16px}#toast{left:50%}.form-grid{grid-template-columns:1fr}.modal-body{padding:18px 16px}.modal-header{padding:17px 16px}.modal-footer{padding:14px 16px}.item-table td:first-child{min-width:180px}.signature-box{flex-direction:column;gap:12px}.page-heading .primary{font-size:12px;padding-inline:10px}.dialog-tools .secondary{font-size:12px}.sign-form{flex-wrap:wrap}}
@media(max-width:800px){#sidebar{visibility:hidden}body.menu-open #sidebar{visibility:visible}.sidebar-close{display:inline-flex;position:absolute;right:8px;top:9px;width:26px;height:26px}body.menu-open .mobile-shade{display:block;position:fixed;inset:0;background:#20333f55;z-index:19}.stat.blue .stat-value{font-size:20px}main .table-wrap{border:0;background:transparent;overflow:visible}main table,main tbody{display:block;width:100%}main thead{display:none}main thead:has(input[type=checkbox]){display:block}main thead th{display:none;border:0}main thead th:has(input[type=checkbox]){display:flex;align-items:center;padding:5px 0 12px;background:transparent}main thead th:has(input[type=checkbox])::after{content:'全選';margin-left:8px}main tbody tr{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:12px 16px;padding:16px;border:1px solid var(--line);border-radius:6px;background:white;margin-bottom:12px}main td{display:block;padding:0;border:0;min-width:0;overflow-wrap:anywhere}main td::before{content:attr(data-label);display:block;font-size:10px;color:var(--muted);margin-bottom:5px;font-weight:400}main td:first-child{grid-column:1/-1}main td .order-ref{font-size:12px}main td:last-child:has(.row-actions){grid-column:1/-1;border-top:1px solid var(--line);padding-top:10px;display:flex;align-items:center;justify-content:space-between}main td:last-child:has(.row-actions)::before{margin:0}main .row-actions{gap:8px}main .row-actions .icon-button{width:36px;height:34px;border:1px solid var(--line)}main td.check-cell{width:auto}main td.check-cell::before{display:none}main tbody tr:has(td.check-cell){position:relative}main tbody tr:has(td.check-cell) td:nth-child(2){grid-column:1/-1;padding-right:30px}main td.check-cell{position:absolute;right:14px;top:12px}main td.number{white-space:normal}.toolbar-controls{min-width:120px}.modal-body .table-wrap{overflow-x:auto}.table-footer b{font-size:10px}}
@media print{body>*{display:none!important}body>dialog[open]{display:block!important;position:static!important;max-height:none!important;width:100%!important;border:0!important;box-shadow:none!important;margin:0!important;overflow:visible!important}.modal-header,.modal-footer,.no-print{display:none!important}.modal-body{padding:0!important}.table-wrap{overflow:visible;border:0}.detail-table{min-width:0}td,th{break-inside:avoid}dialog::backdrop{display:none}body:has(dialog[open]){overflow:visible}#modal-content{width:100%}@page{size:A4;margin:18mm}}
