:root{--bg:#f4f6f9;--panel:#fff;--panel2:#f8fafc;--line:#dce3ec;--text:#1f2937;--muted:#667085;--side:#0f172a;--accent:#ea580c;--accent2:#c2410c;--accentSoft:#ffedd5;--danger:#dc2626;--dangerSoft:#fee2e2;--warn:#d97706;--warnSoft:#fef3c7;--ok:#15803d;--okSoft:#dcfce7;--shadow:0 8px 24px rgba(15,23,42,.07);--radius:12px}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:"Microsoft JhengHei","Noto Sans TC",Arial,sans-serif;background:var(--bg);color:var(--text)}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled,input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}input,select,textarea{width:100%;background:var(--panel);color:var(--text);border:1px solid var(--line);border-radius:8px;padding:9px 10px;min-width:0}textarea{min-height:90px;resize:vertical}.hidden{display:none!important}
::-webkit-scrollbar{width:11px;height:11px}::-webkit-scrollbar-track{background:var(--panel2)}::-webkit-scrollbar-thumb{background:#a5afbd;border-radius:999px;border:2px solid var(--panel2)}
.auth-shell{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 20% 20%,rgba(234,88,12,.25),transparent 32%),linear-gradient(145deg,#08101d,#0f172a 55%,#172033)}.auth-card{width:min(450px,100%);background:var(--panel);border:1px solid rgba(255,255,255,.08);border-radius:16px;padding:28px;box-shadow:0 26px 80px rgba(0,0,0,.32)}.auth-brand{display:flex;align-items:center;gap:12px;margin-bottom:22px}.logo{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;color:#fff;font-weight:900;background:linear-gradient(135deg,var(--accent),#FF7A22);box-shadow:0 8px 20px rgba(234,88,12,.24)}.auth-card h1{font-size:24px;margin:0}.auth-card p{margin:4px 0 0;color:var(--muted)}.auth-meta{display:flex;justify-content:space-between;gap:10px;margin:14px 0 4px;padding-top:12px;border-top:1px solid var(--line);font-size:11px;color:var(--muted)}
.field{display:flex;flex-direction:column;gap:5px;margin:10px 0}.field label{font-size:11px;color:var(--muted);font-weight:700}.btn{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:8px;padding:8px 11px;box-shadow:0 1px 0 rgba(15,23,42,.02);text-decoration:none}.btn:hover{background:var(--panel2)}.btn.primary{background:var(--accent);color:#fff;border-color:var(--accent)}.btn.primary:hover{background:var(--accent2)}.btn.danger{background:var(--dangerSoft);color:#b91c1c;border-color:#f1b6bd}.btn.warn{background:var(--warnSoft);color:#92400e;border-color:#f2d69c}.btn.success{background:var(--okSoft);color:#166534;border-color:#a8dfb8}.btn.small,.btn.mini{padding:5px 8px;font-size:12px}.btn-row{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.full-btn{width:100%;margin-top:8px}.notice{padding:10px 12px;border-radius:9px;border:1px solid #b9d2ff;background:#eef5ff;color:#1e429f;font-size:12px}.notice.warn{background:var(--warnSoft);border-color:#eccd88;color:#8b4b00}.notice.error,.notice.danger{background:var(--dangerSoft);border-color:#f2b5bd;color:#991b1b}.notice.ok{background:var(--okSoft);border-color:#a9ddb7;color:#166534}
.erp{min-height:100vh}.sidebar{width:276px;background:var(--side);color:#fff;position:fixed;inset:0 auto 0 0;z-index:50;overflow:auto;transition:transform .22s ease;box-shadow:4px 0 20px rgba(0,0,0,.08)}.brand{height:66px;display:flex;align-items:center;gap:11px;padding:13px 14px;border-bottom:1px solid #263244;position:sticky;top:0;background:var(--side);z-index:4}.brand-text{line-height:1.15;font-weight:800;flex:1}.brand-text small{display:block;color:#9eacc0;font-weight:500;margin-top:3px;font-size:10px}.sidebar-close{border:0;background:transparent;color:#dbe6f4;font-size:20px;padding:4px 6px;border-radius:6px}.sidebar-close:hover{background:#1d2939}.sidebar-open{position:fixed;left:10px;top:12px;z-index:55;border:0;background:var(--side);color:white;border-radius:10px;padding:9px 11px;box-shadow:var(--shadow);display:none}.erp.sidebar-hidden .sidebar{transform:translateX(-100%)}.erp.sidebar-hidden .sidebar-open{display:block}.nav{padding:10px 8px 30px}.nav-group{margin-bottom:2px}.nav-group-head,.nav-item{width:100%;border:0;background:transparent;display:flex;align-items:center;gap:10px;text-align:left;color:#d9e3f0;border-radius:9px;cursor:pointer;user-select:none}.nav-group-head{padding:10px 11px;margin:2px 0;font-weight:800}.nav-group-head:hover,.nav-item:hover,.nav-item.active{background:#1e2a3c;color:#fff}.nav-icon{width:25px;text-align:center;flex:0 0 25px}.nav-text{flex:1}.nav-arrow{color:#aab8ca;font-size:13px;transition:transform .15s}.nav-group.collapsed .nav-arrow{transform:rotate(-90deg)}.nav-sub{margin:2px 0 6px 29px;padding-left:8px;border-left:1px solid #334155}.nav-group.collapsed .nav-sub{display:none}.nav-item{padding:7px 9px;color:#b9c6d7;font-size:13px;margin:1px 0}.nav-item.active{color:#fff;box-shadow:inset 3px 0 0 var(--accent)}
.main{margin-left:276px;min-height:100vh;transition:margin-left .22s ease}.erp.sidebar-hidden .main{margin-left:0}.topbar{min-height:66px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;padding:9px 18px;position:sticky;top:0;z-index:30}.erp.sidebar-hidden .topbar{padding-left:64px}.search-wrap{position:relative;flex:1;max-width:760px}.search-wrap input{width:100%;padding-left:36px;background:var(--panel2)}.search-icon{position:absolute;left:12px;top:9px;color:var(--muted)}.top-actions{margin-left:auto;display:flex;align-items:center;gap:7px}.user-chip,.alert-btn{border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:9px;padding:7px 10px;white-space:nowrap}.user-chip{display:flex;flex-direction:column;align-items:flex-start;line-height:1.05}.user-chip small{font-size:9px;color:var(--muted);margin-top:3px}.alert-btn{border-color:#f4b4b4;color:#a51616;background:#fff4f4}.route-strip{height:34px;background:var(--panel);border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;padding:0 20px;font-size:11px;color:var(--muted)}.route-strip #routeTitle{font-weight:800;color:var(--text)}.route-workspace{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:10px}.content{padding:20px}
.page-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:15px}.page-head h1,.page-title h1{margin:0 0 4px;font-size:24px}.page-head p,.page-title p{margin:0;color:var(--muted);font-size:13px}.actions{display:flex;gap:7px;flex-wrap:wrap}.cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.card,.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.card{padding:15px}.click-card,.alert-card{cursor:pointer;text-align:left;color:inherit;font:inherit}.click-card:hover,.alert-card:hover{border-color:var(--accent);transform:translateY(-1px)}.card.danger-card,.urgent-card{background:#fff1f2;border-color:#fecdd3}.kpi-label{font-size:12px;color:var(--muted)}.kpi-value{font-size:27px;font-weight:900;margin-top:6px}.kpi-sub{font-size:11px;color:var(--muted);margin-top:4px}.panel{margin-bottom:14px;overflow:hidden}.panel-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:13px 15px;border-bottom:1px solid var(--line)}.panel-head h3{margin:0;font-size:16px}.panel-body{padding:14px}.muted{color:var(--muted)}.small{font-size:11px}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.red{color:var(--danger)!important}.green{color:var(--ok)!important}.orange{color:var(--warn)!important}.badge{display:inline-flex;align-items:center;padding:3px 7px;border-radius:999px;font-size:11px;font-weight:800;background:#e7ebf0;color:#475467}.badge.red,.badge.danger{background:var(--dangerSoft);color:#b91c1c}.badge.yellow,.badge.warn{background:var(--warnSoft);color:#92400e}.badge.green,.badge.ok{background:var(--okSoft);color:#166534}.badge.blue{background:var(--accentSoft);color:var(--accent2)}
.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%}th,td{padding:9px 10px;border-bottom:1px solid var(--line);font-size:13px;text-align:left;vertical-align:top;white-space:nowrap}th{background:var(--panel2);color:var(--muted);font-weight:800;position:sticky;top:0}tbody tr:hover{background:rgba(148,163,184,.055)}.filters{display:flex;gap:8px;align-items:end;flex-wrap:wrap}.filters .field{min-width:135px;margin:0}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:11px}.form-grid .field{margin:0}.full{grid-column:1/-1}.empty{padding:28px;text-align:center;color:var(--muted)}
dialog{border:1px solid var(--line);padding:0;border-radius:14px;width:min(620px,calc(100% - 28px));box-shadow:0 25px 80px rgba(0,0,0,.3);background:var(--panel);color:var(--text)}dialog::backdrop{background:rgba(2,6,23,.6)}.dialog-head{padding:14px 16px;border-bottom:1px solid var(--line);display:flex;justify-content:space-between;align-items:center}.dialog-head h3{margin:0}.dialog-body{padding:16px}.dialog-foot{padding:12px 16px;border-top:1px solid var(--line);display:flex;justify-content:flex-end;gap:8px}.icon-btn{border:0;background:transparent;font-size:20px;color:var(--text)}.toast-root{position:fixed;right:16px;bottom:16px;z-index:100;display:grid;gap:8px}.toast{background:#111827;color:#fff;border-radius:10px;padding:10px 13px;box-shadow:var(--shadow);max-width:360px;font-size:13px}.mobile-menu,.mobile-dock{display:none}
.quick-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.quick-action{border:1px solid var(--line);background:var(--panel2);border-radius:10px;padding:13px;text-align:left;color:var(--text);display:grid;grid-template-columns:28px 1fr;grid-template-rows:auto auto;gap:2px 8px}.quick-action>span{grid-row:1/3;font-size:22px;color:var(--accent)}.quick-action b{font-size:13px}.quick-action small{font-size:10px;color:var(--muted)}.quick-action:hover{border-color:var(--accent);background:var(--panel)}.system-status-list{display:grid;gap:0}.system-status-list>div{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid var(--line);font-size:12px}.system-status-list>div:last-child{border-bottom:0}.system-status-list span{color:var(--muted)}.update-path{padding:12px 14px;background:var(--panel2);border:1px dashed var(--line);border-radius:8px;overflow:auto}.update-progress{height:10px;background:var(--panel2);border:1px solid var(--line);border-radius:999px;overflow:hidden}.update-progress-bar{height:100%;background:linear-gradient(90deg,var(--accent),#f97316);transition:width .3s ease}.update-cards .small-kpi{font-size:18px!important}
.network-pill{display:inline-flex;align-items:center;border-radius:999px;padding:5px 9px;font-size:10px;font-weight:900;background:#e2e8f0;color:#334155}.network-pill.online{background:#dcfce7;color:#166534}.network-pill.offline{background:#fee2e2;color:#991b1b}
@media(max-width:1000px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}.top-actions .logout-btn{display:none}}
@media(max-width:820px){.sidebar{width:min(86vw,310px);transform:translateX(-100%)}.erp.nav-open .sidebar{transform:none}.erp.sidebar-hidden .sidebar{transform:translateX(-100%)}.main,.erp.sidebar-hidden .main{margin-left:0}.erp.nav-open:after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.38);z-index:40}.sidebar{z-index:50}.topbar,.erp.sidebar-hidden .topbar{display:grid;grid-template-columns:auto 1fr;padding:8px 10px;gap:7px;min-height:64px}.mobile-menu{display:inline-flex}.search-wrap{max-width:none;width:100%}.top-actions{grid-column:1/-1;margin:0;display:flex;width:100%;gap:6px}.user-chip{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;font-size:11px;padding:6px 7px}.alert-btn,.network-pill,.top-scan{font-size:10px;padding:6px 8px}.route-strip{display:none}.content{padding:10px 10px 20px}.page-head{flex-direction:column}.cards{grid-template-columns:repeat(2,1fr);gap:8px}.card{padding:12px}.kpi-value{font-size:23px}.form-grid,.quick-grid{grid-template-columns:1fr}.full{grid-column:auto}.sidebar-close{display:none}.sidebar-open{display:none!important}.mobile-dock{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:60;background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding:5px 6px calc(5px + env(safe-area-inset-bottom));backdrop-filter:blur(12px)}body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}.dock-item{border:0;background:transparent;min-height:52px;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:9px}.dock-item span{font-size:19px}.dock-item small{font-size:10px}.dock-item.active{color:var(--accent);background:#fff7ed}}
@media(max-width:480px){.cards{grid-template-columns:1fr}.top-actions .top-scan{display:none}.alert-btn{display:none}}

.grow{flex:1;min-width:240px!important}.tiny{font-size:10px;color:var(--muted);margin-top:3px}.check{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:700;color:var(--text);padding:8px 0}.check input{width:auto}.barcode-value{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.import-area{min-height:260px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace}.dialog-wide{width:min(920px,calc(100% - 28px))}.tree-indent{display:inline-block}.tree-indent.level-2{padding-left:14px}.tree-indent.level-3{padding-left:28px}.tree-indent.level-4{padding-left:42px}
.end{justify-content:flex-end}.diff{font-weight:900;color:var(--danger)}.danger-text{color:var(--danger)}.count-group{margin-bottom:18px}.count-l1{font-size:19px;font-weight:900;margin:18px 2px 8px}.count-sub{margin-bottom:10px}.count-real{width:110px}
.hr{height:1px;background:var(--line);margin:16px 0}.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.detail-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px 18px}.small-kpi{font-size:18px!important;line-height:1.25}.panel-head.no-side{padding-left:0;padding-right:0;background:transparent}.case-create-item,.consume-row{border:1px solid var(--line);border-radius:12px;padding:12px;margin:10px 0;background:var(--panel2)}.case-damage-lines{display:grid;gap:10px}.case-damage-row{position:relative;border:1px solid var(--line);border-radius:10px;padding:10px;background:var(--panel2)}.case-damage-replacement-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(210px,.75fr) auto;gap:10px;align-items:start}.case-damage-replacement-grid .case-damage-cell,.case-damage-replacement-grid .case-replacement-cell,.case-damage-replacement-grid .case-replacement-warehouse{min-width:0}.case-damage-replacement-grid .case-replacement-row{display:contents}.case-damage-remove{align-self:center}.compact-notice{margin-top:6px}.tracking-mini-line{display:flex;align-items:flex-end;min-width:250px;margin:10px 0 4px;padding:4px 8px 0}.tracking-mini-stop{display:grid;grid-template-rows:auto auto 16px auto;justify-items:center;min-width:92px;max-width:130px;text-align:center}.tracking-mini-status{font-size:11px;font-weight:800;white-space:normal;line-height:1.25}.tracking-mini-station{font-size:10px;color:var(--muted);white-space:normal;line-height:1.2;min-height:24px}.tracking-mini-dot{width:12px;height:12px;border-radius:50%;border:3px solid var(--muted);background:var(--panel);align-self:center}.tracking-mini-stop.current .tracking-mini-dot{border-color:var(--accent);background:var(--accent)}.tracking-mini-time{font-size:9px;color:var(--muted);white-space:normal;line-height:1.15;margin-top:3px}.tracking-mini-rail{height:2px;background:var(--line);width:48px;margin:0 -4px 20px;align-self:flex-end}@media(max-width:980px){.case-damage-replacement-grid{grid-template-columns:1fr 1fr}.case-damage-replacement-grid .case-replacement-warehouse{grid-column:1/-1}.case-damage-remove{justify-self:start}}@media(max-width:760px){.case-damage-replacement-grid{grid-template-columns:1fr}.case-damage-replacement-grid .case-replacement-warehouse{grid-column:auto}}
@media(max-width:760px){.grid-2,.detail-grid{grid-template-columns:1fr}}
.search-type-row{display:flex;gap:6px 14px;flex-wrap:wrap;margin-top:10px}.check.compact{padding:2px 0;font-size:12px}.search-counts{grid-template-columns:repeat(4,minmax(0,1fr))}.alert-card{width:100%;text-align:left;font:inherit;color:inherit;cursor:pointer}.alert-card:hover{transform:translateY(-1px);border-color:#cbd5e1}.urgent-card{border-color:#fecaca;background:#fff7f7}.urgent-card .kpi-value{color:var(--danger)}
@media(max-width:760px){.search-filters .field{min-width:100%;width:100%}.search-counts{grid-template-columns:1fr 1fr}}
.access-card-list{display:grid;gap:10px}.access-card{border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel2)}.access-card.is-disabled{opacity:.65}.access-card-head{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.access-stats{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.perm-toolbar{display:flex;gap:10px;align-items:center;margin:12px 0}.perm-toolbar input{flex:1}.permission-editor{display:grid;gap:16px}.perm-broad>h3{margin:12px 0 8px}.perm-areas{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.perm-area{border:1px solid var(--line);border-radius:12px;overflow:hidden}.perm-area-head{display:flex;justify-content:space-between;padding:10px 12px;background:var(--panel2);border-bottom:1px solid var(--line)}.perm-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(150px,220px);gap:10px;align-items:center;padding:9px 11px;border-bottom:1px solid var(--line)}.perm-row:last-child{border-bottom:0}.perm-row.perm-blocked{background:#f8fafc;color:var(--muted)}.perm-control{display:flex;align-items:center;gap:7px;justify-content:flex-end}.perm-control select{min-width:125px}.switch-check{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700}.switch-check input{width:auto}.perm-effective{min-width:58px;justify-content:center}.permission-dialog{width:min(1180px,calc(100vw - 28px))!important;max-width:min(1180px,calc(100vw - 28px))!important}.permission-dialog .dialog-body{overflow-x:hidden}.permission-dialog .perm-toolbar{position:sticky;top:-16px;z-index:6;background:var(--panel);padding:10px 0 8px;margin:0 0 10px;border-bottom:1px solid var(--line)}.permission-dialog .perm-row>div:first-child{min-width:0}.permission-dialog .perm-row b,.permission-dialog .perm-row .small,.permission-dialog .perm-row .tiny{overflow-wrap:anywhere}.permission-dialog .perm-control{min-width:0}.permission-dialog .perm-control select{max-width:100%}@media(max-width:980px){.perm-areas{grid-template-columns:1fr}.permission-dialog{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important}}@media(max-width:600px){.perm-row{grid-template-columns:1fr}.perm-control{justify-content:flex-start}.permission-dialog .perm-toolbar{top:-12px}.permission-dialog .perm-toolbar{flex-wrap:wrap}.permission-dialog .perm-toolbar input{min-width:100%}}
/* Barcode / offline / mobile scanner */
.scan-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(260px,.5fr);gap:14px}.scan-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}.scan-big-btn{min-height:44px;font-weight:900}.camera-wrap{position:relative;margin-top:14px;border-radius:14px;overflow:hidden;background:#020617;color:#fff;text-align:center;padding-bottom:10px}.camera-wrap video{display:block;width:100%;max-height:55vh;object-fit:cover;background:#000}.camera-guide{position:absolute;left:12%;right:12%;top:25%;height:38%;border:3px solid rgba(255,255,255,.9);border-radius:12px;box-shadow:0 0 0 9999px rgba(0,0,0,.18);pointer-events:none}.scan-placeholder{padding:42px 18px;text-align:center;color:var(--muted)}.scan-result-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}.scan-result-head h2{margin:2px 0 5px;font-size:24px}.scan-detail{margin-bottom:14px}.scan-action{margin-top:16px;border-top:1px solid var(--line);padding-top:14px}.scan-action h3{margin:0 0 9px}.recent-scan-list{display:grid;gap:7px}.recent-scan{border:1px solid var(--line);background:var(--panel2);border-radius:10px;padding:10px;text-align:left;display:flex;flex-direction:column;gap:3px}.recent-scan:hover{border-color:#cbd5e1;background:#fff}.scan-status-cards .small-kpi{font-size:16px!important}
@media(max-width:760px){body{padding-bottom:calc(68px + env(safe-area-inset-bottom))}.topbar{height:58px}.topbar .user-chip{display:none}.topbar .top-scan{display:none}.network-pill{max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{padding:12px 12px 20px}.page-head h1{font-size:21px}.btn{min-height:42px}.btn.small{min-height:36px}.sidebar{width:min(86vw,320px);box-shadow:12px 0 30px rgba(0,0,0,.24)}.erp.nav-open:after{content:"";position:fixed;inset:0;background:rgba(15,23,42,.45);z-index:15}.mobile-dock{display:grid;grid-template-columns:repeat(5,1fr);position:fixed;left:0;right:0;bottom:0;z-index:30;background:rgba(255,255,255,.97);border-top:1px solid var(--line);padding:5px 6px calc(5px + env(safe-area-inset-bottom));backdrop-filter:blur(12px)}.dock-item{border:0;background:transparent;min-height:52px;color:var(--muted);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:9px}.dock-item span{font-size:19px}.dock-item small{font-size:10px}.dock-item.active{color:var(--accent);background:#fff7ed}.scan-grid{grid-template-columns:1fr}.scan-input-row{grid-template-columns:1fr}.scan-input-row input{min-height:52px;font-size:18px}.camera-wrap video{max-height:52vh}.scan-result-head h2{font-size:21px}.scan-status-cards{grid-template-columns:1fr 1fr}.table-wrap{-webkit-overflow-scrolling:touch}.filters .field{min-width:100%;width:100%}}
@media(max-width:390px){.scan-status-cards{grid-template-columns:1fr}.network-pill{max-width:110px}}
/* Knowledge and compact field layouts */
.knowledge-card{padding:0;overflow:hidden}.knowledge-card .panel-head{border-bottom:1px solid var(--line)}.knowledge-content{margin:0;padding:14px;white-space:pre-wrap;word-break:break-word;font-family:inherit;font-size:13px;line-height:1.65;background:var(--panel)}.field.compact{min-width:150px;margin:0}.page-head .field.compact{align-self:flex-end}@media(max-width:760px){.page-head .field.compact{width:100%;align-self:stretch}}
html[data-theme="dark"]{--bg:#0b1220;--panel:#111827;--panel2:#172033;--line:#2b364a;--text:#e5e7eb;--muted:#9ca3af;--side:#070d18;--shadow:0 10px 28px rgba(0,0,0,.28)}
html[data-theme="dark"] body{background:var(--bg);color:var(--text)}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea{background:#0d1525;color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .mobile-dock{background:rgba(17,24,39,.97)}
/* Shell compatibility adjustments */
@media(max-width:820px){.topbar,.erp.sidebar-hidden .topbar{height:auto!important;min-height:64px!important}.erp.nav-open:after{z-index:40!important}.mobile-dock{z-index:60!important}}
html[data-theme="dark"] .alert-btn{background:#33151b;border-color:#63303a;color:#fecdd3}
html[data-theme="dark"] .card.danger-card,html[data-theme="dark"] .urgent-card{background:#35151d;border-color:#6d2a3a}
html[data-theme="dark"] .quick-action{background:#172033}
html[data-theme="dark"] .quick-action:hover{background:#111827}
html[data-theme="dark"] .badge.blue{background:#243552;color:#bfdbfe}
/* Image center and mobile permission interaction */
.image-upload-bar{display:grid;grid-template-columns:auto minmax(180px,240px) minmax(220px,1fr) auto auto;gap:8px;align-items:center;margin-bottom:12px}.image-upload-bar.compact{grid-template-columns:auto minmax(220px,1fr) auto}.image-file-label{position:relative;overflow:hidden;white-space:nowrap}.image-gallery{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px}.compact-gallery{grid-template-columns:repeat(auto-fill,minmax(170px,1fr))}.image-card{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:var(--shadow)}.image-thumb{display:block;width:100%;height:220px;padding:0;border:0;background:#0b1220;overflow:hidden}.compact-gallery .image-thumb{height:150px}.image-thumb img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .18s ease}.image-thumb:hover img{transform:scale(1.025)}.image-card-meta{padding:10px 11px}.image-card-meta b{display:block;margin-bottom:4px}.clamp-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.image-viewer-dialog{width:min(1180px,calc(100% - 20px));max-height:94vh}.image-viewer-body{display:grid;grid-template-columns:minmax(0,1fr) 320px;min-height:60vh}.image-stage{display:grid;place-items:center;background:#050913;overflow:auto;padding:14px}.image-stage img{max-width:100%;max-height:78vh;object-fit:contain}.image-meta{padding:14px;display:grid;align-content:start;gap:10px;overflow:auto;background:var(--panel)}.image-meta>div{display:grid;gap:3px;padding-bottom:9px;border-bottom:1px solid var(--line)}.image-meta b{font-size:11px;color:var(--muted)}.image-meta span{white-space:pre-wrap;word-break:break-word}.perm-clickable{cursor:pointer;user-select:none}.perm-clickable:hover{background:var(--accentSoft)}.perm-area-head>div{display:flex;align-items:center;gap:4px}.perm-area-head .btn{margin-left:auto}
@media(max-width:760px){.image-upload-bar,.image-upload-bar.compact{grid-template-columns:1fr}.image-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.image-thumb{height:160px}.compact-gallery .image-thumb{height:130px}.image-viewer-body{grid-template-columns:1fr}.image-meta{max-height:34vh}.image-viewer-dialog .dialog-foot{position:sticky;bottom:0;background:var(--panel);flex-wrap:wrap}.perm-row{min-height:64px;padding:12px}.perm-clickable{touch-action:manipulation}}
@media(max-width:420px){.image-gallery{grid-template-columns:1fr}.image-thumb{height:240px}}
.integration-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:10px}.integration-card{display:grid;gap:8px;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel2)}.day-checks{display:flex;gap:6px 12px;flex-wrap:wrap}.day-checks .check{padding:4px 0}

/* Unified shell and mobile-safe theme */
html,body{min-height:100%;background:var(--bg);overscroll-behavior-y:auto}
html[data-theme="dark"]{
 --bg:#0d1117;--panel:#151b23;--panel2:#1b222c;--line:#303846;--text:#e7edf5;--muted:#9aa7b8;--side:#080c12;
 --accentSoft:#243552;--dangerSoft:#35151d;--warnSoft:#332714;--okSoft:#10271d;--shadow:0 10px 28px rgba(0,0,0,.26);
 color-scheme:dark;
}
html[data-theme="light"]{color-scheme:light}
body,#appRoot,.erp,.main,.content{background:var(--bg);min-height:100vh}
.erp{min-height:100dvh}
.main{min-width:0}
.content{min-height:calc(100dvh - 64px);padding-bottom:max(28px,env(safe-area-inset-bottom))}
.brand{background:var(--side)}
.brand-home{display:flex;align-items:center;gap:11px;flex:1;min-width:0;border:0;background:transparent;color:inherit;text-align:left;padding:0;cursor:pointer}
.brand-home:hover .brand-text{color:var(--accent)}
.route-strip{display:none!important}
.topbar{position:sticky;top:0;z-index:40;background:color-mix(in srgb,var(--panel) 96%,transparent);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.search-wrap{position:relative;min-width:0}
.top-search-results{position:absolute;left:0;right:0;top:calc(100% + 7px);z-index:1000;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);max-height:min(62vh,560px);overflow:auto;padding:6px}
.search-result-row,.search-result-more{width:100%;display:grid;grid-template-columns:auto 1fr;gap:9px;align-items:start;border:0;border-radius:9px;background:transparent;color:var(--text);padding:10px;text-align:left;cursor:pointer}
.search-result-row:hover,.search-result-more:hover{background:var(--panel2)}
.search-result-row small{display:block;color:var(--muted);margin-top:2px;white-space:normal}.search-result-more{display:block;text-align:center;color:var(--accent);font-weight:700}.search-result-empty{padding:14px;color:var(--muted);text-align:center}
html[data-theme="dark"] .notice{background:#16243a;border-color:#2e496d;color:#c9dcff}
html[data-theme="dark"] .notice.warn{background:#332714;border-color:#6b511e;color:#fde68a}
html[data-theme="dark"] .notice.error,html[data-theme="dark"] .notice.danger{background:#35151d;border-color:#6d2a3a;color:#fecdd3}
html[data-theme="dark"] .notice.ok{background:#10271d;border-color:#285f43;color:#bbf7d0}
html[data-theme="dark"] dialog{background:var(--panel);color:var(--text);border-color:var(--line)}
html[data-theme="dark"] .dialog-head,html[data-theme="dark"] .dialog-foot{background:var(--panel2);border-color:var(--line)}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea{background:#0f151d;color:var(--text);border-color:#394454}
html[data-theme="dark"] .btn:not(.primary):not(.danger):not(.warn):not(.success){background:var(--panel2);color:var(--text);border-color:var(--line)}
.page-head{align-items:flex-end}.page-head h1{letter-spacing:.01em}
.click-card,.quick-action{min-height:92px}
.date-control{position:relative;cursor:pointer}.date-control input[type="date"]{width:100%;min-height:48px;font-size:16px;cursor:pointer;padding:8px 12px}.date-control label{pointer-events:none}
.select-card{display:flex;align-items:center;gap:8px;min-height:44px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);cursor:pointer;user-select:none}.select-card:hover{border-color:var(--accent)}.select-card:has(input:checked){border-color:var(--accent);background:var(--accentSoft)}.select-card input{pointer-events:none}
.category-cascade{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.category-cascade-edit{margin-top:10px}.category-cascade .field{min-width:0}

@media(max-width:820px){
 body{overflow-x:hidden}.erp,.main,.content{width:100%;max-width:100%;overflow-x:hidden}.sidebar{width:min(86vw,310px);max-width:310px}.main{margin-left:0!important}.erp.sidebar-hidden .main{margin-left:0!important}
 .topbar{display:grid!important;grid-template-columns:auto minmax(0,1fr);padding:8px max(10px,env(safe-area-inset-right)) 8px max(10px,env(safe-area-inset-left));gap:7px;height:auto;min-height:58px}.mobile-menu{display:inline-flex!important}.search-wrap{grid-column:2}.top-actions{grid-column:1/-1;display:flex;overflow-x:auto;max-width:100%;padding-bottom:1px;scrollbar-width:none}.top-actions::-webkit-scrollbar{display:none}.network-pill{flex:0 0 auto}.top-actions .btn,.top-actions .alert-btn,.top-actions .user-chip{flex:0 0 auto}
 .content{padding:12px 10px calc(82px + env(safe-area-inset-bottom));}.page-head{display:block}.page-head>.actions,.page-head>.btn-row,.page-head>button{margin-top:10px}.cards,.grid-2,.grid-3,.form-grid{grid-template-columns:1fr!important}.card,.panel{min-width:0}.table-wrap{max-width:100%;overflow:auto;-webkit-overflow-scrolling:touch}
 .category-cascade{grid-template-columns:1fr 1fr}.category-cascade .field input,.category-cascade .field select{min-height:48px;font-size:16px}
 dialog{width:calc(100vw - 20px)!important;max-width:calc(100vw - 20px)!important;max-height:calc(100dvh - 20px);margin:auto}.dialog-body{overflow:auto;max-height:calc(100dvh - 145px)}
 .mobile-dock{padding-bottom:env(safe-area-inset-bottom)}
}
@media(max-width:520px){.category-cascade{grid-template-columns:1fr}.top-scan{display:none}.logout-btn{display:none}.user-chip small{display:none}}
/* Interaction finishing pass */
.field:has(input[type="date"]),.field:has(input[type="datetime-local"]),.field:has(input[type="month"]){cursor:pointer}
.field input[type="date"],.field input[type="datetime-local"],.field input[type="month"],.field input[type="time"]{min-height:48px;font-size:16px;cursor:pointer}
.perm-row,.permission-row,.check-card{cursor:pointer;touch-action:manipulation}
.perm-row:hover,.permission-row:hover,.check-card:hover{background:var(--panel2)}
.camera-wrap,.camera-stage{width:100%;min-width:0;overflow:hidden;border-radius:12px;background:#050913}
.camera-wrap video,.camera-stage video,#barcodeVideo{display:block;width:100%!important;max-width:100%;height:auto;max-height:62dvh;object-fit:cover;background:#050913}
html[data-theme="dark"] .toast{background:#090d13;border:1px solid #303846;color:#e7edf5}
html[data-theme="dark"] .card,html[data-theme="dark"] .panel{background:var(--panel)}
html[data-theme="dark"] th{background:#1b222c}
html[data-theme="dark"] tbody tr:hover{background:rgba(154,167,184,.06)}
@media(max-width:820px){
 .page-head .actions,.page-head .btn-row{width:100%;overflow-x:auto;flex-wrap:nowrap;padding-bottom:2px}.page-head .actions>.btn,.page-head .btn-row>.btn{flex:0 0 auto}
 .filters{align-items:stretch}.filters>.btn,.filters>.badge{align-self:flex-end}.filters .btn-row{width:100%;overflow-x:auto;flex-wrap:nowrap}
 .permission-editor,.perm-area,.perm-row{max-width:100%;min-width:0}.perm-row{min-height:58px}
 .search-type-grid,.search-type-row{grid-template-columns:1fr 1fr!important}
 .image-viewer-dialog{inset:auto!important}
}
@media(max-width:480px){.search-type-grid,.search-type-row{grid-template-columns:1fr!important}.page-head h1{font-size:22px}}

/* UI convergence: stable layout with dense operational controls */
html[data-theme="dark"]{--bg:#0d1117;--panel:#151b23;--panel2:#1b222c;--line:#303846;--text:#e7edf5;--muted:#9aa7b8;--side:#080c12;--accent:#f59e0b;--accent2:#ea580c;--accentSoft:#312511}
html[data-theme="light"]{--bg:#f4f6f9;--panel:#fff;--panel2:#f8fafc;--line:#dce3ec;--text:#1f2937;--muted:#667085;--side:#0f172a;--accent:#ea580c;--accent2:#c2410c;--accentSoft:#ffedd5}
html,body,#appRoot,.erp,.main,.content{background:var(--bg)!important}
body{overflow-x:hidden}
.brand{height:68px;padding:10px 12px;gap:9px}
.brand-logo{width:42px;height:42px;object-fit:contain;border-radius:10px;flex:0 0 42px;background:#000;border:1px solid rgba(255,255,255,.06)}
.auth-brand .logo{background:#000 url('/icons/darkflash-logo.png') center/cover no-repeat;color:transparent;border:1px solid rgba(255,255,255,.06)}
.brand-text{font-size:15px;letter-spacing:.01em}.brand-text small{font-size:10px}
.nav{padding:9px 8px 34px}.nav-group{margin-bottom:3px}.nav-group-head{padding:0;margin:2px 0;display:grid!important;grid-template-columns:minmax(0,3fr) minmax(42px,1fr);gap:2px;background:transparent!important}
.nav-group-main,.nav-group-toggle{border:0;background:transparent;color:#d9e3f0;border-radius:9px;min-height:42px}
.nav-group-main{display:flex;align-items:center;gap:9px;text-align:left;padding:9px 10px;font-size:14px;font-weight:800;min-width:0}.nav-group-main:hover,.nav-group-main.active{background:#1e2a3c;color:#fff}.nav-group-toggle{display:grid;place-items:center;padding:0;color:#aab8ca}.nav-group-toggle:hover{background:#1e2a3c;color:#fff}.nav-group.nav-fixed .nav-group-head{grid-template-columns:1fr}.nav-group.collapsed .nav-arrow{transform:rotate(-90deg)}
.nav-sub{margin:2px 0 7px 30px;padding-left:7px}.nav-item{padding:8px 9px;font-size:14px;min-height:38px}.nav-item .nav-text{line-height:1.2}.nav-icon{width:24px;flex-basis:24px}
.topbar{min-height:64px;padding:8px 16px;gap:9px}.top-actions{gap:7px;align-items:center}.top-action-control,.network-pill{height:38px;min-height:38px;display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box}.alert-btn{padding:0 11px}.logout-btn{padding:0 12px!important}.network-pill{padding:0 10px}
.user-chip{display:inline-flex!important;flex-direction:row!important;align-items:center!important;gap:8px;line-height:1!important;padding:0 10px!important;max-width:260px}.user-role{display:inline-flex;align-items:center;height:24px;padding:0 8px;border-radius:999px;background:var(--accentSoft);color:var(--accent);font-size:11px;font-weight:900}.user-name{font-size:12px;font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.search-wrap input{min-height:38px}.search-icon{top:10px}.top-scan{display:none!important}
.nav-backdrop{display:none;border:0;padding:0;background:transparent}
.content{max-width:1680px;width:100%;margin:0 auto;padding:18px 20px 34px}.page-head{margin-bottom:14px}.page-head h1,.page-title h1{font-size:24px}.page-head p,.page-title p{max-width:920px}
.card,.panel{border-radius:11px}.panel-head{padding:12px 14px}.panel-body{padding:13px 14px}.btn{min-height:38px;display:inline-flex;align-items:center;justify-content:center}.btn.small{min-height:34px}.btn.mini{min-height:30px}

/* Category main pages: large/small button distinction exists only here. */
.hub-page-head{margin-bottom:16px}.hub-section{margin-bottom:18px}.hub-section-title{font-size:12px;font-weight:900;color:var(--muted);margin:0 0 8px 2px}.hub-primary-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}.hub-secondary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.hub-card{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:11px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;text-align:left;gap:10px;box-shadow:var(--shadow);transition:border-color .12s ease,transform .12s ease,background .12s ease}.hub-card:hover{border-color:var(--accent);transform:translateY(-1px);background:var(--panel2)}.hub-card-large{min-height:108px;padding:16px}.hub-card-small{min-height:70px;padding:10px 12px;box-shadow:none;background:var(--panel2)}.hub-icon{width:34px;height:34px;border-radius:9px;display:grid;place-items:center;background:var(--accentSoft);color:var(--accent);font-size:19px}.hub-card-large .hub-icon{width:42px;height:42px;font-size:22px}.hub-copy{display:grid;gap:4px;min-width:0}.hub-copy b{font-size:14px}.hub-card-large .hub-copy b{font-size:16px}.hub-copy small{color:var(--muted);font-size:11px;white-space:normal;line-height:1.35}.hub-go{color:var(--muted);font-size:24px}

/* Stable dark surfaces: no white flash while scrolling. */
html[data-theme="dark"] body,html[data-theme="dark"] #appRoot,html[data-theme="dark"] .erp,html[data-theme="dark"] .main,html[data-theme="dark"] .content{background:#0d1117!important}
html[data-theme="dark"] .mobile-dock{background:rgba(13,17,23,.97)!important}
html[data-theme="dark"] .alert-btn{background:#2b161b;border-color:#63303a;color:#fecdd3}
html[data-theme="dark"] .user-role{background:#332714;color:#fbbf24}

@media(max-width:1100px){.hub-primary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hub-secondary-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.topbar{padding-right:10px}.user-chip{max-width:200px}}
@media(max-width:820px){
 .sidebar{transform:translateX(-105%);transition:transform .22s cubic-bezier(.2,.75,.2,1);will-change:transform}.erp.nav-open .sidebar{transform:translateX(0)!important}.erp.sidebar-hidden .sidebar{transform:translateX(-105%)}
 .nav-backdrop{display:block;position:fixed;inset:0;z-index:45;background:rgba(0,0,0,.48);opacity:0;pointer-events:none;transition:opacity .2s ease}.erp.nav-open .nav-backdrop{opacity:1;pointer-events:auto}.erp.nav-open:after{display:none!important}
 .sidebar{z-index:50;width:min(86vw,320px);max-width:320px}.main{margin-left:0!important;width:100%}.sidebar-open{display:none!important}
 .topbar,.erp.sidebar-hidden .topbar{grid-template-columns:42px minmax(0,1fr)!important;gap:7px!important;padding:8px 10px!important}.mobile-menu{width:42px;height:38px;padding:0!important}.search-wrap{grid-column:2!important}.top-actions{grid-column:1/-1!important;display:flex!important;gap:6px!important;overflow-x:auto!important;padding:0 0 1px!important;scrollbar-width:none}.top-actions::-webkit-scrollbar{display:none}.top-action-control,.network-pill{height:36px;min-height:36px;flex:0 0 auto}.user-chip{display:inline-flex!important;max-width:210px!important}.logout-btn{display:inline-flex!important}.network-pill{font-size:9px}.alert-btn{font-size:11px}
 .content{padding:12px 10px calc(78px + env(safe-area-inset-bottom))!important}.hub-primary-grid{grid-template-columns:1fr 1fr;gap:8px}.hub-secondary-grid{grid-template-columns:1fr 1fr;gap:7px}.hub-card-large{min-height:96px;padding:12px}.hub-card-small{min-height:66px}.hub-card .hub-copy small{font-size:10px}
 .nav-group-main{font-size:15px;min-height:44px}.nav-item{font-size:14px;min-height:41px}
}
@media(max-width:520px){.hub-primary-grid,.hub-secondary-grid{grid-template-columns:1fr}.hub-card-large{min-height:82px}.user-chip{max-width:170px!important}.user-role{max-width:88px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.user-name{max-width:70px}.top-actions{padding-bottom:2px!important}.page-head h1{font-size:22px}}

/* Dense batch entry */
.batch-grid-shell{margin-top:12px;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel)}
.batch-grid-toolbar{display:flex;align-items:center;gap:8px;padding:8px 10px;border-bottom:1px solid var(--line);background:var(--panel-2)}
.batch-grid-toolbar label{display:flex;align-items:center;gap:7px;font-size:13px;color:var(--muted)}
.batch-grid-toolbar input{width:76px;height:32px}
.batch-grid-table{overflow:auto;max-width:100%}
.batch-grid-head,.batch-grid-row{display:grid;grid-template-columns:44px repeat(var(--batch-cols,1),minmax(140px,1fr)) 42px;min-width:420px;align-items:center}
.batch-grid-head{font-size:12px;font-weight:700;color:var(--muted);background:var(--panel-2);border-bottom:1px solid var(--line)}
.batch-grid-head>span,.batch-grid-row>span{padding:8px 10px}
.batch-grid-row{border-bottom:1px solid var(--line)}
.batch-grid-row:last-child{border-bottom:0}
.batch-grid-row input{width:100%;min-width:0;border:0;border-left:1px solid var(--line);border-radius:0;background:transparent;height:40px;padding:0 10px}
.batch-grid-row input:focus{position:relative;z-index:1;outline:2px solid var(--accent);outline-offset:-2px;background:var(--panel-2)}
.batch-line-no{text-align:right;font-variant-numeric:tabular-nums;color:var(--muted);font-size:12px;user-select:none}
.batch-row-delete{margin:4px;width:32px;height:32px;padding:0!important}
.batch-actions{margin-top:12px}
.batch-inline{max-width:420px;margin-bottom:4px}
[data-batch-grid="inventoryGrid"] .batch-grid-head,[data-batch-grid="inventoryGrid"] .batch-grid-row{--batch-cols:2}
[data-batch-grid="inventoryImportGrid"] .batch-grid-head,[data-batch-grid="inventoryImportGrid"] .batch-grid-row{--batch-cols:3;min-width:780px}
[data-batch-grid="shipmentGrid"] .batch-grid-head,[data-batch-grid="shipmentGrid"] .batch-grid-row{--batch-cols:4;min-width:760px}
[data-batch-grid="spareRangeGrid"] .batch-grid-head,[data-batch-grid="spareRangeGrid"] .batch-grid-row{--batch-cols:4;min-width:760px}
[data-batch-grid="productMaintainGrid"] .batch-grid-head,[data-batch-grid="productMaintainGrid"] .batch-grid-row{--batch-cols:13;min-width:2280px}

.theme-toggle{display:inline-flex;align-items:center;gap:10px;cursor:pointer;user-select:none}
.theme-toggle input{position:absolute;opacity:0;pointer-events:none}
.theme-toggle-track{width:50px;height:28px;border-radius:999px;background:var(--line);padding:3px;transition:.18s ease;box-shadow:inset 0 0 0 1px rgba(255,255,255,.04)}
.theme-toggle-thumb{display:block;width:22px;height:22px;border-radius:50%;background:#fff;transition:.18s ease;box-shadow:0 2px 8px #0005}
.theme-toggle input:checked+.theme-toggle-track{background:var(--accent)}
.theme-toggle input:checked+.theme-toggle-track .theme-toggle-thumb{transform:translateX(22px)}

@media(max-width:720px){
 .batch-grid-shell{border-radius:10px}
 .batch-grid-head,.batch-grid-row{grid-template-columns:36px repeat(var(--batch-cols,1),minmax(130px,1fr)) 40px}
 .batch-grid-row input{height:44px}
 .batch-line-no{padding-left:5px!important;padding-right:5px!important}
}
.auth-logo{width:58px;height:58px;object-fit:cover;border-radius:14px;flex:0 0 auto}

/* Spare planning, pagination and dashboard repair-rate ring */
.pagination{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:10px 12px;border-top:1px solid var(--line)}
.pagination select{min-height:32px}
.repair-rate-body{display:flex;align-items:center;gap:24px;flex-wrap:wrap}
.repair-ring{--repair-rate:0;width:150px;height:150px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--accent) calc(var(--repair-rate)*1%),var(--line) 0);position:relative;flex:0 0 150px}
.repair-ring:after{content:"";position:absolute;inset:14px;border-radius:50%;background:var(--panel)}
.repair-ring>div{position:relative;z-index:1;text-align:center;display:grid;gap:3px}.repair-ring b{font-size:28px}.repair-ring span{font-size:11px;color:var(--muted)}
.repair-rate-stats{display:grid;grid-template-columns:repeat(2,minmax(120px,1fr));gap:10px;flex:1;min-width:250px}.repair-rate-stats>div{border:1px solid var(--line);border-radius:10px;padding:11px;background:var(--panel2);display:grid;gap:5px}.repair-rate-stats span{color:var(--muted);font-size:12px}.repair-rate-stats b{font-size:22px}.repair-rate-stats p{grid-column:1/-1;margin:0;color:var(--muted);font-size:12px;line-height:1.5}
.science-table{max-height:52vh;overflow:auto}.scientific-controls{margin:12px 0}.science-table th{position:sticky;top:0;background:var(--panel2);z-index:1}
@media(max-width:620px){.repair-rate-body{justify-content:center}.repair-rate-stats{width:100%;min-width:0}.repair-ring{width:132px;height:132px;flex-basis:132px}.pagination{justify-content:center}}

/* Mobile-first chrome, no horizontal reading, camera/case-photo UX */
.case-create-photo-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}
.case-create-photo-preview{display:grid;grid-template-columns:repeat(auto-fill,minmax(138px,1fr));gap:8px;margin-top:10px}
.case-photo-preview{position:relative;border:1px solid var(--line);border-radius:10px;overflow:hidden;background:var(--panel2);min-width:0}
.case-photo-preview img{display:block;width:100%;height:110px;object-fit:cover;background:#050913}
.case-photo-preview button{position:absolute;right:6px;top:6px;width:30px;height:30px;min-height:0!important;border-radius:999px;background:rgba(0,0,0,.66);color:#fff;border:0;padding:0}
.camera-still{display:block;width:100%;max-width:100%;max-height:62dvh;object-fit:contain;background:#050913}

@media(max-width:820px){
 html,body,#appRoot,.erp,.main,.content{max-width:100%;overflow-x:hidden}
 html{scroll-padding-top:var(--mobile-topbar-height,118px)}
 body{padding-bottom:calc(72px + env(safe-area-inset-bottom))!important}
 .main,.erp.sidebar-hidden .main{margin-left:0!important;width:100%!important;min-width:0}

 /* Keep the mobile header visible and let JS measure its real wrapped height. */
 .topbar,.erp.sidebar-hidden .topbar{
  position:fixed!important;top:0;left:0;right:0;z-index:70!important;
  width:100%;box-sizing:border-box;
  grid-template-columns:42px minmax(0,1fr)!important;
  gap:7px!important;
  padding:max(8px,env(safe-area-inset-top)) max(10px,env(safe-area-inset-right)) 8px max(10px,env(safe-area-inset-left))!important;
  background:color-mix(in srgb,var(--panel) 97%,transparent)!important;
  backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)
 }
 .content{padding:calc(var(--mobile-topbar-height,118px) + 10px) 10px calc(86px + env(safe-area-inset-bottom))!important}
 .mobile-menu{display:inline-flex!important;width:42px!important;height:40px!important;min-height:40px!important;padding:0!important;align-self:start}
 .search-wrap{grid-column:2!important;min-width:0;width:100%!important;max-width:none!important}
 .search-wrap input{width:100%;min-width:0;box-sizing:border-box}
 .top-actions{
  grid-column:1/-1!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:6px!important;width:100%;max-width:100%;margin:0!important;padding:0!important;
  overflow:visible!important
 }
 .top-actions>*{min-width:0!important;max-width:100%!important;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
 .top-actions .user-chip{display:none!important}
 .top-actions .top-action-control,.top-actions .network-pill,.top-actions .alert-btn,.top-actions .logout-btn{height:36px!important;min-height:36px!important;justify-content:center!important}

 /* Sidebar always stays mounted; only the compositor transform changes. */
 .sidebar{
  position:fixed!important;z-index:90!important;width:min(86vw,320px)!important;max-width:320px!important;
  transform:translate3d(-105%,0,0)!important;transition:transform .2s cubic-bezier(.2,.75,.2,1)!important;
  will-change:transform;backface-visibility:hidden;-webkit-backface-visibility:hidden;contain:paint
 }
 .erp.nav-open .sidebar{transform:translate3d(0,0,0)!important}
 .erp.sidebar-hidden .sidebar{transform:translate3d(-105%,0,0)!important}
 .nav-backdrop{display:block!important;position:fixed!important;inset:0!important;z-index:85!important;background:rgba(0,0,0,.46)!important;opacity:0;pointer-events:none;transition:opacity .18s ease;contain:paint}
 .erp.nav-open .nav-backdrop{opacity:1!important;pointer-events:auto!important}
 .erp.nav-open:after{display:none!important;content:none!important}

 /* All normal information tables become readable cards instead of horizontal sheets. */
 .table-wrap{width:100%;max-width:100%;overflow-x:hidden!important;overflow-y:visible!important}
 table.mobile-card-table{display:block!important;width:100%!important;min-width:0!important;border-collapse:separate}
 table.mobile-card-table thead{display:none!important}
 table.mobile-card-table tbody{display:grid!important;gap:9px!important;width:100%!important}
 table.mobile-card-table tbody tr{display:grid!important;width:100%!important;min-width:0!important;border:1px solid var(--line);border-radius:11px;background:var(--panel);padding:5px 10px;box-shadow:0 1px 0 rgba(0,0,0,.03)}
 table.mobile-card-table tbody tr:hover{background:var(--panel)}
 table.mobile-card-table tbody td{display:grid!important;grid-template-columns:minmax(92px,34%) minmax(0,1fr);gap:8px;align-items:start;width:100%!important;min-width:0!important;box-sizing:border-box;padding:8px 0!important;border:0!important;border-bottom:1px solid var(--line)!important;white-space:normal!important;overflow-wrap:anywhere;word-break:break-word}
 table.mobile-card-table tbody td:last-child{border-bottom:0!important}
 table.mobile-card-table tbody td:before{content:attr(data-label);font-size:11px;font-weight:850;color:var(--muted);white-space:normal}
 table.mobile-card-table tbody td.mobile-card-span{display:block!important;text-align:center;padding:14px 0!important}
 table.mobile-card-table tbody td.mobile-card-span:before{display:none}
 table.mobile-card-table tbody td .btn-row,table.mobile-card-table tbody td .actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-start}
 table[data-mobile-mode="scroll"]{min-width:0!important}

 .page-head{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:8px}
 .page-head>*,.page-head>div{min-width:0;max-width:100%}
 .page-head .actions,.page-head .btn-row,.filters,.dialog-foot,.panel-head .btn-row{display:flex!important;gap:7px!important;flex-wrap:wrap!important;max-width:100%;overflow:visible!important}
 .filters .field{min-width:0!important;width:100%!important}
 .form-grid,.grid-2,.grid-3{grid-template-columns:1fr!important}
 .form-grid .full,.full{grid-column:1!important}
 input,select,textarea,button{max-width:100%;box-sizing:border-box}
 select,input,textarea{min-width:0;width:100%}
 .btn-row .btn,.page-head .actions .btn,.dialog-foot .btn{flex:1 1 auto;min-width:110px}

 dialog{width:calc(100% - 18px)!important;max-width:calc(100% - 18px)!important;max-height:calc(100dvh - 18px);margin:auto;overflow:hidden}
 .dialog-body{max-height:calc(100dvh - 150px);overflow:auto;overscroll-behavior:contain}
 .dialog-foot{padding-bottom:max(12px,env(safe-area-inset-bottom))}

 /* Home shortcuts remain visible in the first screen. */
 .quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}
 .quick-action{min-width:0;padding:11px!important}
 .quick-action small{white-space:normal;overflow-wrap:anywhere}

 .mobile-dock{z-index:80!important;grid-template-columns:repeat(5,minmax(0,1fr))!important;left:0!important;right:0!important;bottom:0!important;width:100%;box-sizing:border-box}
 .dock-item{min-width:0!important}
 .dock-item.active{color:#fff!important;background:color-mix(in srgb,var(--accent) 72%,#000 28%)!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 55%,#000 45%)}
 html[data-theme="light"] .dock-item.active{color:#fff!important;background:color-mix(in srgb,var(--accent) 78%,#000 22%)!important}

 .case-create-photo-actions{display:grid;grid-template-columns:1fr 1fr;width:100%}
 .case-create-photo-actions .btn{width:100%}
 .case-create-photo-preview{grid-template-columns:repeat(2,minmax(0,1fr))}
 .camera-wrap video,.camera-still{max-height:52dvh}
}

@media(max-width:430px){
 .top-actions{grid-template-columns:repeat(3,minmax(0,1fr))!important}
 .top-actions .logout-btn{display:none!important}
 .quick-action small{display:none}
 .quick-action{grid-template-rows:auto!important;min-height:62px}
 .quick-action>span{grid-row:auto!important;align-self:center}
 .case-create-photo-preview{grid-template-columns:1fr 1fr}
 table.mobile-card-table tbody td{grid-template-columns:minmax(82px,32%) minmax(0,1fr)}
}
.update-upload-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.update-upload-row .small{min-width:220px;flex:1}.update-upload-progress{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;margin-top:12px}.update-upload-progress.hidden{display:none}
/* RC13 route transition: show immediate feedback while data is loading without blocking navigation chrome. */
#pageRoot{position:relative}
#pageRoot.page-loading:before{content:"";position:fixed;left:0;right:0;top:0;height:2px;z-index:90;background:linear-gradient(90deg,transparent,currentColor,transparent);opacity:.55;animation:df-route-loading 1s linear infinite;pointer-events:none}
@keyframes df-route-loading{0%{transform:translateX(-55%)}100%{transform:translateX(55%)}}
@media(max-width:820px){#pageRoot.page-loading:before{top:var(--mobile-topbar-height,64px)}}


/* RC14 mobile UX: safe header, native-feeling edge stretch, center case action, no permanent ONLINE pill. */
.network-pill.online.hidden,.network-pill.hidden{display:none!important}
#pageRoot{transition:transform .2s cubic-bezier(.2,.8,.2,1);transform-origin:center top}
#pageRoot.edge-stretching{transition:none!important;will-change:transform}
@media(max-width:820px){
 html,body{overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch}
 .topbar,.erp.sidebar-hidden .topbar{padding-top:calc(env(safe-area-inset-top) + 8px)!important}
 .content{padding-top:calc(var(--mobile-topbar-height,104px) + 12px)!important;overscroll-behavior-y:auto}
 .top-actions{grid-template-columns:minmax(0,1fr) auto!important}
 .top-actions .alert-btn{min-width:0!important}
 .network-pill.online{display:none!important}
 .nav-backdrop{touch-action:manipulation}
 .sidebar{touch-action:pan-y}
 .mobile-dock{overflow:visible!important}
 .dock-case-wrap{position:relative;min-width:0;display:flex;align-items:stretch;justify-content:stretch}
 .dock-case-wrap>.dock-item{width:100%}
}
@media(max-width:430px){
 .top-actions{grid-template-columns:1fr!important}
 .top-actions .logout-btn{display:none!important}
}

/* RC14 changelog + inventory search */
.inventory-search-panel{border-color:color-mix(in srgb,var(--accent) 28%,var(--line))}.inventory-search-meta{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-top:8px}
.changelog-list{display:grid;gap:10px}.changelog-release{background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);overflow:hidden}.changelog-release summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px}.changelog-release summary::-webkit-details-marker{display:none}.changelog-release summary>div{display:flex;align-items:center;gap:9px;min-width:0}.changelog-release summary b{font-size:17px}.changelog-release summary span{color:var(--muted)}.changelog-release summary small{font-size:11px;color:var(--muted)}.changelog-body{padding:0 16px 15px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.changelog-section{padding-top:12px}.changelog-section h4{margin:0 0 6px;font-size:13px}.changelog-section ul{margin:0;padding-left:20px;display:grid;gap:5px}.changelog-section li{font-size:12px;line-height:1.55}.changelog-section.added h4{color:var(--ok)}.changelog-section.improved h4{color:var(--accent)}.changelog-section.fixed h4{color:var(--danger)}.case-photo-preview-loading{height:110px;display:grid;place-items:center;color:var(--muted);font-size:11px;background:var(--panel2)}.scan-raw-result{display:grid;gap:12px}.scan-raw-code{font-size:clamp(22px,6vw,38px);font-weight:900;overflow-wrap:anywhere;word-break:break-all;padding:14px;border:1px dashed var(--line);border-radius:10px;background:var(--panel2)}
@media(max-width:820px){.changelog-body{grid-template-columns:1fr}.changelog-release summary{align-items:flex-start}.changelog-release summary>div:last-child{flex-direction:column;align-items:flex-end;gap:3px}}

/* RC15 工作報告 / 智能助理 */
.work-report-list{display:grid;gap:12px}.work-report-card{border:1px solid var(--line);border-radius:12px;background:var(--panel2);padding:12px;display:grid;gap:10px}.work-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.work-report-entries{display:grid;gap:8px}.work-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:12px;padding:10px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.work-entry-meta{display:flex;align-items:flex-start;justify-content:flex-end;gap:6px;flex-wrap:wrap}.ai-report-text{line-height:1.8;white-space:normal}.ai-chat-shell{display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:10px;width:100%;max-width:none;height:calc(100dvh - 250px);min-height:420px;max-height:calc(100dvh - 180px);overflow:hidden}.ai-quick{display:flex;gap:7px;flex-wrap:wrap}.ai-chat-log{min-height:0;height:100%;max-height:none;overflow:auto;overflow-x:hidden;border:1px solid var(--line);border-radius:12px;background:var(--panel2);padding:12px;display:grid;align-content:start;gap:10px;overscroll-behavior:contain}.ai-msg{max-width:min(86%,820px);padding:10px 12px;border:1px solid var(--line);border-radius:12px;line-height:1.65;background:var(--panel)}.ai-msg.user{justify-self:end;background:color-mix(in srgb,var(--accent) 16%,var(--panel))}.ai-msg.assistant{justify-self:start}.ai-msg-role{font-size:11px;font-weight:850;color:var(--muted);margin-bottom:4px}.ai-compose-shell{position:sticky;bottom:0;z-index:3;border:1px solid var(--line);border-radius:12px;background:var(--panel);min-height:46px;cursor:text}.ai-compose-click{position:relative;min-height:46px;padding:6px 52px 6px 10px;display:flex;align-items:flex-end}.ai-compose-shell textarea{width:100%;resize:none;min-height:32px;max-height:128px;line-height:22px;overflow:hidden;border:0;background:transparent;padding:5px 2px;outline:0}.ai-compose-placeholder{position:absolute;left:12px;right:54px;top:50%;transform:translateY(-50%);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--muted);pointer-events:none}.ai-compose-shell.open .ai-compose-placeholder{display:none}.ai-compose-shell.collapsed textarea{height:32px;opacity:0}.ai-compose-shell.open textarea{opacity:1}.ai-send{position:absolute;right:7px;bottom:7px;width:34px;min-width:34px;height:34px;padding:0;border-radius:10px;display:grid;place-items:center}.ai-presentation{display:grid;gap:9px}.ai-presentation-summary{font-weight:750}.ai-section{padding-top:7px;border-top:1px solid var(--line)}.ai-section-title{font-size:12px;font-weight:850;color:var(--muted);margin-bottom:4px}.ai-section ul{margin:0;padding-left:1.2rem;display:grid;gap:3px}.ai-section-warning{border-color:color-mix(in srgb,var(--danger) 45%,var(--line))}.ai-actions{display:flex;gap:6px;flex-wrap:wrap}.ai-source-static{cursor:default}
@media(max-width:820px){.work-entry{grid-template-columns:1fr}.work-entry-meta{justify-content:flex-start}.ai-msg{max-width:94%}.ai-chat-shell{min-height:calc(100dvh - 220px)}.ai-chat-log{min-height:0;max-height:none}}
.ai-thinking{opacity:.9}.thinking-dots{display:inline-flex;gap:4px;margin-left:6px;vertical-align:middle}.thinking-dots i{width:6px;height:6px;border-radius:50%;background:currentColor;display:block;animation:dfThink 1.15s infinite ease-in-out}.thinking-dots i:nth-child(2){animation-delay:.16s}.thinking-dots i:nth-child(3){animation-delay:.32s}@keyframes dfThink{0%,70%,100%{transform:translateY(0);opacity:.35}35%{transform:translateY(-4px);opacity:1}}
.notification-btn{position:relative}.notification-count{position:absolute;right:-6px;top:-7px;min-width:18px;height:18px;padding:0 5px;border-radius:12px;display:inline-flex;align-items:center;justify-content:center;font-size:10px;font-weight:900;background:var(--danger,#d33);color:#fff}.notification-list{display:grid;gap:10px}.notification-row{border:1px solid var(--line);border-radius:12px;padding:12px;display:grid;grid-template-columns:1fr auto;gap:10px}.notification-row.unread{box-shadow:inset 3px 0 0 var(--accent,#888)}.notification-row .notification-title{font-weight:800}.notification-meta{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.report-queue-row{display:grid;grid-template-columns:minmax(220px,1fr) 120px 90px;gap:10px;align-items:center}.report-progress{height:8px;border-radius:8px;background:rgba(127,127,127,.2);overflow:hidden}.report-progress>i{display:block;height:100%;background:currentColor}
.ai-job-progress{height:5px;margin-top:8px;border-radius:999px;background:color-mix(in srgb,var(--line) 70%,transparent);overflow:hidden}.ai-job-progress i{display:block;height:100%;border-radius:inherit;background:currentColor;transition:width .25s ease}
.btn.is-uploading{position:relative;pointer-events:none;opacity:.9}.btn.is-uploading::before{content:"";display:inline-block;width:12px;height:12px;margin-right:7px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:df-upload-spin .7s linear infinite}@keyframes df-upload-spin{to{transform:rotate(360deg)}}

/* RC21 shared searchable combobox */
.combo-field{position:relative;min-width:0}.combo-control{position:relative}.combo-input{padding-right:34px!important}.combo-arrow{position:absolute;right:11px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--muted);font-size:11px}.combo-menu{position:absolute;left:0;right:0;top:calc(100% + 4px);z-index:180;max-height:min(320px,42vh);overflow:auto;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:0 18px 45px rgba(0,0,0,.28);padding:4px}.combo-option{width:100%;border:0;background:transparent;color:var(--text);display:grid;gap:2px;text-align:left;padding:9px 10px;border-radius:8px;cursor:pointer}.combo-option small{font-size:10px;color:var(--muted)}.combo-option:hover,.combo-option.active{background:var(--accentSoft)}.combo-empty{padding:10px;color:var(--muted);font-size:12px}.combo-menu.hidden{display:none!important}
@media(max-width:760px){.combo-menu{position:fixed;left:10px;right:10px;top:auto;bottom:calc(72px + env(safe-area-inset-bottom));max-height:42vh}.combo-option{min-height:46px}}

/* RC21 shell refinements */
.notification-pop-wrap{position:relative}.notification-pop{position:absolute;right:0;top:calc(100% + 8px);width:min(390px,calc(100vw - 24px));max-height:520px;overflow:auto;z-index:190;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:0 22px 60px rgba(0,0,0,.35);padding:8px}.notification-pop.hidden{display:none!important}.notification-pop-head{display:flex;align-items:center;justify-content:space-between;padding:5px 6px 9px}.notification-pop-list{display:grid;gap:4px}.notification-pop-row{border:0;background:transparent;color:var(--text);text-align:left;padding:9px;border-radius:9px;display:grid;gap:3px;cursor:pointer}.notification-pop-row:hover,.notification-pop-row.unread{background:var(--accentSoft)}.notification-pop-row small{color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.notification-pop-more{width:100%;border:0;border-top:1px solid var(--line);background:transparent;color:var(--accent);padding:10px;margin-top:5px;font-weight:800;cursor:pointer}.notification-pop-loading,.notification-pop-empty{padding:18px;text-align:center;color:var(--muted)}.notification-pop-tools{display:flex;gap:6px;padding:0 6px 8px;border-bottom:1px solid var(--line);margin-bottom:5px}.notification-pop-tool{border:0;background:transparent;color:var(--accent);font-size:12px;font-weight:800;padding:6px 8px;border-radius:8px;cursor:pointer}.notification-pop-tool:hover{background:var(--accentSoft)}.notification-pop-tool:disabled{opacity:.45;cursor:default}.notification-pop-tool.danger-text{margin-left:auto;color:var(--danger,#d9534f)}
.nav-backdrop,.dock-item,.sidebar-close,.sidebar-open{-webkit-tap-highlight-color:transparent}.nav-backdrop:focus{outline:none}.sidebar-close{display:inline-grid;place-items:center;flex:0 0 32px}.brand-home{min-width:0;flex:1}.brand{gap:4px}.sidebar-open{display:none}.erp.sidebar-hidden .sidebar-open{display:block}.erp.sidebar-hidden .sidebar{pointer-events:none}
html,body{overscroll-behavior-y:auto}.content{overscroll-behavior-y:auto}
/* RC42 mobile scroll: keep exactly one document scroll root. Avoid nested html/body scrolling on iOS Safari/PWA. */
@media(max-width:820px){
 html{height:auto!important;min-height:100%;overflow-x:hidden!important;overflow-y:auto!important;touch-action:auto!important;-webkit-overflow-scrolling:touch}
 body{height:auto!important;min-height:100dvh;overflow-x:hidden!important;overflow-y:visible!important;touch-action:auto!important;-webkit-overflow-scrolling:touch}
 #appRoot,.erp,.main,.content,#pageRoot{height:auto!important;min-height:0;overflow-y:visible!important;touch-action:auto!important;overscroll-behavior-y:auto!important}
 .dialog-body,.notification-pop,.combo-menu,.ai-chat-log{touch-action:pan-y!important;-webkit-overflow-scrolling:touch}
 .sidebar{touch-action:pan-y!important;-webkit-overflow-scrolling:touch}
 .table-wrap{touch-action:pan-x pan-y!important;overscroll-behavior-x:contain!important;overscroll-behavior-y:auto!important}
 .table-wrap.mobile-card-wrap{overflow:visible!important;touch-action:pan-y!important;overscroll-behavior:auto!important;-webkit-overflow-scrolling:auto!important}
}
.edge-stretching{transform:none!important;transition:none!important}
@media(max-width:820px){.sidebar-close,.sidebar-open{display:none!important}.erp.sidebar-hidden .sidebar{pointer-events:auto}.notification-pop{position:fixed;left:10px;right:10px;top:calc(var(--mobile-topbar-height,104px) + 6px);width:auto;max-height:55dvh}}

/* RC21 shared master/search refinements */
.search-type-row{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(128px,1fr));gap:8px!important;width:100%}
.search-type-row .select-card{width:100%;min-width:0;justify-content:flex-start}
.search-type-row .select-card span{writing-mode:horizontal-tb!important;text-orientation:mixed!important;white-space:nowrap;word-break:keep-all}
.database-tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}.database-tabs button{border:1px solid var(--line);background:var(--panel);color:var(--text);border-radius:9px;padding:8px 12px;cursor:pointer}.database-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}
.inline-master-add{display:flex;gap:8px;max-width:760px}.inline-master-add input{flex:1}.link-button{border:0;background:none;color:var(--accent);font:inherit;font-weight:700;padding:0;cursor:pointer;text-align:left}
.knowledge-category-layout{align-items:start}.category-tree-list{display:flex;flex-direction:column;gap:5px;max-height:70dvh;overflow:auto}.category-tree-row{display:flex;justify-content:space-between;gap:12px;text-align:left;border:1px solid var(--line);background:var(--panel2);color:var(--text);border-radius:8px;padding:8px 10px;cursor:pointer}.category-tree-row:hover{border-color:var(--accent)}
.stock-hover{cursor:help;text-decoration:underline dotted;text-underline-offset:3px}
@media(max-width:820px){.search-type-row{grid-template-columns:repeat(2,minmax(0,1fr))!important}.search-type-row .select-card{min-height:48px;height:100%}.knowledge-category-layout{grid-template-columns:1fr!important}}

/* RC21 case wizard */
.case-wizard-dialog{width:min(980px,calc(100vw - 28px));max-height:min(92vh,940px)}
.case-wizard-dialog .dialog-body{min-height:430px}
.case-wizard-dialog .dialog-foot{justify-content:space-between;position:sticky;bottom:0;background:var(--panel,#111820);z-index:4}
.case-item-toolbar{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:14px}
.case-ref-list{display:grid;gap:8px}
.input-with-action{display:flex;align-items:center;gap:8px;min-width:0}
.input-with-action>input{flex:1;min-width:0}
.input-with-action>span{display:flex;flex:0 0 auto}
.case-preview-list{display:grid;gap:10px;margin-top:14px}
.case-preview-row{display:flex;align-items:center;justify-content:space-between;gap:14px;border:1px solid var(--line);border-radius:12px;padding:12px;background:var(--panel-2,#0e151d)}
.case-preview-photo{display:flex;align-items:center;gap:8px;white-space:nowrap}
.case-scan-btn{display:inline-grid;place-items:center}
@media(max-width:820px){
  .case-wizard-dialog{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);margin:6px}
  .case-wizard-dialog .dialog-body{min-height:0;max-height:calc(100dvh - 150px);overflow:auto;overscroll-behavior:contain}
  .case-item-toolbar,.case-preview-row{align-items:stretch;flex-direction:column}
  .case-item-toolbar .btn-row{width:100%}.case-item-toolbar .btn-row .btn{flex:1}
  .case-preview-photo{justify-content:flex-end}
}

/* RC23: compact paging + media lifecycle UI */
.pager{display:flex;align-items:center;justify-content:center;gap:10px;padding:12px 14px;border-top:1px solid var(--line)}
@media(max-width:820px){.pager .btn{min-width:96px}.sale-kind-filter{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.sale-kind-filter .btn{width:100%;min-width:0}}


/* RC25 permission UX + mobile dock contrast */
.perm-row.perm-blocked{
 background:color-mix(in srgb,var(--panel2) 82%,#000 18%);
 color:color-mix(in srgb,var(--muted) 88%,var(--text) 12%);
}
html[data-theme="light"] .perm-row.perm-blocked{
 background:color-mix(in srgb,var(--panel2) 91%,#64748b 9%);
}
.perm-row.perm-parent-locked .switch-check,
.perm-row.perm-parent-locked .perm-control select{opacity:.58}
.perm-row.perm-parent-locked .switch-check input:checked{opacity:.72}
.perm-effective.saved{
 background:color-mix(in srgb,var(--panel2) 78%,var(--accent) 22%);
 color:var(--muted);
 border-color:color-mix(in srgb,var(--line) 72%,var(--accent) 28%);
}
@media(max-width:820px){
 .dock-item.dock-primary{filter:brightness(.88);opacity:.9}
 .dock-item.dock-primary.active{
  filter:brightness(.82);
  background:color-mix(in srgb,var(--accent) 54%,#000 46%)!important;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--accent) 38%,#000 62%)!important;
 }
 html[data-theme="light"] .dock-item.dock-primary.active{
  background:color-mix(in srgb,var(--accent) 60%,#000 40%)!important;
 }
}

/* RC26 bulk inventory import wizard */
.inventory-import-dialog{width:min(1080px,calc(100vw - 28px));max-height:min(94vh,980px)}
.inventory-import-dialog .dialog-body{min-height:480px}
.inventory-import-dialog .dialog-foot{justify-content:space-between;position:sticky;bottom:0;background:var(--panel);z-index:5}
.import-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:14px}
.import-steps span{border:1px solid var(--line);border-radius:10px;padding:9px 10px;text-align:center;font-size:12px;font-weight:800;color:var(--muted);background:var(--panel2)}
.import-steps span.active{border-color:color-mix(in srgb,var(--accent) 55%,var(--line));background:color-mix(in srgb,var(--accentSoft) 68%,var(--panel) 32%);color:var(--text)}
.inventory-import-config{margin:14px 0}.import-kpis{grid-template-columns:repeat(3,minmax(0,1fr));margin:12px 0}
.inventory-import-match-table{max-height:52vh;overflow:auto}.inventory-import-preview{max-height:55vh;overflow:auto}
.inventory-import-match-table thead,.inventory-import-preview thead{position:sticky;top:0;z-index:2;background:var(--panel2)}
.inventory-import-match-table tr.import-unresolved{background:color-mix(in srgb,var(--warn,#d79a23) 8%,var(--panel) 92%)}
.inventory-import-match-table input,.inventory-import-match-table select{min-width:180px}
@media(max-width:820px){
 .inventory-import-dialog{width:calc(100vw - 12px);max-height:calc(100dvh - 12px);margin:6px}
 .inventory-import-dialog .dialog-body{min-height:0;max-height:calc(100dvh - 150px)}
 .import-steps{gap:5px}.import-steps span{padding:8px 4px;font-size:11px}
 .import-kpis{grid-template-columns:repeat(3,minmax(0,1fr))}
 .inventory-import-match-table,.inventory-import-preview{max-height:none}
 .inventory-import-match-table input,.inventory-import-match-table select{min-width:150px}
}

/* RC27 case creation: true two-stage entry + consolidated item editing */
.case-wizard-body{overflow-x:hidden}
.case-items-toolbar,.case-item-card-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.case-items-toolbar{margin-bottom:12px}
.case-items-stack{display:grid;gap:12px}
.case-item-card{border:1px solid var(--line);border-radius:13px;background:var(--panel2);padding:13px;min-width:0}
.case-item-card-head{padding-bottom:11px;margin-bottom:12px;border-bottom:1px solid var(--line)}
.case-item-card .combo-menu{z-index:190}
.case-add-item-bottom{margin-top:12px}
.case-photo-file-name{padding:6px 8px;font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-top:1px solid var(--line)}
.case-preview-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-bottom:12px}
.case-preview-summary>div{display:grid;gap:4px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);padding:10px;min-width:0}
.case-preview-summary b{overflow-wrap:anywhere}
@media(max-width:820px){
 .case-wizard-dialog .dialog-head{position:sticky;top:0;z-index:7;background:var(--panel)}
 .case-wizard-dialog .dialog-body{padding:12px 10px;overflow-x:hidden!important}
 .case-items-toolbar,.case-item-card-head{align-items:stretch;flex-direction:column}
 .case-items-toolbar .btn,.case-item-card-head .btn{width:100%}
 .case-item-card{padding:11px 10px}
 .case-create-photo-actions{display:grid!important;grid-template-columns:1fr 1fr!important;gap:7px!important}
 .case-create-photo-actions .btn{width:100%;min-width:0;justify-content:center}
 .case-create-photo-actions .small{grid-column:1/-1}
 .case-create-photo-preview{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .case-preview-summary{grid-template-columns:1fr}
 .case-wizard-dialog .dialog-foot{display:grid!important;grid-template-columns:1fr 1fr;gap:8px!important}
 .case-wizard-dialog .dialog-foot>div{display:flex;min-width:0}
 .case-wizard-dialog .dialog-foot .btn{width:100%;min-width:0!important}
}
@media(max-width:390px){.case-create-photo-preview{grid-template-columns:1fr!important}}

/* RC28 search + alert mobile usability */
.search-result-mobile,.alert-mobile-list{display:none}
.search-result-card,.alert-mobile-card{border:1px solid var(--line);border-radius:12px;background:var(--panel2);padding:11px;display:grid;gap:7px;min-width:0}
.search-result-card-head,.alert-mobile-head{display:flex;align-items:center;justify-content:space-between;gap:8px;min-width:0}
.search-result-card>b,.alert-mobile-card b{overflow-wrap:anywhere}
.alert-mobile-stats{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.alert-mobile-stats>span{border:1px solid var(--line);border-radius:9px;padding:8px;background:var(--panel)}
@media(max-width:820px){
 .search-result-desktop,.alert-desktop-table{display:none!important}
 .search-result-mobile,.alert-mobile-list{display:grid;gap:8px;padding:10px}
 .search-filters{display:grid!important;grid-template-columns:1fr 1fr!important;gap:8px!important}
 .search-filters .field.grow{grid-column:1/-1!important}
 .search-filters .date-control{min-width:0!important;width:auto!important}
 .search-filters .btn{min-width:0!important;width:100%!important}
 .search-counts{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .alert-summary-cards{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 .alert-card{min-width:0;text-align:left}
 .search-result-card .btn,.alert-mobile-card .btn{width:100%}
}
@media(max-width:390px){.search-filters{grid-template-columns:1fr!important}.search-filters .field.grow{grid-column:auto!important}.alert-summary-cards{grid-template-columns:1fr 1fr!important}}

/* RC29 — count/data governance mobile ergonomics */
.count-create-filters{align-items:end}
.count-entry-table .count-real{max-width:140px}
@media(max-width:820px){
 .count-group{margin-bottom:14px}.count-l1{font-size:17px;margin:14px 2px 7px}
 .count-sub .panel-head{position:sticky;top:var(--mobile-topbar-height,104px);z-index:2;background:var(--panel);border-bottom:1px solid var(--line)}
 .count-entry-table .count-real{width:100%;max-width:none;min-height:44px;font-size:17px}
 .audit-table tbody td[data-label="明細"]{grid-template-columns:1fr}.audit-table tbody td[data-label="明細"]:before{margin-bottom:2px}
 .page-head>.btn-row{width:100%;flex-wrap:wrap}.page-head>.btn-row .btn{flex:1 1 160px}
}

/* RC31 notification center retention / pagination */
.notification-filter-grid{display:grid;grid-template-columns:minmax(240px,1fr) minmax(190px,260px) auto auto;gap:12px;align-items:end}.notification-unread-toggle{align-self:center;margin-bottom:8px}.notification-category-tabs{margin-top:10px}.notification-message{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.55}.notification-actions{display:flex;gap:7px;flex-wrap:wrap;align-content:flex-start;justify-content:flex-end}.notification-row.read{opacity:.88}.notification-row.read:hover{opacity:1}.notification-page-footer{display:flex;justify-content:center;margin-top:14px}.notification-pagination{display:flex;gap:6px;align-items:center;justify-content:center;flex-wrap:wrap}.notification-pagination .btn:disabled{opacity:.4;cursor:default}
@media(max-width:820px){.notification-filter-grid{grid-template-columns:1fr 1fr}.notification-row{grid-template-columns:1fr}.notification-actions{justify-content:flex-start}.notification-page-footer{padding-bottom:8px}}
@media(max-width:560px){.notification-filter-grid{grid-template-columns:1fr}.notification-unread-toggle{margin:0}.notification-pagination .tiny{width:100%;text-align:center}.notification-category-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));width:100%}.notification-category-tabs .btn{width:100%}}

/* RC32 operation-first guard: prevent duplicate commands without blocking the whole UI. */
.btn.is-action-busy,.icon-btn.is-action-busy,button.is-action-busy{cursor:progress!important;pointer-events:none;opacity:.72}
.btn.is-action-busy::before{content:"";display:inline-block;width:11px;height:11px;margin-right:7px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;vertical-align:-2px;animation:df-upload-spin .7s linear infinite}
button:disabled,.btn:disabled{cursor:not-allowed}
/* Every dialog must remain usable on short/mobile screens: header/footer stay visible, content scrolls inside. */
dialog[open]{display:flex;flex-direction:column;max-height:calc(100dvh - 20px);overflow:hidden;overscroll-behavior:contain}
dialog[open]>form{display:flex;flex:1 1 auto;flex-direction:column;width:100%;min-height:0;max-height:calc(100dvh - 80px);overflow:hidden}
dialog[open]>.dialog-head,dialog[open]>form>.dialog-head{flex:0 0 auto}
dialog[open]>.dialog-body,dialog[open]>form>.dialog-body{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
dialog[open]>.dialog-foot,dialog[open]>form>.dialog-foot{flex:0 0 auto;position:sticky;bottom:0;background:var(--panel);z-index:8}
.image-viewer-dialog[open]>.image-viewer-body{flex:1 1 auto;min-height:0;overflow:auto}
@media(max-width:820px){dialog[open]{max-height:calc(100dvh - 12px)!important}.dialog-body{max-height:calc(100dvh - 145px);overflow:auto!important}.dialog-foot{padding-bottom:max(12px,env(safe-area-inset-bottom))}}

/* RC33: non-blocking global action feedback and safer busy dialogs. */
.action-status-root{position:fixed;right:16px;bottom:70px;z-index:99;display:grid;gap:7px;pointer-events:none;max-width:min(360px,calc(100vw - 32px))}.action-status{display:flex;align-items:center;gap:8px;padding:8px 11px;border:1px solid var(--line);border-radius:999px;background:color-mix(in srgb,var(--panel) 94%,transparent);box-shadow:var(--shadow);font-size:12px;font-weight:750;color:var(--text);backdrop-filter:blur(10px)}.action-status-spin{width:11px;height:11px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:df-upload-spin .7s linear infinite;flex:0 0 auto}.toast.error{background:#7f1d1d}.dialog[data-df-dialog-busy="1"] .dialog-head,.dialog[data-df-dialog-busy="1"] .dialog-foot{user-select:none}.dialog[data-df-dialog-busy="1"] [data-close]{opacity:.45;cursor:not-allowed}@media(max-width:760px){.action-status-root{right:10px;left:10px;bottom:calc(78px + env(safe-area-inset-bottom));max-width:none}.action-status{justify-content:center;border-radius:10px}}

/* RC38 image corruption/degraded-view fallback */
.image-thumb.image-unavailable,.image-stage.image-unavailable{position:relative;display:grid;place-items:center;background:linear-gradient(135deg,#0a101d,#121a29);color:var(--muted);min-height:120px}.image-load-failed{display:none!important}.image-unavailable-note{display:grid;place-items:center;text-align:center;padding:18px;font-size:12px;line-height:1.5;color:var(--muted);pointer-events:none}.image-stage.image-unavailable .image-unavailable-note{font-size:13px;max-width:280px}.image-thumb.image-unavailable:hover{background:linear-gradient(135deg,#0c1422,#151f30)}

/* RC40 diagnostic reporting */
.diagnostic-prompt{position:fixed;right:16px;bottom:70px;z-index:110;display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:min(520px,calc(100vw - 32px));padding:12px 14px;border:1px solid color-mix(in srgb,var(--danger) 45%,var(--line));border-radius:14px;background:color-mix(in srgb,var(--panel) 96%,transparent);box-shadow:var(--shadow);backdrop-filter:blur(12px)}
.diagnostic-prompt .btn-row{flex-wrap:nowrap}.diagnostic-cards .card{min-width:0}.diagnostic-report{width:100%;min-height:440px;max-height:65vh;resize:vertical;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:12px;line-height:1.55;white-space:pre;overflow:auto;background:var(--bg);color:var(--text);border:1px solid var(--line);border-radius:10px;padding:12px}
@media(max-width:760px){.diagnostic-prompt{left:10px;right:10px;bottom:calc(82px + env(safe-area-inset-bottom));display:grid;gap:10px}.diagnostic-prompt .btn-row{justify-content:flex-end}.diagnostic-report{min-height:52vh;max-height:62vh;font-size:11px}}
.status-overview-cards .status-hero{border-width:1px}.status-overview-cards .status-good{background:color-mix(in srgb,var(--panel) 88%,#16a34a 12%)}.status-overview-cards .status-bad{background:color-mix(in srgb,var(--panel) 86%,var(--danger) 14%)}.status-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:12px}.status-issues{display:grid;gap:8px}.status-issue{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}.status-issue:last-child{border-bottom:0}.status-issue>div{min-width:0}.status-issue .badge{min-width:68px;text-align:center}.status-issue b,.status-issue .small{overflow-wrap:anywhere}
@media(max-width:980px){.status-grid{grid-template-columns:1fr}.status-overview-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.status-overview-cards{grid-template-columns:1fr}.system-status-list>div{align-items:flex-start}.system-status-list>div b{text-align:right;max-width:58%;overflow-wrap:anywhere}}

/* RC47 mobile real-device polish: native one-finger pan + visual viewport / keyboard-safe chrome. */
@media(max-width:820px){
 html,body,#appRoot,.erp,.main,.content,#pageRoot{touch-action:pan-y pinch-zoom!important}
 button,a,[role="button"],.dock-item,.nav-item,.nav-group-head{touch-action:manipulation}
 input,select,textarea{font-size:16px!important}
 .mobile-dock{transition:opacity .12s ease,visibility .12s ease,transform .12s ease}
 html.mobile-keyboard-open .mobile-dock{opacity:0!important;visibility:hidden!important;pointer-events:none!important;transform:translateY(110%)!important}
 html.mobile-keyboard-open body{padding-bottom:0!important}
 html.mobile-keyboard-open .content{padding-bottom:18px!important}
 html.mobile-keyboard-open .combo-menu{bottom:10px!important;max-height:min(38vh,calc(var(--df-visual-viewport-height,100dvh) - 120px))!important}
 html.mobile-keyboard-open .notification-pop{max-height:calc(var(--df-visual-viewport-height,100dvh) - var(--mobile-topbar-height,104px) - 22px)!important}
 html.mobile-keyboard-open dialog[open]{position:fixed!important;top:calc(var(--df-visual-viewport-top,0px) + 6px)!important;bottom:auto!important;max-height:calc(var(--df-visual-viewport-height,100dvh) - 12px)!important;margin:0 auto!important;left:9px!important;right:9px!important;width:auto!important;max-width:none!important}
 html.mobile-keyboard-open dialog[open]>form{max-height:calc(var(--df-visual-viewport-height,100dvh) - 24px)!important}
 html.mobile-keyboard-open dialog[open]>.dialog-body,html.mobile-keyboard-open dialog[open]>form>.dialog-body{max-height:calc(var(--df-visual-viewport-height,100dvh) - 150px)!important}
 .camera-wrap video,.camera-still{width:100%;height:auto;object-fit:contain}
}
@media(max-width:430px){
 .dock-item{min-height:50px!important;padding:4px 2px!important}
 .dock-item span{font-size:18px!important}.dock-item small{font-size:9px!important;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* RC54 mobile field-operation regression: cross-browser scanner + no-horizontal-pan guards. */
.barcode-decode-host{position:fixed!important;left:-10000px!important;top:0!important;width:480px!important;max-width:90vw!important;height:2px!important;overflow:hidden!important;opacity:.001!important;pointer-events:none!important}
.html5-camera-reader{width:100%;min-height:220px;background:#020617;color:#fff;overflow:hidden}
.html5-camera-reader video{display:block!important;width:100%!important;max-width:100%!important;height:auto!important;max-height:58dvh!important;object-fit:cover!important;background:#000}
.html5-camera-reader canvas{max-width:100%!important;height:auto!important}
.camera-status{position:relative;z-index:3;padding:8px 10px 0}
@media(max-width:820px){
 html,body,#appRoot,.erp,.main,.content,#pageRoot{max-width:100%;overflow-x:hidden!important}
 .topbar{position:sticky!important;top:0!important;z-index:75!important;transform:translateZ(0)}
 .content,.panel,.panel-body,.page-head,.scan-grid,.case-wizard-page,.case-items-stack,.case-item-card{min-width:0;max-width:100%}
 .barcode-mode-tabs{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;width:100%;gap:6px}
 .barcode-mode-tabs button{min-width:0!important;white-space:normal;line-height:1.25;padding:10px 5px}
 .scan-grid,.scan-status-cards{max-width:100%;overflow:hidden}
 .scan-input-row{width:100%;min-width:0}
 .scan-input-row input{min-width:0;width:100%}
 .camera-wrap{max-width:100%;overflow:hidden}
 .camera-guide{left:8%;right:8%;top:24%;height:38%}
 .html5-camera-reader{min-height:260px}
 .html5-camera-reader video{max-height:52dvh!important;object-fit:contain!important}
 .case-scan-btn{min-width:46px;min-height:46px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}
 .input-with-action>span{align-self:stretch}.input-with-action .case-scan-btn{height:100%}
 .mobile-dock{padding-bottom:max(5px,env(safe-area-inset-bottom))}
}
@media(max-width:430px){
 .barcode-mode-tabs button{font-size:12px}
 .scan-status-cards{grid-template-columns:1fr 1fr!important}
 .camera-guide{left:6%;right:6%}
}

/* Windows branch: scan-first barcode UX. */
.barcode-scanner-hero{border-color:color-mix(in srgb,var(--accent) 34%,var(--line))}
.barcode-camera-actions{flex-wrap:wrap}
.barcode-camera-actions .scan-big-btn{min-width:180px}
.scan-current-code{margin-top:12px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}
.scan-current-code-value{font-size:clamp(20px,3vw,34px);font-weight:900;line-height:1.15;word-break:break-all;margin:3px 0}
.barcode-manual-row{margin-top:12px}
.barcode-secondary-grid{grid-template-columns:1fr}
@media(max-width:760px){
 .barcode-page-head{margin-bottom:8px}
 .barcode-page-head p{font-size:12px}
 .barcode-scanner-hero{margin-top:0}
 .barcode-scanner-hero .panel-head{display:grid;grid-template-columns:1fr;gap:8px}
 .barcode-camera-actions{display:grid!important;grid-template-columns:1fr 1fr;width:100%}
 .barcode-camera-actions .btn{width:100%;min-width:0}
 .barcode-camera-actions .scan-big-btn{grid-column:1/-1;min-height:50px;font-size:16px}
 .scan-current-code{position:sticky;top:61px;z-index:12;box-shadow:0 5px 16px rgba(15,23,42,.08)}
 .scan-current-code-value{font-size:24px}
 .barcode-mode-tabs{grid-template-columns:1fr!important}
 .barcode-mode-tabs button{font-size:14px!important;min-height:46px}
 .barcode-secondary-grid{display:block}
}

/* 2.0.1-win.4 Scanner 2.0 */
.camera-live-controls{position:absolute;left:50%;bottom:38px;transform:translateX(-50%);z-index:5;display:flex;gap:8px;align-items:center;padding:6px 8px;border-radius:999px;background:rgba(2,6,23,.68);backdrop-filter:blur(8px)}
.camera-chip{min-width:42px;height:38px;border:1px solid rgba(255,255,255,.38);border-radius:999px;background:rgba(255,255,255,.1);color:#fff;font-weight:900;padding:0 12px}
.camera-chip.active{background:#fff;color:#111827;border-color:#fff}.camera-chip.hidden{display:none!important}
.scan-context-actions{margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.scan-action-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}
.scan-action-grid .btn{white-space:normal;min-height:46px}
.scan-ai-card{margin-top:16px;padding:14px;border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--panel2) 85%,#fff)}
.scan-ai-title{display:flex;align-items:center;justify-content:space-between;gap:10px;font-weight:900;margin-bottom:9px}
.scan-ai-text{font-size:13px;line-height:1.6}.scan-ai-provider{font-size:10px;color:var(--muted);font-weight:800;margin-bottom:4px;text-transform:uppercase}
.scan-signal{padding:7px 9px;border-radius:8px;background:var(--panel);border:1px solid var(--line);margin-top:6px}.scan-signal.high{border-color:#fecaca}.scan-signal.warn{border-color:#fed7aa}.scan-signal.info{border-color:#bfdbfe}
@media(max-width:760px){.scan-action-grid{grid-template-columns:1fr}.camera-live-controls{bottom:42px}.camera-chip{height:42px;min-width:46px}}

/* 2.0.1-win.7 consolidated workspace / warehouse visual system */
.workspace-page-head{padding-bottom:4px}
.workspace-page-head .eyebrow{font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--muted);margin-bottom:5px}
.warehouse-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:14px 0 18px}
.warehouse-summary-card{appearance:none;border:1px solid var(--line);background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 96%,white 4%),var(--panel));border-radius:16px;padding:16px 18px;text-align:left;display:grid;grid-template-columns:1fr auto;grid-template-areas:'label value' 'sub value';gap:2px 12px;cursor:pointer;color:inherit;box-shadow:0 8px 24px rgba(0,0,0,.08);transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}
.warehouse-summary-card:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:0 10px 26px rgba(0,0,0,.12)}
.warehouse-summary-card span{grid-area:label;font-weight:750}.warehouse-summary-card b{grid-area:value;font-size:28px;line-height:1}.warehouse-summary-card small{grid-area:sub;color:var(--muted)}
.badge.soft{background:color-mix(in srgb,var(--panel) 76%,var(--accent) 8%);border-color:color-mix(in srgb,var(--line) 70%,var(--accent) 30%)}
select option.direct-scrap-option{color:#d92d20;font-weight:800}
@media(max-width:900px){.warehouse-overview{grid-template-columns:1fr}.warehouse-summary-card{padding:14px 16px}}
/* 2.0.1-win.7 Android source build / release pipeline */
.mobile-build-primary{overflow:hidden}.mobile-signing-create{margin-top:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.mobile-build-flow{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0 0 14px}.mobile-build-flow span{padding:7px 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel2);font-size:12px;font-weight:800}.mobile-build-flow b{color:var(--muted)}.compact-notice{padding:9px 11px}.mobile-build-env{margin-top:12px;border-top:1px solid var(--line);padding-top:10px}.mobile-build-env summary,.mobile-direct-apk>summary{cursor:pointer;font-weight:800;list-style:none}.mobile-build-env summary::-webkit-details-marker,.mobile-direct-apk>summary::-webkit-details-marker{display:none}.mobile-direct-apk>summary{margin:0}.build-mini-progress{width:120px;max-width:28vw;height:6px;border-radius:999px;background:var(--line);overflow:hidden}.build-mini-progress i{display:block;height:100%;background:var(--accent);border-radius:inherit;transition:width .25s ease}.mobile-build-log{max-height:360px;overflow:auto;white-space:pre-wrap;word-break:break-word;background:#08101c;color:#dbe7f5;border:1px solid #243347;border-radius:10px;padding:12px;font:12px/1.55 ui-monospace,SFMono-Regular,Consolas,monospace}
@media(max-width:720px){.mobile-build-flow{gap:5px}.mobile-build-flow span{font-size:11px;padding:6px 8px}.mobile-build-flow b{font-size:11px}.build-mini-progress{width:82px}.mobile-build-log{max-height:46dvh}}

/* 2.0.1-win.8 Workspace — compact desktop work surface, aligned with app.27 */
body{background:radial-gradient(circle at 78% -10%,color-mix(in srgb,var(--accentSoft) 42%,transparent),transparent 34%),var(--bg)}
.workspace-dashboard{max-width:1500px;margin:0 auto;padding-bottom:28px}
.workspace-topline{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:2px 0 14px}.workspace-topline h1{font-size:30px;line-height:1.06;margin:2px 0 5px;letter-spacing:-.035em}.workspace-topline p{margin:0;color:var(--muted);font-size:13px}.workspace-eyebrow,.workspace-section-head span{font-size:10px;letter-spacing:.16em;font-weight:900;color:var(--muted)}.workspace-new-case{min-width:132px;box-shadow:0 8px 18px color-mix(in srgb,var(--accent) 22%,transparent)}
.workspace-focus{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:13px;padding:14px 16px;margin-bottom:12px;border:1px solid color-mix(in srgb,var(--accent) 22%,var(--line));border-radius:16px;background:linear-gradient(100deg,color-mix(in srgb,var(--accentSoft) 55%,var(--panel)),var(--panel) 52%);box-shadow:var(--shadow)}.workspace-focus-mark{width:31px;height:31px;display:grid;place-items:center;border-radius:10px;background:var(--accent);color:white;font-size:9px;box-shadow:0 6px 16px color-mix(in srgb,var(--accent) 28%,transparent)}.workspace-focus-copy{display:grid;gap:3px;min-width:0}.workspace-focus-copy span{font-size:11px;color:var(--muted);font-weight:800}.workspace-focus-copy b{font-size:15px;line-height:1.45;white-space:normal}.workspace-focus-open,.workspace-text-action{border:0;background:transparent;color:var(--accent);font-weight:850;cursor:pointer;padding:7px 8px}
.workspace-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px;margin-bottom:12px}.workspace-metrics>button{appearance:none;text-align:left;border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 97%,transparent);color:inherit;border-radius:14px;padding:13px 15px;display:grid;grid-template-columns:1fr auto;grid-template-areas:'label value' 'sub value';gap:2px 12px;cursor:pointer;transition:.16s ease;box-shadow:0 2px 8px rgba(15,23,42,.035)}.workspace-metrics>button:hover{transform:translateY(-1px);border-color:color-mix(in srgb,var(--accent) 40%,var(--line));box-shadow:0 9px 24px rgba(15,23,42,.07)}.workspace-metrics span{grid-area:label;font-size:12px;font-weight:850}.workspace-metrics b{grid-area:value;font-size:27px;line-height:1;align-self:center;font-variant-numeric:tabular-nums}.workspace-metrics small{grid-area:sub;color:var(--muted);font-size:11px;margin-top:3px}
.workspace-main-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(320px,.75fr);gap:12px;margin-bottom:12px}.workspace-section{border:1px solid var(--line);background:color-mix(in srgb,var(--panel) 98%,transparent);border-radius:16px;box-shadow:0 4px 14px rgba(15,23,42,.045);overflow:hidden}.workspace-section-head{min-height:59px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 15px;border-bottom:1px solid color-mix(in srgb,var(--line) 76%,transparent)}.workspace-section-head>div{display:grid;gap:2px}.workspace-section-head h2{font-size:16px;margin:0;letter-spacing:-.015em}.workspace-section-head>b{min-width:28px;height:28px;display:grid;place-items:center;padding:0 7px;border-radius:9px;background:var(--panel2);font-size:12px}.workspace-version{font-size:10px!important;letter-spacing:0!important;font-weight:800;color:var(--muted)}
.workspace-task-list{padding:5px 8px 9px}.workspace-task{width:100%;display:grid;grid-template-columns:31px 33px minmax(0,1fr) auto;align-items:center;gap:8px;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 68%,transparent);background:transparent;color:inherit;padding:9px 7px;text-align:left;cursor:pointer;border-radius:9px}.workspace-task:last-child{border-bottom:0}.workspace-task:hover{background:var(--panel2)}.workspace-task-index{font-size:10px;font-weight:900;color:var(--muted);font-variant-numeric:tabular-nums}.workspace-task-icon{width:30px;height:30px;border-radius:9px;display:grid;place-items:center;background:var(--panel2);font-size:13px;font-weight:900}.workspace-task.priority-critical .workspace-task-icon{background:var(--dangerSoft);color:var(--danger)}.workspace-task.priority-high .workspace-task-icon{background:var(--warnSoft);color:var(--warn)}.workspace-task-copy{display:grid;gap:2px;min-width:0}.workspace-task-copy b{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-task-copy small{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-task-meta{display:grid;justify-items:end;gap:2px;font-size:10px;font-weight:800;color:var(--muted);max-width:100px;text-align:right}.workspace-task-meta small{font-weight:650}.workspace-empty{padding:24px 16px;text-align:center;color:var(--muted);font-size:12px}
.workspace-highlight-list{padding:8px}.workspace-highlight{width:100%;border:0;background:transparent;color:inherit;display:grid;grid-template-columns:5px minmax(0,1fr) auto;gap:10px;align-items:center;text-align:left;padding:10px 8px;border-radius:10px;cursor:pointer}.workspace-highlight:hover{background:var(--panel2)}.workspace-highlight i{display:block;width:5px;height:35px;border-radius:99px;background:var(--line)}.workspace-highlight.danger i{background:var(--danger)}.workspace-highlight.warn i{background:var(--warn)}.workspace-highlight.soft i{background:#2563eb}.workspace-highlight.ok i{background:var(--ok)}.workspace-highlight span{display:grid;gap:3px}.workspace-highlight b{font-size:12px;line-height:1.35}.workspace-highlight small{font-size:11px;color:var(--muted);line-height:1.4}.workspace-highlight em{font-style:normal;color:var(--muted);font-size:20px}
.workspace-quick{margin-bottom:12px}.workspace-quick-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;padding:9px}.workspace-quick-card{border:1px solid transparent;background:var(--panel2);color:inherit;border-radius:12px;min-height:66px;padding:10px 11px;display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:9px;align-items:center;text-align:left;cursor:pointer;transition:.14s ease}.workspace-quick-card:hover{border-color:color-mix(in srgb,var(--accent) 35%,var(--line));background:color-mix(in srgb,var(--accentSoft) 35%,var(--panel2));transform:translateY(-1px)}.workspace-quick-card>span{width:32px;height:32px;display:grid;place-items:center;border-radius:9px;background:var(--panel);font-weight:900}.workspace-quick-card>div{display:grid;gap:2px;min-width:0}.workspace-quick-card b{font-size:12px}.workspace-quick-card small{font-size:10px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.workspace-quick-card em{font-style:normal;color:var(--muted);font-size:18px}
.workspace-lower-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(300px,.75fr);gap:12px}.workspace-feed,.workspace-recent{padding:5px 8px 9px}.workspace-feed>button,.workspace-recent>button{width:100%;display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:9px;align-items:center;border:0;border-bottom:1px solid color-mix(in srgb,var(--line) 65%,transparent);background:transparent;color:inherit;text-align:left;padding:9px 7px;cursor:pointer;border-radius:8px}.workspace-recent>button{grid-template-columns:minmax(0,1fr) auto}.workspace-feed>button:hover,.workspace-recent>button:hover{background:var(--panel2)}.workspace-feed span,.workspace-recent span{display:grid;gap:2px;min-width:0}.workspace-feed b,.workspace-recent b{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-feed small,.workspace-recent small{font-size:10px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.workspace-feed time,.workspace-recent time{font-size:10px;color:var(--muted);white-space:nowrap}.feed-dot{width:7px;height:7px;border-radius:50%;background:var(--line)}.feed-dot.critical{background:var(--danger);box-shadow:0 0 0 4px color-mix(in srgb,var(--dangerSoft) 80%,transparent)}.feed-dot.high{background:var(--warn)}.feed-dot.medium{background:#2563eb}.feed-dot.normal{background:var(--ok)}
/* Shared desktop polish: dense without feeling cramped. */
@media(min-width:821px){.content{padding:22px 24px 34px}.page-head{margin-bottom:14px}.panel{border-radius:15px;box-shadow:0 3px 12px rgba(15,23,42,.04)}.sidebar{box-shadow:8px 0 28px rgba(2,6,23,.08)}.nav-item,.nav-group-main{border-radius:9px}.topbar{background:color-mix(in srgb,var(--panel) 97%,transparent);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}}
@media(max-width:1080px){.workspace-main-grid,.workspace-lower-grid{grid-template-columns:1fr}.workspace-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.workspace-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:720px){.workspace-dashboard{padding-bottom:6px}.workspace-topline{align-items:flex-start}.workspace-topline h1{font-size:24px}.workspace-new-case{min-width:0}.workspace-focus{grid-template-columns:auto minmax(0,1fr);padding:12px}.workspace-focus-open{display:none}.workspace-metrics{gap:7px}.workspace-metrics>button{padding:11px 12px;border-radius:12px}.workspace-metrics b{font-size:23px}.workspace-main-grid,.workspace-lower-grid{gap:9px}.workspace-section{border-radius:13px}.workspace-section-head{min-height:52px;padding:10px 12px}.workspace-quick-grid{grid-template-columns:1fr 1fr;padding:7px;gap:6px}.workspace-quick-card{min-height:59px;padding:8px}.workspace-quick-card small{display:none}.workspace-task{grid-template-columns:25px 30px minmax(0,1fr);padding:9px 5px}.workspace-task-meta{display:none}.workspace-task-copy b{white-space:normal}.workspace-task-copy small{white-space:normal;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.workspace-feed>button{grid-template-columns:auto minmax(0,1fr)}.workspace-feed time{display:none}}
.workspace-pulse{border-top:1px solid color-mix(in srgb,var(--line) 70%,transparent);margin:4px 9px 9px;padding:11px 8px 5px;display:flex;align-items:center;gap:11px}.workspace-pulse>.repair-ring.compact{width:54px;height:54px;flex:0 0 54px}.workspace-pulse>.repair-ring.compact:after{inset:6px}.workspace-pulse>.repair-ring.compact b{font-size:11px}.workspace-pulse>.repair-ring.compact span{font-size:7px}.workspace-pulse>div:last-child{display:grid;gap:3px}.workspace-pulse>div:last-child>b{font-size:11px}.workspace-pulse>div:last-child>small{font-size:10px;color:var(--muted)}

/* win.10 role simulation */
.role-simulation-banner{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:9px 18px;border-bottom:1px solid var(--line);background:rgba(245,158,11,.12)}
.role-simulation-banner>div{display:flex;align-items:center;gap:12px;min-width:0}.role-simulation-banner span{font-size:12px;color:var(--muted)}
@media(max-width:820px){.role-simulation-banner{padding:8px 10px}.role-simulation-banner>div{display:block}.role-simulation-banner span{display:block;margin-top:2px}.perm-description{max-width:none}}

/* 2.0.1-win.12 — UI density / alignment polish */
@media(min-width:821px){
  .search-type-row{
    display:grid!important;
    grid-template-columns:repeat(auto-fill,minmax(108px,146px))!important;
    justify-content:start!important;
    align-items:stretch!important;
    gap:7px!important;
  }
  .search-type-row .select-card{
    min-height:38px!important;
    padding:7px 10px!important;
    border-radius:9px!important;
  }
  .search-type-row .select-card span{font-size:12px!important}
  .search-type-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:2px}
}
.notification-filter-grid{align-items:stretch!important}
.notification-filter-grid>.field{margin:0!important;display:grid;grid-template-rows:auto minmax(40px,auto) auto;align-content:start}
.notification-filter-grid>.field>input,.notification-filter-grid>.field>select{min-height:40px}
.notification-unread-toggle{min-height:40px!important;align-self:end!important;margin:0!important;padding:0 10px!important;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}
.notification-filter-grid>.badge{align-self:end!important;min-height:40px;display:inline-flex;align-items:center;justify-content:center;padding:0 12px}
.notification-row{grid-template-columns:minmax(0,1fr) minmax(156px,220px)!important;align-items:start}
.notification-actions{display:grid!important;grid-template-columns:1fr!important;width:100%;align-content:start}
.notification-actions .btn{width:100%;justify-content:center}
@media(max-width:820px){
  .notification-row{grid-template-columns:1fr!important}
  .notification-actions{display:flex!important;width:auto}
  .notification-actions .btn{width:auto}
}
@media(max-width:560px){
  .search-type-row{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:6px!important}
  .search-type-row .select-card{min-height:40px!important;padding:7px 9px!important}
  .notification-unread-toggle{align-self:stretch!important}
  .notification-filter-grid>.badge{justify-self:stretch}
}

/* 2.0.1-win.13 — unified batch operation selector */
.batch-mode-panel{position:sticky;top:74px;z-index:8;margin-bottom:12px}.batch-mode-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:8px}.batch-mode-tile{min-height:54px;border:1px solid var(--line);border-radius:11px;background:var(--panel);color:var(--text);padding:10px 12px;text-align:left;font:inherit;font-weight:800;cursor:pointer;transition:.15s ease}.batch-mode-tile:hover{border-color:var(--accent);background:var(--panel-2)}.batch-mode-tile.active{border-color:var(--accent);background:var(--accent-soft);box-shadow:inset 0 0 0 1px var(--accent)}.batch-mode-tile span{display:block;line-height:1.25}.batch-card-stage{min-width:0}.batch-operation-card{margin-bottom:0}.batch-operation-card.hidden{display:none!important}.batch-target-box{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2);display:grid;gap:12px}.batch-target-box>.btn{justify-self:start}.bulk-select-core{border:1px solid var(--line);border-radius:14px;background:var(--panel);overflow:hidden}.bulk-select-title{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 14px;border-bottom:1px solid var(--line)}.bulk-select-title>div{display:grid;gap:3px}.bulk-select-filters{display:grid;grid-template-columns:minmax(260px,1fr) minmax(130px,180px) 100px;gap:10px;padding:12px 14px;border-bottom:1px solid var(--line);background:var(--panel-2)}.bulk-select-filters .field{margin:0}.bulk-select-layout{display:grid;grid-template-columns:minmax(220px,280px) minmax(0,1fr);min-height:420px}.bulk-select-layout.no-category{grid-template-columns:minmax(0,1fr);min-height:320px}.bulk-category-panel{padding:12px;border-right:1px solid var(--line);background:var(--panel-2);min-width:0}.bulk-category-panel .field{margin-bottom:9px}.bulk-category-tree{display:flex;flex-direction:column;gap:4px;max-height:430px;overflow:auto;padding-right:2px}.bulk-category-tree.target{max-height:300px;border:1px solid var(--line);border-radius:10px;padding:7px;background:var(--panel)}.bulk-category-node{width:100%;display:flex;align-items:center;justify-content:space-between;gap:8px;text-align:left;border:1px solid transparent;background:transparent;color:var(--text);border-radius:8px;padding:7px 8px 7px calc(8px + var(--cat-depth,0)*14px);cursor:pointer;min-height:34px}.bulk-category-node:hover{background:var(--panel);border-color:var(--line)}.bulk-category-node.active{background:var(--accent-soft);border-color:var(--accent);color:var(--text)}.bulk-category-node span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.bulk-category-node small{font-size:11px;color:var(--muted);font-variant-numeric:tabular-nums}.bulk-result-panel{min-width:0;display:flex;flex-direction:column}.bulk-select-toolbar{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:9px 10px;border-bottom:1px solid var(--line)}.bulk-select-toolbar .small{margin-left:auto}.bulk-select-table{flex:1;max-height:470px}.bulk-select-table table{width:100%;min-width:660px}.bulk-select-table th{position:sticky;top:0;z-index:1;background:var(--panel-2)}.bulk-select-table tr:has(input[type="checkbox"]:checked){background:var(--accent-soft)}.bulk-check-col{width:44px;text-align:center}.bulk-check-col input{width:18px;height:18px}.bulk-select-pagination{padding:8px 10px}.bulk-target-category{display:grid;grid-template-columns:minmax(240px,1fr) minmax(200px,.7fr);gap:10px}.bulk-target-category>.bulk-category-tree{grid-column:1/-1}.batch-selected-editor{border:1px solid var(--line);border-radius:10px;background:var(--panel);overflow:hidden}.batch-editor-head{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 11px;border-bottom:1px solid var(--line)}.batch-qty-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:0}.batch-qty-list label{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:8px 10px;border-bottom:1px solid var(--line);border-right:1px solid var(--line)}.batch-qty-list label>span{display:grid;min-width:0}.batch-qty-list label b,.batch-qty-list label small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-qty-list label small{color:var(--muted)}.batch-qty-list input{width:88px;flex:0 0 88px}.field.compact{max-width:210px}
@media(max-width:900px){.batch-mode-panel{position:static}.batch-mode-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.batch-mode-tile{min-height:50px;padding:9px 10px}.bulk-select-filters{grid-template-columns:1fr 1fr}.bulk-select-filters .grow{grid-column:1/-1}.bulk-select-layout{grid-template-columns:220px minmax(0,1fr)}.bulk-col-category{display:none}.bulk-select-table table{min-width:500px}}
@media(max-width:720px){.bulk-select-title{align-items:flex-start}.bulk-select-filters{grid-template-columns:1fr}.bulk-select-filters .grow{grid-column:auto}.bulk-select-layout{grid-template-columns:1fr;min-height:0}.bulk-category-panel{border-right:0;border-bottom:1px solid var(--line)}.bulk-category-tree{max-height:220px}.bulk-select-toolbar{position:sticky;top:0;background:var(--panel);z-index:2}.bulk-select-toolbar .small{width:100%;margin-left:0}.bulk-select-table{max-height:52vh}.bulk-select-table table{min-width:0}.bulk-col-kind,.bulk-col-erp,.bulk-col-category{display:none}.bulk-target-category{grid-template-columns:1fr}.bulk-target-category>.bulk-category-tree{grid-column:auto}.batch-qty-list{grid-template-columns:1fr}.batch-target-box{padding:11px}.batch-target-box>.btn{width:100%;justify-content:center}.field.compact{max-width:none}}
.batch-shipment-list{display:grid;gap:0}.batch-shipment-row{display:grid;grid-template-columns:minmax(220px,1.3fr) minmax(150px,.8fr) 90px minmax(180px,1fr);gap:8px;align-items:center;padding:8px 10px;border-bottom:1px solid var(--line)}.batch-shipment-row:last-child{border-bottom:0}.batch-shipment-row>span{display:grid;min-width:0}.batch-shipment-row b,.batch-shipment-row small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.batch-shipment-row small{color:var(--muted)}
@media(max-width:720px){.batch-shipment-row{grid-template-columns:1fr 86px}.batch-shipment-row>span{grid-column:1/-1}.batch-shipment-row input[data-ship-warehouse],.batch-shipment-row input[data-ship-recipient]{grid-column:1/-1}}

/* win.14 readability polish */
.auth-meta.auth-version-only{justify-content:center;font-size:12px}
.case-stock-warning{font-size:14px!important;line-height:1.55;font-weight:800}
.warning-dialog .notice.error{font-size:13px;line-height:1.55;font-weight:700}
.knowledge-tree-toolbar{display:flex;gap:8px;align-items:end;justify-content:space-between;margin-bottom:10px}
.knowledge-tree-toolbar .field{margin:0;flex:1}
.knowledge-tree-entry{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;align-items:center}
.knowledge-tree-entry .category-tree-row{width:100%}
@media(max-width:620px){.knowledge-tree-toolbar{align-items:stretch;flex-direction:column}.knowledge-tree-entry{grid-template-columns:minmax(0,1fr) auto}.case-stock-warning{font-size:14px!important}}

/* win.21 — Product management uses a fixed dense grid so long names/barcodes never stretch individual rows. */
.product-management-table{table-layout:fixed;min-width:1540px;width:100%}
.product-management-table th,.product-management-table td{height:62px;max-height:62px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}
.product-management-table th:nth-child(1){width:86px}.product-management-table th:nth-child(2){width:210px}.product-management-table th:nth-child(3){width:210px}.product-management-table th:nth-child(4){width:120px}.product-management-table th:nth-child(5){width:180px}.product-management-table th:nth-child(6){width:150px}.product-management-table th:nth-child(7){width:190px}.product-management-table th:nth-child(8){width:90px}.product-management-table th:nth-child(9){width:190px}.product-management-table th:nth-child(10){width:92px}.product-management-table th:nth-child(11){width:190px}
.product-management-table td>div:not(.btn-row){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.product-management-table .btn-row{flex-wrap:nowrap}
@media(max-width:820px){.product-management-table{min-width:1320px}.product-management-table th,.product-management-table td{height:58px;max-height:58px}}

/* win.24 — unified drag & drop upload */
.df-drop-upload{border:2px dashed var(--line,#cbd5e1);border-radius:12px;padding:14px 16px;margin:10px 0;min-height:72px;display:flex;align-items:center;justify-content:center;text-align:center;cursor:pointer;background:var(--panel,#fff);transition:border-color .15s,background .15s,transform .15s}.df-drop-upload:hover,.df-drop-upload:focus-visible{border-color:var(--primary,#2563eb);outline:none}.df-drop-upload.is-dragover{border-color:var(--primary,#2563eb);background:rgba(37,99,235,.07);transform:translateY(-1px)}.df-drop-upload-title{font-weight:700}.df-drop-upload-hint{font-size:12px;opacity:.7;margin-top:3px}.df-drop-upload-files{font-size:12px;margin-top:5px;word-break:break-all}.df-drop-upload.is-disabled{opacity:.55;cursor:not-allowed}.df-drop-upload input{display:none!important}@media(max-width:720px){.df-drop-upload{min-height:58px;padding:11px 12px}.df-drop-upload-title{font-size:13px}}


/* win.68 — axis-owned scrolling. Wide tables own X; the document owns Y. */
.table-wrap{overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;overscroll-behavior-y:auto;-webkit-overflow-scrolling:touch;}
.dialog-body,.batch-card-stage,[data-scroll-region]{overscroll-behavior:contain;}
.panel-body{overscroll-behavior-y:auto;}
@media (pointer:fine){.dialog-body,.batch-card-stage,[data-scroll-region]{overscroll-behavior-block:contain;}.table-wrap,.panel-body{overscroll-behavior-block:auto;}}

/* win.37 document scroll fallback: pages without their own vertical scroller use the whole viewport/document. */
html{min-height:100%;height:auto;overflow-x:hidden;overflow-y:auto}
body{min-height:100vh;height:auto;overflow-x:hidden;overflow-y:visible}
#appRoot,.erp,.main,.content,#pageRoot{height:auto;min-height:0;overflow-y:visible}
.main{min-height:100vh}.content{min-height:calc(100vh - 66px)}
.dialog-body,.notification-pop,.combo-menu,.ai-chat-log{overscroll-behavior:contain}.category-tree-list{overscroll-behavior-y:auto}

.ai-sources{display:grid;gap:6px;margin-top:9px;padding-top:8px;border-top:1px solid var(--line)}.ai-source-link{display:grid;gap:2px;padding:7px 9px;border:1px solid var(--line);border-radius:9px;background:var(--panel2);color:inherit;text-decoration:none}.ai-source-link:hover{border-color:color-mix(in srgb,var(--accent) 55%,var(--line))}.ai-source-link span{font-size:12px;font-weight:800}.ai-source-link small{font-size:10px;line-height:1.45;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
[data-batch-grid="repairHistoryGrid"] .batch-grid-head,[data-batch-grid="repairHistoryGrid"] .batch-grid-row{--batch-cols:7;min-width:1320px}


/* win.69 global scroll ownership audit — horizontal regions never steal page Y; bounded data regions explicitly own Y on desktop. */
.table-wrap.science-table,.table-wrap.inventory-import-match-table,.table-wrap.inventory-import-preview,.table-wrap.bulk-select-table{overflow-y:auto;overscroll-behavior-y:auto;}
.batch-grid-table,.update-path,.top-actions,.page-head .actions,.page-head .btn-row,.filters .btn-row{overscroll-behavior-x:contain;overscroll-behavior-y:auto;}
@media(max-width:820px){
 .batch-grid-table,.update-path,.science-table,.inventory-import-match-table,.inventory-import-preview,.bulk-select-table{max-height:none!important;overflow-y:visible!important;overscroll-behavior-y:auto!important;touch-action:pan-x pan-y!important;}
 .table-wrap.mobile-scroll-wrap{overflow-x:auto!important;overflow-y:visible!important;touch-action:pan-x pan-y!important;overscroll-behavior-x:contain!important;overscroll-behavior-y:auto!important;}
}

/* win.71 — darkFlash ERP v3.16 Design Token Authority.
   Legacy aliases remain for existing components; new code must consume semantic tokens. */
:root,html[data-theme="light"]{
  --df-color-background:#F4F6F8;--df-color-surface:#FFFFFF;--df-color-card:#FFFFFF;--df-color-card-hover:#F0F2F5;--df-color-border:#D8DEE6;
  --df-color-text-primary:#111418;--df-color-text-secondary:#66707F;--df-color-brand-primary:#FF6A00;--df-color-brand-hover:#FF7A22;--df-color-brand-soft:rgba(255,106,0,.10);
  --df-status-success:#15803d;--df-status-warning:#d97706;--df-status-error:#dc2626;--df-status-info:#66707F;
  --bg:var(--df-color-background);--panel:var(--df-color-card);--panel2:var(--df-color-surface);--line:var(--df-color-border);--text:var(--df-color-text-primary);--muted:var(--df-color-text-secondary);
  --side:#10141A;--accent:var(--df-color-brand-primary);--accent2:var(--df-color-brand-hover);--accentSoft:var(--df-color-brand-soft);--ok:var(--df-status-success);--warn:var(--df-status-warning);--danger:var(--df-status-error);
}
html[data-theme="dark"]{
  --df-color-background:#0A0D12;--df-color-surface:#10141A;--df-color-card:#161B22;--df-color-card-hover:#1B212A;--df-color-border:#2A3039;
  --df-color-text-primary:#F5F7FA;--df-color-text-secondary:#97A0AE;--df-color-brand-primary:#FF6A00;--df-color-brand-hover:#FF7A22;--df-color-brand-soft:rgba(255,106,0,.14);
  --df-status-success:#22a06b;--df-status-warning:#d99a32;--df-status-error:#e5484d;--df-status-info:#97A0AE;
  --bg:var(--df-color-background);--panel:var(--df-color-card);--panel2:var(--df-color-surface);--line:var(--df-color-border);--text:var(--df-color-text-primary);--muted:var(--df-color-text-secondary);
  --side:#0A0D12;--accent:var(--df-color-brand-primary);--accent2:var(--df-color-brand-hover);--accentSoft:var(--df-color-brand-soft);--ok:var(--df-status-success);--warn:var(--df-status-warning);--danger:var(--df-status-error);
}
html[data-theme="dark"] body,html[data-theme="dark"] #appRoot,html[data-theme="dark"] .erp,html[data-theme="dark"] .main,html[data-theme="dark"] .content{background:var(--df-color-background)!important}
html[data-theme="dark"] input,html[data-theme="dark"] select,html[data-theme="dark"] textarea{background:var(--df-color-surface);color:var(--df-color-text-primary);border-color:var(--df-color-border)}
.logo{background:linear-gradient(135deg,var(--df-color-brand-primary),var(--df-color-brand-hover));box-shadow:0 8px 20px color-mix(in srgb,var(--df-color-brand-primary) 24%,transparent)}
.workspace-highlight.soft i,.feed-dot.medium{background:var(--df-status-info)}
.df-drop-upload:hover,.df-drop-upload:focus-visible,.df-drop-upload.is-dragover{border-color:var(--df-color-brand-primary)}
.df-drop-upload.is-dragover{background:var(--df-color-brand-soft)}

/* Windows UI P1: integrated case workspace */
.case-workspace-tabs{display:flex;gap:6px;overflow-x:auto;overscroll-behavior-x:contain;padding:4px 2px 10px;margin:-2px 0 4px;scrollbar-width:thin}
.case-workspace-tabs button{flex:0 0 auto;border:1px solid var(--line);background:var(--panel);color:var(--muted);border-radius:999px;padding:8px 12px;font:inherit;font-size:12px;font-weight:800;cursor:pointer}
.case-workspace-tabs button:hover{border-color:var(--accent);color:var(--text)}
.case-workspace-tabs button.active{background:var(--accent);border-color:var(--accent);color:#fff}
.case-workspace-panel[hidden]{display:none!important}
.case-workspace-content{min-width:0}
.case-workspace-panel>.panel:last-child{margin-bottom:0}
.case-timeline{display:grid;gap:0}
.case-timeline-row{display:grid;grid-template-columns:18px minmax(0,1fr);gap:8px;position:relative;padding:5px 0 16px}
.case-timeline-row:before{content:"";position:absolute;left:7px;top:19px;bottom:-1px;width:1px;background:var(--line)}
.case-timeline-row:last-child:before{display:none}
.case-timeline-dot{width:9px;height:9px;border-radius:50%;background:var(--accent);margin:5px 0 0 3px;z-index:1}
.case-timeline-row>div{display:grid;gap:3px;min-width:0}
.case-timeline-row small{color:var(--text);white-space:normal}
.case-timeline-row em{font-style:normal;font-size:11px;color:var(--muted)}
@media(max-width:760px){.case-workspace-tabs{margin-left:-2px;margin-right:-2px;padding-bottom:7px}.case-workspace-tabs button{padding:7px 10px}.case-workspace-panel .table-wrap{max-height:none}}

/* 2.1.31 assistant viewport closure */
@media(max-width:820px){.ai-chat-shell{height:calc(100dvh - 205px);min-height:320px;max-height:none}.ai-chat-log{overscroll-behavior:contain}.ai-compose-shell{bottom:0}}

/* 2.1.34 image viewer zoom + editable metadata */
.image-stage{position:relative;min-width:0;min-height:0;align-content:center;justify-content:center}
.image-zoom-canvas{min-width:100%;min-height:100%;display:grid;place-items:center;padding:0;overflow:visible}
.image-zoom-canvas img{display:block;cursor:zoom-in;user-select:none;-webkit-user-drag:none}
.image-zoom-toolbar{position:sticky;left:50%;bottom:8px;transform:translateX(-50%);z-index:3;display:flex;align-items:center;justify-content:center;gap:6px;width:max-content;max-width:calc(100% - 16px);padding:6px 8px;border:1px solid rgba(255,255,255,.2);border-radius:10px;background:rgba(5,9,19,.88);backdrop-filter:blur(6px);box-shadow:0 5px 18px rgba(0,0,0,.28)}
.image-zoom-toolbar .btn{min-width:42px;background:#fff;color:#111;border-color:#d5d9e0}
.image-zoom-toolbar .badge{min-width:58px;justify-content:center;background:#fff;color:#111}
.image-meta-editor{display:grid!important;gap:10px!important;padding:12px!important;border:1px solid var(--line)!important;border-radius:10px;background:var(--panel2)}
.image-meta-editor label{display:grid;gap:5px}
.image-meta-editor label b{font-size:11px;color:var(--muted)}
.image-meta-editor input,.image-meta-editor textarea{width:100%}
.image-meta-editor textarea{resize:vertical;min-height:78px}
@media(max-width:760px){.image-zoom-toolbar{bottom:6px}.image-stage{min-height:46vh}.image-viewer-body{overflow:auto}.image-meta-editor textarea{min-height:72px}}

/* 2.1.35 case workspace grouping: four work-oriented sections, related cards stay together */
.case-workspace-card-stack{display:grid;gap:12px;min-width:0}
.case-workspace-card-stack>.panel{margin:0;min-width:0}
.case-workspace-card-stack h4{margin:0;font-size:13px}
@media(max-width:760px){.case-workspace-card-stack{gap:10px}}

/* 2.1.36 Mobile Web Shell: Android/iOS default APK-like browser mode; desktop/full mode unchanged. */
.mobile-app-header{display:none}
.device-ui-switch{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin:10px 10px 14px;padding:4px;border:1px solid #334155;border-radius:12px;background:#0b1118}
.device-ui-switch button{border:0;border-radius:9px;padding:9px 8px;background:transparent;color:#9ca3af;font-weight:800;cursor:pointer}
.device-ui-switch button.active{background:#f97316;color:#fff;box-shadow:0 2px 8px rgba(249,115,22,.28)}
.mobile-drawer-profile,.mobile-drawer-section{display:none}

html.df-mobile-simple{--bg:#0b1118;--panel:#0f151d;--panel2:#151d28;--line:#293445;--text:#eef2f7;--muted:#99a4b3;--side:#0d1117;--accent:#ff7a1a;--accentSoft:#2d1c10;color-scheme:dark;background:#0b1118}
html.df-mobile-simple body{background:#0b1118;color:var(--text);padding-bottom:calc(70px + env(safe-area-inset-bottom))}
html.df-mobile-simple .erp,html.df-mobile-simple .main{margin-left:0!important;min-height:100dvh;background:#0b1118}
html.df-mobile-simple .sidebar{width:min(86vw,330px);transform:translateX(-100%)!important;background:#0f1319;z-index:90;box-shadow:14px 0 36px rgba(0,0,0,.46)}
html.df-mobile-simple .erp.nav-open .sidebar{transform:translateX(0)!important}
html.df-mobile-simple .erp.nav-open:after{content:"";position:fixed;inset:0;background:rgba(0,0,0,.58);z-index:80}
html.df-mobile-simple .brand{display:none}
html.df-mobile-simple .nav{padding:12px 8px calc(24px + env(safe-area-inset-bottom))}
html.df-mobile-simple .nav-group{display:none}
html.df-mobile-simple .mobile-drawer-profile{display:flex;flex-direction:column;gap:3px;padding:8px 14px 16px;border-bottom:1px solid #283240;margin-bottom:8px}
html.df-mobile-simple .mobile-drawer-profile b{font-size:18px;color:#fff}
html.df-mobile-simple .mobile-drawer-profile small{font-size:12px;color:#98a3b1}
html.df-mobile-simple .mobile-drawer-section{display:block;padding:2px 6px 8px}
html.df-mobile-simple .mobile-drawer-section h4{margin:10px 7px 5px;color:#7f8a99;font-size:11px;letter-spacing:.08em}
html.df-mobile-simple .mobile-drawer-row{width:100%;min-height:50px;display:grid;grid-template-columns:38px minmax(0,1fr) 24px;align-items:center;border:0;border-radius:13px;background:transparent;color:#dce3eb;text-align:left;padding:5px 8px;cursor:pointer}
html.df-mobile-simple .mobile-drawer-row>span{font-size:20px;text-align:center;color:#c6ced8}
html.df-mobile-simple .mobile-drawer-row>b{font-size:14px}
html.df-mobile-simple .mobile-drawer-row>i{font-style:normal;color:#6d7888;font-size:22px;text-align:center}
html.df-mobile-simple .mobile-drawer-row.active{background:#1a2533;color:#fff;box-shadow:inset 3px 0 0 #ff7a1a}
html.df-mobile-simple .device-ui-switch{display:grid}
html.df-mobile-simple .topbar{display:none!important}
html.df-mobile-simple .mobile-app-header{height:72px;display:grid;grid-template-columns:54px minmax(0,1fr) 54px;align-items:center;position:sticky;top:0;z-index:75;padding:calc(6px + env(safe-area-inset-top)) 9px 6px;background:#0d1117;border-bottom:1px solid #232d3a;box-sizing:content-box}
html.df-mobile-simple .mobile-app-icon{position:relative;border:0;background:transparent;color:#eef2f7;border-radius:12px;min-width:48px;min-height:48px;font-size:23px;cursor:pointer}
html.df-mobile-simple .mobile-app-bell{color:#ff7a1a}
html.df-mobile-simple .mobile-app-brand{border:0;background:transparent;color:#fff;display:flex;align-items:center;justify-content:center;gap:8px;font-weight:900;font-size:20px;letter-spacing:.01em;min-width:0}
html.df-mobile-simple .mobile-app-brand img{width:32px;height:32px;object-fit:contain}
html.df-mobile-simple .mobile-app-brand span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.df-mobile-simple .mobile-app-header .notification-count{position:absolute;right:3px;top:3px;min-width:18px;height:18px;padding:0 4px;border-radius:999px;background:#ef4444;color:#fff;font-size:10px;line-height:18px;text-align:center;font-weight:900}
html.df-mobile-simple .content{padding:12px 11px 20px;max-width:760px;margin:0 auto;width:100%;box-sizing:border-box}
html.df-mobile-simple .page-head{margin-bottom:10px}
html.df-mobile-simple .page-head h1{font-size:23px;line-height:1.25}
html.df-mobile-simple .panel,html.df-mobile-simple .card,html.df-mobile-simple .workspace-section{background:#111924;border-color:#293445;border-radius:15px;box-shadow:none}
html.df-mobile-simple input,html.df-mobile-simple select,html.df-mobile-simple textarea{background:#0d1520;color:#eef2f7;border-color:#334155}
html.df-mobile-simple .btn:not(.primary){background:#172131;color:#e8edf3;border-color:#344154}
html.df-mobile-simple .mobile-dock{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));position:fixed;left:0;right:0;bottom:0;z-index:76;background:rgba(13,17,23,.98);border-top:1px solid #27313e;padding:5px 6px max(6px,env(safe-area-inset-bottom));backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px)}
html.df-mobile-simple .dock-item{border:0;background:transparent;min-height:54px;color:#8590a0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:11px}
html.df-mobile-simple .dock-item span{font-size:22px;line-height:1}
html.df-mobile-simple .dock-item small{font-size:10px;font-weight:800}
html.df-mobile-simple .dock-item.active{color:#ff7a1a;background:#1b2028}
html.df-mobile-simple .dock-item[disabled]{opacity:.38}
html.df-mobile-simple.mobile-keyboard-open .mobile-dock,html.df-mobile-simple .mobile-keyboard-open .mobile-dock{opacity:0!important;visibility:hidden!important;pointer-events:none!important;transform:translateY(110%)!important}
html.df-mobile-simple .route-strip,html.df-mobile-simple .sidebar-open{display:none!important}
html.df-mobile-simple .toast-root{bottom:calc(78px + env(safe-area-inset-bottom))}
html.df-mobile-simple dialog[open]{max-width:calc(100vw - 18px)}
@media(orientation:landscape){html.df-mobile-simple .mobile-app-header{height:58px}html.df-mobile-simple .content{max-width:900px}}

/* 2.1.37 photo viewer: swipe-first, menu actions, no visible zoom controls */
.photo-viewer-dialog{width:min(1040px,calc(100% - 12px));height:min(92vh,920px);max-width:none;max-height:none;padding:0;background:#07090c;border:1px solid #242a32;border-radius:16px;overflow:hidden;color:#fff}
.photo-viewer-dialog::backdrop{background:rgba(0,0,0,.82)}
.photo-viewer-shell{height:100%;display:flex;flex-direction:column;min-height:0;background:#07090c}
.photo-viewer-head{height:58px;display:grid;grid-template-columns:48px minmax(0,1fr) 48px;align-items:center;padding:6px 8px;border-bottom:1px solid rgba(255,255,255,.1);background:rgba(9,12,16,.96);position:relative;z-index:5}
.photo-viewer-title{text-align:center;min-width:0;display:grid;gap:2px}.photo-viewer-title b,.photo-viewer-title span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.photo-menu-wrap{position:relative;justify-self:end}.photo-menu-button{font-size:24px;line-height:1}.photo-menu{position:absolute;right:0;top:44px;z-index:20;min-width:190px;padding:6px;background:#151a21;border:1px solid #343c48;border-radius:12px;box-shadow:0 18px 42px rgba(0,0,0,.45)}
.photo-menu[hidden]{display:none}.photo-menu button{display:block;width:100%;border:0;background:transparent;color:#fff;text-align:left;padding:11px 12px;border-radius:8px;font:inherit}.photo-menu button:hover,.photo-menu button:focus{background:#242b35}.photo-menu .danger-text{color:#ffaaa5}
.photo-viewer-stage{flex:1 1 auto;min-height:0;display:grid;place-items:center;overflow:auto;overscroll-behavior:contain;background:#020305;touch-action:pan-y pinch-zoom;user-select:none;-webkit-user-select:none}
.photo-viewer-stage img{display:block;max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;cursor:zoom-in}.photo-viewer-stage.is-zoomed{place-items:start center;touch-action:pan-x pan-y}.photo-viewer-stage.is-zoomed img{cursor:zoom-out}
.photo-viewer-caption{min-height:34px;display:flex;align-items:center;justify-content:center;padding:6px 12px;color:#aab2bd;font-size:12px;text-align:center;border-top:1px solid rgba(255,255,255,.08)}
.image-context-dialog .image-item-context-fields{display:grid;gap:12px}.image-context-dialog .image-item-context-fields label{display:grid;gap:6px}.image-context-dialog textarea{min-height:88px}
.case-preview-shared-photos{margin:12px 0}.case-confirm-photo-grid{grid-template-columns:repeat(auto-fill,minmax(92px,1fr))!important}.case-confirm-photo-grid .case-photo-preview{min-height:78px}.case-confirm-photo-grid .case-photo-preview img{height:78px;object-fit:cover}
@media(max-width:760px){.photo-viewer-dialog{width:100vw;height:100dvh;max-height:100dvh;border:0;border-radius:0}.photo-viewer-head{padding-top:max(6px,env(safe-area-inset-top));height:calc(56px + env(safe-area-inset-top))}.photo-viewer-caption{padding-bottom:max(7px,env(safe-area-inset-bottom))}.photo-menu{right:2px;top:46px}.case-confirm-photo-grid{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
/* 2.1.37 shared Case Item editing */
.case-edit-item-list{display:grid;gap:7px;margin-top:5px}.case-edit-item-button{display:grid!important;grid-template-columns:minmax(145px,.8fr) minmax(150px,1fr) minmax(180px,1.3fr);align-items:center;text-align:left!important;gap:10px;width:100%}.case-edit-item-button small{color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@media(max-width:820px){.case-edit-item-button{grid-template-columns:1fr}.case-edit-item-button small{white-space:normal}}


/* KYYO UI HOTFIX6 — UI-only density + narrow-screen readability */
.inventory-main-table,.ledger-table,.case-list-table{width:100%}
.inventory-main-table td,.inventory-main-table th,.ledger-table td,.ledger-table th,.case-list-table td,.case-list-table th{vertical-align:middle}
.inventory-main-table td:last-child,.ledger-table td:last-child,.case-list-table td:last-child{white-space:nowrap}
@media(max-width:1100px){
  .product-management-table-v2{min-width:1180px}
  .product-management-table-v2 .product-col-external,.product-management-table-v2 .product-col-kyyo,.product-management-table-v2 .product-col-threshold{display:none}
  .product-management-table-v2 th:nth-child(4),.product-management-table-v2 th:nth-child(9),.product-management-table-v2 th:nth-child(10),.product-management-table-v2 th:nth-child(12){display:none}
  .case-list-table .case-col-compensation,.case-list-table .case-col-date{display:none}
  .ledger-table .ledger-col-ref,.ledger-table .ledger-col-source{display:none}
  .ledger-table th:nth-child(10),.ledger-table th:nth-child(12){display:none}
}
@media(max-width:820px){
  .inventory-main-table{min-width:680px}
  .inventory-main-table .inventory-col-code,.inventory-main-table .inventory-col-updated{display:none}
  .inventory-main-table th:nth-child(3),.inventory-main-table th:nth-child(5){display:none}
  .inventory-main-table td:nth-child(2){white-space:normal;min-width:220px}
  .ledger-table{min-width:820px}
  .ledger-table .ledger-col-reason,.ledger-table .ledger-col-before,.ledger-table .ledger-col-after,.ledger-table .ledger-col-tx{display:none}
  .ledger-table th:nth-child(3),.ledger-table th:nth-child(6),.ledger-table th:nth-child(8),.ledger-table th:nth-child(11){display:none}
  .ledger-table td:nth-child(5){white-space:normal;min-width:190px}
  .case-list-table{min-width:720px}
  .case-list-table td:nth-child(2){white-space:normal;min-width:220px}
  .case-list-table td:last-child .btn{min-width:64px}
  .inventory-search-meta{align-items:flex-start;gap:8px;flex-wrap:wrap}
}
@media(max-width:620px){
  .product-management-table-v2{min-width:920px}
  .product-management-table-v2 .product-col-barcode,.product-management-table-v2 .product-col-category{display:none}
  .product-management-table-v2 th:nth-child(6),.product-management-table-v2 th:nth-child(8){display:none}
}

/* KYYO UI HOTFIX7: visual hierarchy only; no server/API behavior. */
.workspace-guidance{display:flex;align-items:center;gap:10px;margin:-2px 0 14px;padding:9px 12px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);font-size:12px}.workspace-guidance span{color:var(--muted);font-weight:800;letter-spacing:.04em}.workspace-guidance b{font-weight:700}.case-row-urgent>td{background:rgba(185,28,28,.035)}.case-row-urgent>td:first-child{box-shadow:inset 3px 0 0 #b91c1c}.repair-summary-cards{margin-bottom:12px}.repair-summary-card{text-align:left;cursor:pointer;border:1px solid var(--line);background:var(--panel);color:var(--text)}button.repair-summary-card:hover{background:var(--panel2);transform:translateY(-1px)}.repair-row-waiting>td{background:rgba(146,64,14,.035)}
@media(max-width:820px){.repair-summary-cards{grid-template-columns:1fr 1fr}.workspace-guidance{align-items:flex-start;flex-direction:column;gap:3px}.case-row-urgent>td:first-child{box-shadow:inset 4px 0 0 #b91c1c}}

/* HOTFIX8: role workbenches and UI-only workflow clarity */
.sales-workbench-strip{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:-4px 0 14px;padding:12px 14px;border:1px solid var(--line);border-radius:12px;background:var(--panel)}
.sales-workbench-strip>div:first-child{display:grid;gap:3px;min-width:0}.sales-workbench-strip span{font-size:10px;font-weight:900;letter-spacing:.08em;color:var(--muted)}.sales-workbench-strip b{font-size:13px}.sales-workbench-strip small{font-size:11px;color:var(--muted)}
.pending-return-workbench{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 10px}.pending-return-step{display:grid;grid-template-columns:30px minmax(0,1fr);gap:9px;align-items:start;border:1px solid var(--line);background:var(--panel2);border-radius:11px;padding:10px}.pending-return-step>span,.repair-workflow-guide span{width:27px;height:27px;display:grid;place-items:center;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:900}.pending-return-step>div{display:grid;gap:2px}.pending-return-step b{font-size:12px}.pending-return-step small{font-size:10px;line-height:1.45;color:var(--muted)}.pending-return-summary{margin-bottom:10px}.pending-return-summary .card{min-height:82px}
.repair-workflow-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}.repair-workflow-guide>div{display:grid;grid-template-columns:30px minmax(0,1fr);column-gap:8px;row-gap:2px;align-items:center;border:1px solid var(--line);border-radius:11px;background:var(--panel2);padding:9px 10px}.repair-workflow-guide span{grid-row:1/3}.repair-workflow-guide b{font-size:12px}.repair-workflow-guide small{font-size:10px;color:var(--muted);line-height:1.35}
@media(max-width:900px){.sales-workbench-strip{align-items:flex-start;flex-direction:column}.pending-return-workbench,.repair-workflow-guide{grid-template-columns:1fr}.pending-return-summary{grid-template-columns:1fr 1fr}.repair-table th:nth-child(8),.repair-table td:nth-child(8),.repair-table th:nth-child(10),.repair-table td:nth-child(10){display:none}}
@media(max-width:620px){.sales-workbench-strip .btn-row{width:100%}.sales-workbench-strip .btn-row .btn{flex:1}.pending-return-summary{grid-template-columns:1fr 1fr}.repair-table th:nth-child(6),.repair-table td:nth-child(6),.repair-table th:nth-child(9),.repair-table td:nth-child(9){display:none}}


/* 2.1.45 KYYO UI HOTFIX9: detail hierarchy + compact dashboard + repair dialog */
.case-detail-summary{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:8px;margin:0 0 12px}.case-detail-summary>div{display:grid;gap:4px;padding:10px 12px;border:1px solid var(--line);border-radius:11px;background:var(--panel)}.case-detail-summary span{font-size:10px;font-weight:850;color:var(--muted);letter-spacing:.03em}.case-detail-summary b{font-size:14px;line-height:1.25;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.case-detail-summary>div.warn{border-color:color-mix(in srgb,var(--warn) 45%,var(--line));background:color-mix(in srgb,var(--warn) 6%,var(--panel))}.case-detail-summary>div.active{border-color:color-mix(in srgb,var(--accent) 45%,var(--line));background:color-mix(in srgb,var(--accentSoft) 28%,var(--panel))}.case-detail-actions .danger{margin-left:4px}
.repair-dialog-summary{display:grid;grid-template-columns:2fr 1fr 1.2fr 1fr;gap:7px;margin-bottom:9px}.repair-dialog-summary>div{display:grid;gap:2px;border:1px solid var(--line);border-radius:9px;padding:8px 10px;background:var(--panel2);min-width:0}.repair-dialog-summary span{font-size:9px;font-weight:850;color:var(--muted)}.repair-dialog-summary b{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.repair-dialog-guide{display:flex;align-items:flex-start;gap:9px;border-left:3px solid var(--accent);padding:7px 10px;margin-bottom:4px;background:color-mix(in srgb,var(--accentSoft) 28%,transparent);border-radius:0 8px 8px 0}.repair-dialog-guide b{font-size:11px;white-space:nowrap}.repair-dialog-guide span{font-size:10px;color:var(--muted);line-height:1.5}
.workspace-quick-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.workspace-feed>button:nth-child(n+7),.workspace-recent>button:nth-child(n+7){display:none}
@media(max-width:980px){.case-detail-summary{grid-template-columns:repeat(3,minmax(0,1fr))}.repair-dialog-summary{grid-template-columns:1fr 1fr}.workspace-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.case-detail-summary{grid-template-columns:1fr 1fr}.case-detail-actions{width:100%}.case-detail-actions .btn{flex:1}.case-detail-actions .danger{flex:0 0 auto}.repair-dialog-summary{grid-template-columns:1fr 1fr}.repair-dialog-guide{display:grid;gap:3px}.workspace-quick-grid{grid-template-columns:1fr 1fr}}


/* 2.1.45 KYYO UI HOTFIX10: UI-only create/repair/label clarity */
.case-create-guide,.label-workflow-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}.case-create-guide>div,.label-workflow-guide>div{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:8px;row-gap:2px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2)}.case-create-guide span,.label-workflow-guide span{grid-row:1/3;width:26px;height:26px;display:grid;place-items:center;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:900}.case-create-guide b,.label-workflow-guide b{font-size:12px}.case-create-guide small,.label-workflow-guide small{font-size:10px;color:var(--muted);line-height:1.35}.field-optional{font-size:10px;color:var(--muted);font-weight:600}.repair-problem-cell{white-space:normal;min-width:220px;max-width:340px}.repair-problem-cell b{font-size:11px}.repair-problem-cell .small{margin-top:2px;line-height:1.35}.label-paper-hint{display:grid;gap:3px;min-width:250px;padding:9px 11px;border-left:3px solid var(--accent);background:var(--panel2);border-radius:0 9px 9px 0}.label-paper-hint b{font-size:11px}.label-paper-hint span{font-size:10px;color:var(--muted)}
@media(max-width:900px){.case-create-guide,.label-workflow-guide{grid-template-columns:1fr}.repair-table th:nth-child(7),.repair-table td:nth-child(7){display:none}}
@media(max-width:620px){.label-paper-hint{min-width:0;width:100%}.repair-problem-cell{min-width:180px}}

/* HOTFIX11 UI-only operation flow */
.operation-flow{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin:0 0 14px}.operation-flow span{display:inline-flex;align-items:center;gap:7px;padding:8px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);font-size:12px;font-weight:800;color:var(--text)}.operation-flow span b{width:22px;height:22px;display:grid;place-items:center;border-radius:999px;background:var(--accentSoft);color:var(--accent2);font-size:11px}.operation-flow.compact{margin:0 0 12px}.operation-flow.compact span{padding:7px 9px;font-size:11px}@media(max-width:720px){.operation-flow{display:grid;grid-template-columns:1fr 1fr}.operation-flow span{min-width:0}.operation-flow.compact{grid-template-columns:1fr}}

/* 2.1.45 KYYO UI HOTFIX12: disposal / replenishment / sync workflow hierarchy */
.operation-workflow-guide{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:0 0 12px}.operation-workflow-guide>div{display:grid;grid-template-columns:28px minmax(0,1fr);column-gap:8px;row-gap:2px;align-items:center;padding:9px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel2);min-width:0}.operation-workflow-guide span{grid-row:1/3;width:26px;height:26px;display:grid;place-items:center;border-radius:999px;background:var(--accent);color:#fff;font-size:11px;font-weight:900}.operation-workflow-guide b{font-size:12px}.operation-workflow-guide small{font-size:10px;color:var(--muted);line-height:1.35}.dialog-foot .btn.primary{min-width:108px;font-weight:800}.dialog-foot>.btn:not(.primary):not(.danger){font-weight:650}.sync-outbox-panel .panel-body{display:flex;justify-content:flex-end}.disposal-table td:last-child .btn{margin:2px 0}.disposal-table td:last-child{white-space:nowrap}
@media(max-width:900px){.operation-workflow-guide{grid-template-columns:1fr}.disposal-table th:nth-child(3),.disposal-table td:nth-child(3),.disposal-table th:nth-child(6),.disposal-table td:nth-child(6){display:none}}
@media(max-width:620px){.dialog-foot{display:grid!important;grid-template-columns:1fr 1fr;gap:8px}.dialog-foot .btn{width:100%;margin:0}.sync-outbox-panel .panel-body .btn{width:100%}.disposal-table th:nth-child(2),.disposal-table td:nth-child(2){display:none}}

/* HOTFIX13 — UI-only workflow / empty-state consistency */
.compact-panel-body{padding-top:10px;padding-bottom:10px}
.empty.empty-guided{display:flex;flex-direction:column;gap:4px;align-items:center;justify-content:center;min-height:92px;text-align:center}
.empty.empty-guided b{font-size:14px;color:var(--text,#1f2937)}
.empty.empty-guided span{font-size:12px;color:var(--muted,#6b7280);max-width:520px}
.page-load-error{display:flex;flex-direction:column;gap:6px}
.page-load-error small{opacity:.8}
.approval-workflow-guide,.sales-followup-guide,.notification-workflow-guide{margin-bottom:14px}
@media(max-width:760px){
  .approval-workflow-guide,.sales-followup-guide,.notification-workflow-guide{grid-template-columns:1fr}
}


/* HOTFIX14: UI-only hierarchy / guided states */
.compact-cards{grid-template-columns:repeat(3,minmax(0,1fr));}
.customer-status-filter{align-items:end;flex-wrap:wrap;}
.workflow-steps.compact{margin:0 0 14px;}
.empty-guided{display:flex;flex-direction:column;gap:5px;align-items:center;justify-content:center;min-height:96px;text-align:center;}
.empty-guided b{font-size:14px;}
.empty-guided span{max-width:560px;color:var(--muted);font-size:12px;line-height:1.6;}
.page-load-error{display:flex;flex-direction:column;gap:6px;padding:18px;border:1px solid color-mix(in srgb,var(--danger) 28%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--danger) 7%,var(--panel));}
.page-load-error b{color:var(--danger);}.page-load-error span,.page-load-error small{color:var(--muted);}
@media (max-width:760px){.compact-cards{grid-template-columns:1fr 1fr}.customer-status-filter{width:100%}.customer-status-filter .btn{flex:1}.supervisor-steps,.report-center-steps{grid-template-columns:1fr}}

/* HOTFIX15 UI-only: guided flows + field explanation consistency */
.workflow-steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin:0 0 14px}.workflow-steps>div{display:flex;flex-direction:column;gap:4px;padding:11px 12px;border:1px solid var(--border);border-radius:12px;background:var(--panel)}.workflow-steps b{font-size:13px}.workflow-steps span{font-size:12px;color:var(--muted);line-height:1.45}.compact-cards{margin-bottom:14px}.field-required{font-size:11px;color:var(--danger);font-weight:700}.field-optional{font-size:11px;color:var(--muted);font-weight:500}.empty-guided,.page-load-error{display:flex;flex-direction:column;gap:5px;padding:18px;text-align:center;color:var(--muted)}.empty-guided b,.page-load-error b{color:var(--text)}.page-load-error{border:1px solid color-mix(in srgb,var(--danger) 38%,var(--border));border-radius:12px;background:color-mix(in srgb,var(--danger) 6%,var(--panel));margin:12px 0}.page-load-error span{font-size:13px;line-height:1.5}@media(max-width:760px){.workflow-steps{grid-template-columns:1fr}.compact-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* HOTFIX16: UI-only workflow guidance and impact notices */
.operation-workflow-guide.image-center-guide,
.operation-workflow-guide.search-center-guide,
.operation-workflow-guide.alert-center-guide,
.operation-workflow-guide.data-admin-guide{margin:0 0 14px}
.danger-impact-note{margin:12px 0;padding:10px 12px;border:1px solid var(--danger-border,#d99);border-radius:10px;background:rgba(180,50,50,.06);display:flex;flex-direction:column;gap:4px}
.danger-impact-note b{font-size:13px}
.danger-impact-note span{font-size:12px;line-height:1.5;opacity:.82}
@media (max-width:760px){.operation-workflow-guide.image-center-guide,.operation-workflow-guide.search-center-guide,.operation-workflow-guide.alert-center-guide,.operation-workflow-guide.data-admin-guide{grid-template-columns:1fr}}

/* HOTFIX17: system safety / reversible-operation guidance */
.system-health-guide,.integrity-guide,.integration-guide,.recovery-guide,.update-guide{margin-bottom:14px}
.btn.danger[title], .danger[title]{position:relative}
.panel .small.muted + .operation-risk-note{margin-top:8px}
@media (max-width:720px){.system-health-guide,.integrity-guide,.integration-guide,.recovery-guide,.update-guide{grid-template-columns:1fr}}

/* HOTFIX18 UI-only workflow clarity */
.batch-workflow-guide,.barcode-workflow-guide{margin-bottom:14px}
.audit-table td[data-label="明細"]{max-width:520px}
@media(max-width:760px){.batch-workflow-guide,.barcode-workflow-guide{grid-template-columns:1fr}}


/* HOTFIX19: final UI-only consistency pass */
.page-head,.page-title{min-width:0}
.page-head>div:first-child,.page-title>div:first-child{min-width:0}
.page-head h1,.page-title h1{font-weight:900;line-height:1.2;letter-spacing:.005em}
.page-head p,.page-title p{line-height:1.55;max-width:920px}
.page-head .actions,.page-head .btn-row{align-items:center;justify-content:flex-end}
.panel-head h3{font-weight:850;line-height:1.3}
.panel-head .small,.panel-head small{line-height:1.45}
.btn{font-weight:700;line-height:1.25}
.btn.primary{font-weight:850}
.btn.danger{font-weight:800}
.filters{row-gap:9px}
.filters .btn-row{align-self:flex-end}
.table-wrap>table th{font-size:12px;letter-spacing:.01em}
.table-wrap>table td{line-height:1.42}
.table-wrap>table tbody tr:last-child td{border-bottom:0}
.table-wrap>table td .btn+.btn{margin-left:4px}
.empty.empty-guided,.empty-guided{border:1px dashed var(--line);border-radius:10px;background:color-mix(in srgb,var(--panel2) 72%,transparent)}
.dialog-head h3{font-size:17px;font-weight:900}
.dialog-foot .btn.primary,.dialog-foot .btn.danger{min-width:108px}
@media(max-width:820px){
 .page-head{gap:9px;margin-bottom:12px}
 .page-head .actions,.page-head .btn-row{width:100%;justify-content:flex-start}
 .page-head .actions .btn,.page-head .btn-row .btn{min-height:40px}
 .panel-head{align-items:flex-start;flex-wrap:wrap}
 .panel-head>.actions,.panel-head>.btn-row{width:100%}
 th,td{padding:8px 9px;font-size:12px}
}
@media(max-width:620px){
 .content{padding-left:9px;padding-right:9px}
 .page-head h1,.page-title h1{font-size:21px}
 .page-head p,.page-title p{font-size:12px}
 .page-head .actions,.page-head .btn-row{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px!important;overflow:visible!important}
 .page-head .actions>.btn,.page-head .btn-row>.btn{width:100%;min-width:0!important}
 .page-head .actions>.btn:only-child,.page-head .btn-row>.btn:only-child{grid-column:1/-1}
 .dialog-foot{grid-template-columns:1fr 1fr!important}
 .dialog-foot .btn.primary,.dialog-foot .btn.danger{min-width:0}
 .panel{border-radius:10px}
 .panel-head{padding:11px 12px}.panel-body{padding:12px}
}


/* HOTFIX20: final UI wording / action hierarchy baseline */
.table-wrap th:last-child,.table-wrap td:last-child{white-space:nowrap}
.table-wrap td:last-child .btn{vertical-align:middle}
.page-head .btn.primary,.panel-head .btn.primary{box-shadow:0 1px 0 color-mix(in srgb,var(--accent) 32%,transparent)}
.btn.danger{letter-spacing:.005em}
@media(max-width:620px){.table-wrap td:last-child{white-space:normal}.table-wrap td:last-child .btn{margin-top:2px;margin-bottom:2px}}
/* 2.2.8 Exception Workspace */
.exception-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px}
.exception-card{border:1px solid var(--line);background:var(--panel);border-radius:14px;padding:14px;text-align:left;display:grid;grid-template-columns:1fr auto;gap:5px 10px;min-height:116px;cursor:pointer}
.exception-card span{font-size:12px;color:var(--muted);font-weight:700}.exception-card b{font-size:26px;line-height:1}.exception-card small{grid-column:1/-1;color:var(--muted);line-height:1.45}.exception-card em{grid-column:1/-1;font-style:normal;font-size:12px;font-weight:700}
.exception-card.severity-critical{border-color:var(--danger);box-shadow:inset 3px 0 0 var(--danger)}.exception-card.severity-high{box-shadow:inset 3px 0 0 var(--warn)}.exception-card.severity-medium{box-shadow:inset 3px 0 0 var(--accent)}.exception-card.severity-ok{opacity:.72}
.dashboard-secondary-metrics{margin-top:12px}.dashboard-secondary-metrics>summary{cursor:pointer;color:var(--muted);font-size:13px;padding:8px 2px}.dashboard-secondary-metrics[open] .workspace-metrics{margin-top:8px}
.exception-normal-summary{padding:9px 14px;border-top:1px solid var(--line);color:var(--muted);font-size:11px;font-weight:700;text-align:right}.workspace-empty-ok{grid-column:1/-1;min-height:82px;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:4px}.workspace-empty-ok b{color:var(--text);font-size:13px}.workspace-empty-ok span{font-size:11px}.dashboard-shortcuts{margin-top:0}.dashboard-shortcuts .workspace-section-head{min-height:52px}.dashboard-shortcuts .workspace-quick-grid{grid-template-columns:repeat(3,minmax(0,1fr))}
@media(max-width:1100px){.exception-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.dashboard-shortcuts .workspace-quick-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:650px){.exception-grid{grid-template-columns:1fr}.exception-card{min-height:96px}.exception-normal-summary{text-align:left;padding:8px 12px}.dashboard-shortcuts .workspace-quick-grid{grid-template-columns:1fr 1fr}.workspace-topline{flex-wrap:wrap}.workspace-new-case{width:100%}}

.nav-item,.nav-group-main,.hub-card,.dock-item,.mobile-drawer-row{ text-decoration:none; }

/* 2.3.39 — Editable Field Contrast Closure.
   Editable controls sit one visual step above surrounding cards; readonly/disabled controls remain subdued. */
:root,html[data-theme="light"]{--df-color-input-bg:#FFFFFF;--df-color-input-border:#C9D2DE;--df-color-input-focus:#AEBAC9}
html[data-theme="dark"]{--df-color-input-bg:#1B222C;--df-color-input-border:#3B4655;--df-color-input-focus:#566477}
input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([disabled]):not([readonly]),
select:not([disabled]),
textarea:not([disabled]):not([readonly]),
[contenteditable="true"]{background:var(--df-color-input-bg)!important;border-color:var(--df-color-input-border)!important}
input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([disabled]):not([readonly]):focus,
select:not([disabled]):focus,
textarea:not([disabled]):not([readonly]):focus,
[contenteditable="true"]:focus{border-color:var(--df-color-input-focus)!important;outline:2px solid color-mix(in srgb,var(--accent) 18%,transparent);outline-offset:0}
input[readonly],textarea[readonly],input:disabled,select:disabled,textarea:disabled{background:color-mix(in srgb,var(--panel2) 82%,var(--bg))!important}
html.df-mobile-simple input:not([type="checkbox"]):not([type="radio"]):not([type="button"]):not([type="submit"]):not([type="reset"]):not([disabled]):not([readonly]),
html.df-mobile-simple select:not([disabled]),html.df-mobile-simple textarea:not([disabled]):not([readonly]){background:#182230!important;border-color:#3B495C!important}

/* 2.3.62 light-theme native/control consistency */
html[data-theme="light"] select,html[data-theme="light"] option,html[data-theme="light"] optgroup{color-scheme:light;background:#fff;color:#1f2937}
html[data-theme="light"] .combo-menu,html[data-theme="light"] .combo-option{background:#fff;color:#1f2937}
html[data-theme="light"] .combo-option:hover,html[data-theme="light"] .combo-option.is-active{background:#fff1e8;color:#7c2d12}
.case-overview-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px}.case-detail-fields{display:grid;grid-template-columns:150px minmax(0,1fr);gap:8px 12px;align-items:start}.case-detail-fields .label{font-weight:700;color:var(--muted)}.case-product-compact .table-wrap{max-height:none}.case-inline-actions{display:flex;gap:8px;flex-wrap:wrap}.stock-badges{display:flex;gap:6px;flex-wrap:wrap}.reason-usage-list{max-height:60vh;overflow:auto}
@media(max-width:980px){.case-overview-grid{grid-template-columns:1fr}.case-detail-fields{grid-template-columns:130px minmax(0,1fr)}}

/* 2.3.62 launch-readiness density / theme closure */
.case-overview-grid.case-overview-grid-three{grid-template-columns:repeat(3,minmax(0,1fr));align-items:start}
.case-overview-grid.case-overview-grid-three>.panel{margin:0;height:100%}
html[data-theme="light"] dialog,html[data-theme="light"] .dialog,html[data-theme="light"] .modal-card{color-scheme:light;background:var(--panel);color:var(--text)}
html[data-theme="light"] select option:checked{background:#fff1e8;color:#7c2d12}
@media(max-width:1280px){.case-overview-grid.case-overview-grid-three{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.case-overview-grid.case-overview-grid-three{grid-template-columns:1fr}}

.badge.stock-defect{background:#d1d5db;color:#374151;border:1px solid #9ca3af}html[data-theme="dark"] .badge.stock-defect{background:#4b5563;color:#f3f4f6;border-color:#6b7280}

/* 2.3.65 product/disposal UX */
.stock-defect-badge{background:#6b7280!important;color:#fff!important;border-color:#6b7280!important}
html[data-theme="light"] .stock-defect-badge{background:#e5e7eb!important;color:#374151!important;border-color:#cbd5e1!important}
.selected-website-image{outline:2px solid var(--accent,#ff6b00);outline-offset:2px}
.scrap-review-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin-bottom:16px}.scrap-review-cards>div{border:1px solid var(--border);border-radius:10px;padding:12px;display:flex;flex-direction:column;gap:4px}.scrap-review-cards span{font-size:12px;color:var(--muted)}.scrap-review-detail{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.scrap-review-detail>div{display:flex;flex-direction:column;gap:4px}.scrap-review-detail .full{grid-column:1/-1}.scrap-review-detail span{white-space:pre-wrap}@media(max-width:760px){.scrap-review-cards,.scrap-review-detail{grid-template-columns:1fr 1fr}}

/* 2.3.67 product management desktop column balance */
@media (min-width:1100px){
  .product-management-table-v2{table-layout:fixed;min-width:1260px}
  .product-management-table-v2 th:nth-child(1){width:70px}
  .product-management-table-v2 th:nth-child(2){width:72px}
  .product-management-table-v2 th:nth-child(3){width:210px}
  .product-management-table-v2 th:nth-child(4){width:150px}
  .product-management-table-v2 th:nth-child(5){width:180px}
  .product-management-table-v2 th:nth-child(6){width:130px}
  .product-management-table-v2 th:nth-child(7){width:110px}
  .product-management-table-v2 th:nth-child(8){width:220px}
  .product-management-table-v2 th:nth-child(9){width:72px}
  .product-management-table-v2 th:nth-child(10){width:170px}
  .product-management-table-v2 td{vertical-align:middle}
  .product-management-table-v2 .stock-badges{display:flex;flex-wrap:wrap;gap:6px}
  .product-management-table-v2 td:nth-child(4),.product-management-table-v2 td:nth-child(5){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
}

/* 2.3.81 case wizard required-field guidance */
.case-product-required-guide{margin-bottom:12px}
.case-primary-product-field{border:1px solid color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:10px;padding:10px;background:color-mix(in srgb,var(--accent) 6%,transparent)}
.field.validation-error,.combo-field.validation-error{border-color:#ff5b6e!important;box-shadow:0 0 0 2px rgba(255,91,110,.16);border-radius:10px;padding:10px}
.field-error-text{margin-top:6px;color:#ff8190;font-size:12px;font-weight:700}
.field.validation-error input,.field.validation-error textarea,.field.validation-error select,.combo-field.validation-error .combo-input{border-color:#ff5b6e!important}

.label-batch-options{display:grid;grid-template-columns:repeat(2,minmax(220px,1fr));gap:12px;margin:12px 0;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2)}.label-batch-options>div{display:grid;gap:8px;align-content:start}.label-batch-options b{font-size:12px}@media(max-width:760px){.label-batch-options{grid-template-columns:1fr}}

/* 2.4.3 case video attachments */
.case-video-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:12px}.case-video-card{border:1px solid var(--line);border-radius:12px;overflow:hidden;background:var(--panel-2,var(--panel));min-width:0}.case-video-stage{aspect-ratio:16/9;background:#0b0d10;display:flex;align-items:center;justify-content:center;overflow:hidden}.case-video-stage video{width:100%;height:100%;object-fit:contain;background:#000}.case-video-placeholder{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;text-align:center;padding:20px;color:var(--muted)}.case-video-placeholder b{color:var(--text)}.case-video-meta{display:flex;flex-direction:column;gap:4px;padding:10px 12px;min-width:0}.case-video-meta b{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.case-video-meta span{font-size:11px;color:var(--muted)}.case-video-card.is-failed{border-color:var(--danger,#d44)}
@media(max-width:650px){.case-video-grid{grid-template-columns:1fr}.case-video-stage{aspect-ratio:16/10}}

/* 2.4.5 compact case-info attachments */
.case-info-product-media-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(290px,360px);gap:12px;align-items:start}.case-info-product-media-grid>.panel{margin:0;min-width:0}.case-info-media-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.case-info-media-tile{position:relative;display:block;aspect-ratio:4/3;border:1px solid var(--line);border-radius:9px;overflow:hidden;background:#0b0d10;padding:0;min-width:0}.case-info-media-tile img,.case-info-media-tile video{display:block;width:100%;height:100%;object-fit:cover;background:#000}.case-info-media-tile>span{position:absolute;left:5px;bottom:5px;padding:2px 5px;border-radius:999px;background:rgba(0,0,0,.68);color:#fff;font-size:10px;pointer-events:none}.case-info-media-status{display:grid;place-items:center;width:100%;height:100%;padding:8px;color:var(--muted);font-size:11px;text-align:center}.case-info-more{width:100%;margin-top:8px}.case-info-upload{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:6px;align-items:center;margin-top:10px;padding-top:10px;border-top:1px solid var(--line)}.case-info-upload .tiny{grid-column:1/-1}.case-info-upload select{min-width:0;width:100%}@media(max-width:1100px){.case-info-product-media-grid{grid-template-columns:1fr}.case-info-attachments{max-width:none}.case-info-media-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}@media(max-width:650px){.case-info-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.case-info-upload{grid-template-columns:1fr}.case-info-upload .btn{width:100%}}
.case-media-head{align-items:flex-start}.case-media-count{display:flex;align-items:baseline;gap:5px;padding:7px 10px;border:1px solid var(--line);border-radius:10px;background:var(--panel-2,var(--panel))}.case-media-count b{font-size:18px;line-height:1}.case-media-count span{font-size:10px;color:var(--muted)}.case-info-media-grid{grid-template-columns:repeat(auto-fit,minmax(110px,1fr));gap:10px}.case-info-media-tile{aspect-ratio:1/1;border-radius:12px}.case-media-empty{grid-column:1/-1;min-height:112px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;border:1px dashed var(--line);border-radius:12px;color:var(--muted);text-align:center}.case-media-empty b{color:var(--text)}.case-media-uploader{display:block;margin-top:12px;padding-top:12px}.case-media-dropzone{display:flex;align-items:center;justify-content:center;gap:10px;min-height:82px;border:1.5px dashed var(--line);border-radius:12px;background:var(--panel-2,var(--panel));cursor:pointer;transition:border-color .15s ease,background .15s ease}.case-media-dropzone:hover,.case-media-dropzone.is-dragging{border-color:var(--accent);background:var(--accentSoft)}.case-media-drop-icon{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:var(--accentSoft);font-size:22px;font-weight:700}.case-media-dropzone>span:last-child{display:flex;flex-direction:column;gap:2px}.case-media-dropzone small{color:var(--muted)}.case-media-upload-controls{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px;margin-top:8px}.case-media-picked{display:block;margin-top:7px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.case-partial-return{padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:var(--panel-2,var(--panel))}.case-return-parts{display:grid;gap:8px;margin-top:10px}.case-return-part-row{display:grid;grid-template-columns:minmax(0,1fr) 110px auto;gap:8px;align-items:end}.case-return-part-remove{min-width:72px}.case-partial-receive-summary{display:grid;gap:4px;margin-top:10px;padding:10px;border-radius:10px;background:var(--panel-2,var(--panel));border:1px solid var(--line)}.case-partial-receive-summary span{font-size:12px}.case-partial-receive-summary small{color:var(--muted)}
@media(max-width:650px){.case-media-upload-controls,.case-return-part-row{grid-template-columns:1fr}.case-return-part-remove .btn{width:100%}.case-info-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
