:root{--bg:#d8dde1;--chrome:#eef1f3;--panel:#f8fafb;--ink:#172027;--muted:#66727c;--line:#9aa6ae;--dark:#34434d;--accent:#1c6f78;--accent2:#d7eef0;--green:#4e745e;--amber:#9a6b21;--shadow:0 2px 8px #24333d24}*{box-sizing:border-box}body{margin:0;background:linear-gradient(#cfd5d9,#e7eaec 220px);font:13px Tahoma,Verdana,Arial,sans-serif;color:var(--ink)}button,input{font:inherit}.shell{max-width:1480px;margin:18px auto;background:var(--chrome);border:1px solid #7f8b93;box-shadow:0 10px 32px #1c2a3330;min-height:calc(100vh - 36px)}.topbar{height:66px;padding:10px 16px;display:flex;align-items:center;justify-content:space-between;background:linear-gradient(#fdfefe,#dce2e5);border-bottom:1px solid #87939a}.brandblock{display:flex;gap:10px;align-items:center}.appmark{width:38px;height:38px;display:grid;place-items:center;background:transparent;border:0;box-shadow:none;flex:0 0 38px}.appmark img{display:block;width:38px;height:38px;object-fit:contain;image-rendering:pixelated;filter:drop-shadow(0 1px 0 #ffffff88) drop-shadow(0 1px 2px #1f2d3844)}.brand{font-weight:900;letter-spacing:1.2px;font-size:17px}.sub{color:var(--muted);font-size:11px;margin-top:2px}.menubar{display:flex;background:linear-gradient(#52616b,#35434d);border-bottom:1px solid #222e35;padding-left:8px}.menu{border:0;border-right:1px solid #65747d;background:transparent;color:#eaf0f3;padding:10px 18px;font-weight:800;letter-spacing:.4px;cursor:pointer}.menu:hover,.menu.active{background:linear-gradient(#277f88,#175f67);color:white}.workspace{padding:14px}.toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:10px}.toolbar h2{margin:0;font-size:18px}.tools{display:flex;gap:7px}.tools input{width:260px;padding:8px 10px;border:1px solid #8f9aa1;background:white;box-shadow:inset 0 1px 2px #00000012}.btn{padding:7px 10px;border:1px solid #7e8b93;background:linear-gradient(#fff,#dfe4e7);color:#26343d;cursor:pointer;box-shadow:inset 0 1px #fff}.btn:hover{background:linear-gradient(#fff,#d2dade)}.btn.primary{background:linear-gradient(#2b7f87,#17616a);border-color:#14545b;color:white}.mapframe,.panel,.attention{border:1px solid #8d999f;background:#f7f9fa;box-shadow:var(--shadow)}.mapframe{padding:10px;overflow:auto}.zone{border:1px solid #a6b0b6;background:#e9edef;padding:8px}.zonehead{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #a6b0b6;padding:0 2px 7px;margin-bottom:8px}.zonehead h3{font-size:12px;letter-spacing:.7px;margin:0}.zonehead span{font-size:10px;color:var(--muted)}.slot{min-height:43px;border:1px solid #89969e;background:#f9fafb;padding:3px;cursor:pointer;overflow:hidden}.slot.filled{background:linear-gradient(#eef8f5,#d8ebe4);border-color:#6c9181}.slot.empty{color:#879198}.slot:hover,.slot.match{outline:2px solid #246f78;outline-offset:-2px}.slot.dim{opacity:.25}.slot.selected{outline:3px solid #c17a24}.slotcode,.slotitem,.slotqty{display:block}.slotcode{font-size:9px;font-weight:900}.slotitem{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.slotqty{font-size:10px;font-weight:800}.todaygrid{display:grid;grid-template-columns:1.6fr .75fr;gap:10px}.panel{padding:10px}.paneltitle{font-size:11px;font-weight:900;letter-spacing:.7px;color:#43525c;border-bottom:1px solid #a8b2b8;padding-bottom:7px;margin-bottom:8px}.orderhead{display:grid;grid-template-columns:34px 1fr auto;align-items:center;gap:8px;padding:8px;background:#edf1f3;border-bottom:1px solid #c0c7cb}.orderno{width:28px;height:28px;display:grid;place-items:center;background:#45545e;color:white;font-weight:900}.mono{font-family:Consolas,monospace;color:#56636c;font-size:11px}.incomingrow{display:flex;justify-content:space-between;padding:9px 5px;border-bottom:1px solid #d6dcdf}.attention{padding:8px;margin-bottom:10px;background:#fff8e8;border-color:#b79755}.attention>strong{display:block;font-size:10px;letter-spacing:1px;margin-bottom:6px;color:#79581f}.limited{width:100%;display:grid;grid-template-columns:1fr 1fr auto;gap:10px;text-align:left;align-items:center;padding:8px;border:1px solid #c9ae76;background:#fffdf7;cursor:pointer}.limited em{font-style:normal;color:#1c6670;font-weight:800}.splitpanel{border:1px solid #9ca8af;background:#f8fafb;padding:9px;margin:6px 0 10px}.splithead{display:flex;justify-content:space-between;align-items:center;margin-bottom:7px}.splitfooter{display:flex;justify-content:flex-end;gap:12px;padding:7px 6px 0}.bad{color:#a33}.storepanel{max-width:900px;margin:auto}.shopcheck{width:28px;height:28px;border:1px solid #87949b;background:white;font-size:18px;cursor:pointer}.shopcheck.done{background:#dcece2;color:#2f6947}.emptymsg{padding:18px;color:var(--muted);text-align:center}footer{padding:7px 12px;border-top:1px solid #89959c;background:#d9dfe2;color:#58656d;font-size:10px;letter-spacing:.6px}@media(max-width:900px){.shell{margin:0;min-height:100vh;border:0}.toolbar{align-items:flex-start;flex-direction:column}.tools{width:100%}.tools input{flex:1;width:auto}.todaygrid{grid-template-columns:1fr}.menu{flex:1;padding:10px 6px}.brand{font-size:15px}}
.topactions{display:flex;align-items:center;gap:8px}.btn.mini{min-height:28px;padding:3px 9px;font-size:11px}.splitactions{display:flex;gap:6px;flex-wrap:wrap}.modalshade{position:fixed;inset:0;background:rgba(18,28,36,.46);z-index:50;display:grid;place-items:center;padding:18px}.dialog{width:min(440px,96vw);background:#e9edf0;border:1px solid #53626d;box-shadow:0 14px 40px rgba(0,0,0,.35),inset 0 1px #fff;padding:12px}.dialog.wide{width:min(680px,96vw)}.dialogtitle{margin:-12px -12px 12px;padding:8px 10px;background:linear-gradient(#486b86,#27475f);color:#fff;font:700 12px Tahoma,sans-serif;letter-spacing:.05em;border-bottom:1px solid #142b3c}.dialog label{display:grid;grid-template-columns:150px 1fr;align-items:center;gap:10px;margin:8px 0;font:700 11px Tahoma,sans-serif}.dialog input{min-height:34px;border:1px solid #8a979f;background:#fff;padding:6px 8px;font:12px Tahoma,sans-serif}.dialogactions{display:flex;justify-content:flex-end;gap:7px;margin-top:14px}
@media(max-width:800px){.dialog label{grid-template-columns:1fr}.topactions{gap:4px}}
/* V8 populated-demo polish */


.slot.filled .slotitem{font-weight:800}.slot.filled{background:linear-gradient(#fffdf0,#e9e2bd)}.slot.empty{background:linear-gradient(#f7f9fb,#e5e9ed)}
.slot.selected{outline:3px solid #2f66a2;outline-offset:-3px}.slot.match{outline:3px solid #d48b19;outline-offset:-3px}.slot.dim{opacity:.28}
.paneltitle{background:linear-gradient(#314c6b,#21384f);color:#fff;text-shadow:0 1px #000}

@media(max-width:900px){.mapframe{overflow:auto}}
.picklocations{margin:6px 0 1px 18px;display:grid;gap:5px}.pickloc{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#e9eef3;border:1px solid #aeb7c1;padding:5px 6px;font-size:12px}.historyrow{display:grid;grid-template-columns:150px 120px minmax(180px,1fr) 70px;gap:8px;padding:7px 5px;border-bottom:1px solid #c7ccd2;align-items:center;font-size:12px}.historyrow:nth-child(even){background:#f0f2f4}@media(max-width:700px){.historyrow{grid-template-columns:1fr 90px}.historyrow span:nth-child(3){grid-column:1/-1}.pickloc{align-items:stretch;flex-direction:column}}

/* V12 map-first workflow + clearer operational modes */

.mapworkspace .mapframe{margin-top:8px}
.modebtn{min-width:132px;font-weight:900;border-width:2px;transition:none}
.modebtn.mode-active{color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35),0 0 0 2px rgba(36,91,117,.18)}
.countbtn.mode-active{background:linear-gradient(#607b37,#3f5f22);border-color:#314d1c}
.rearrangebtn.mode-active{background:linear-gradient(#b57022,#814d16);border-color:#6a3c10}
.modebanner{margin:0 0 9px;padding:8px 11px;border:2px solid;font-size:11px;font-weight:900;letter-spacing:.035em}
.modebanner.count{background:#eef4d8;border-color:#708b3d;color:#3e541d}
.modebanner.rearrange{background:#fff0d7;border-color:#a86a21;color:#70400e}






.picktarget{outline:3px solid #b72727!important;outline-offset:-3px!important;position:relative;background:linear-gradient(#fff6db,#f1d994)!important}
.pickbadge{position:absolute;right:2px;top:2px;background:#a51f1f;color:white;font-size:7px;font-weight:900;padding:1px 3px;border:1px solid #741313}
.maporders{display:flex;align-items:stretch;gap:5px;overflow-x:auto;border:1px solid #7f8b94;background:#d5dce0;padding:5px;margin-bottom:8px}
.maporders-title{display:grid;place-items:center;padding:0 9px;background:#384b59;color:white;font-size:9px;font-weight:900;letter-spacing:.08em;white-space:nowrap}
.maporder{min-width:180px;text-align:left;border:1px solid #94a0a7;background:linear-gradient(#fff,#e5e9ec);padding:6px 8px;cursor:pointer;color:#283740}
.maporder b,.maporder span{display:block}.maporder b{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.maporder span{font-size:9px;color:#66737b;margin-top:2px}
.maporder.active{background:linear-gradient(#d9edf0,#bcd9dd);border:2px solid #1d6972;padding:5px 7px}
.mappickpanel{border:2px solid #41677e;background:#eef3f6;margin-bottom:8px;box-shadow:inset 0 1px white}
.mappickhead{display:flex;align-items:center;justify-content:space-between;gap:10px;background:linear-gradient(#43677f,#2d4c61);color:white;padding:7px 9px}
.mappickhead strong,.mappickhead span{display:block}.mappickhead span{font-size:9px;opacity:.9;margin-top:2px}
.mappickitem{display:grid;grid-template-columns:minmax(180px,.55fr) 1fr;gap:8px;padding:7px 9px;border-top:1px solid #c6d0d6;align-items:start}
.mappickitem>div:first-child strong,.mappickitem>div:first-child span{display:block}.mappickitem>div:first-child span{font-size:10px;color:#61707a}.mappickitem.complete{opacity:.55;background:#e7eee8}
.empty-inline{padding:8px;color:#63717a;font-size:10px}


.itemsummary{border:1px solid #8d999f;background:#f8fafb;margin-bottom:10px;box-shadow:var(--shadow)}
.itemsummarytitle{padding:7px 9px;background:linear-gradient(#314c6b,#21384f);color:white;font-size:10px;font-weight:900;letter-spacing:.08em}
.itemsummaryrow{display:grid;grid-template-columns:minmax(180px,1fr) 90px 100px 90px 90px;gap:1px;border-top:1px solid #d1d7db;align-items:center}
.itemsummaryrow>*{padding:6px 8px}.itemsummaryrow.head{background:#dfe5e9;color:#4d5c66;font-size:9px;font-weight:900}.itemsummaryrow:not(.head):nth-child(even){background:#f0f3f5}.itemsummaryrow span:not(:first-child){text-align:center;font-family:Consolas,monospace}.itemsummaryrow .needstore{color:#9c321f;font-weight:900}
.orderhead{grid-template-columns:34px 1fr auto}.orderhead .btn{white-space:nowrap}

.storetabs{display:flex;gap:2px;margin-bottom:7px;border-bottom:1px solid #84919a}
.storetab{border:1px solid #84919a;border-bottom:0;background:linear-gradient(#f8fafb,#dbe1e5);padding:8px 14px;font-weight:900;font-size:10px;cursor:pointer}
.storetab.active{background:#fff;color:#155f68;position:relative;top:1px}








.historyrow b{text-transform:none}

@media(max-width:900px){
  
  .itemsummary{overflow-x:auto}.itemsummaryrow{min-width:650px}
  .mappickitem{grid-template-columns:1fr}
  .modebtn{min-width:110px}
}
/* V13 softer incoming notes, receiving, and day archive */
.modebanner.rearrange{display:flex;align-items:center;justify-content:space-between;gap:10px}
.modebanner.rearrange .btn{flex:0 0 auto}
.softincoming{opacity:.86}.softincoming .paneltitle{background:linear-gradient(#5b6872,#44505a)}.incominghelp{padding:2px 4px 8px;line-height:1.35}.softincoming .incomingrow{padding:6px 5px}
.btn.danger-lite{background:linear-gradient(#fff8f5,#ead9d3);border-color:#a88980;color:#6f3d35}

.enddaysummary{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0 12px}.enddaysummary>div{border:1px solid #9aa6ae;background:#f8fafb;padding:8px}.enddaysummary span,.enddaysummary b{display:block}.enddaysummary span{font-size:9px;color:#62707a;font-weight:800}.enddaysummary b{font-size:18px;color:#203e55;margin-top:3px}

@media(max-width:700px){.modebanner.rearrange{align-items:stretch;flex-direction:column}.enddaysummary{grid-template-columns:1fr 1fr}}

/* V14 temporary Not Found overlay + durable pause/resume states */
.slot.notfound{background:repeating-linear-gradient(135deg,#5f2f34 0,#5f2f34 7px,#784047 7px,#784047 14px)!important;border-color:#3d1d22!important;color:#fff!important;outline:2px solid #a95b64;outline-offset:-2px}
.slot.notfound .slotcode,.slot.notfound .slotitem,.slot.notfound .slotqty{color:#fff!important}
.notfoundbadge{display:block;margin-top:3px;padding:2px 3px;background:#f3d8dc;color:#6d1d28;border:1px solid #cb8790;font-size:8px;font-weight:900;letter-spacing:.05em}

.pickactions{display:flex;gap:5px;align-items:center}
.pickheadbuttons{display:flex;gap:6px;flex-wrap:wrap}

@media(max-width:700px){.pickactions,.pickheadbuttons{width:100%}.pickactions .btn,.pickheadbuttons .btn{flex:1}}

/* V15 allocation bars, tabbed lists, dropdown catalog, and destination tracing */
.tools select{min-width:260px;min-height:34px;border:1px solid #8f9aa1;background:#fff;padding:6px 8px;color:#26343d;font:12px Tahoma,sans-serif}
.dialog select{min-height:34px;border:1px solid #8a979f;background:#fff;padding:6px 8px;font:12px Tahoma,sans-serif}



.ordertabs{display:flex;align-items:stretch;gap:3px;overflow-x:auto;border:1px solid #7f8b94;background:#d5dce0;padding:5px;margin:0 0 8px}
.ordertabslabel{display:grid;place-items:center;padding:0 9px;background:#384b59;color:#fff;font-size:9px;font-weight:900;letter-spacing:.08em;white-space:nowrap}
.ordertab{min-width:180px;text-align:left;border:1px solid #94a0a7;background:linear-gradient(#fff,#e5e9ec);padding:6px 8px;cursor:pointer;color:#283740}
.ordertab b,.ordertab span{display:block}.ordertab b{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ordertab span{font-size:9px;color:#66737b;margin-top:2px}
.ordertab.active{background:linear-gradient(#d9edf0,#bcd9dd);border:2px solid #1d6972;padding:5px 7px}

.pickloc small{display:block;color:#68757d;font-size:8px;font-weight:900;letter-spacing:.06em;margin-bottom:1px}


.splitstocktrack{display:grid;grid-template-columns:repeat(var(--splitstock),minmax(7px,1fr));gap:2px;min-height:27px;border:1px solid #87949c;background:#d6dde1;padding:3px;overflow:hidden}
.splitstockunit{display:block;background:#aeb9bf;border:1px solid #96a2a9}.splitstockunit.available{background:#2e7a83;border-color:#1f6269}.splitstockunit.assigned{background:#c7b985;border-color:#9f925f}
.splitbarrow{display:grid;grid-template-columns:210px 1fr;gap:10px;align-items:center;border-top:1px solid #d2d9dd;padding:7px 4px}
.splitbarrow strong,.splitbarrow span{display:block}.splitbarrow span{font-size:9px;color:#65727b;margin-top:2px}
.splitunittrack{display:grid;grid-template-columns:repeat(var(--splitunits),minmax(8px,1fr));gap:2px;min-height:30px;padding:3px;border:1px solid #9aa5ac;background:#f8fafb}
.splitunit{border:1px solid #a4afb5;background:#e5e9eb;cursor:pointer;min-width:8px}.splitunit.on{background:#2b7880;border-color:#1d6269;box-shadow:inset 0 0 0 1px rgba(255,255,255,.25)}
.no-units{font-size:9px;color:#6f7a81;padding:5px}

@media(max-width:900px){.tools select{min-width:0;flex:1}.splitbarrow{grid-template-columns:1fr}.ordertab{min-width:155px}}

/* V16 tighter split header, full-pallet map highlighting, and list-specific shopping bars */
.slot.pickavailable{outline:2px solid #2d7f88;outline-offset:-2px;background:linear-gradient(#eaf7f7,#cfe8e8)!important;position:relative}
.slot.picktarget{outline:3px solid #b72727!important;outline-offset:-3px!important}
.availablebadge{position:absolute;right:2px;bottom:2px;background:#d7f0f1;color:#155d65;font-size:7px;font-weight:900;padding:1px 3px;border:1px solid #6ea4aa}
.splithead{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(260px,1.1fr) auto;gap:10px;align-items:center;margin-bottom:7px}
.splitidentity strong{display:block}.splitstockinline{display:grid;grid-template-columns:82px 1fr;gap:7px;align-items:center;min-width:0}
.splitstockinline b,.splitstockinline span{display:block}.splitstockinline span{font-size:8px;color:#66737b}.splitstockinline .splitstocktrack{min-height:25px}
.splitfooter{display:grid;grid-template-columns:auto auto auto auto;justify-content:end;align-items:center;gap:7px 12px;padding:7px 6px 0}
.itemsummaryrow{grid-template-columns:minmax(210px,1fr) 90px 150px 90px}



.storepanel{max-width:1040px}.shopgroup{border:1px solid #a8b2b8;background:#fff;margin-bottom:8px}.shopgrouphead{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 10px;background:linear-gradient(#edf2f4,#dde4e8);border-bottom:1px solid #bcc5ca}.shopgrouphead strong,.shopgrouphead span{display:block}.shopgrouphead strong{font-size:12px}.shopgrouphead span{font-size:9px;color:#66737c;margin-top:2px}.shopgrouphead>b{font:900 17px Consolas,monospace;color:#203e55}
.shopok:disabled{opacity:.42;cursor:default}
@media(max-width:900px){.splithead{grid-template-columns:1fr}.splitstockinline{grid-template-columns:75px 1fr}.splitactions{justify-content:flex-start}.itemsummaryrow{min-width:590px}}

/* V17.55 build visibility + subtle Today supply coding */
.buildtag{display:inline-block;margin-left:7px;padding:1px 5px;border:1px solid #91a4b0;background:#e7edf1;color:#294150;font:900 9px Tahoma,sans-serif;vertical-align:2px}
.supplylegend{display:flex;gap:5px;flex-wrap:wrap;padding:6px 8px;border-top:1px solid #8294a2;background:#edf1f3}
.supplylegend .leg{padding:2px 6px;border:1px solid #abb5bb;font-size:8px;font-weight:900;letter-spacing:.05em}
.supplylegend .wh{background:#e7f1e9;border-color:#8faf96;color:#3d6246}
.supplylegend .store{background:#f7eee3;border-color:#c4a378;color:#815b2e}
.supplylegend .split{background:#f8f2d9;border-color:#c6b46a;color:#756223}
.supplylegend .incoming{background:#e8f0f7;border-color:#8da9c0;color:#3e6078}
.itemsummaryrow.supply-warehouse:not(.head){background:#f0f6f1;box-shadow:inset 4px 0 #7fa088}
.itemsummaryrow.supply-store:not(.head){background:#faf3ea;box-shadow:inset 4px 0 #c0915d}
.itemsummaryrow.supply-split:not(.head){background:#faf6e5;box-shadow:inset 4px 0 #bba650}





/* V17.55 compact pick/store unification */
.todaypicklist{border:1px solid #9ca7ae;background:#fff;box-shadow:var(--shadow)}
.todaypicklist .orderhead{margin:0;border-bottom:1px solid #aeb8be}



.mastershop{overflow:hidden}.mastershop .shopgrouphead{padding:7px 9px}
.shopitemidentity{display:grid;grid-template-columns:30px 44px minmax(170px,1fr);gap:5px;align-items:center;min-width:0}
.shopitemidentity>div{min-width:0}.shopitemidentity strong,.shopitemidentity span{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.shopitemidentity strong{font-size:11px}.shopitemidentity span{font-size:9px;color:#66737c;margin-top:2px}
.shopcheck.checked{background:#e3eff1;color:#155f68;border-color:#5d7f87}.shopheadright{display:flex;align-items:center;gap:8px}.shopheadright>b{font:900 17px Consolas,monospace;color:#203e55}
.storeunittrack{min-height:31px}.storeunit{min-height:24px}
.shopdestline{display:flex;gap:6px;flex-wrap:wrap;padding:5px 9px 8px;border-top:1px solid #e0e5e8;background:#f7f9fa}.shopdestline span{padding:3px 6px;border:1px solid #c4ccd1;background:#fff;font-size:9px;color:#5e6b74}.shopdestline b{color:#263b4b}
@media(max-width:900px){.shopitemidentity{grid-template-columns:30px 44px minmax(150px,1fr)}.mastershop{overflow-x:auto}}

/* V17.55 unified Today tables, split-style Store allocation, and end-of-day archives */
.itemsummaryrow.todayrow{grid-template-columns:minmax(230px,1fr) 82px 150px 150px}


.supply-incoming-main:not(.head){background:#eef4f8!important;box-shadow:inset 4px 0 #789ab7!important}
.supply-complete:not(.head),.row-complete{background:#edf0f1!important;box-shadow:inset 4px 0 #adb6bb!important;color:#69747b;opacity:.7}
.supplylegend .complete{background:#edf0f1;border-color:#aeb8bd;color:#647078}
.itemsummaryrow.todayrow strong{min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.storeexpand{padding:7px 9px 9px;background:#f7f9fa;border-top:1px solid #c8d0d5}
.storemasterline{display:grid;grid-template-columns:minmax(185px,260px) 1fr 55px;gap:8px;align-items:center;padding-bottom:7px;border-bottom:1px solid #d0d7db}
.storemasterline strong,.storemasterline span{display:block}.storemasterline strong{font-size:9px;letter-spacing:.05em}.storemasterline span{font-size:9px;color:#66737c;margin-top:2px}.storemasterline>b{font:900 11px Consolas,monospace;text-align:center}
.storeparcelhead{display:flex;justify-content:space-between;align-items:center;padding:7px 3px 3px;font-size:8px;font-weight:900;letter-spacing:.07em;color:#52616b}
.storeallocrow{grid-template-columns:minmax(220px,320px) 1fr}.storeallocrow>div:first-child strong,.storeallocrow>div:first-child span{display:block}.storeallocrow>div:first-child span{font-size:9px;color:#68757d;margin-top:2px}
.shop-complete{opacity:.68}.shop-complete .shopgrouphead{background:#edf0f1}
.archiveday{border:1px solid #8e9aa2;background:#f5f7f8;margin-bottom:8px}.archiveday>summary,.archiveorder>summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:12px}.archiveday>summary::-webkit-details-marker,.archiveorder>summary::-webkit-details-marker{display:none}.archiveday>summary{padding:9px 10px;background:linear-gradient(#e7ecef,#d6dde1);font-size:11px}.archiveday>summary span,.archiveorder>summary span{display:block}.archiveday>summary small,.archiveorder>summary small{display:block;color:#66737c;font-size:9px;margin-top:2px}.archiveday>summary>b,.archiveorder>summary>b{font:900 10px Consolas,monospace;color:#40515c}.archivedaybody{padding:8px}.archiveorder{border:1px solid #b0bac0;background:white;margin:6px 0}.archiveorder>summary{padding:8px;background:#eef2f4}.archiveitemrow{display:grid;grid-template-columns:minmax(190px,1fr) 75px 105px 100px 85px;border-top:1px solid #d6dce0;align-items:center}.archiveitemrow>*{padding:6px 8px}.archiveitemrow.head{background:#dfe5e9;color:#4d5c66;font-size:8px;font-weight:900}.archiveitemrow span{text-align:center;font-family:Consolas,monospace}.archiveitemrow.row-complete{opacity:.65}
@media(max-width:900px){.itemsummaryrow.todayrow{min-width:690px}.storemasterline{grid-template-columns:minmax(180px,230px) minmax(390px,1fr) 55px;min-width:680px}.storeexpand{overflow-x:auto}.storeallocrow{min-width:680px}.archiveitemrow{min-width:650px}.archiveorder{overflow-x:auto}}

/* V17.55 stronger operational status tints */
.itemsummaryrow.supply-split:not(.head){background:#fff1b8!important;box-shadow:inset 5px 0 #b58b00!important}
.itemsummaryrow.supply-store:not(.head){background:#ffe2d9!important;box-shadow:inset 5px 0 #c85a3f!important}
.itemsummaryrow.supply-warehouse:not(.head){background:#dff1e2!important;box-shadow:inset 5px 0 #4f905b!important}

.itemsummaryrow.supply-incoming-main:not(.head){background:#e3eef9!important;border-right:5px solid #4c83b6!important;box-shadow:inset 5px 0 #4f905b!important}
.itemsummaryrow.supply-complete:not(.head),.itemsummaryrow.row-complete{background:#e5e8ea!important;box-shadow:inset 5px 0 #9ca6ac!important;color:#667178!important;opacity:.58}
.planprogress{display:grid;grid-template-columns:1fr 18px 1fr;align-items:center;position:relative;font-family:Consolas,monospace;text-align:center;padding-bottom:13px}
.planprogress small{position:absolute;left:0;right:0;bottom:2px;font:800 8px Arial,sans-serif;color:#68757d;letter-spacing:.03em}
.planprogress i{font-style:normal;color:#8d979d}
.planprogress .splittext{grid-column:1/-1;color:#8d7322;font-size:10px}
.supplylegend .leg.split{background:#fff1b8;border-color:#d9bd52}

/* V17.55 incoming-shortage override + in-place pick-location selector */
.picklocselect{min-width:92px;max-width:150px;height:26px;border:1px solid #7e8b93;background:#fff;padding:2px 22px 2px 6px;font:900 11px Consolas,monospace;color:#243640;vertical-align:middle}
.picklocselect:focus{outline:2px solid #2b7880;outline-offset:1px}
.itemsummaryrow.supply-incoming-main:not(.head){background:#dcecf9!important;box-shadow:inset 5px 0 #3f78ad!important;border-right:0!important}
.supplylegend .incoming{background:#dcecf9!important;border-color:#729bbd!important;color:#2e5879!important}

/* V17.55 full-width map: no horizontal map scrolling; Today pick lists below map */
.mapworkspace{overflow-x:hidden}
.mapworkspace .mapframe{overflow:hidden;width:100%;padding:6px}

.mapworkspace .zone{min-width:0;padding:5px}
.mapworkspace .zonehead{padding-bottom:4px;margin-bottom:5px;gap:4px}
.mapworkspace .zonehead h3{font-size:10px;letter-spacing:.045em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mapworkspace .zonehead span{font-size:8px;white-space:nowrap}




.mapworkspace .slot{min-width:0;min-height:34px;padding:2px}
.mapworkspace .slotcode{font-size:7px;line-height:1.05}
.mapworkspace .slotitem{font-size:8px;line-height:1.05}
.mapworkspace .slotqty{font-size:8px;line-height:1.05}
.mapworkspace .pickbadge,.mapworkspace .availablebadge,.mapworkspace .notfoundbadge{font-size:6px;padding:1px 2px}









.mapworkspace .maplistsbelow{margin-top:9px}
.mapworkspace .maporders{overflow:visible;flex-wrap:wrap;margin:0 0 8px}
.mapworkspace .maporder{flex:1 1 190px;min-width:0}
.mapworkspace .mappickpanel{margin:0}
@media(max-width:1100px){
  
  .mapworkspace .zone{padding:4px}
  .mapworkspace .slot{min-height:30px}
  
  .mapworkspace .slotitem{font-size:7px}.mapworkspace .slotqty,.mapworkspace .slotcode{font-size:6px}
  
}
@media(max-width:800px){
  .mapworkspace .toolbar{gap:7px}
  .mapworkspace .mapframe{padding:3px}
  
  .mapworkspace .zone{padding:2px}
  .mapworkspace .zonehead span{display:none}
  .mapworkspace .zonehead h3{font-size:8px}
  
  .mapworkspace .slot{min-height:26px;padding:1px}
  
  .mapworkspace .slotitem{font-size:6px}.mapworkspace .slotqty,.mapworkspace .slotcode{font-size:5.5px}
  
  
  
}

/* V17.55 resolved split controls remain editable but move to a muted bottom section */
.resolvedsplits{margin-top:12px;border:1px solid #aeb7bc;background:#eceff1;padding:8px;opacity:.82}
.resolvedsplitstitle{font-size:9px;font-weight:900;letter-spacing:.08em;color:#66737b;margin:0 0 6px}
.resolvedsplitrow{border-top:1px solid #c7ced2;padding-top:5px;margin-top:5px}
.resolvedsplitrow:first-of-type{border-top:0;margin-top:0;padding-top:0}
.resolvedsplitbutton{width:100%;display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid #aeb7bc;background:linear-gradient(#f5f7f8,#e2e6e8);padding:7px 9px;color:#58646c;cursor:pointer;text-align:left}
.resolvedsplitbutton span,.resolvedsplitbutton small{display:block}.resolvedsplitbutton small{font-size:9px;margin-top:2px;color:#7a858c}.resolvedsplitbutton em{font-style:normal;font-weight:900;color:#4d6778}
.splitresolvedpanel{filter:saturate(.72);background:#f1f3f4}
.splitunit.locked{background:#6f858b!important;border-color:#586d73!important;cursor:not-allowed;opacity:.8}


/* V17.55 map-first pick quantities + lowest-pallet-first picking */
.slot.picktarget .slotitem{background:#f7dddd;border:1px solid #c86767;color:#6f1717;font-weight:900;padding:1px 2px;margin-top:1px}
.mapworkspace .slot.picktarget .slotitem{padding:1px;font-size:8px}
.pickbadge{right:2px;top:auto;bottom:2px;min-width:34px;text-align:center;font-size:8px;padding:2px 4px;letter-spacing:.02em;z-index:2}
.mapworkspace .pickbadge{font-size:7px!important;padding:1px 3px!important;bottom:1px;right:1px}
.slot.picktarget .slotqty{padding-bottom:11px}
.mapworkspace .slot.picktarget .slotqty{padding-bottom:9px}


/* V17.55 expandable pallet details + expandable Today master items */




.masteritemwrap{border-top:1px solid #cfd6da}
.masteritemwrap .masteritemheader{width:100%;border:0;margin:0;text-align:left;font:inherit;color:inherit;cursor:pointer}
.masteritemwrap .masteritemheader:hover{filter:brightness(.985)}
.masteritemheader>strong{display:flex;align-items:center;gap:7px}
.masteritemheader>strong small{font-family:Consolas,monospace;font-size:11px;color:#54616a;flex:0 0 auto}
.masteritemdetails{border-left:5px solid #8a98a2;background:#eef2f4;padding:4px 8px 8px}
.masterrestaurantrow{display:grid;grid-template-columns:minmax(180px,1.45fr) 72px minmax(140px,1fr) 82px;gap:1px;align-items:center;border-top:1px solid #cfd6da;background:#f8fafb}
.masterrestaurantrow>*{padding:6px 8px;min-width:0}
.masterrestaurantrow .masterasked{text-align:center;font-weight:800}
.masterrestaurantrow .fulfillstatus{font-size:10px;font-weight:900;color:#52616a}
.masterrestaurantrow.row-complete{opacity:.55;background:#e6e9eb}
@media(max-width:900px){
  
  
  .masteritemdetails{overflow-x:auto}
  .masterrestaurantrow{min-width:0}
}

/* V17.55 deliberate full test reset */
.btn.resettest{border-color:#8b5c4f;background:linear-gradient(#fff1e7,#e8c9b8);color:#6f3527;font-weight:900}
.btn.resettest:hover{background:linear-gradient(#fff7f0,#e4beaa)}
.btn.danger{border-color:#7c3026!important;background:linear-gradient(#d96a57,#a63e31)!important;color:#fff!important;font-weight:900}
.resetdialog{max-width:610px}.resetwarning{margin:10px 0;border:1px solid #b86b58;background:#fff0e9;padding:12px;color:#5d352c}.resetwarning strong{display:block;font-size:12px;margin-bottom:6px}.resetwarning p{margin:0;font-size:10px;line-height:1.5;color:#6a4a42}


/* V17.55 admin, live status, end-day summary */
}
.statuspanel{border:1px solid var(--line);background:var(--panel);padding:12px;margin-bottom:12px}.statusgrid{display:grid;grid-template-columns:repeat(5,minmax(105px,1fr));gap:8px}.statuscard{border:1px solid var(--line);background:#111820;padding:10px}.statuscard span{display:block;font-size:9px;letter-spacing:.1em;color:#8795a2}.statuscard b{display:block;margin-top:5px;font-size:14px}.statuscard.ok b{color:#80cb91}.statuscard.bad b{color:#ee8179}.statusnote{font-size:11px;color:var(--muted);margin-top:9px}.admincols{display:grid;grid-template-columns:1fr 1fr;gap:12px}.adminadd{display:grid;grid-template-columns:1fr auto auto;gap:7px;margin-bottom:10px}.adminadd input,.adminadd select{min-width:0}.admincols>.panel:nth-child(2) .adminadd{grid-template-columns:1fr auto}.adminlist{display:flex;flex-direction:column;gap:5px;max-height:58vh;overflow:auto}.adminrow{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);background:#111820;padding:8px 9px}.adminrow>div{display:flex;flex-direction:column}.adminrow span{font-size:10px;color:var(--muted)}
.enddaydialog{max-width:960px}.enddaysummary.master{grid-template-columns:repeat(4,1fr)}.enddaywarning,.enddaycomplete{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px 12px;margin:10px 0;border:1px solid}.enddaywarning{border-color:#b95a4f;background:rgba(158,53,44,.14)}.enddaywarning strong{color:#ff9a8f}.enddaycomplete{border-color:#3e8550;background:rgba(57,127,75,.13)}.enddaycomplete strong{color:#8ed39e}.enddaymissing{border:1px solid var(--line);max-height:320px;overflow:auto;margin-bottom:12px}.enddaymissinghead,.enddaymissingrow{display:grid;grid-template-columns:1.2fr 1.7fr .7fr 1fr;gap:10px;align-items:center;padding:7px 9px}.enddaymissinghead{position:sticky;top:0;background:#18212a;color:#8e9ba7;font-size:9px;letter-spacing:.08em;border-bottom:1px solid var(--line)}.enddaymissingrow{border-bottom:1px solid rgba(255,255,255,.06);font-size:11px}.enddaymissingrow b{color:#f5a59b}.enddaymissingrow em{font-style:normal;color:#d6bd75;font-size:10px}
@media(max-width:900px){.statusgrid{grid-template-columns:repeat(3,1fr)}.admincols{grid-template-columns:1fr}.enddaysummary.master{grid-template-columns:repeat(2,1fr)}}
@media(max-width:600px){.statusgrid{grid-template-columns:repeat(2,1fr)}.enddaymissinghead,.enddaymissingrow{grid-template-columns:1fr 1.4fr .7fr}.enddaymissinghead span:last-child,.enddaymissingrow em{display:none}.adminadd{grid-template-columns:1fr}.adminadd>*{width:100%}}


/* V17.55 map-first anchored pick popover + top informational banner */

.mapworkspace .mapframe{position:relative}
.mappickpopover{position:absolute;z-index:30;width:235px;border:2px solid #31576d;background:#f8fbfc;box-shadow:0 8px 24px #18283255;padding:9px 10px 10px;color:#1c2b34;text-align:left}
.mappickpopover.ready{border-color:#9d2929;background:#fff8f3}.mappickpopover.info{border-color:#607984}
.mappickpopover .popoverclose{position:absolute;right:5px;top:4px;width:23px;height:23px;border:1px solid #8c999f;background:#eef2f4;cursor:pointer;font-weight:900}
.mappickpopover .popoverloc{font:900 10px Consolas,monospace;color:#60717b;margin-right:28px}
.mappickpopover>strong{display:block;font-size:13px;margin:3px 28px 8px 0}

.popconfirm{width:100%;font-weight:900}.popovernote{border-top:1px solid #c9d1d5;padding-top:7px;font-size:9px;color:#68757d}
@media(max-width:700px){.mappickpopover{width:205px;padding:7px}}

.rearrangeactions{display:flex;gap:6px;flex-wrap:wrap}.btn.danger{border-color:#8a3434;color:#762828}

.stackbadge{display:inline-block;font-size:8px;font-weight:900;padding:1px 3px;border:1px solid #48535e;background:#d9e1e7;color:#26313a;margin-left:2px}

.layouteditor{margin-top:14px}

.layoutareatabs{display:flex;gap:6px;flex-wrap:wrap;margin:10px 0 6px}.layoutareatabs .btn{min-width:110px}




.manualentry{margin-top:8px}.manualqty{text-align:center;font-weight:900}

.walkwaycell{width:var(--www);height:var(--wwh);min-width:var(--www);border:1px dashed #9aa2a7;background:repeating-linear-gradient(135deg,#f6f7f7,#f6f7f7 8px,#e7eaeb 8px,#e7eaeb 16px);font-size:8px;font-weight:900;color:#667078}.walkwaycell.selected{outline:3px solid #8b6c2f}.walkwaycell span{opacity:.7}

/* V17.55: saved geometry drives visual order; dimensions remain presentation-only. */
[data-loc][data-geo-x]:not([data-geo-x=""]){order:calc(var(--geo-order,0))}
.diagnosticpanel{margin-bottom:10px}.diagrow{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:7px;background:#e9edef;border:1px solid #aab4ba;font-size:9px;font-weight:900}.diagrow b{font-size:12px}.walkwaycell[draggable=true]{cursor:grab}

.layoutwork{display:grid;grid-template-columns:minmax(0,1fr) 230px;gap:10px;align-items:start}

.layoutpreview{border:1px solid #9faab0;background:#f5f6f6;padding:7px;position:sticky;top:8px}
.previewtitle{font-size:9px;font-weight:900;margin-bottom:6px}


.walkwaycell{cursor:pointer}
@media(max-width:850px){.layoutwork{grid-template-columns:1fr}.layoutpreview{position:relative;top:auto}}
.fixedgrid{display:grid;grid-template-columns:repeat(20,32px);grid-template-rows:repeat(20,32px);gap:2px;background:#b8c0c4;padding:4px;width:max-content}.fixedcell{width:32px;height:32px;padding:0;border:1px solid #89949a;background:#f7f8f8;font-size:5px}.fixedcell.hasloc{background:#fff;border:2px solid #4e5c63}.fixedcell.iswalk{background:repeating-linear-gradient(135deg,#ecefee,#ecefee 5px,#cdd4d7 5px,#cdd4d7 10px)}.gridtools{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin:8px 0}.gridsizecontrols{display:flex;gap:12px;align-items:center;flex-wrap:wrap;padding:8px;margin:8px 0;background:#e8edef;border:1px solid #aab4ba}.gridsizecontrols label{display:grid;grid-template-columns:auto minmax(110px,190px) 30px;gap:6px;align-items:center;font-size:8px;font-weight:900}.fixedgridscroll{overflow:auto;max-width:100%}
/* V17.85 unified header status */
.headerstatus{min-width:64px;text-align:center;font-size:9px;font-weight:900;letter-spacing:.07em;padding:6px 8px;border:1px solid #74858e;background:#e7f0e9;color:#315b3b;white-space:nowrap}
.headerstatus.active{background:#e5eef5;border-color:#6c8798;color:#35576c}
.headerstatus.offline{background:#f1e3c7;border-color:#a78a53;color:#71551f}

/* V17.55 paper-order entry + Admin readability */
.statuspanel{background:#111820;border-color:#53636c}
.statuspanel .paneltitle,.statuspanel .statusnote,.statuspanel .statuscard,.statuspanel .statuscard span,.statuspanel .statuscard b{color:#80cb91!important}
.statuspanel .statuscard{background:#111820;border-color:#48565e}
.diagrow{background:#111820;border-color:#53636c;color:#80cb91!important}
.diagrow span,.diagrow b{color:#80cb91!important}
.adminrow strong{color:#80cb91}.adminrow span{color:#91cda0}
.adminsearch{width:100%;min-height:34px;margin:0 0 9px;padding:6px 8px;border:1px solid #8b979f;background:#fff}
.paperdialog{width:min(1220px,98vw);max-height:94vh;overflow:auto;background:#d9dde0}
.paperentry{margin:0}.papercontrols{position:sticky;top:0;z-index:5;display:grid;grid-template-columns:minmax(240px,320px) 1fr auto;gap:8px;align-items:end;background:#d9dde0;padding:3px 0 10px;border-bottom:1px solid #8f999f}
.papercontrols label{display:grid;grid-template-columns:74px 1fr;margin:0;gap:7px}.papercontrols select,.papercontrols input{min-height:34px}
.paperpage{background:#fbfaf4;color:#171717;border:1px solid #6d6d65;box-shadow:0 2px 7px #0003;margin:12px auto;padding:12px;width:100%;font-family:"Times New Roman",serif}
.paperpagehead{display:grid;grid-template-columns:1fr auto 1fr;align-items:end;gap:12px;margin-bottom:8px;font-size:14px}.paperpagehead>strong{text-align:center;font-size:17px}.paperpagehead>span:last-child{text-align:right}
.papercolumns{display:grid;border-top:1px solid #76766f;border-left:1px solid #76766f;align-items:start}.papercolumns.two{grid-template-columns:1fr 1fr}.papercolumns.three{grid-template-columns:1fr 1fr 1fr}
.papercolumns>div{border-right:1px solid #76766f;min-width:0}
.papersheetsection{margin:0}.papersectionhead{display:grid;grid-template-columns:1fr 86px;background:#d8c9a7;border-bottom:1px solid #76766f;font-weight:700;text-align:center}.papersectionhead>*{padding:3px 5px}.papersectionhead>*+*{border-left:1px solid #76766f}
.paperrow{display:grid;grid-template-columns:1fr 86px!important;gap:0!important;align-items:stretch!important;margin:0!important;min-height:27px;border-bottom:1px solid #a9a79d;font:14px/1.1 "Times New Roman",serif!important}.paperrow>span{padding:5px 6px;overflow:hidden;text-overflow:ellipsis}.paperqty{border:0!important;border-left:1px solid #8f8d83!important;border-radius:0!important;background:#fffef9!important;text-align:center;font:700 14px "Times New Roman",serif!important;min-height:26px!important;padding:2px!important}.paperqty:focus{outline:2px solid #2a7e88;outline-offset:-2px;background:#eefafa!important}
.paperactions{position:sticky;bottom:-12px;background:#d9dde0;padding:10px 0 3px;border-top:1px solid #8f999f;z-index:5}
@media(max-width:850px){.papercontrols{grid-template-columns:1fr}.paperpagehead{grid-template-columns:1fr;text-align:left}.paperpagehead>strong{text-align:left}.paperpagehead>span:last-child{text-align:left}.papercolumns.two,.papercolumns.three{grid-template-columns:1fr}.papercolumns>div{border-right:1px solid #76766f}.paperdialog{width:98vw}.paperrow{font-size:13px!important}}

/* V17.55 geometry-driven Facility Map core */
.facilitymap{align-items:start}
.warehousegrid{
  display:grid;
  gap:var(--fg,6px);
  width:max-content;
  max-width:none;
  align-content:start;
  justify-content:start;
  transform-origin:top left;
}
.warehousegrid .slot{
  width:var(--fw,82px);
  height:var(--fh,54px);
  min-height:var(--fh,54px);
  box-sizing:border-box;
}


.mapframe{overflow-x:hidden}
.fixedcell.selected{outline:3px solid #c17a24;outline-offset:-2px}
.facilitylayoutpreview{position:relative;top:auto;margin-top:12px;overflow:hidden}
.facilitylayoutpreview .previewtitle{margin-bottom:8px}
.facilitylayoutpreview small{display:block;margin-top:8px}
.diagnosticpanel .diagrow,.diagnosticpanel .diagrow span,.diagnosticpanel .diagrow b,
.statuspanel .statuscard span,.statuspanel .statuscard b{color:#58d68d!important}
.fixedcell.iswalk{background:repeating-linear-gradient(135deg,#ecefee,#ecefee 5px,#cdd4d7 5px,#cdd4d7 10px);font-weight:900;color:#59666d}
.fixedcell.iswalk span{font-size:8px}

/* Warehouse sections are assigned to named areas but keep intrinsic width. */
.maparea-secondary,[data-map-area="secondary"]{grid-area:secondary}
.maparea-main,[data-map-area="main"]{grid-area:main}
.maparea-freezer,[data-map-area="freezer"]{grid-area:freezer}
.maparea-fridge,[data-map-area="fridge"]{grid-area:fridge}

/* V17.55 — AUTHORITATIVE EDITOR-DRIVEN MAP
   The outer warehouse cards use intrinsic grid width. Nothing stretches to fill
   unused horizontal space. Saved Rows/Columns directly determine displayed size. */
.mapworkspace .mapframe{
  overflow-x:hidden!important;
}
.mapworkspace .facilitymap,
.facilitylayoutpreview .facilitymap{
  display:grid!important;
  grid-template-columns:max-content max-content max-content!important;
  grid-template-areas:
    "secondary main freezer"
    "secondary main fridge"!important;
  gap:8px!important;
  width:max-content!important;
  max-width:none!important;
  min-width:0!important;
  justify-content:start!important;
  justify-items:start!important;
  align-items:start!important;
}
.mapworkspace .facilitymap .zone,
.facilitylayoutpreview .facilitymap .zone{
  width:max-content!important;
  min-width:0!important;
  max-width:none!important;
  justify-self:start!important;
  align-self:start!important;
  box-sizing:border-box;
  overflow:visible!important;
}
.mapworkspace .facilitymap .warehousegrid,
.facilitylayoutpreview .facilitymap .warehousegrid{
  flex:none!important;
  min-width:0!important;
  max-width:none!important;
  justify-self:start!important;
}

/* Medium desktop: Main + cold storage on the first side, Secondary below.
   All columns remain intrinsic, never fractional/stretching. */
@media (max-width:1799px) and (min-width:1101px){
  .mapworkspace .facilitymap,
  .facilitylayoutpreview .facilitymap{
    grid-template-columns:max-content max-content!important;
    grid-template-areas:
      "main freezer"
      "main fridge"
      "secondary secondary"!important;
  }
}

/* Compact desktop/tablet: warehouses rearrange before any scaling occurs. */
@media (max-width:1100px) and (min-width:761px){
  .mapworkspace .facilitymap,
  .facilitylayoutpreview .facilitymap{
    grid-template-columns:max-content max-content!important;
    grid-template-areas:
      "main main"
      "secondary secondary"
      "freezer fridge"!important;
  }
  .mapworkspace .facilitymap .zone,
  .facilitylayoutpreview .facilitymap .zone{
    justify-self:start!important;
  }
}

/* Only once the warehouses are stacked vertically can an oversized individual
   grid shrink. The section still does not stretch when its grid is smaller. */
@media (max-width:760px){
  .mapworkspace .facilitymap,
  .facilitylayoutpreview .facilitymap{
    grid-template-columns:max-content!important;
    grid-template-areas:
      "main"
      "secondary"
      "freezer"
      "fridge"!important;
    max-width:100%!important;
  }
  .mapworkspace .facilitymap .zone,
  .facilitylayoutpreview .facilitymap .zone{
    width:fit-content!important;
    max-width:100%!important;
    overflow:hidden!important;
    container-type:inline-size;
  }
  @supports (zoom:1){
    .mapworkspace .facilitymap .warehousegrid{
      zoom:min(1,calc(100cqw / var(--warehouse-natural-width)))!important;
    }
  }
}

/* Walkways and ordinary empty editor boxes both retain their exact configured
   pallet-sized coordinate space in the live map. */


/* V17.55 sparse editor-driven map:
   plain EMPTY editor coordinates do not materialize into display space.
   PALLET and WALKWAY are the only visible footprint types. */
.sparsewarehouse{
  display:flex!important;
  flex-direction:column!important;
  gap:var(--fg,6px)!important;
  width:max-content!important;
  height:max-content!important;
  min-width:0!important;
  min-height:0!important;
}
.sparsewarehouse .facilityrow{
  display:flex;
  gap:var(--fg,6px);
  width:max-content;
  height:var(--fh,54px);
}
.sparsewarehouse .facilitycell{
  flex:0 0 var(--fw,82px);
  width:var(--fw,82px);
  height:var(--fh,54px);
  box-sizing:border-box;
}
.sparsewarehouse .palletcell>.slot{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
}
.sparsewarehouse .walkwaycell{
  background:transparent;
  border:0;
}
/* Any legacy full-grid facilityspace cells are suppressed in the live renderer. */


/* V17.55 rearrange sub-modes + visible stacked pallet layers */
.rearrangeactions{display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.slot.stacked{position:relative;padding-bottom:22px!important;box-shadow:inset 0 -4px #7d5f2f}
.slot.stacked::after{content:"";position:absolute;left:4px;right:4px;bottom:3px;height:3px;background:#b08a50;box-shadow:0 -4px 0 #c3a46e}
.stackbadge{display:inline-block;font-size:7px;font-weight:900;letter-spacing:.04em;background:#77562d;color:white;padding:1px 3px;margin-top:1px}
.lowstockbadge{display:inline-block;font-size:7px;font-weight:900;letter-spacing:.04em;background:#a5651b;color:white;padding:1px 3px;margin-top:1px;margin-left:2px;border:0}
.stackcontents{display:block;margin-top:2px;border-top:1px solid #bfa97f;padding-top:1px}
.stackline{display:block;font-size:6.5px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#59431f;font-weight:800}



/* Area-specific warehouse size controls */
.warehousevisualcontrols{display:grid;grid-template-columns:auto repeat(5,minmax(125px,1fr)) auto;gap:8px;align-items:end;margin:9px 0;padding:8px;border:1px solid #aeb8bd;background:#edf1f3}
.warehousevisualcontrols>strong{align-self:center;font-size:9px;letter-spacing:.05em}
.warehousevisualcontrols label{display:grid;grid-template-columns:1fr auto;gap:3px 6px;font-size:8px;font-weight:900;color:#56656e}
.warehousevisualcontrols label input{grid-column:1/-1;width:100%}
.warehousevisualcontrols label b{text-align:right}
@media(max-width:1100px){.warehousevisualcontrols{grid-template-columns:1fr 1fr 1fr}.warehousevisualcontrols>strong,.warehousevisualcontrols>button{grid-column:1/-1}}

/* Pallet and walkway cells can now have different dimensions per warehouse. */
.sparsewarehouse .facilityrow{height:auto!important;align-items:flex-start}
.sparsewarehouse .facilitycell{flex:0 0 var(--cell-w,var(--fw,82px))!important;width:var(--cell-w,var(--fw,82px))!important;height:var(--cell-h,var(--fh,54px))!important}
.sparsewarehouse .walkwaycell{flex-basis:var(--cell-w,var(--ww,82px))!important;width:var(--cell-w,var(--ww,82px))!important;height:var(--cell-h,var(--wh,54px))!important}

/* V17.55 footprint count: stacked layers behave like normal physical pallet layers. */
.countlayers{display:grid;gap:7px;margin:10px 0}
.countlayer{display:grid;grid-template-columns:minmax(180px,1fr) 100px 100px;gap:8px;align-items:end;border:1px solid #aeb8bd;background:#eef2f3;padding:7px}
.countlayer>div{display:grid;gap:2px}.countlayer>div b{font-size:9px;letter-spacing:.05em}.countlayer>div span{font-weight:800}
.countlayer label{margin:0}.countlayer input{width:100%}
@media(max-width:650px){.countlayer{grid-template-columns:1fr 1fr}.countlayer>div{grid-column:1/-1}}

/* V17.55 map picking clarity */
.mappickitem.needsplit{border-left:4px solid #a43b3b;background:#fff1ec}
.pickloc{align-items:center}
.pickrowinfo{display:grid;grid-template-columns:minmax(130px,1.2fr) minmax(90px,.8fr) auto;gap:8px;align-items:center;min-width:0;flex:1}
.pickrowitem{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pickrowwhere{min-width:0}.pickrowqty{font-size:13px;color:#9d2929;white-space:nowrap;letter-spacing:.02em}
.pickactions .btn{min-width:58px}
.mappickpopover{width:270px}
.popoverproducts{display:grid;gap:6px;margin:7px 0}
.popoverproduct{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"name qty" "pick pick";gap:2px 10px;align-items:center;border-bottom:1px solid #cfd7db;padding:5px 2px 7px}
.popoverproduct:last-child{border-bottom:0}.popoverproduct>strong{grid-area:name;font-size:15px;line-height:1.05;overflow:hidden;text-overflow:ellipsis}.popoverproductqty{grid-area:qty;font:900 24px/1 Consolas,monospace;color:#172a35}
.popoverpickneed{grid-area:pick;font-size:11px;font-weight:900;color:#a22b2b;letter-spacing:.04em}
.popoverorder{font-size:9px;font-weight:900;color:#61717a;border-top:1px solid #bcc8ce;padding-top:5px;margin-bottom:7px;text-transform:uppercase}
.popoverempty{font-size:13px;font-weight:900;color:#7b878d;padding:10px 2px}
@media(max-width:700px){.pickrowinfo{grid-template-columns:1fr auto;grid-template-areas:"item qty" "where where"}.pickrowitem{grid-area:item}.pickrowwhere{grid-area:where}.pickrowqty{grid-area:qty}.mappickpopover{width:230px}}





.pickloc.compact .pickrowinfo{grid-template-columns:minmax(72px,auto) auto;align-items:center}
.pickloc.compact .pickrowqty{font-size:13px;min-width:24px;text-align:center}


/* V17.55 — intrinsic wrapping warehouse row.
   Secondary + Main + the combined Freezer/Fridge column remain on one row
   whenever their ACTUAL rendered widths fit. There is no screen-width rule
   that forces Secondary onto another row. */
.mapworkspace .facilitymap,
.facilitylayoutpreview .facilitymap{
  display:flex!important;
  flex-flow:row wrap!important;
  align-items:flex-start!important;
  justify-content:flex-start!important;
  gap:8px!important;
  width:100%!important;
  max-width:100%!important;
  min-width:0!important;
}
.mapworkspace .facilitymap>.zone,
.facilitylayoutpreview .facilitymap>.zone,
.mapworkspace .coldstoragecolumn,
.facilitylayoutpreview .coldstoragecolumn{
  flex:0 0 auto!important;
  width:max-content!important;
  min-width:0!important;
  max-width:none!important;
}
.mapworkspace .coldstoragecolumn,
.facilitylayoutpreview .coldstoragecolumn{
  display:flex!important;
  flex-direction:column!important;
  gap:8px!important;
  align-items:flex-start!important;
}
.mapworkspace .coldstoragecolumn>.zone,
.facilitylayoutpreview .coldstoragecolumn>.zone{
  width:max-content!important;
  min-width:0!important;
  max-width:none!important;
}

/* Neutralize V17.55's superseded forced desktop rearrangements. Flex wrapping now decides
   based on the actual warehouse footprint widths instead of viewport breakpoints. */
@media (max-width:1799px) and (min-width:761px){
  .mapworkspace .facilitymap,
  .facilitylayoutpreview .facilitymap{
    display:flex!important;
    flex-flow:row wrap!important;
    width:100%!important;
    max-width:100%!important;
  }
}

/* Phones remain intentionally stacked. */
@media (max-width:760px){
  .mapworkspace .facilitymap,
  .facilitylayoutpreview .facilitymap{
    display:flex!important;
    flex-direction:column!important;
    flex-wrap:nowrap!important;
    width:100%!important;
    max-width:100%!important;
  }
  .mapworkspace .facilitymap>.zone,
  .facilitylayoutpreview .facilitymap>.zone,
  .mapworkspace .coldstoragecolumn,
  .facilitylayoutpreview .coldstoragecolumn{
    max-width:100%!important;
  }
}

/* V17.55 single-bar searchable choice controls — native datalist arrow */
.choicebar{position:relative;display:inline-flex;align-items:center;min-width:220px;max-width:360px;width:100%}
.choiceinput{
  width:100%;min-width:0;padding:7px 8px!important;
  border:1px solid #8e9aa0;background:#fff;font:inherit;box-sizing:border-box;
}
.choiceinput:focus{outline:2px solid #74858d;outline-offset:1px}
.dialog .choicebar{max-width:none}


/* V17.55 proportional Admin Map preview.
   The internal page keeps the same CSS width as the real Map workspace.
   The whole page is then visually scaled, so flex wrapping/warehouse stacking
   is decided before scaling and therefore matches the Map tab. */
.facilitylayoutpreview{
  width:100%!important;
  max-width:none!important;
  overflow:hidden!important;
}
.adminpreviewmeta{
  display:flex;
  justify-content:flex-end;
  margin:-2px 0 5px;
  font-size:8px;
  font-weight:900;
  color:#617079;
  letter-spacing:.04em;
}
.adminpreviewstage{
  position:relative;
  width:100%;
  min-height:90px;
  overflow:hidden;
  background:#eef1f2;
  border:1px solid #aab4ba;
}
.adminpreviewpage{
  position:absolute!important;
  left:0;
  top:0;
  margin:0!important;
  pointer-events:none!important;
  will-change:transform;
}
.facilitylayoutpreview .adminpreviewpage .adminmappreview{
  width:100%!important;
  max-width:none!important;
  overflow:hidden!important;
  margin-top:0!important;
}
.facilitylayoutpreview .adminpreviewpage .facilitymap{
  pointer-events:none!important;
}

/* V17.85 shared role PIN UI */
.pinhint{display:flex;gap:8px;align-items:flex-start;margin:10px 0 2px;padding:8px 9px;border:1px solid #b8a36d;background:#fff9e8;color:#5f4c24;font-size:11px}.pinhint b{font-size:9px;letter-spacing:.8px;border:1px solid #b8a36d;padding:2px 4px;background:#fff}.pinhint span{min-width:0;overflow-wrap:anywhere}.optional{font-weight:400;color:var(--muted);font-size:10px}.pinerror{min-height:18px;margin-top:7px;color:#a33;font-weight:800;font-size:11px}.headerstatus[style*=pointer]{text-decoration:underline dotted;text-underline-offset:3px}

/* V17.85 public pilot access lock + de-stack */
.slot.destacksource{outline:3px solid #8b5fc7!important;outline-offset:-3px;background:linear-gradient(#f5effc,#e8daf8)!important}
.slot.destackdest{outline:3px dashed #2c8b72!important;outline-offset:-3px;background:linear-gradient(#effbf6,#dff4e9)!important}
.applockbtn{white-space:nowrap}
.accessgate{min-height:100vh;display:grid;place-items:center;padding:24px;background:linear-gradient(#cfd5d9,#e7eaec 220px);font:13px Tahoma,Verdana,Arial,sans-serif;color:#172027}.accesscard{width:min(420px,100%);background:#f8fafb;border:1px solid #7f8b93;box-shadow:0 12px 34px #1c2a3340;padding:26px}.accesslogo{display:block;width:72px;height:72px;object-fit:contain;image-rendering:pixelated;margin:0 auto 8px}.accessbrand{text-align:center;font-weight:900;letter-spacing:1.4px;font-size:19px}.accesstag{display:table;margin:5px auto 20px;border:1px solid #8d999f;background:#e6ebee;padding:3px 7px;font:700 10px Consolas,monospace;color:#43525c}.accesscard h1{text-align:center;font-size:18px;margin:0 0 8px}.accesscard p{color:#66727c;line-height:1.45;text-align:center;margin:0 0 18px}.accesscard label{display:grid;gap:5px;font-weight:800;font-size:11px;margin:10px 0}.accesscard input{width:100%;padding:10px;border:1px solid #8f9aa1;background:white;font-size:16px}.accesssubmit{width:100%;margin-top:8px;padding:10px}.accesshint{display:flex;gap:8px;align-items:center;border:1px solid #c7b37c;background:#fff9e8;padding:8px 10px;margin:10px 0;color:#66511c}.accesshint b{font-size:10px;letter-spacing:.8px}.accesssetupnote{font-size:10px;color:#66727c;line-height:1.4;margin-top:12px;text-align:center}

/* V17.85 four-digit public entry PIN */
.accesspininput{font:900 24px Consolas,monospace!important;letter-spacing:9px;text-align:center;padding-left:18px!important}

/* V17.85 PIN/header polish */
.diagnosticpanel>.paneltitle,.adminpage .admincols>.panel>.paneltitle,.layouteditor>.paneltitle{display:flex;align-items:center;min-height:32px;padding:0 8px;margin-bottom:8px}
.accesscard .accesspininput{width:160px!important;max-width:160px!important;justify-self:center;padding:8px!important;letter-spacing:7px!important;text-align:center!important}
@media(max-width:800px){.accesscard .accesspininput{justify-self:center}}

.connectionoverlay{padding:12px 14px 0}.connectioncard{display:grid;grid-template-columns:56px 1fr;gap:12px;align-items:center;border:1px solid #c6ab6d;background:linear-gradient(#fff8e8,#f3ead3);box-shadow:var(--shadow);padding:10px 12px}.connectionlogo{width:48px;height:48px;object-fit:contain;image-rendering:pixelated}.connectiontitle{font-weight:900;letter-spacing:.5px;color:#5e4617;font-size:12px}.connectiontext{font-size:11px;color:#67562e;line-height:1.4;margin-top:2px}.connectionmeta{font-size:10px;color:#6f6241;margin-top:4px}.topactions .btn{white-space:nowrap}@media(max-width:900px){.connectioncard{grid-template-columns:44px 1fr}.connectionlogo{width:40px;height:40px}}
.rolebadge{display:inline-flex;align-items:center;justify-content:center;min-height:24px;padding:3px 7px;border:1px solid #81909a;background:#edf1f3;color:#43525c;font:900 9px Tahoma,sans-serif;letter-spacing:.07em}.rolebadge.role-admin{background:#e3edf4;border-color:#68869a;color:#274b63}.rolebadge.role-manager{background:#e9f0e4;border-color:#78906c;color:#405c35}.rolebadge.role-picker{background:#f3ecdb;border-color:#a08b59;color:#69551f}.rolehints{display:grid;gap:5px;border:1px solid #c7b37c;background:#fff9e8;padding:8px 10px;margin:10px 0;color:#66511c;font-size:11px}.rolehints>b{font-size:9px;letter-spacing:.8px}.rolehints span{display:flex;gap:7px;align-items:flex-start}.rolehints strong{min-width:62px;font-size:9px;letter-spacing:.7px}.roleaccesspanel{margin:10px 0;padding:10px}.rolepinlist{display:grid;gap:8px;margin-top:10px}.rolepinrow{display:grid;grid-template-columns:minmax(240px,1.4fr) 150px minmax(180px,.8fr) auto;gap:10px;align-items:end;padding:10px;border:1px solid #c1c9ce;background:#f4f7f8}.rolepininfo{display:grid;gap:3px}.rolepininfo strong{font-size:11px;letter-spacing:.7px}.rolepininfo span{font-size:10px;color:var(--muted);line-height:1.35}.rolepininfo em{font-style:normal;font-size:9px;font-weight:900;color:#52606a}.rolepinrow label{display:grid;gap:4px;font-size:9px;font-weight:900;letter-spacing:.05em}.rolepinrow input{width:100%;min-height:32px;border:1px solid #8f9aa1;background:#fff;padding:5px 7px}.rolepininput{font:900 18px Consolas,monospace;letter-spacing:5px;text-align:center}@media(max-width:980px){.rolepinrow{grid-template-columns:1fr 150px 1fr}.rolepinrow button{grid-column:1/-1;justify-self:end}}@media(max-width:650px){.rolepinrow{grid-template-columns:1fr}.rolepinrow button{grid-column:auto;width:100%}}

/* V17.85 disconnect simulator */
.disconnecttestbtn{border-color:#a68a53;background:linear-gradient(#fff9e8,#eadbb9);color:#71551f}.connectionoverlay.testmode .connectioncard{border-color:#b97845;background:linear-gradient(#fff1e6,#f2d4bd)}.connectionoverlay.testmode .connectiontitle{color:#7b3f19}.reconnecttestbtn{margin-top:7px}.testdisconnectwarning{border-color:#b97845;background:#fff4eb}

.roleline{margin-top:2px;font-size:11px;color:#51606a;letter-spacing:.2px}

.rolebadge.role-admin{background:#e7edf3;border-color:#6d8291;color:#334b5d}
.rolebadge.role-manager{background:#e7f0e9;border-color:#73947c;color:#365c40}
.rolebadge.role-picker{background:#f4ead6;border-color:#aa8b50;color:#6d5320}


.activityhistoryhead,.activityhistoryrow{display:grid;grid-template-columns:150px 86px 190px minmax(0,1fr);gap:10px;align-items:center}.activityhistoryhead{padding:6px 8px;background:#e6ebee;border-bottom:1px solid #a8b2b8;font-size:9px;font-weight:900;letter-spacing:.7px;color:#53616a}.activityhistoryrow{padding:7px 8px;border-bottom:1px solid #d4dade;font-size:11px}.activityhistoryrow:nth-child(even){background:#f0f2f4}.activityhistoryrow b{font-size:10px;letter-spacing:.35px}.activityhistoryrow>span:last-child{min-width:0;overflow-wrap:anywhere}.activityhistoryrow .rolebadge{justify-self:start;margin:0}.managerpage{padding-top:14px}.managerpage+.layouteditor{margin-top:0}@media(max-width:760px){.activityhistoryhead{display:none}.activityhistoryrow{grid-template-columns:1fr auto}.activityhistoryrow b,.activityhistoryrow>span:last-child{grid-column:1/-1}}

.rolepinrow{grid-template-columns:minmax(230px,1.35fr) 145px minmax(170px,.8fr) auto 112px}.rolepinreveal{display:grid;gap:4px;align-self:end}.rolepinvalue{display:block;min-height:25px;padding:5px 7px;border:1px solid #aab4ba;background:#e9edf0;color:#68737a;text-align:center;font:900 11px Consolas,monospace;letter-spacing:1px}.rolepinvalue.visible{background:#fff8df;border-color:#a58c4f;color:#382d12;font-size:16px;letter-spacing:3px}.rolepinreveal button:disabled{opacity:.5;cursor:not-allowed}@media(max-width:1120px){.rolepinrow{grid-template-columns:1fr 145px 1fr}.rolepinrow>.btn[data-save-role-pin]{justify-self:end}.rolepinreveal{grid-column:2/-1;grid-template-columns:auto 112px;justify-content:end;align-items:center}}@media(max-width:650px){.rolepinrow{grid-template-columns:1fr}.rolepinrow>.btn[data-save-role-pin],.rolepinreveal{grid-column:auto;width:100%}.rolepinreveal{grid-template-columns:1fr 110px}}
.activityhistoryhead.withtx,.activityhistoryrow.withtx{grid-template-columns:150px 86px 112px 190px minmax(0,1fr)}.txid{font:700 10px Consolas,monospace;color:#4c5b65;background:#e8edf0;border:1px solid #c1cbd1;padding:3px 5px;justify-self:start;white-space:nowrap}@media(max-width:760px){.activityhistoryrow.withtx{grid-template-columns:1fr auto}.activityhistoryrow.withtx .txid{grid-column:1/-1}.activityhistoryrow.withtx b,.activityhistoryrow.withtx>span:last-child{grid-column:1/-1}}

/* V17.85 compact production diagnostics */
.diagnosticspanel{margin:14px 14px 0;background:#111820;border:1px solid #53636c;color:#d9e4e8;padding:12px}.diagnosticshead{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:9px}.diagnosticspanel .paneltitle{color:#8fcf9c!important;margin:0;min-height:0;padding:0;border:0}.diagnosticspanel .sub{color:#8fa0aa;margin-top:4px}.diagnosticsgrid{display:grid;grid-template-columns:repeat(6,minmax(95px,1fr));gap:7px}.diagnosticcard{border:1px solid #44535d;background:#172129;padding:8px 9px;min-height:51px}.diagnosticcard span{display:block;font-size:8px;letter-spacing:.11em;color:#8798a2}.diagnosticcard b{display:block;margin-top:5px;font-size:12px;color:#dce5e9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.diagnosticcard.ok b{color:#58d68d}.diagnosticcard.bad b{color:#ee8179}.diagnosticsmeta{display:flex;gap:8px 18px;flex-wrap:wrap;margin-top:9px;padding-top:8px;border-top:1px solid #34434d;font-size:9px;color:#82939e}.diagnosticsmeta b{color:#b7c7cf}.diagnosticwarning{margin-top:9px;padding:7px 9px;border:1px solid #9f655e;background:#301d1c;color:#efaaa3;font-size:10px}.diagnosticsloading{padding:16px 4px;color:#8fa0aa}.diagnosticsactions{display:flex;justify-content:flex-end}.diagnosticspanel>.diagnosticshead .btn{flex:0 0 auto}@media(max-width:1100px){.diagnosticsgrid{grid-template-columns:repeat(4,1fr)}}@media(max-width:700px){.diagnosticsgrid{grid-template-columns:repeat(2,1fr)}.diagnosticshead{align-items:center}}

/* V17.85 paged History + Admin-only device diagnostics */
.historypager{display:flex;align-items:center;justify-content:center;gap:10px;padding:10px 6px 2px;border-top:1px solid #c7cfd4;margin-top:6px;color:var(--muted);font-size:10px}.historypager .btn{min-width:132px}.devicepanel{margin-top:12px;border:1px solid #9eabb2;background:#f5f7f8}.devicehead,.devicerow{display:grid;grid-template-columns:minmax(110px,1.2fr) minmax(80px,.8fr) 80px minmax(90px,.8fr);align-items:center;gap:8px;padding:7px 9px}.devicehead{background:#dfe5e8;border-bottom:1px solid #9eabb2;font-size:9px;font-weight:900;letter-spacing:.65px;color:#47545d}.devicerow{border-bottom:1px solid #d4dade;font-size:10px}.devicerow:last-child{border-bottom:0}.devicerow code{font:700 10px Consolas,monospace;color:#33434d}.deviceonline{font-size:9px;letter-spacing:.5px}.deviceonline.online{color:#356246}.deviceonline.recent{color:#7b6940}@media(max-width:700px){.devicehead,.devicerow{grid-template-columns:1fr 80px 70px}.devicehead span:last-child,.devicerow span:last-child{display:none}}

/* V17.85 Admin-only device attribution + paged device directory */
.activityhistoryhead.withadminmeta,.activityhistoryrow.withadminmeta{grid-template-columns:150px 86px 116px 112px 180px minmax(0,1fr)}.deviceidcell{font:700 10px Consolas,monospace;color:#33434d;background:#eef2f4;border:1px solid #c8d0d5;padding:3px 5px;justify-self:start;white-space:nowrap}.devicesubtitle{padding:7px 9px 5px;font-size:9px;font-weight:900;letter-spacing:.7px;color:#52616a;background:#edf1f3;border-bottom:1px solid #c6cfd4}.devicepager{margin:0;border-top:1px solid #c7cfd4;background:#f7f9fa}.devicepager .btn{min-width:170px}@media(max-width:760px){.activityhistoryrow.withadminmeta{grid-template-columns:1fr auto}.activityhistoryrow.withadminmeta .deviceidcell,.activityhistoryrow.withadminmeta .txid{grid-column:1/-1}.activityhistoryrow.withadminmeta b,.activityhistoryrow.withadminmeta>span:last-child{grid-column:1/-1}}


/* V17.85 phone-only usability polish. Desktop/tablet presentation above 700px is unchanged. */
@media (max-width:700px){
  html,body{max-width:100%;overflow-x:hidden}
  body{font-size:14px;-webkit-text-size-adjust:100%}
  .shell{width:100%;max-width:100%;margin:0;border:0;box-shadow:none;min-height:100dvh}

  /* Header and primary navigation: wrap instead of squeezing controls into unreadable rows. */
  .topbar{height:auto;min-height:66px;padding:9px 10px;align-items:flex-start;gap:8px;flex-wrap:wrap}
  .brandblock{min-width:0;flex:1 1 180px}.appmark,.appmark img{width:34px;height:34px}.appmark{flex-basis:34px}
  .brand{font-size:14px;letter-spacing:.8px}.roleline{font-size:10px}
  .topactions{width:100%;display:flex;align-items:stretch;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:thin}
  .topactions>*{flex:0 0 auto}
  .topactions .btn.mini,.headerstatus,.rolebadge{min-height:40px;display:flex;align-items:center;justify-content:center;padding:6px 10px}
  .menubar{padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));width:100%}
  .menu{min-height:46px;padding:9px 6px;border-right:1px solid #65747d;border-bottom:1px solid #65747d;font-size:11px}

  /* General work areas and controls. */
  .workspace{padding:9px}.panel{padding:9px}.toolbar{gap:8px;margin-bottom:8px}.toolbar h2{font-size:17px}
  .tools{display:grid;grid-template-columns:1fr;width:100%;gap:7px}.tools>*{width:100%!important;min-width:0!important}
  .btn{min-height:42px;padding:8px 11px}.btn.mini{min-height:40px;padding:6px 9px}
  input,select,textarea,.choiceinput{min-height:42px;font-size:16px!important}
  .choicebar{min-width:0;max-width:none;width:100%}
  .shopcheck{width:40px;height:40px;min-width:40px;font-size:21px}
  .ordertab{min-width:168px;min-height:48px;padding:8px}.ordertabs{scroll-snap-type:x proximity}.ordertab{scroll-snap-align:start}
  .orderhead{grid-template-columns:36px minmax(0,1fr);gap:8px}.orderhead>*:last-child{grid-column:1/-1;width:100%}
  .incomingrow{gap:8px;align-items:center}.incomingrow .btn{flex:0 0 auto}
  .limited{grid-template-columns:1fr auto;gap:7px}.limited>*:nth-child(2){grid-column:1/-1}
  .splitfooter{flex-wrap:wrap}.splitfooter .btn{flex:1 1 130px}

  /* Dialogs stay inside the visual viewport and form fields never overhang. */
  .modalshade{padding:8px;align-items:center;overflow:auto}
  .dialog,.dialog.wide,.paperdialog{width:calc(100vw - 16px)!important;max-width:calc(100vw - 16px)!important;max-height:92dvh;overflow:auto;padding:11px}
  .dialogtitle{margin:-11px -11px 11px}
  .dialog label{grid-template-columns:1fr;gap:5px}.dialog input,.dialog select{width:100%;max-width:100%;font-size:16px}
  .dialogactions{position:sticky;bottom:-11px;background:#e9edf0;margin:12px -11px -11px;padding:9px 11px;border-top:1px solid #b5bec4;flex-wrap:wrap}
  .dialogactions .btn{flex:1 1 120px}
  .accessgate{padding:10px;min-height:100dvh}.accesscard{width:100%;padding:18px 15px}.accesslogo{width:62px;height:62px}
  .accesscard .accesspininput{width:150px!important;max-width:150px!important;font-size:24px!important}

  /* Today / Store: keep dense operational rows readable by scrolling inside their own panel. */
  .itemsummary,.mastershop,.storeexpand,.archiveorder{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .itemsummaryrow.todayrow{min-width:650px}.storemasterline,.storeallocrow{min-width:640px}
  .shopitemidentity{grid-template-columns:40px 44px minmax(165px,1fr)}
  .pickloc{padding:8px}.pickactions{gap:7px}.pickactions .btn{min-height:42px}

  /* Map: preserve configured pallet dimensions and make the map itself scroll instead of shrinking targets. */
  .mapworkspace .mapframe{max-width:100%;overflow:auto!important;-webkit-overflow-scrolling:touch;padding:5px}
  .mapworkspace .facilitymap{display:flex!important;flex-direction:column!important;flex-wrap:nowrap!important;width:max-content!important;max-width:none!important;min-width:100%!important}
  .mapworkspace .facilitymap>.zone,.mapworkspace .coldstoragecolumn,.mapworkspace .coldstoragecolumn>.zone{width:max-content!important;max-width:none!important;overflow:visible!important}
  .mapworkspace .facilitymap .warehousegrid{zoom:1!important;transform:none!important}
  .mapworkspace .zone{padding:5px}.mapworkspace .zonehead h3{font-size:10px}.mapworkspace .zonehead span{display:inline;font-size:9px}
  .mapworkspace .slot{min-height:40px;padding:3px}.mapworkspace .slotitem{font-size:9px}.mapworkspace .slotqty,.mapworkspace .slotcode{font-size:8px}
  .mappickpopover{width:min(270px,calc(100vw - 28px))}

  /* Wide operational/admin data stays contained instead of widening the entire page. */
  .activityhistoryhead,.activityhistoryrow,.activityhistoryrow.withtx,.activityhistoryrow.withadminmeta{font-size:11px}
  .devicepanel{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .devicehead,.devicerow{min-width:520px;grid-template-columns:minmax(120px,1.2fr) 90px 80px 120px}
  .devicehead span:last-child,.devicerow span:last-child{display:block}
  .historypager,.devicepager{flex-wrap:wrap}.historypager .btn,.devicepager .btn{min-height:42px;max-width:100%}
  .diagnosticspanel{margin:9px 9px 0;padding:9px}.diagnosticsgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.diagnosticcard{min-height:58px}
  .diagnosticshead{flex-wrap:wrap}.diagnosticshead .btn{min-height:40px}
  .rolepinrow{padding:9px}.rolepinrow input{min-height:42px}.rolepinreveal{grid-template-columns:1fr}.rolepinreveal button{width:100%}
  .warehousevisualcontrols{grid-template-columns:1fr}.warehousevisualcontrols>strong,.warehousevisualcontrols>button{grid-column:auto}.warehousevisualcontrols label input{min-height:42px}

  .connectionoverlay{padding:8px 9px 0}.connectioncard{grid-template-columns:40px 1fr;padding:9px}.connectionlogo{width:38px;height:38px}
  footer{padding:9px 10px;line-height:1.4}
}

@media (max-width:420px){
  .menubar{grid-template-columns:repeat(2,1fr)}
  .workspace{padding:7px}.panel{padding:8px}
  .topactions .btn.mini,.headerstatus,.rolebadge{font-size:9px;padding:6px 8px}
  .diagnosticsgrid{grid-template-columns:1fr 1fr}
}


/* V17.85 phone Store bars: fit quantity/allocation segments to the viewport like Split Stock. */
@media (max-width:700px){
  /* Store rows no longer carry the old desktop/tablet minimum width. */
  .mastershop,.storeexpand{overflow-x:hidden!important}
  .storemasterline,.storeallocrow{min-width:0!important;width:100%!important;max-width:100%!important}

  /* Main FOUND AT THIS STORE row: label/count above, responsive unit bar below. */
  .storemasterline{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:6px 8px!important;
    align-items:center!important;
  }
  .storemasterline>div:first-child{grid-column:1;grid-row:1;min-width:0}
  .storemasterline>b{grid-column:2;grid-row:1;text-align:right!important;white-space:nowrap}
  .storemasterline>.splitunittrack{
    grid-column:1/-1;
    grid-row:2;
    width:100%!important;
    min-width:0!important;
  }

  /* Per-restaurant parcel bars use the same full-width stacked pattern as Split Stock. */
  .storeallocrow{
    display:grid!important;
    grid-template-columns:minmax(0,1fr)!important;
    gap:5px!important;
  }
  .storeallocrow>div:first-child{min-width:0}
  .storeallocrow>.splitunittrack{width:100%!important;min-width:0!important}

  /* Allow every Store unit to proportionally compress to the available bar width. */
  .storemasterline>.splitunittrack,
  .storeallocrow>.splitunittrack{
    grid-template-columns:repeat(var(--splitunits),minmax(0,1fr))!important;
    gap:1px!important;
    padding:2px!important;
  }
  .storemasterline .splitunit,
  .storeallocrow .splitunit{
    min-width:0!important;
    width:100%!important;
  }
}


/* V17.85 phone pass: zero horizontal scrolling + unzoomed warehouse editor. */
@media (max-width:700px){
  html,body,#app,.shell,.workspace,.panel{width:100%;max-width:100%;overflow-x:hidden!important}

  /* Header controls wrap onto additional rows instead of creating a sideways scroller. */
  .topactions{overflow-x:hidden!important;flex-wrap:wrap!important;padding-bottom:0!important}
  .topactions>*{flex:1 1 auto;min-width:0!important}
  .topactions .rolebadge,.topactions .headerstatus{flex:1 1 90px}
  .topactions .btn.mini{flex:1 1 120px}

  /* Horizontal tab strips wrap on phones. */
  .ordertabs,.storetabs,.layoutareatabs{overflow-x:hidden!important;flex-wrap:wrap!important;white-space:normal!important}
  .ordertab,.storetab,.layoutareatabs .btn{min-width:0!important;flex:1 1 140px}

  /* Today becomes compact stacked rows rather than a 650px table. */
  .itemsummary{overflow-x:hidden!important}
  .itemsummaryrow.todayrow,.itemsummaryrow{min-width:0!important;width:100%!important;grid-template-columns:minmax(0,1fr) minmax(70px,.42fr)!important;gap:0!important}
  .itemsummaryrow.todayrow.head,.itemsummaryrow.head{display:none!important}
  .itemsummaryrow.todayrow>*:first-child,.itemsummaryrow>*:first-child{grid-column:1/-1;text-align:left!important}
  .itemsummaryrow.todayrow>*:not(:first-child),.itemsummaryrow>*:not(:first-child){min-width:0!important;text-align:left!important}
  .itemsummaryrow.todayrow strong{white-space:normal!important;overflow:visible!important;text-overflow:clip!important}

  /* Store bars already scale to width; keep every surrounding row constrained too. */
  .mastershop,.storeexpand,.storemasterline,.storeallocrow,.storeunittrack,.splitunittrack{max-width:100%!important;overflow-x:hidden!important}

  /* Archive rows become cards rather than fixed-width tables. */
  .archiveorder,.archiveday,.archivedaybody{overflow-x:hidden!important;max-width:100%!important}
  .archiveitemrow{min-width:0!important;width:100%!important;grid-template-columns:minmax(0,1fr) repeat(2,minmax(54px,.32fr))!important}
  .archiveitemrow.head{display:none!important}
  .archiveitemrow>*{min-width:0;padding:6px 5px!important;font-size:10px}
  .archiveitemrow>*:first-child{grid-column:1/-1;text-align:left!important}
  .archiveitemrow>*:nth-child(4),.archiveitemrow>*:nth-child(5){display:none!important}
  .archiveday>summary,.archiveorder>summary{align-items:flex-start;flex-direction:column;gap:4px}

  /* Admin device/history data is rendered as responsive rows; no internal sideways scrolling. */
  .devicepanel{overflow-x:hidden!important}
  .devicehead{display:none!important}
  .devicerow{min-width:0!important;width:100%!important;grid-template-columns:minmax(0,1fr) auto!important;gap:5px 8px!important;padding:9px!important}
  .devicerow code{grid-column:1/-1;overflow-wrap:anywhere;white-space:normal!important}
  .devicerow span:last-child{display:block!important;grid-column:1/-1;color:var(--muted)}
  .activityhistoryrow,.activityhistoryrow.withtx,.activityhistoryrow.withadminmeta{min-width:0!important;max-width:100%!important;overflow-wrap:anywhere}
  .deviceidcell,.txid{max-width:100%;white-space:normal!important;overflow-wrap:anywhere}

  /* Management forms never push wider than the viewport. */
  .admincols,.adminadd,.rolepinrow,.diagnosticsgrid,.warehousevisualcontrols,.gridsizecontrols,.gridtools{max-width:100%!important;min-width:0!important}
  .adminrow{min-width:0}.adminrow>div{min-width:0}.adminrow strong,.adminrow span{overflow-wrap:anywhere}
  .gridsizecontrols{display:grid!important;grid-template-columns:1fr!important;gap:8px!important}
  .gridsizecontrols label{grid-template-columns:90px minmax(0,1fr) 32px!important;min-width:0}
  .gridsizecontrols input[type=range],.warehousevisualcontrols input[type=range]{min-width:0!important;width:100%!important}
  .gridtools .btn{flex:1 1 120px}.gridtools span{flex:1 1 100%;min-width:0}

  /* Warehouse editor coordinate grid fits the phone through responsive cell sizing, not CSS zoom. */
  .fixedgridscroll{overflow:hidden!important;width:100%!important;max-width:100%!important}
  .fixedgrid{width:100%!important;max-width:100%!important;padding:3px!important;gap:1px!important;grid-template-columns:repeat(var(--editor-cols),minmax(0,1fr))!important;grid-template-rows:none!important;zoom:1!important;transform:none!important}
  .fixedcell{width:100%!important;height:auto!important;min-width:0!important;min-height:0!important;aspect-ratio:1/1;padding:0!important;overflow:hidden;font-size:clamp(3px,1.25vw,6px)!important}
  .fixedcell b,.fixedcell span{max-width:100%;overflow:hidden;text-overflow:clip}

  /* The editor's proportional desktop preview is not zoomed on phones. Keep it 1:1 and clipped to its panel. */
  .facilitylayoutpreview{overflow:hidden!important;max-width:100%!important}
  .adminpreviewstage{height:auto!important;min-height:0!important;overflow:hidden!important}
  .adminpreviewpage{position:relative!important;left:auto!important;top:auto!important;width:100%!important;max-width:100%!important;transform:none!important;zoom:1!important;will-change:auto!important}
  .facilitylayoutpreview .adminpreviewpage .adminmappreview{width:100%!important;max-width:100%!important;overflow:hidden!important;padding:4px!important}
  .facilitylayoutpreview .adminpreviewpage .facilitymap{width:100%!important;max-width:100%!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}
  .facilitylayoutpreview .adminpreviewpage .zone{width:100%!important;max-width:100%!important;overflow:hidden!important}
  .facilitylayoutpreview .adminpreviewpage .warehousegrid{zoom:1!important;transform:none!important;max-width:100%!important}

  /* Live Map fits each warehouse section into the phone instead of creating horizontal scroll. */
  .mapworkspace .mapframe{overflow-x:hidden!important;width:100%!important;max-width:100%!important}
  .mapworkspace .facilitymap{width:100%!important;max-width:100%!important;display:flex!important;flex-direction:column!important;overflow:hidden!important}
  .mapworkspace .facilitymap>.zone,.mapworkspace .coldstoragecolumn,.mapworkspace .coldstoragecolumn>.zone{width:100%!important;max-width:100%!important;overflow:hidden!important}
  @supports (zoom:1){
    .mapworkspace .facilitymap .warehousegrid{zoom:min(1,calc((100vw - 36px) / var(--warehouse-natural-width)))!important;transform:none!important}
  }
}


/* V17.85 phone Today hierarchy: two-column / two-row summary cards.
   Left = item/list name + total asked. Right = warehouse/picked + store/bought. */
@media (max-width:700px){
  .itemsummaryrow.todayrow:not(.head){
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(128px,.78fr)!important;
    grid-template-rows:auto auto!important;
    column-gap:10px!important;
    row-gap:2px!important;
    align-items:center!important;
    padding:7px 8px!important;
  }
  .itemsummaryrow.todayrow:not(.head)>strong:first-child{
    grid-column:1!important;
    grid-row:1!important;
    align-self:end!important;
    padding:2px 0 1px!important;
    min-width:0!important;
    font-size:11px!important;
    line-height:1.2!important;
  }
  .itemsummaryrow.todayrow:not(.head)>span:nth-child(2){
    grid-column:1!important;
    grid-row:2!important;
    align-self:start!important;
    padding:1px 0 2px!important;
    text-align:left!important;
    font:900 14px Consolas,monospace!important;
    color:#4e5b63!important;
  }
  .itemsummaryrow.todayrow:not(.head)>.planprogress:nth-child(3){
    grid-column:2!important;
    grid-row:1!important;
    align-self:end!important;
  }
  .itemsummaryrow.todayrow:not(.head)>.planprogress:nth-child(4){
    grid-column:2!important;
    grid-row:2!important;
    align-self:start!important;
  }
  .itemsummaryrow.todayrow:not(.head)>.planprogress{
    width:100%!important;
    min-width:0!important;
    padding:1px 0 10px!important;
    grid-template-columns:1fr 14px 1fr!important;
    line-height:1!important;
  }
  .itemsummaryrow.todayrow:not(.head)>.planprogress b{
    font-size:13px!important;
  }
  .itemsummaryrow.todayrow:not(.head)>.planprogress small{
    bottom:0!important;
    font-size:7px!important;
    letter-spacing:.02em!important;
    white-space:nowrap!important;
  }
  .masteritemheader>strong small{
    margin-left:2px!important;
  }
}
\n\n/* V17.85 mobile collision guard: names truncate rather than crossing adjacent totals/controls. */
@media (max-width:700px){
  .itemsummaryrow.todayrow:not(.head)>strong:first-child,
  .masteritemheader>strong,
  .orderhead>div,
  .orderhead>div>strong,
  .ordertab b,
  .limited>span,
  .resolvedsplitbutton span,
  .resolvedsplitbutton span>b,
  .incomingrow>div,
  .incomingrow strong,
  .shopitemidentity>div,
  .shopitemidentity strong,
  .shopdestline span,
  .shopdestline span>b,
  .storeallocrow>div,
  .storeallocrow>div>strong,
  .archiveitemrow>strong,
  .archiveorder>summary span,
  .archiveday>summary span{
    min-width:0!important;
    max-width:100%!important;
  }
  .itemsummaryrow.todayrow:not(.head)>strong:first-child,
  .masteritemheader>strong,
  .orderhead>div>strong,
  .ordertab b,
  .limited>span,
  .resolvedsplitbutton span>b,
  .incomingrow strong,
  .shopitemidentity strong,
  .shopdestline span>b,
  .storeallocrow>div>strong,
  .archiveitemrow>strong,
  .archiveorder>summary strong,
  .archiveday>summary strong{
    display:block!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
}
\n\n/* V17.85 mobile Map density + per-warehouse fit.
   The desktop/editor footprint dimensions remain authoritative. On phones each
   live warehouse is measured independently and only an oversized grid is
   display-scaled down to that warehouse section's available width. */
.mobilepickhead{display:none}
@media (max-width:700px){
  /* The map page itself never becomes a horizontal scroller. */
  .mapworkspace .mapframe,
  .mapworkspace .facilitymap,
  .mapworkspace .facilitymap>.zone,
  .mapworkspace .coldstoragecolumn,
  .mapworkspace .coldstoragecolumn>.zone{
    width:100%!important;
    max-width:100%!important;
    min-width:0!important;
    overflow-x:hidden!important;
  }
  .mapworkspace .facilitymap{display:flex!important;flex-direction:column!important;align-items:stretch!important}
  .mapworkspace .coldstoragecolumn{display:flex!important;flex-direction:column!important;align-items:stretch!important}

  /* JS writes a different --mobile-map-scale / zoom to every individual grid.
     Do not derive one scale from the overall facility map. */
  .mapworkspace .zone .warehousegrid{
    transform:none!important;
    transform-origin:top left!important;
    max-width:none!important;
    margin-right:0!important;
  }

  /* Active Map list: one dense line per reservation. */
  .mappickpanel{overflow:hidden!important}
  .mobilepickhead{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 38px minmax(72px,88px) 54px;
    gap:5px;
    align-items:end;
    padding:5px 7px 4px;
    background:#dde4e8;
    border-top:1px solid #aeb9bf;
    border-bottom:1px solid #aeb9bf;
    color:#5d6971;
    font-size:7px;
    font-weight:900;
    letter-spacing:.05em;
  }
  .mobilepickhead span:nth-child(2),.mobilepickhead span:nth-child(4){text-align:center}
  .mobilepickhead span:nth-child(3){text-align:center}

  .mappickitem{display:block!important;padding:0!important;border-top:0!important;background:#f8fafb}
  .mappickitem>.picklocations{display:block!important;margin:0!important}
  .mappickitem:has(.pickloc.compact)>div:first-child{display:none!important}
  .pickloc.compact{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) 38px minmax(72px,88px) 54px!important;
    gap:5px!important;
    align-items:center!important;
    width:100%!important;
    min-width:0!important;
    padding:5px 7px!important;
    border-bottom:1px solid #d1d8dc;
  }
  .pickloc.compact .compactitem{
    display:block!important;
    min-width:0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
    font-size:10px!important;
    line-height:1.1!important;
  }
  .pickloc.compact .compactqty{
    display:block!important;
    min-width:0!important;
    text-align:center!important;
    font-size:11px!important;
  }
  .pickloc.compact .compactwhere{
    display:block!important;
    min-width:0!important;
    text-align:center!important;
  }
  .pickloc.compact .pickrowlocation,
  .pickloc.compact .picklocselect{
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    height:28px!important;
    padding:2px 3px!important;
    font-size:9px!important;
    text-align:center;
  }
  .pickloc.compact .pickactions{display:block!important;width:54px!important;min-width:0!important}
  .pickloc.compact .pickactions .btn{
    width:54px!important;
    min-width:0!important;
    min-height:30px!important;
    height:30px!important;
    padding:3px 4px!important;
    font-size:9px!important;
  }

  /* Completed / waiting-for-split lines have no reservation row, so keep one
     compact status line instead of losing that information. */
  .mappickitem:not(:has(.pickloc.compact))>div:first-child{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) auto!important;
    gap:7px!important;
    align-items:center!important;
    padding:5px 7px!important;
    border-bottom:1px solid #d1d8dc;
  }
  .mappickitem:not(:has(.pickloc.compact))>div:first-child strong{
    min-width:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;font-size:10px!important
  }
  .mappickitem:not(:has(.pickloc.compact))>div:first-child span{font-size:8px!important;white-space:nowrap!important}
}


/* V17.85 mobile Map + Today repair. These rules intentionally sit last so
   older phone compatibility rules cannot reintroduce horizontal scrolling or
   move the compact Map PICK column out of place. Desktop remains unchanged. */
@media (max-width:700px){
  /* Restaurant list chooser: two equal-width buttons per line. Names clip,
     while the picked count keeps its normal second line. */
  .ordertabs{
    display:grid!important;
    grid-template-columns:repeat(2,minmax(0,1fr))!important;
    gap:4px!important;
    width:100%!important;
    max-width:100%!important;
    overflow:hidden!important;
  }
  .ordertabslabel{
    grid-column:1/-1!important;
    width:100%!important;
    min-height:30px!important;
  }
  .ordertab{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    max-width:100%!important;
    min-height:48px!important;
    overflow:hidden!important;
    padding:7px!important;
  }
  .ordertab b,.ordertab span{
    display:block!important;
    width:100%!important;
    min-width:0!important;
    white-space:nowrap!important;
    overflow:hidden!important;
    text-overflow:ellipsis!important;
  }
  .ordertab span{margin-top:3px!important}

  /* Expanded Master List restaurant rows use the same left/right hierarchy:
     restaurant + asked on the left, status + PICK on the right. */
  .masteritemdetails{overflow:hidden!important;padding:3px 5px 6px!important}
  .masterrestaurantrow{
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(112px,1fr)!important;
    grid-template-rows:auto auto!important;
    gap:2px 8px!important;
    min-width:0!important;
    width:100%!important;
    padding:5px 6px!important;
  }
  .masterrestaurantrow>*{padding:0!important;min-width:0!important}
  .masterrestaurantrow>strong{
    grid-column:1!important;grid-row:1!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
    font-size:10px!important;
  }
  .masterrestaurantrow>.masterasked{
    grid-column:1!important;grid-row:2!important;text-align:left!important;
    font:900 12px Consolas,monospace!important;color:#53616a!important;
  }
  .masterrestaurantrow>.fulfillstatus{
    grid-column:2!important;grid-row:1!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
    text-align:right!important;font-size:8px!important;
  }
  .masterrestaurantrow>.btn{
    grid-column:2!important;grid-row:2!important;
    justify-self:end!important;width:min(82px,100%)!important;
    min-height:30px!important;height:30px!important;padding:3px 6px!important;font-size:9px!important;
  }
  .masterrestaurantrow>span:last-child:not(.fulfillstatus){grid-column:2!important;grid-row:2!important}

  /* Today master + selected restaurant rows: lock the intended 2x2 layout.
     Long names clip in the left half instead of covering the right metrics. */
  .itemsummaryrow.todayrow:not(.head){
    display:grid!important;
    grid-template-columns:minmax(0,1fr) minmax(118px,1fr)!important;
    grid-template-rows:auto auto!important;
    gap:2px 8px!important;
    width:100%!important;min-width:0!important;
    overflow:hidden!important;
  }
  .itemsummaryrow.todayrow:not(.head)>strong:first-child{
    grid-column:1!important;grid-row:1!important;
    min-width:0!important;max-width:100%!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }
  .itemsummaryrow.todayrow:not(.head)>span:nth-child(2){grid-column:1!important;grid-row:2!important}
  .itemsummaryrow.todayrow:not(.head)>.planprogress:nth-child(3){grid-column:2!important;grid-row:1!important}
  .itemsummaryrow.todayrow:not(.head)>.planprogress:nth-child(4){grid-column:2!important;grid-row:2!important}
  .itemsummaryrow.todayrow:not(.head)>.planprogress{min-width:0!important;max-width:100%!important;overflow:hidden!important}

  /* Selected restaurant list header stays compact. Restaurant name gets the
     available half and truncates rather than widening the card. */
  .todaypicklist .orderhead{
    display:grid!important;
    grid-template-columns:32px minmax(0,1fr) minmax(72px,auto)!important;
    gap:6px!important;align-items:center!important;width:100%!important;overflow:hidden!important;
  }
  .todaypicklist .orderhead>div{grid-column:2!important;min-width:0!important;overflow:hidden!important}
  .todaypicklist .orderhead>div>strong{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .todaypicklist .orderhead>.btn{grid-column:3!important;width:auto!important;min-width:72px!important;min-height:34px!important;padding:5px 8px!important}

  /* Every warehouse is fitted independently. The JS sets a separate custom
     scale for SECONDARY, MAIN, FREEZER and FRIDGE. The important declaration
     deliberately overrides old phone rules that forced zoom:1. */
  .mapworkspace .mapframe,
  .mapworkspace .facilitymap,
  .mapworkspace .facilitymap>.zone,
  .mapworkspace .coldstoragecolumn,
  .mapworkspace .coldstoragecolumn>.zone{overflow-x:hidden!important;max-width:100%!important}
  .mapworkspace .facilitymap>.zone,
  .mapworkspace .coldstoragecolumn>.zone{width:100%!important;min-width:0!important}
  .mapworkspace .zone .warehousegrid{
    width:max-content!important;
    max-width:none!important;
    min-width:0!important;
    zoom:var(--mobile-map-scale,1)!important;
    transform:none!important;
    transform-origin:top left!important;
  }

  /* Dense mobile Map picking: exactly ITEM | AMT | FOOTPRINT | PICK. Reset
     older flex rules so the button can never jump to the far left. */
  .mobilepickhead,
  .pickloc.compact{
    grid-template-columns:minmax(0,1fr) 34px minmax(64px,82px) 50px!important;
    column-gap:4px!important;
  }
  .mappickitem.hasreservations{display:block!important;width:100%!important;overflow:hidden!important}
  .mappickitem.hasreservations>div:first-child{display:none!important}
  .mappickitem.hasreservations>.picklocations{display:block!important;width:100%!important;margin:0!important}
  .pickloc.compact{
    display:grid!important;
    grid-template-areas:"item qty footprint pick"!important;
    align-items:center!important;
    width:100%!important;min-width:0!important;max-width:100%!important;
    margin:0!important;padding:5px 6px!important;
    flex-direction:initial!important;justify-content:initial!important;
    overflow:hidden!important;
  }
  .pickloc.compact>.compactitem{grid-area:item!important;min-width:0!important;width:auto!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
  .pickloc.compact>.compactqty{grid-area:qty!important;width:34px!important;min-width:0!important;text-align:center!important}
  .pickloc.compact>.compactwhere{grid-area:footprint!important;width:100%!important;min-width:0!important;overflow:hidden!important}
  .pickloc.compact>.pickactions{
    grid-area:pick!important;
    display:block!important;
    position:static!important;
    width:50px!important;min-width:50px!important;max-width:50px!important;
    margin:0!important;padding:0!important;
  }
  .pickloc.compact>.pickactions>.btn{
    display:block!important;position:static!important;
    width:50px!important;min-width:50px!important;max-width:50px!important;
    height:30px!important;min-height:30px!important;margin:0!important;padding:2px 3px!important;font-size:8px!important;
  }
  .pickloc.compact .pickrowlocation,.pickloc.compact .picklocselect{
    display:block!important;width:100%!important;min-width:0!important;max-width:100%!important;
    height:28px!important;min-height:28px!important;padding:2px!important;font-size:8px!important;
    white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
  }
  .mappickitem.statusonly>div:first-child{
    display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;gap:6px!important;
    width:100%!important;min-width:0!important;overflow:hidden!important;
  }
  .mappickitem.statusonly>div:first-child strong{min-width:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
}
