:root{--ink:#22243a;--muted:#7b8094;--purple:#7060d8;--purple-soft:#f1edff;--border:#e8e9f1;--canvas:#f7f8fc;--red:#c33b51;--green:#21846b}*{box-sizing:border-box}body{margin:0;font-family:Inter,"Segoe UI","Microsoft YaHei",sans-serif;color:var(--ink);background:var(--canvas);line-height:1.6;font-size:14px}button,input,select,textarea{font:inherit}button,a{touch-action:manipulation}button{border:1px solid var(--border);background:white;color:var(--ink);padding:9px 15px;border-radius:9px;cursor:pointer;white-space:nowrap}button:hover{border-color:#b3a9ed;background:#faf9ff}button:disabled{opacity:.5;cursor:wait}button.primary{background:var(--purple);border-color:var(--purple);color:white}button.danger{color:var(--red);border-color:#f2cbd3}input,select,textarea{width:100%;min-width:0;border:1px solid #dcdeea;border-radius:9px;padding:10px 12px;background:white;color:var(--ink)}input:focus,textarea:focus,select:focus{outline:3px solid #e8e0ff;border-color:var(--purple)}textarea{min-height:85px;resize:vertical}label{display:grid;gap:6px;color:#555b70;font-size:13px}form{display:grid;gap:16px}h1,h2,h3,p{margin-top:0}h1{font-size:29px;line-height:1.3;letter-spacing:-.7px;margin-bottom:9px}h2{font-size:21px;margin-bottom:12px}h3{font-size:16px}a{color:var(--purple)}[hidden]{display:none!important}.muted{color:var(--muted)}.small{font-size:12px}.eyebrow{font-size:11px;letter-spacing:2px;font-weight:650;color:var(--muted);margin-bottom:15px}.brandmark{display:grid;place-items:center;width:56px;height:56px;border-radius:17px;background:var(--purple);color:white;font-size:23px;font-weight:bold;letter-spacing:-1px;flex-shrink:0}.welcome{max-width:1150px;min-height:100vh;margin:auto;display:grid;grid-template-columns:1.1fr 1fr;gap:95px;padding:70px 35px;align-items:center}.welcome-copy h1{font-size:42px;line-height:1.5;margin-top:28px}.welcome-copy .eyebrow{margin-top:30px}.welcome-copy>p{font-size:15px}.welcome-notes{display:grid;gap:18px;margin:40px 0;color:#5c5975}.login-card{background:white;border:1px solid var(--border);border-radius:22px;padding:35px;box-shadow:0 20px 70px #26224606}.full{width:100%}.divider{display:flex;align-items:center;gap:15px;color:var(--muted);font-size:12px;margin:23px 0}.divider:before,.divider:after{content:"";height:1px;background:var(--border);flex:1}.login-link{display:block;text-align:center;margin:14px 0 22px;font-size:13px}.error{color:var(--red);white-space:pre-line}.sidebar{width:235px;position:fixed;inset:0 auto 0 0;background:#1c1d31;color:#d5d4e6;display:flex;flex-direction:column;padding:30px 18px}.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:white;margin-bottom:50px;font-size:18px;font-weight:650}.brand small{display:block;font-size:10px;color:#9496b1;font-weight:normal;margin-top:2px;letter-spacing:1px}.smallmark{width:39px;height:39px;font-size:17px;border-radius:12px}.sidebar-label{font-size:10px;letter-spacing:2px;color:#8586a1;margin:0 12px 12px}nav{display:grid;gap:7px}nav button{background:none;border:0;color:#a9abc3;text-align:left;padding:13px 16px}nav button:hover,nav button.active{color:#ddd7ff;background:#302947}.sidebar-bottom{margin-top:auto;display:grid;gap:8px;font-size:12px;padding:18px 9px 0;border-top:1px solid #35364d}.sidebar-bottom button{background:none;border:1px solid #35364d;color:#b7b7d0;padding:6px}.sidebar-bottom .muted{color:#80829c}main{margin-left:235px;min-height:100vh}.topbar{height:69px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border);padding:0 35px;color:var(--muted);background:#ffffffa8;font-size:12px}.test-tag{color:var(--purple);background:var(--purple-soft);padding:5px 10px;border-radius:6px}.page{padding:34px;max-width:1600px;margin:auto}.page-heading{display:flex;justify-content:space-between;align-items:center;gap:20px;margin:10px 0 26px}.page-heading .eyebrow{margin-bottom:8px}.page-heading .muted{margin:0}.actions{display:flex;flex-wrap:wrap;gap:8px}.toolbar{display:flex;gap:10px;align-items:center;margin-bottom:20px}.toolbar input{flex:1}.toolbar select{width:180px}.table-card{background:white;border:1px solid var(--border);border-radius:13px;overflow:hidden}.table-scroll{overflow:auto}table{border-collapse:collapse;width:100%;text-align:left;white-space:nowrap}th{font-size:11px;color:#858a9c;background:#fbfbfe;font-weight:500;padding:14px 18px;border-bottom:1px solid var(--border)}td{padding:18px;border-bottom:1px solid #f0f0f7;font-size:13px}tr:last-child td{border-bottom:0}td small{display:block;color:var(--muted);font-size:11px;max-width:260px;overflow:hidden;text-overflow:ellipsis}.code{color:var(--purple);font-family:Consolas,monospace;font-weight:600}.stock{display:inline-block;border-radius:5px;padding:4px 9px;font-size:12px}.stock.sufficient{color:var(--green);background:#e9f7ef}.stock.low{color:var(--red);background:#fff0f2}.stock.empty{color:#8c91a2;background:#f0f1f5}.stock.pending{color:#a37a19;background:#fff7df}.stock.partial{color:var(--purple);background:var(--purple-soft)}.stock.completed{color:var(--green);background:#e9f7ef}.stock.closed,.stock.cancelled{color:#8c91a2;background:#f0f1f5}.td-actions{display:flex;gap:6px}.td-actions button{padding:5px 9px;font-size:12px}.empty{text-align:center;padding:70px 20px;color:var(--muted)}.empty strong{display:block;color:#565c74;font-size:17px;margin:12px}.empty .empty-icon{font-size:35px;color:#bdb4e8}.pagination{display:flex;align-items:center;justify-content:space-between;margin-top:18px;color:var(--muted);font-size:12px}.pagination>div{display:flex;gap:8px}.panel{border:1px solid var(--border);background:white;padding:25px;border-radius:12px;margin-bottom:18px}.panel p:last-child{margin-bottom:0}.warning{border:1px solid #edd9a7;background:#fff9e9;border-radius:10px;padding:16px;margin-bottom:18px}.warning p{margin:7px 0}.warning small{display:block;overflow-wrap:anywhere;margin-top:8px}.rules{max-width:900px}.rules ol{padding-left:23px}.rules li{margin:12px 0}.meta-grid,.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:15px}.meta-grid{padding:18px;background:var(--canvas);border-radius:10px;margin-bottom:20px;font-size:13px;overflow-wrap:anywhere}.wide{grid-column:1/-1}.form-grid .check{display:flex;align-items:center;gap:8px}.check input{width:auto}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:8px}.help{font-size:12px;color:var(--muted)}.line-card{border:1px solid var(--border);border-radius:10px;padding:15px;margin:12px 0}.line-card .line-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.line-card .form-grid{grid-template-columns:1fr 1fr 1.3fr}.row{display:flex;gap:10px;align-items:end}.row>label{flex:1}.row>button{flex:none}dialog{border:1px solid var(--border);border-radius:16px;padding:25px;width:min(790px,calc(100vw - 28px));max-height:90vh;overflow:auto;color:var(--ink);box-shadow:0 25px 100px #0003}dialog::backdrop{background:#17132877;backdrop-filter:blur(3px)}.dialog-head{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:22px}.dialog-head h2{margin:0}.dialog-head button{font-size:24px;line-height:1;padding:4px 10px;border:0;color:var(--muted)}#notice{padding:12px 16px;border-radius:9px;background:#eaf5ef;color:#267356;margin-bottom:20px;white-space:pre-line}#notice.bad{background:#fff0f2;color:var(--red)}.dialog-error{color:var(--red);white-space:pre-line}.copy-btn{padding:1px 5px;border:0;color:var(--purple);font-family:Consolas,monospace;font-size:12px}footer{font-size:10px;color:#9ba0b1;margin-top:40px;display:flex;justify-content:space-between;gap:10px}footer a{color:inherit}.file-row{display:flex;gap:10px;margin:10px 0;align-items:center}.file-row a{overflow-wrap:anywhere;word-break:break-all}.record-reason{white-space:normal;min-width:150px;max-width:340px;overflow-wrap:anywhere}pre.audit-details{white-space:pre-wrap;word-break:break-all;font-size:12px;max-width:550px;margin:0}.balance{display:flex;gap:20px;flex-wrap:wrap;font-size:13px;padding:15px;background:var(--purple-soft);border-radius:9px;margin-bottom:18px}
/* Keep empty-state layout from applying to the "empty stock" badge. */
.stock.empty{padding:4px 9px}
td:has(>.stock.empty){height:auto}
.td-actions{display:table-cell}.td-actions button{margin-right:4px}
.name-button{padding:0;border:0;background:none;white-space:normal;text-align:left;font-weight:650;font-size:13px}
@media(max-width:1100px){.sidebar{width:205px}main{margin-left:205px}.page{padding:25px}.welcome{gap:45px}.welcome-copy h1{font-size:34px}}
@media(max-width:760px){.member-mode #content table th:nth-child(3),.member-mode #content table td:nth-child(3),.member-mode #content table th:nth-child(4),.member-mode #content table td:nth-child(4),.member-mode #content table th:nth-child(6),.member-mode #content table td:nth-child(6){display:none}.member-mode #content table{table-layout:fixed}.member-mode #content table th:first-child{width:65px}.member-mode #content table th:nth-child(5){width:100px}.member-mode #content td small{max-width:100%;white-space:normal;overflow-wrap:anywhere}.member-mode #content td{white-space:normal;overflow-wrap:anywhere}.member-mode #content .stock{white-space:nowrap}}
@media(max-width:760px){body{font-size:14px}.welcome{grid-template-columns:1fr;padding:30px 20px;gap:20px}.welcome-copy h1{font-size:28px;line-height:1.35;margin-top:18px}.welcome-copy .eyebrow{margin-top:18px;font-size:9px}.welcome-notes{display:none}.welcome-copy>.muted{display:none}.login-card{padding:25px}.sidebar{position:static;width:100%;padding:15px 18px}.brand{margin:0 0 12px;font-size:16px}.smallmark{width:32px;height:32px;font-size:14px}.sidebar-label{display:none}nav{display:flex;overflow:auto;gap:4px;padding-bottom:4px}nav button{padding:8px 10px;font-size:13px}.sidebar-bottom{margin:10px 0 0;padding:9px 0 0;display:flex;align-items:center;flex-wrap:wrap;gap:10px}.sidebar-bottom button{font-size:11px}.sidebar-bottom>span{margin-left:auto}main{margin:0}.topbar{padding:0 18px;height:48px;font-size:10px}.page{padding:20px 16px}.page-heading{align-items:start;flex-direction:column;gap:14px}h1{font-size:25px}.toolbar{flex-wrap:wrap}.toolbar input{flex-basis:100%}.toolbar select{flex:1;min-width:100px}input,select,textarea{font-size:16px}th,td{padding:12px}.form-grid,.meta-grid{grid-template-columns:1fr}.line-card .form-grid{grid-template-columns:1fr 1fr}.line-card .form-grid label:last-child{grid-column:1/-1}.row{flex-wrap:wrap}.row>label{flex-basis:60%}.meta-grid .wide{grid-column:auto}footer{flex-direction:column}dialog{padding:19px}.panel{padding:19px}}

/* One anchored legal footer in both login and workspace; body reserves its height. */
:root{--legal-height:52px}
body{padding-bottom:var(--legal-height)}
.welcome{min-height:calc(100vh - var(--legal-height));min-height:calc(100svh - var(--legal-height))}
main{min-height:calc(100vh - var(--legal-height));min-height:calc(100svh - var(--legal-height))}
#site-footer{position:fixed;z-index:5;bottom:0;left:0;right:0;height:var(--legal-height);margin:0;padding:12px 34px;display:flex;flex-direction:row;align-items:center;justify-content:space-between;background:var(--canvas);border-top:1px solid var(--border);font-size:10px;gap:12px}
body.session-active #site-footer{left:235px}
.bulk-input{min-height:170px;font-family:Consolas,"Microsoft YaHei",monospace;font-size:13px}
.bulk-summary{padding:12px 15px;margin:16px 0;border-radius:9px;background:var(--purple-soft);overflow-wrap:anywhere}
.bulk-preview th,.bulk-preview td{padding:10px 12px}
.bulk-tools{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.bulk-import{display:grid;grid-template-columns:auto minmax(0,1fr);gap:10px;align-items:end}
.bulk-import>label{min-width:0}
.bulk-import>button,.bulk-import input[type=file]{height:44px}
.bulk-import input[type=file]{padding:0;font-size:13px;line-height:42px;overflow:hidden}
.bulk-import input[type=file]::file-selector-button{height:42px;margin:0 10px 0 0;padding:0 12px;border:0;border-right:1px solid var(--border);background:var(--canvas);color:var(--ink);font:inherit;cursor:pointer}
#bulk-form>.help{margin:0}
#bulk-form{min-width:0;grid-template-columns:minmax(0,1fr)}
#bulk-preview{min-width:0}
#bulk-confirm-row{display:flex;align-items:flex-start;gap:8px;cursor:pointer}
#bulk-confirm-check{flex:0 0 16px;width:16px;height:16px;margin:2px 0 0;padding:0;accent-color:var(--purple)}
#bulk-confirm-row>span{min-width:0}
@media(max-width:520px){.bulk-import{grid-template-columns:minmax(0,1fr)}.bulk-import>button{justify-self:start}}
.bulk-new{color:var(--purple)}
@media(max-width:1100px){body.session-active #site-footer{left:205px}}
@media(max-width:760px){:root{--legal-height:calc(64px + env(safe-area-inset-bottom,0px))}#site-footer,body.session-active #site-footer{left:0;padding:9px 16px;padding-bottom:calc(9px + env(safe-area-inset-bottom,0px));flex-direction:column;align-items:flex-start;justify-content:center;gap:3px}.bulk-input{font-size:16px}}
