:root{--bg:#f4f7fb;--surface:#fff;--text:#162033;--muted:#667085;--line:#e4e9f1;--primary:#175cd3;--primary-dark:#124aa8;--success:#067647;--success-bg:#ecfdf3;--danger:#b42318;--danger-bg:#fef3f2;--warning:#b54708;--shadow:0 8px 28px rgba(16,24,40,.07);--radius:16px}*{box-sizing:border-box}html{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:var(--text);background:var(--bg)}body{margin:0;min-height:100vh}a{color:var(--primary);text-decoration:none}button,input,select{font:inherit}button{cursor:pointer}.app-shell{min-height:100vh}.topbar{height:68px;padding:0 max(18px,calc((100vw - 1180px)/2));background:var(--surface);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;position:sticky;top:0;z-index:30}.brand{display:flex;align-items:center;gap:10px;color:var(--text)}.brand-mark{width:38px;height:38px;border-radius:11px;background:var(--primary);color:#fff;display:grid;place-items:center;font-weight:800;font-size:13px}.brand strong,.brand small{display:block}.brand small{font-size:10px;letter-spacing:.08em;color:var(--muted);margin-top:2px}.top-actions{display:flex;align-items:center;gap:18px;font-size:14px}.top-actions form{margin:0}.link-button{border:0;background:none;color:var(--danger);padding:0}.page-wrap{width:min(1180px,calc(100% - 32px));margin:30px auto 60px}.page-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px;margin-bottom:22px}.page-heading h1,.checker-heading h1{font-size:28px;line-height:1.15;margin:0 0 6px}.page-heading p,.checker-heading p{margin:0;color:var(--muted)}.btn{border:1px solid #cfd6e2;background:#fff;color:#344054;border-radius:10px;padding:10px 14px;font-weight:700;display:inline-flex;justify-content:center;align-items:center;gap:8px;min-height:42px}.btn:hover{background:#f8fafc}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark)}.btn.danger{background:var(--danger);border-color:var(--danger);color:#fff}.btn.full{width:100%}.btn.big{min-height:52px;font-size:16px}.btn.small{min-height:34px;padding:6px 10px;font-size:13px}.panel{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:20px;margin-bottom:20px}.panel.narrow{max-width:760px}.panel-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:16px}.panel-head h2{font-size:17px;margin:0}.compact-panel{padding:12px}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:20px}.metric{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:18px}.metric span{display:block;color:var(--muted);font-size:13px;margin-bottom:7px}.metric strong{font-size:27px}.cycle-list{display:grid;gap:8px}.cycle-row{display:flex;justify-content:space-between;align-items:center;padding:13px 4px;border-bottom:1px solid var(--line);color:var(--text)}.cycle-row:last-child{border:0}.cycle-row strong,.cycle-row small{display:block}.cycle-row small,.warehouse-line small,.session-row small,.edit-card small,td small,.assignment-card p,.checker-assignment small{color:var(--muted);margin-top:3px}.status{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:800;letter-spacing:.05em;background:#f2f4f7;color:#475467}.status.open{background:#ecfdf3;color:#067647}.status.closed{background:#eef2ff;color:#3538cd}.status.draft{background:#fff7ed;color:#b54708}.status.large{padding:8px 12px;font-size:12px}.stack-form{display:grid;gap:14px}.stack-form label,.location-form label,.manual-scan label{font-size:13px;font-weight:700;color:#344054;display:grid;gap:7px}.stack-form input,.stack-form select,.filter-row input,.filter-row select,.location-form input,.manual-scan input{width:100%;border:1px solid #cfd6e2;background:#fff;border-radius:10px;padding:11px 12px;min-height:44px;color:var(--text);outline:none}.stack-form input:focus,.stack-form select:focus,.location-form input:focus,.manual-scan input:focus{border-color:#84adff;box-shadow:0 0 0 3px #eff4ff}.split-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(0,1.5fr);gap:20px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:10px}.edit-card{border-bottom:1px solid var(--line);padding:14px 0}.edit-card:first-child{padding-top:0}.check{display:flex!important;align-items:center;gap:8px!important;font-size:14px!important;font-weight:600!important}.check input{width:18px!important;height:18px!important;min-height:auto!important}.table-wrap{overflow:auto}.table-wrap table{width:100%;border-collapse:collapse;min-width:650px}th{text-align:left;color:#667085;font-size:11px;text-transform:uppercase;letter-spacing:.05em;padding:10px 12px;border-bottom:1px solid var(--line)}td{padding:12px;border-bottom:1px solid #eef1f5;font-size:14px;vertical-align:top}td strong,td small{display:block}.num{text-align:right;font-variant-numeric:tabular-nums}.negative{color:#b42318}.positive{color:#067647}.movement{color:#b54708;font-weight:700}.ok-text{color:#067647}.muted{color:var(--muted)}.filter-row{display:flex;gap:10px;align-items:center;margin-bottom:15px}.filter-row input,.filter-row select{width:auto}.input-action{display:flex;gap:8px}.lookup-result{border:1px dashed #cfd6e2;padding:12px;border-radius:10px;font-size:13px}.success-lite{background:var(--success-bg);color:var(--success);border:1px solid #abefc6;padding:12px;border-radius:10px}.danger-lite{background:var(--danger-bg);color:var(--danger);border:1px solid #fecdca;padding:12px;border-radius:10px}.danger-link{border:0;background:none;color:var(--danger);padding:0}.warehouse-picker{display:grid;grid-template-columns:repeat(2,1fr);gap:9px;margin-top:8px;max-height:410px;overflow:auto}.warehouse-option{display:flex;align-items:flex-start;gap:10px;border:1px solid var(--line);border-radius:11px;padding:11px;background:#fbfcfe}.warehouse-option input{margin-top:3px}.warehouse-option strong,.warehouse-option small{display:block}.warehouse-option small{font-size:12px;color:var(--muted);margin-top:2px}.label-title{font-size:13px;font-weight:700;color:#344054}.assignment-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}.assignment-card{border:1px solid var(--line);border-radius:13px;padding:16px}.assignment-card h3{margin:0}.checker-options{display:grid;gap:9px}.checker-options .check{align-items:flex-start}.checker-options span,.checker-options small{display:block}.sticky-actions{position:sticky;bottom:14px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:14px;padding:12px;display:flex;justify-content:flex-end;gap:8px}.action-strip{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:20px}.action-strip form{margin:0}.warehouse-line,.session-row{display:flex;justify-content:space-between;gap:10px;padding:12px 0;border-bottom:1px solid var(--line)}.warehouse-line:last-child,.session-row:last-child{border:0}.warehouse-line strong,.warehouse-line small,.session-row strong,.session-row small{display:block}.mini-tags{display:flex;flex-wrap:wrap;gap:5px;justify-content:flex-end}.mini-tags span{font-size:11px;background:#f2f4f7;border-radius:999px;padding:5px 8px}.empty{text-align:center;color:var(--muted);padding:32px 14px}.empty.compact{padding:14px}.alert{border-radius:12px;padding:13px 15px;margin-bottom:18px;font-size:14px}.alert.success{background:var(--success-bg);border:1px solid #abefc6;color:var(--success)}.alert.danger{background:var(--danger-bg);border:1px solid #fecdca;color:var(--danger)}.alert ul{margin:6px 0 0 18px}.inline-form{display:inline-block;margin-left:8px}.auth-page{display:grid;place-items:center;min-height:100vh;margin-top:0}.login-card{width:min(430px,100%);background:#fff;border:1px solid var(--line);border-radius:22px;box-shadow:var(--shadow);padding:30px}.login-symbol{width:50px;height:50px;border-radius:14px;background:var(--primary);display:grid;place-items:center;color:#fff;font-weight:900;margin-bottom:20px}.login-card h1{margin:0 0 6px}.login-card>p{color:var(--muted);margin:0 0 22px}.demo-note{font-size:12px;color:var(--muted);background:#f8fafc;border-radius:9px;padding:10px;margin-top:16px}.checker-page{max-width:700px}.checker-heading{margin-bottom:18px}.assignment-list{display:grid;gap:14px}.checker-assignment{background:#fff;border:1px solid var(--line);border-radius:18px;padding:18px;box-shadow:var(--shadow)}.assignment-top{display:flex;justify-content:space-between;gap:10px;margin-bottom:16px}.assignment-top strong,.assignment-top small{display:block}.assignment-top>span{font-size:11px;color:var(--primary);font-weight:800}.location-form{display:grid;gap:12px}.scanner-page{max-width:720px;margin-top:16px}.scanner-shell{display:grid;gap:13px}.scan-context{display:flex;justify-content:space-between;align-items:center;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.scan-context small,.scan-context strong{display:block}.scan-context small{color:var(--muted);font-size:11px}.location-chip{text-align:right}.location-chip span,.location-chip strong{display:block}.location-chip span{font-size:10px;text-transform:uppercase;color:var(--muted)}.scan-feedback{display:flex;align-items:center;gap:12px;border-radius:14px;padding:13px 15px;border:1px solid var(--line);background:#fff}.scan-feedback .feedback-icon{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:#f2f4f7;font-size:20px}.scan-feedback strong,.scan-feedback span{display:block}.scan-feedback span{color:var(--muted);font-size:12px;margin-top:2px}.scan-feedback.success{background:var(--success-bg);border-color:#abefc6}.scan-feedback.success .feedback-icon{background:#d1fadf;color:var(--success)}.scan-feedback.error{background:var(--danger-bg);border-color:#fecdca}.scan-feedback.error .feedback-icon{background:#fee4e2;color:var(--danger)}.camera-box{position:relative;background:#101828;border-radius:18px;overflow:hidden;aspect-ratio:4/3;min-height:260px}.camera-box video{width:100%;height:100%;object-fit:cover;display:block}.scan-guide{pointer-events:none;position:absolute;inset:0;display:grid;place-items:center}.scan-guide:before{content:"";width:76%;height:32%;border:2px solid rgba(255,255,255,.82);border-radius:14px;box-shadow:0 0 0 999px rgba(0,0,0,.13)}.scan-guide span{position:absolute;width:64%;height:2px;background:#ff3b30;box-shadow:0 0 8px rgba(255,59,48,.55)}.camera-start{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);border:0;border-radius:999px;padding:11px 17px;background:#fff;color:#101828;font-weight:800}.manual-scan{display:grid;grid-template-columns:1fr auto;align-items:end;gap:9px;background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px}.change-location{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.change-location summary{font-weight:800;cursor:pointer}.location-form.compact{margin-top:12px}.scanner-note{text-align:center;color:var(--muted);font-size:11px;margin:0 8px}.summary-table .variance-row{background:#fffaf5}.large-empty{background:#fff;border:1px solid var(--line);border-radius:16px}.pagination{margin-top:15px}
@media(max-width:780px){.topbar{height:60px;padding:0 14px}.top-actions{gap:10px}.top-actions>a{display:none}.brand-mark{width:34px;height:34px}.page-wrap{width:min(100% - 22px,1180px);margin:18px auto 42px}.page-heading{align-items:center}.page-heading h1,.checker-heading h1{font-size:23px}.page-heading p{font-size:13px}.metric-grid{grid-template-columns:repeat(3,1fr);gap:8px}.metric{padding:13px}.metric span{font-size:11px}.metric strong{font-size:21px}.split-grid{grid-template-columns:1fr}.assignment-grid{grid-template-columns:1fr}.warehouse-picker{grid-template-columns:1fr}.grid-2{grid-template-columns:1fr}.panel{padding:14px;border-radius:14px}.filter-row{align-items:stretch;flex-wrap:wrap}.filter-row input,.filter-row select{width:100%;flex:1}.action-strip{display:grid;grid-template-columns:1fr 1fr}.action-strip form,.action-strip .btn,.action-strip button{width:100%}.manual-scan{grid-template-columns:1fr}.manual-scan .btn{width:100%}.camera-box{aspect-ratio:3/4;max-height:58vh}.scan-guide:before{width:86%;height:25%}.scanner-page{width:100%;margin:0}.scanner-page .alert{margin-left:11px;margin-right:11px}.scanner-shell{gap:10px}.scan-context,.scan-feedback,.manual-scan,.change-location{border-radius:12px}.summary-table table{min-width:960px}.login-card{padding:24px}.auth-page{width:min(100% - 28px,430px)}}
@media(max-width:460px){.metric-grid{grid-template-columns:1fr 1fr}.metric:nth-child(3){grid-column:1/-1}.page-heading{align-items:flex-start}.page-heading>.btn{font-size:12px;padding:8px 10px;min-height:38px}.assignment-top{align-items:flex-start}.scanner-page{width:100%;}.camera-box{border-radius:14px;min-height:330px}.top-actions{font-size:13px}}

/* Summary export + admin override */
.info-lite{background:#eff8ff;color:#175cd3;border:1px solid #b2ddff;padding:12px 14px;border-radius:10px}.summary-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px}.summary-toolbar .summary-filter{margin:0;flex:1}.excel-btn{white-space:nowrap;background:#067647;border-color:#067647;color:#fff}.excel-btn:hover{background:#05603a;color:#fff}.summary-legend{display:flex;flex-wrap:wrap;gap:8px 18px;padding:0 0 14px;color:var(--muted);font-size:12px}.summary-legend strong{color:#344054}.summary-table table{min-width:1450px}.summary-table tr.override-active{box-shadow:inset 3px 0 0 #175cd3}.override-value{color:#175cd3}.override-label{color:#175cd3!important;font-size:9px!important;font-weight:800;letter-spacing:.06em}.audit-cell{min-width:260px;max-width:340px}.audit-links{margin-bottom:6px}.override-audit{background:#eff8ff;border:1px solid #b2ddff;border-radius:9px;padding:9px;margin:7px 0}.override-audit strong,.override-audit small{display:block}.override-audit small{font-size:11px;color:var(--muted)}.override-audit p{margin:6px 0 0;font-size:12px;line-height:1.45;white-space:normal}.override-editor{margin-top:7px;border-top:1px dashed #d0d5dd;padding-top:7px}.override-editor summary{cursor:pointer;color:var(--primary);font-size:12px;font-weight:800}.override-editor form{display:grid;gap:8px;margin-top:10px}.override-editor label{display:grid;gap:5px;font-size:12px;font-weight:700;color:#344054}.override-editor input,.override-editor textarea{width:100%;border:1px solid #cfd6e2;background:#fff;border-radius:8px;padding:8px 9px;color:var(--text);outline:none}.override-editor textarea{resize:vertical;font:inherit;line-height:1.4}.override-editor input:focus,.override-editor textarea:focus{border-color:#84adff;box-shadow:0 0 0 3px #eff4ff}.override-editor label small{font-size:10px;font-weight:400;color:var(--muted)}.override-editor .danger-link{text-align:left;font-size:12px;margin-top:2px}
@media(max-width:780px){.summary-toolbar{align-items:stretch;flex-direction:column}.summary-toolbar .summary-filter{width:100%}.summary-toolbar .excel-btn{width:100%}.summary-legend{display:grid;gap:5px}.audit-cell{min-width:230px}.summary-table table{min-width:1380px}}

/* Ratio Excel import */
.ratio-import-panel{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:16px 24px;align-items:center;margin-bottom:18px}.ratio-import-copy h2{margin:0 0 5px;font-size:18px}.ratio-import-copy p{margin:0;color:var(--muted);font-size:13px;line-height:1.5}.ratio-import-actions{display:flex;align-items:center;justify-content:flex-end;gap:10px;flex-wrap:wrap}.ratio-import-form{display:flex;align-items:center;gap:8px}.ratio-import-form input[type=file]{max-width:260px;border:1px solid var(--line);border-radius:10px;padding:7px;background:#fff;font-size:12px}.ratio-import-note{grid-column:1/-1;background:#f8fafc;border:1px solid #e4e7ec;border-radius:10px;padding:10px 12px;color:#475467;font-size:12px}.import-result-panel{margin-bottom:18px}.import-result-head{display:flex;align-items:center;justify-content:space-between;gap:15px}.import-result-head h2{margin:0 0 4px}.import-result-head p{margin:0;color:var(--muted);font-size:12px}.import-metrics{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.import-metrics span{background:#f2f4f7;border-radius:10px;padding:8px 11px;font-size:11px;color:#475467;text-align:center;min-width:72px}.import-metrics strong{display:block;color:#101828;font-size:16px}.import-metrics .has-error{background:#fef3f2;color:#b42318}.import-metrics .has-error strong{color:#b42318}.import-error-details{margin-top:12px}.import-error-details summary{cursor:pointer;color:#b42318;font-weight:800;font-size:12px}.compact-table{margin-top:10px;max-height:280px}.compact-table table{min-width:600px}

/* Summary override action is intentionally positioned after Item so it is visible without horizontal scrolling. */
.summary-action-col{min-width:190px}.action-override-editor{margin:0;border:0;padding:0}.action-override-editor>summary.audit-button{display:inline-flex;align-items:center;justify-content:center;list-style:none;cursor:pointer;white-space:nowrap;color:var(--primary)}.action-override-editor>summary.audit-button::-webkit-details-marker{display:none}.action-override-editor[open]>summary.audit-button{background:#eff4ff;border-color:#84adff}.override-editor-body{min-width:285px;max-width:330px;margin-top:10px;padding:10px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;box-shadow:0 8px 22px rgba(16,24,40,.08)}

@media(max-width:780px){.ratio-import-panel{grid-template-columns:1fr}.ratio-import-actions{justify-content:stretch;display:grid;grid-template-columns:1fr}.ratio-import-actions .btn{width:100%}.ratio-import-form{display:grid;grid-template-columns:1fr}.ratio-import-form input[type=file]{max-width:none;width:100%}.import-result-head{align-items:flex-start;flex-direction:column}.import-metrics{justify-content:flex-start}.summary-action-col{min-width:170px}.override-editor-body{min-width:260px;max-width:280px}}

/* User management */
.panel-subtitle{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.user-management-grid{grid-template-columns:minmax(280px,.72fr) minmax(0,1.65fr);align-items:start}.user-create-panel{position:sticky;top:88px}.user-list-panel{min-width:0}.user-list-header{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:16px}.user-list-header h2{margin:0;font-size:18px}.user-list-header p{margin:4px 0 0;color:var(--muted);font-size:12px}.user-search-form{display:flex;align-items:center;gap:8px;min-width:min(420px,55%)}.user-search-box{position:relative;display:flex;align-items:center;flex:1}.user-search-box>span{position:absolute;left:12px;color:#98a2b3;font-size:18px;pointer-events:none}.user-search-box input{width:100%;min-height:42px;border:1px solid #cfd6e2;border-radius:10px;padding:9px 34px 9px 36px;outline:none;color:var(--text);background:#fff}.user-search-box input:focus{border-color:#84adff;box-shadow:0 0 0 3px #eff4ff}.user-search-clear{position:absolute;right:10px;color:#667085;font-size:20px;line-height:1}.user-table-wrap{border:1px solid var(--line);border-radius:12px;overflow:auto}.user-table-wrap table{min-width:720px}.user-table th{background:#f8fafc;padding-top:11px;padding-bottom:11px}.user-table td{vertical-align:middle}.user-table tbody tr:last-child td{border-bottom:0}.user-identity{display:flex;align-items:center;gap:11px}.user-avatar{width:36px;height:36px;flex:0 0 36px;border-radius:10px;display:grid;place-items:center;background:#eff4ff;color:var(--primary);font-size:13px;font-weight:900}.user-identity strong,.user-identity small{display:block}.user-identity small{font-size:10px;color:var(--muted);margin-top:2px}.role-badge,.user-status-badge{display:inline-flex;align-items:center;border-radius:999px;font-size:11px;font-weight:800;letter-spacing:.025em;white-space:nowrap}.role-badge{padding:6px 9px}.role-badge.admin{background:#eef2ff;color:#3538cd}.role-badge.checker{background:#eff8ff;color:#175cd3}.user-status-badge{gap:6px;padding:6px 9px}.user-status-badge.active{background:#ecfdf3;color:#067647}.user-status-badge.inactive{background:#f2f4f7;color:#667085}.status-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.user-action-col,.user-action-cell{text-align:right}.user-edit-btn{min-width:64px}.user-modal[hidden]{display:none}.user-modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:18px}.user-modal-backdrop{position:absolute;inset:0;background:rgba(16,24,40,.46);backdrop-filter:blur(3px)}.user-modal-dialog{position:relative;width:min(500px,100%);max-height:calc(100vh - 36px);overflow:auto;background:#fff;border:1px solid var(--line);border-radius:18px;box-shadow:0 24px 64px rgba(16,24,40,.22);padding:22px}.user-modal-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;padding-bottom:16px;margin-bottom:17px;border-bottom:1px solid var(--line)}.user-modal-head h2{margin:0;font-size:20px}.user-modal-head p{margin:5px 0 0;color:var(--muted);font-size:12px;line-height:1.45}.user-modal-close{width:34px;height:34px;border:0;border-radius:9px;background:#f2f4f7;color:#475467;font-size:23px;line-height:1}.user-modal-close:hover{background:#e4e7ec}.field-help{font-size:10px;font-weight:400;color:var(--muted)}.user-active-toggle{display:flex!important;align-items:flex-start!important;gap:10px!important;padding:12px;border:1px solid var(--line);border-radius:11px;background:#f8fafc}.user-active-toggle input{width:18px!important;height:18px!important;min-height:auto!important;margin-top:2px}.user-active-toggle span,.user-active-toggle strong,.user-active-toggle small{display:block}.user-active-toggle small{font-size:10px;font-weight:400;color:var(--muted);margin-top:2px}.user-modal-actions{display:flex;justify-content:flex-end;gap:9px;margin-top:4px;padding-top:16px;border-top:1px solid var(--line)}body.modal-open{overflow:hidden}

@media(max-width:780px){.user-management-grid{grid-template-columns:1fr}.user-create-panel{position:static}.user-list-header{align-items:stretch;flex-direction:column}.user-search-form{min-width:0;width:100%}.user-search-form .btn{flex:0 0 auto}.user-table-wrap{border:0;overflow:visible}.user-table-wrap table,.user-table-wrap tbody,.user-table-wrap tr,.user-table-wrap td{display:block;width:100%;min-width:0}.user-table-wrap thead{display:none}.user-table-wrap tbody{display:grid;gap:10px}.user-table-wrap tr{background:#fff;border:1px solid var(--line);border-radius:12px;padding:12px}.user-table-wrap td{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:8px 0;border:0}.user-table-wrap td:before{content:attr(data-label);color:#667085;font-size:10px;text-transform:uppercase;letter-spacing:.05em;font-weight:800}.user-table-wrap td:first-child{padding-top:0}.user-table-wrap td:first-child:before{display:none}.user-table-wrap td:first-child .user-identity{width:100%}.user-table-wrap td:last-child{padding-bottom:0;border-top:1px solid var(--line);margin-top:3px;padding-top:11px}.user-action-cell .btn{width:100%}.user-action-cell:before{display:none}.user-modal{padding:10px;align-items:end}.user-modal-dialog{width:100%;max-height:92vh;border-radius:18px 18px 12px 12px;padding:18px}.user-modal-actions{position:sticky;bottom:-18px;background:#fff;padding:12px 0 0}.user-modal-actions .btn{flex:1}.user-search-box input{font-size:16px}}

/* Master data tables: Ratio & User */
.master-page-heading{align-items:center;margin-bottom:18px}.heading-eyebrow,.modal-eyebrow{display:block;margin-bottom:5px;color:var(--primary);font-size:10px;font-weight:900;letter-spacing:.11em;text-transform:uppercase}.master-page-heading h1{margin-bottom:5px}.heading-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.btn-icon{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:6px;background:rgba(255,255,255,.16);font-size:17px;line-height:1}.master-table-panel{padding:0;overflow:hidden}.master-table-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:20px 20px 14px}.master-table-head h2{margin:0;font-size:18px}.master-table-head p{margin:4px 0 0;color:var(--muted);font-size:12px}.filter-active-badge{display:inline-flex;align-items:center;gap:5px;border-radius:999px;background:#eff4ff;color:#175cd3;padding:6px 10px;font-size:10px;font-weight:850}.filter-active-badge:before{content:"";width:6px;height:6px;border-radius:50%;background:#175cd3}.table-filter-bar{display:grid;grid-template-columns:minmax(240px,1.6fr) minmax(130px,.6fr) minmax(130px,.6fr) 92px auto;gap:10px;align-items:end;padding:0 20px 18px;border-bottom:1px solid var(--line)}.ratio-filter-bar{grid-template-columns:minmax(260px,1.7fr) minmax(140px,.62fr) minmax(125px,.55fr) 92px auto}.filter-search,.filter-field{display:grid;gap:6px;min-width:0}.filter-label{color:#667085;font-size:10px;font-weight:850;letter-spacing:.04em;text-transform:uppercase}.filter-field select,.filter-search input{width:100%;min-height:42px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:var(--text);padding:9px 11px;outline:none}.filter-field select:focus,.filter-search input:focus{border-color:#84adff;box-shadow:0 0 0 3px #eff4ff}.filter-input-with-icon{position:relative}.filter-input-with-icon>span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#98a2b3;font-size:18px}.filter-input-with-icon input{padding-left:36px}.filter-actions{display:flex;gap:8px;align-items:center}.filter-actions .btn{min-height:42px;white-space:nowrap}.filter-reset-btn.muted-button{color:#98a2b3}.master-table-wrap{overflow:auto;border:0;border-radius:0}.master-table{width:100%;border-collapse:separate;border-spacing:0;min-width:850px}.master-table th{position:sticky;top:0;z-index:2;background:#f8fafc;border-bottom:1px solid #e4e7ec;padding:11px 13px;white-space:nowrap}.master-table td{padding:13px;border-bottom:1px solid #eef1f5;vertical-align:middle}.master-table tbody tr{transition:background .14s ease}.master-table tbody tr:hover{background:#fbfcfe}.master-table tbody tr:last-child td{border-bottom:0}.sortable-th{display:inline-flex;align-items:center;gap:6px;color:#667085;font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.05em}.sortable-th:hover{color:var(--primary)}.sortable-th span{display:inline-grid;place-items:center;width:18px;height:18px;border-radius:5px;background:#eef2f6;color:#98a2b3;font-size:10px;letter-spacing:0}.sortable-th.align-right{justify-content:flex-end;width:100%}.row-number-col{width:56px}.row-number{width:56px;color:#98a2b3;font-size:12px;font-variant-numeric:tabular-nums}.action-col,.action-cell{text-align:right}.row-actions{display:flex;align-items:center;justify-content:flex-end;gap:7px}.row-actions form{margin:0}.table-danger-btn{border-color:#fecdca;color:#b42318;background:#fff}.table-danger-btn:hover{background:#fef3f2}.username-chip{display:inline-block;border-radius:8px;background:#f2f4f7;color:#344054;padding:6px 9px;font-size:12px;font-weight:750}.table-empty-state{padding:44px 18px!important}.table-empty-state strong,.table-empty-state span{display:block}.table-empty-state strong{color:#344054;font-size:14px}.table-empty-state span{margin-top:5px;color:#98a2b3;font-size:12px}.data-table-footer{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:15px 20px;border-top:1px solid var(--line);background:#fff}.data-table-count{color:#667085;font-size:11px}.data-table-count strong{color:#344054}.table-pager{display:flex;align-items:center;gap:5px}.pager-btn{min-width:32px;height:32px;padding:0 8px;display:inline-grid;place-items:center;border:1px solid #e4e7ec;border-radius:8px;background:#fff;color:#475467;font-size:12px;font-weight:800}.pager-btn:hover{border-color:#b2ccff;background:#f5f8ff;color:#175cd3}.pager-btn.active{border-color:#175cd3;background:#175cd3;color:#fff}.pager-btn.disabled{background:#f8fafc;color:#d0d5dd;cursor:not-allowed}.pager-dots{padding:0 2px;color:#98a2b3}.database-badge{display:inline-flex;border-radius:7px;background:#f2f4f7;color:#475467;padding:6px 8px;font-size:10px;font-weight:850;letter-spacing:.035em}.item-cell strong{font-size:13px;color:#101828}.item-cell small{max-width:330px;font-size:11px;line-height:1.35}.uom-chip{display:inline-flex;align-items:center;gap:7px;border:1px solid #e4e7ec;border-radius:9px;padding:6px 8px;background:#fff}.uom-chip strong,.uom-chip small{display:block;margin:0}.uom-chip strong{font-size:11px}.uom-chip small{font-size:9px;color:#98a2b3}.ratio-value{font-weight:850;color:#101828}.updated-cell strong{font-size:11px;font-weight:750}.updated-cell small{font-size:10px;color:#98a2b3}.ratio-modal-dialog{width:min(560px,100%)}.ratio-selected-item{display:grid;grid-template-columns:1fr auto;gap:3px 10px}.ratio-selected-item>span{grid-column:1/-1;color:#067647;font-size:9px;font-weight:900;text-transform:uppercase;letter-spacing:.08em}.ratio-selected-item>strong{font-size:13px}.ratio-selected-item>small{grid-column:1/2;font-size:11px;color:#475467}.ratio-selected-item>em{grid-column:2;grid-row:2/4;align-self:center;border-radius:999px;background:#d1fadf;padding:6px 9px;font-size:10px;font-style:normal;font-weight:800}.ratio-import-compact{grid-template-columns:minmax(0,1fr) auto;padding:15px 18px;box-shadow:none;background:#fbfcfe}.ratio-import-compact .ratio-import-copy{display:flex;align-items:center;gap:12px}.ratio-import-compact .ratio-import-copy h2{font-size:14px;margin-bottom:2px}.ratio-import-compact .ratio-import-copy p{font-size:11px}.import-icon{width:42px;height:42px;flex:0 0 42px;display:grid;place-items:center;border-radius:11px;background:#ecfdf3;color:#067647;font-size:9px;font-weight:900;letter-spacing:.04em}.ratio-import-inline{justify-content:flex-end}.ratio-import-inline input[type=file]{max-width:300px}.user-avatar{box-shadow:inset 0 0 0 1px #d1e0ff}.user-edit-btn{background:#f8fafc}.user-edit-btn:hover{border-color:#b2ccff;color:#175cd3}.user-modal-dialog{animation:masterModalIn .16s ease-out}@keyframes masterModalIn{from{opacity:0;transform:translateY(8px) scale(.985)}to{opacity:1;transform:none}}

@media(max-width:980px){.table-filter-bar,.ratio-filter-bar{grid-template-columns:minmax(220px,1.5fr) 1fr 1fr 90px}.filter-actions{grid-column:1/-1;justify-content:flex-end}.heading-actions{max-width:50%}}
@media(max-width:780px){.master-page-heading{align-items:flex-start;flex-direction:column}.heading-actions{width:100%;max-width:none;justify-content:stretch}.heading-actions .btn,.master-page-heading>button{flex:1}.table-filter-bar,.ratio-filter-bar{grid-template-columns:1fr 1fr;padding:0 14px 14px}.filter-field-wide{grid-column:1/-1}.filter-actions{grid-column:1/-1}.filter-actions .btn{flex:1}.master-table-head{padding:16px 14px 12px}.master-table{min-width:760px}.master-table th,.master-table td{padding-left:10px;padding-right:10px}.data-table-footer{padding:13px 14px;align-items:flex-start;flex-direction:column}.table-pager{width:100%;overflow:auto;padding-bottom:2px}.ratio-import-compact{grid-template-columns:1fr}.ratio-import-inline{display:grid;grid-template-columns:1fr}.ratio-import-inline input[type=file]{max-width:none;width:100%}.ratio-selected-item{grid-template-columns:1fr}.ratio-selected-item>em{grid-column:1;grid-row:auto;justify-self:start}.user-modal-dialog{border-radius:16px}.row-actions{min-width:122px}}
.status.finalized{background:#111827;color:#fff}.finalization-panel,.finalized-banner{display:flex;align-items:center;justify-content:space-between;gap:18px}.finalization-panel{border-color:#f7c76c;background:#fffbeb}.finalized-banner{border-color:#9ca3af;background:#f8fafc}.finalization-copy{display:flex;align-items:flex-start;gap:13px;min-width:0}.finalization-copy h2{margin:0 0 5px;font-size:18px}.finalization-copy p{margin:0;color:var(--muted);font-size:13px;line-height:1.55;max-width:760px}.finalization-icon{width:38px;height:38px;flex:0 0 38px;display:grid;place-items:center;border-radius:11px;background:#fff;border:1px solid var(--line);font-size:18px}.finalize-btn{background:#111827;border-color:#111827;color:#fff;white-space:nowrap}.finalize-btn:hover{background:#000;border-color:#000}.finalized-note{background:#f8fafc;border:1px solid #d0d5dd;color:#344054}.finalized-note strong,.finalized-note div{display:block}.finalized-note div{margin-top:4px;font-size:12px;color:var(--muted)}.warning-lite{background:#fffaeb;color:#93370d;border:1px solid #fedf89;padding:12px 14px;border-radius:10px}.summary-export-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.final-audit-readonly{display:grid;gap:5px;min-width:190px}.final-audit-readonly strong{font-size:12px;color:#344054}.final-audit-readonly small{font-size:10px}.final-audit-readonly p{margin:1px 0 0;font-size:11px;line-height:1.4;color:#475467;max-width:260px}.final-lock-label{display:inline-flex!important;align-items:center;gap:5px;color:#667085!important;font-weight:700}.summary-toolbar{display:flex;align-items:center;justify-content:space-between;gap:14px}.summary-toolbar .filter-row{margin-bottom:0}@media(max-width:800px){.finalization-panel,.finalized-banner,.summary-toolbar{align-items:stretch;flex-direction:column}.finalization-panel form,.finalization-panel .btn,.finalized-banner .btn{width:100%}.summary-export-actions{width:100%}.summary-export-actions .btn{flex:1}.summary-toolbar .summary-filter{width:100%;flex-wrap:wrap}.summary-toolbar .summary-filter select{flex:1;min-width:180px}}

/* Non-System discovered item flow */
body.modal-open{overflow:hidden}.non-system-modal{position:fixed;inset:0;z-index:1000;background:rgba(16,24,40,.62);display:grid;place-items:center;padding:18px}.non-system-modal[hidden]{display:none}.non-system-card{width:min(620px,100%);max-height:92vh;overflow:auto;background:#fff;border-radius:18px;box-shadow:0 24px 70px rgba(16,24,40,.28);padding:20px}.non-system-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:16px}.non-system-head h2{font-size:20px;margin:6px 0 4px}.non-system-head p{font-size:12px;color:var(--muted);margin:0;max-width:480px}.non-system-badge{display:inline-flex;border-radius:999px;background:#fff4ed;color:#b54708;font-size:10px;font-weight:900;letter-spacing:.08em;padding:5px 8px}.non-system-close{border:0;background:#f2f4f7;color:#475467;width:34px;height:34px;border-radius:50%;font-size:22px;line-height:1;cursor:pointer}.non-system-form{display:grid;gap:13px}.non-system-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.non-system-form label small{display:block;color:var(--muted);font-size:11px;margin-top:5px}.non-system-conversion{background:#f8fafc;border:1px solid var(--line);border-radius:10px;padding:10px 12px;font-size:12px;font-weight:800;color:#344054}.non-system-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:2px}.non-system-form input[readonly]{background:#f8fafc;color:#475467}.non-system-form #non-system-name[readonly]{font-weight:700}.non-system-row-badge{display:inline-flex;align-items:center;border-radius:999px;background:#fff4ed;color:#b54708;font-size:10px;font-weight:900;padding:4px 7px;margin-left:6px}.non-system-panel{border:1px solid #fedf89;background:#fffcf5;border-radius:12px;padding:12px}.non-system-panel strong{display:block;color:#93370d}.non-system-panel small{display:block;color:#b54708;margin-top:3px}
@media(max-width:780px){.non-system-modal{padding:10px;align-items:end}.non-system-card{border-radius:18px 18px 10px 10px;padding:16px;max-height:94vh}.non-system-grid{grid-template-columns:1fr}.non-system-actions{display:grid;grid-template-columns:1fr 1fr}.non-system-actions .btn{width:100%}}
.non-system-admin-add{position:relative}.non-system-admin-add>summary{list-style:none}.non-system-admin-add>summary::-webkit-details-marker{display:none}.non-system-add-btn{background:#fff4ed!important;border-color:#fedf89!important;color:#b54708!important}.non-system-admin-form-wrap{position:absolute;right:0;top:calc(100% + 8px);z-index:50;width:min(520px,calc(100vw - 36px));background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px;box-shadow:0 18px 50px rgba(16,24,40,.18)}.non-system-admin-form{display:grid;gap:11px;margin-top:11px}.non-system-summary-row{background:#fffcf5!important}.non-system-summary-row td:first-child{border-left:3px solid #f79009}.non-system-summary-row .positive strong{color:#b54708}@media(max-width:780px){.summary-export-actions{flex-wrap:wrap}.non-system-admin-add{width:100%}.non-system-admin-add>summary{width:100%;text-align:center}.non-system-admin-form-wrap{position:fixed;left:10px;right:10px;top:70px;width:auto;max-height:calc(100vh - 90px);overflow:auto}.non-system-admin-form .grid-2{grid-template-columns:1fr}}

/* Sampling report filters */
.sampling-filter-panel{padding:0;overflow:visible}.sampling-filter-head{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;padding:20px 22px 17px;border-bottom:1px solid var(--line)}.sampling-filter-eyebrow{display:block;margin-bottom:5px;color:var(--primary);font-size:10px;font-weight:900;letter-spacing:.09em;text-transform:uppercase}.sampling-filter-head h2{margin:0 0 5px;font-size:17px}.sampling-filter-head p{margin:0;color:var(--muted);font-size:12px}.sampling-filter-count{display:inline-flex;align-items:center;border-radius:999px;background:#eff4ff;color:#175cd3;padding:7px 10px;font-size:10px;font-weight:850;white-space:nowrap}.sampling-filter-form{padding:20px 22px 18px}.sampling-period-group{padding:14px 16px 16px;border:1px solid #e4e7ec;border-radius:13px;background:#fbfcfe;margin-bottom:15px}.sampling-group-label{display:block;margin-bottom:10px;color:#344054;font-size:11px;font-weight:850}.sampling-period-fields{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:12px;align-items:end;max-width:610px}.sampling-period-separator{display:grid;place-items:center;min-height:44px;color:#98a2b3;font-size:11px;font-weight:800}.sampling-filter-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.sampling-filter-field{display:grid;gap:7px;min-width:0;color:#344054;font-size:11px;font-weight:800}.sampling-filter-field>span{font-size:10px;color:#667085;font-weight:850;letter-spacing:.035em;text-transform:uppercase}.sampling-filter-field input,.sampling-filter-field select,.sampling-combobox-trigger{width:100%;min-height:44px;border:1px solid #d0d5dd;border-radius:10px;background:#fff;color:#101828;padding:10px 12px;outline:none;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}.sampling-filter-field input:focus,.sampling-filter-field select:focus,.sampling-combobox-trigger:focus,.sampling-combobox-trigger[aria-expanded="true"]{border-color:#84adff;box-shadow:0 0 0 3px #eff4ff}.sampling-native-select{position:absolute!important;left:-9999px!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important}.sampling-searchable-field{position:relative}.sampling-combobox{position:relative}.sampling-combobox-trigger{display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;cursor:pointer}.sampling-combobox-value{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.sampling-combobox-trigger:not(.has-value) .sampling-combobox-value{color:#475467;font-weight:500}.sampling-combobox-chevron{color:#98a2b3;font-size:16px;line-height:1;transition:transform .15s ease}.sampling-combobox-trigger[aria-expanded="true"] .sampling-combobox-chevron{transform:rotate(180deg)}.sampling-combobox-menu{position:absolute;left:0;right:0;top:calc(100% + 7px);z-index:80;background:#fff;border:1px solid #e4e7ec;border-radius:12px;box-shadow:0 18px 45px rgba(16,24,40,.16);padding:8px}.sampling-combobox-menu[hidden]{display:none}.sampling-combobox-search-wrap{position:relative;margin-bottom:7px}.sampling-combobox-search-wrap>span{position:absolute;left:11px;top:50%;transform:translateY(-50%);color:#98a2b3;font-size:16px}.sampling-combobox-search-wrap input{min-height:40px;padding-left:34px;background:#f9fafb}.sampling-combobox-options{max-height:230px;overflow:auto;display:grid;gap:2px}.sampling-combobox-option{width:100%;border:0;border-radius:8px;background:#fff;padding:9px 10px;display:flex;align-items:center;justify-content:space-between;gap:10px;text-align:left;color:#344054;font-size:12px;cursor:pointer}.sampling-combobox-option:hover{background:#f5f8ff;color:#175cd3}.sampling-combobox-option.selected{background:#eff4ff;color:#175cd3;font-weight:800}.sampling-combobox-option strong{font-size:12px}.sampling-combobox-empty{padding:16px 10px;text-align:center;color:#98a2b3;font-size:11px}.sampling-search-input{position:relative}.sampling-search-input>span{position:absolute;left:12px;top:50%;transform:translateY(-50%);color:#98a2b3;font-size:17px}.sampling-search-input input{padding-left:36px}.sampling-filter-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;margin-top:18px;padding-top:16px;border-top:1px solid #eef1f5}.sampling-reset-btn{min-width:92px}.sampling-apply-btn{min-width:150px}.sampling-filter-field input::placeholder{color:#98a2b3}
@media(max-width:980px){.sampling-filter-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sampling-period-fields{max-width:none}}
@media(max-width:760px){.sampling-filter-head{padding:17px 16px 14px}.sampling-filter-form{padding:16px}.sampling-filter-grid{grid-template-columns:1fr}.sampling-period-fields{grid-template-columns:1fr}.sampling-period-separator{min-height:auto;justify-content:start}.sampling-filter-actions{display:grid;grid-template-columns:1fr 1.4fr}.sampling-filter-actions .btn{width:100%}.sampling-filter-count{display:none}.sampling-combobox-menu{position:fixed;left:12px;right:12px;top:auto;bottom:12px;max-height:68vh}.sampling-combobox-options{max-height:48vh}}

/* Multi warehouse assignment for Gerai users */
.user-modal-dialog-wide{width:min(980px,calc(100vw - 28px));max-width:980px}.multi-warehouse-assignment{border:1px solid var(--line);border-radius:14px;background:#f8fafc;padding:14px}.multi-warehouse-assignment-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:12px}.multi-warehouse-assignment-head strong,.multi-warehouse-assignment-head small{display:block}.multi-warehouse-assignment-head small{color:var(--muted);margin-top:3px}.multi-warehouse-assignment-head>span{font-size:12px;font-weight:800;color:var(--primary);background:#eff4ff;border-radius:999px;padding:6px 10px;white-space:nowrap}.multi-warehouse-db-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.multi-warehouse-db-card{background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;min-width:0}.multi-warehouse-db-card>header{display:flex;justify-content:space-between;gap:10px;padding:11px 12px;border-bottom:1px solid var(--line)}.multi-warehouse-db-card>header small{color:var(--muted)}.multi-warehouse-search{width:calc(100% - 20px);margin:10px;border:1px solid #cfd6e2;border-radius:9px;padding:9px 10px}.multi-warehouse-list{height:250px;overflow:auto;border-top:1px solid #eef1f5}.multi-warehouse-option{display:flex!important;grid-template-columns:none!important;align-items:flex-start;gap:9px!important;padding:10px 12px;border-bottom:1px solid #eef1f5;font-weight:400!important;background:#fff}.multi-warehouse-option[hidden]{display:none!important}.multi-warehouse-option:hover{background:#f8fafc}.multi-warehouse-option input{width:17px!important;height:17px!important;min-height:0!important;margin:2px 0 0}.multi-warehouse-option span{min-width:0}.multi-warehouse-option strong,.multi-warehouse-option small{display:block}.multi-warehouse-option small{color:var(--muted);font-size:11px;margin-top:2px;white-space:normal}.user-assignment-summary{display:flex;flex-wrap:wrap;gap:5px;max-width:420px}.user-assignment-summary span{display:inline-flex;padding:4px 7px;border-radius:999px;background:#f2f4f7;font-size:11px;font-weight:700}.user-assignment-summary small{align-self:center;color:var(--muted)}
@media(max-width:780px){.multi-warehouse-db-grid{grid-template-columns:1fr}.multi-warehouse-list{height:210px}.multi-warehouse-assignment-head{flex-direction:column}.user-modal-dialog-wide{width:min(100% - 18px,980px)}}

/* Gerai role split */
.gerai-admin-grid{align-items:start}.gerai-assignment-list{display:grid;gap:8px;max-height:360px;overflow:auto}.gerai-assignment-row{display:grid;grid-template-columns:110px 1fr;gap:10px;align-items:start;padding:10px;border:1px solid var(--line);border-radius:10px;background:#fbfcfe}.gerai-assignment-row>span{font-size:10px;font-weight:800;color:var(--primary);background:#eff4ff;border-radius:999px;padding:5px 7px;text-align:center}.gerai-assignment-row strong,.gerai-assignment-row small{display:block}.gerai-assignment-row small{color:var(--muted);margin-top:2px}
