/* Plano físico conectado: representación cenital y frontal de estanterías. */
.warehouse-plan-level{display:inline-flex;align-items:center;min-height:36px;padding:0 12px;border:1px solid #d6e2f0;border-radius:6px;background:#fff;color:#244a7b;font-weight:700;font-size:12px}
.warehouse-physical-map{overflow:auto;align-content:start;min-height:460px;background:#fbfdff}
.warehouse-plan-canvas{position:relative;min-width:360px;min-height:260px;margin:auto;border:2px solid #afbed0;border-radius:3px;background-color:#f6fbff;background-image:linear-gradient(#dce8f4 1px,transparent 1px),linear-gradient(90deg,#dce8f4 1px,transparent 1px);background-size:24px 24px;box-shadow:inset 0 0 0 12px rgba(226,237,248,.7)}
.warehouse-plan-rack{position:absolute;z-index:2;display:grid;place-content:center;gap:3px;min-width:36px;min-height:28px;padding:3px;border:1px solid #7895b9;border-radius:3px;background:repeating-linear-gradient(90deg,#fff,#fff 11px,#e4edf8 12px,#e4edf8 13px);color:#183e75;text-align:center;font-size:10px;cursor:pointer}.warehouse-plan-rack:hover,.warehouse-plan-rack.active{z-index:3;border:2px solid #0b65d6;background:#e8f2ff;color:#0754bd;box-shadow:0 0 0 3px #d8eaff}.warehouse-plan-rack small{font-size:9px;font-weight:600}
/* Etiqueta operacional compacta: el detalle completo de cada ubicación se
   conserva en el título accesible y en la vista frontal, sin invadir el plano. */
.warehouse-plan-rack-labeled{align-content:center;justify-items:center;gap:1px;overflow:visible;isolation:isolate}.warehouse-plan-rack-labeled>b{position:absolute;z-index:2;bottom:calc(100% + 3px);left:50%;max-width:84px;padding:1px 3px;border-radius:3px;background:#fff;color:#083d7f;font-size:9px;font-weight:900;line-height:1.15;text-shadow:none;transform:translateX(-50%);white-space:nowrap;box-shadow:0 1px 2px #19416b22}.warehouse-plan-rack-labeled>small{position:relative;z-index:2;margin-top:1px;padding:0 2px;background:#ffffffd9;color:#365979;font-size:8px;line-height:1.05;white-space:nowrap}.warehouse-plan-rack-grid{display:grid;grid-template-columns:repeat(var(--rack-cols),minmax(2px,1fr));grid-template-rows:repeat(var(--rack-rows),minmax(2px,1fr));width:100%;height:100%;min-height:8px;gap:1px;pointer-events:none}.warehouse-plan-rack-grid i{display:block;min-width:2px;min-height:2px;border:1px solid #6f91bb;background:#d9e9fb}.warehouse-plan-rack-labeled.active .warehouse-plan-rack-grid i{border-color:#0d68cf;background:#b9d8fb}.warehouse-plan-rack-labeled:hover>b,.warehouse-plan-rack-labeled.active>b{background:#0d66ca;color:#fff}
.warehouse-aisle{position:absolute;z-index:1;display:grid;place-content:center;min-width:20px;min-height:20px;border:1px dashed #87a6ca;background:rgba(225,239,255,.62);color:#52709d;font-size:10px;font-weight:800;pointer-events:none}
.warehouse-plan-empty{position:absolute;inset:0;display:grid;place-items:center;margin:0;color:#597291;font-size:13px}
.warehouse-rack-front{margin:18px 0 0;padding:18px;border:1px solid #dbe5f3;border-radius:9px;background:#fff}.warehouse-rack-front header{display:flex;align-items:start;justify-content:space-between;gap:16px;padding-bottom:14px;border-bottom:1px solid #e0e9f4}.warehouse-rack-front small{color:#51709a;font-size:11px;font-weight:700}.warehouse-rack-front h3{margin:4px 0;color:#123b75;font-size:18px}.warehouse-rack-front p{margin:0;color:#5c7294;font-size:12px}
.warehouse-rack-levels{display:grid;gap:12px;margin-top:15px}.warehouse-rack-levels article{padding:11px;border:1px solid #dbe5f3;border-radius:7px;background:#f9fbfe}.warehouse-rack-levels article>b{display:block;margin-bottom:9px;color:#254b80;font-size:12px}.warehouse-rack-levels article>div{display:grid;grid-template-columns:repeat(auto-fit,minmax(105px,1fr));gap:8px}.warehouse-rack-levels button{display:grid;gap:3px;min-height:54px;padding:7px;border:1px solid #bcd0e8;border-radius:5px;background:#fff;color:#164783;text-align:left;cursor:pointer}.warehouse-rack-levels button:hover{border-color:#0b65d6;background:#edf5ff}.warehouse-rack-levels button strong{font-size:11px}.warehouse-rack-levels button small{font-size:10px;color:#597291}
@media(max-width:700px){.warehouse-rack-front header{display:grid}.warehouse-plan-canvas{transform-origin:top left}.warehouse-location-tools .warehouse-plan-level{flex:1}}

/* Árbol operativo: el código guía la lectura Pasillo → Estantería → Fila → Hueco → Separador. */
.warehouse-location-tree-panel{display:flex;flex-direction:column;min-height:0;gap:12px}.warehouse-location-tree{display:grid;gap:8px;min-height:0;overflow:auto;padding:2px 5px 8px}.warehouse-location-tree details{border:1px solid #d7e4f3;border-radius:8px;background:#fff}.warehouse-location-tree summary{display:grid;grid-template-columns:minmax(130px,auto) minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 11px;color:#173e76;cursor:pointer;list-style:none;font-size:12px;font-weight:700}.warehouse-location-tree summary::-webkit-details-marker{display:none}.warehouse-location-tree summary::before{content:'›';grid-row:1;grid-column:1;justify-self:end;color:#2470ce;font-size:16px;transition:transform .15s}.warehouse-location-tree details[open]>summary::before{transform:rotate(90deg)}.warehouse-location-tree .tree-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:900;letter-spacing:.01em}.warehouse-location-tree summary>.tree-code{grid-column:1;grid-row:1}.warehouse-location-tree summary>b{font-size:10px;color:#547295}.warehouse-location-tree-aisle{border-color:#9dc2eb!important;background:#f4f9ff!important}.warehouse-location-tree-aisle>summary{background:#eaf4ff}.warehouse-location-tree-rack{margin-top:6px}.warehouse-location-tree-level{margin-top:5px}.warehouse-location-tree-slot{margin-top:4px}.warehouse-location-tree-children{display:grid;gap:5px;margin:0 10px 9px 24px;padding:0 0 0 10px;border-left:2px solid #d9e8f9}.warehouse-location-tree-leaf,.warehouse-location-tree-divider{display:grid;grid-template-columns:minmax(185px,auto) minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:7px 9px;border:1px solid #d9e6f4;border-radius:6px;background:#fbfdff;color:#254c80;text-align:left;cursor:pointer;font-size:11px}.warehouse-location-tree-leaf:hover,.warehouse-location-tree-divider:hover,.warehouse-location-tree-leaf.selected,.warehouse-location-tree-divider.selected{border-color:#1670d1;background:#eaf4ff;box-shadow:0 0 0 2px #d7eaff}.warehouse-location-tree-leaf small{color:#587494}.warehouse-location-tree b.free,.warehouse-location-tree b.occupied{padding:3px 6px;border-radius:99px;font-size:10px}.warehouse-location-tree b.free{background:#eaf8ef;color:#197242}.warehouse-location-tree b.occupied{background:#fff1df;color:#9a5d00}@media(max-width:760px){.warehouse-location-tree summary,.warehouse-location-tree-leaf,.warehouse-location-tree-divider{grid-template-columns:1fr auto}.warehouse-location-tree summary>span:not(.tree-code),.warehouse-location-tree-leaf small{display:none}.warehouse-location-tree-children{margin-left:12px;padding-left:7px}}

/* Consulta de ubicaciones: lectura operativa, sin controles de diseño. */
.warehouse-location-tools{align-items:end}.warehouse-location-tools label{display:grid;gap:5px;color:#45618c;font-size:11px;font-weight:800}.warehouse-location-tools select{min-width:260px}
.warehouse-rack-code{margin-top:-2px!important;color:#6b7f99!important;font-size:11px!important}.warehouse-selected-position{display:grid;gap:7px;margin-top:18px;padding-top:14px;border-top:1px solid #e1e9f4}.warehouse-selected-position>b{color:#0754bd;font-size:13px}.warehouse-selected-position p{margin:0}.warehouse-selected-position>div{display:grid;gap:5px}.warehouse-selected-position span{padding:6px 8px;border-radius:5px;font-size:11px;font-weight:800}.warehouse-selected-position span.occupied{background:#fff3df;color:#975700}.warehouse-selected-position span.free{background:#edf8f1;color:#257344}
.warehouse-slot{display:grid!important;gap:5px!important;min-height:100px!important;padding:8px!important}.warehouse-slot.active{border:2px solid #0b65d6!important;background:#edf5ff!important}.warehouse-slot-title{font-size:11px;font-weight:800}.warehouse-slot-code{overflow:hidden;color:#537195;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.warehouse-slot-dividers{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}.warehouse-slot-dividers i{display:grid;gap:2px;min-height:31px;padding:3px;border:1px solid #d7e4f3;border-radius:4px;font-style:normal;text-align:center}.warehouse-slot-dividers i b{font-size:10px}.warehouse-slot-dividers i small{overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.warehouse-slot-dividers i.free{background:#edf8f1;color:#257344}.warehouse-slot-dividers i.occupied{background:#fff3df;border-color:#f0c36e;color:#975700}

/* Puesto de consulta: plano y frontal simultáneos, sin llevar la vista fuera de pantalla. */
.warehouse-locations-v3{display:flex;flex-direction:column;height:calc(100dvh - 106px);min-height:540px;max-height:calc(100dvh - 106px);padding:14px!important;overflow:hidden}
.warehouse-locations-v3 .warehouse-location-tools{flex:0 0 auto;min-height:43px;margin:0 0 10px;padding:7px 10px;border:1px solid #d6e5f5;border-radius:10px;background:linear-gradient(90deg,#f8fbff,#edf6ff)}
.warehouse-locations-v3 .warehouse-location-tools label{grid-template-columns:auto minmax(230px,320px);align-items:center;gap:9px;margin:0;color:#174680;font-size:12px}
.warehouse-locations-v3 .warehouse-location-tools select{min-width:0;height:32px;padding:5px 9px;border-radius:7px;font-size:12px}
.warehouse-location-hint{margin-left:auto;color:#486a92;font-size:11px;font-weight:700}
.warehouse-location-workspace{display:grid;grid-template-columns:minmax(0,1.38fr) minmax(390px,.92fr);gap:12px;flex:1;min-height:0;overflow:hidden}
.warehouse-locations-v3 .warehouse-physical-map{display:flex;flex-direction:column;align-items:stretch;justify-content:flex-start;min-height:0;padding:10px;border:1px solid #cadcf0;border-radius:12px;background:linear-gradient(145deg,#fafdff,#eef6ff);overflow:hidden}
.warehouse-locations-v3 .warehouse-physical-map>header{display:flex;justify-content:space-between;align-items:center;min-height:28px;margin:0 2px 7px;color:#103d78}.warehouse-locations-v3 .warehouse-physical-map>header div{display:grid;gap:1px}.warehouse-locations-v3 .warehouse-physical-map>header small{font-size:9px;font-weight:900;letter-spacing:.07em;color:#58759a}.warehouse-locations-v3 .warehouse-physical-map>header b{font-size:14px}.warehouse-locations-v3 .warehouse-physical-map>header>span{padding:5px 8px;border-radius:999px;background:#e3f3ea;color:#197746;font-size:10px;font-weight:800}
.warehouse-locations-v3 .warehouse-plan-canvas{max-width:100%;max-height:calc(100% - 61px);min-height:0;margin:auto;box-shadow:inset 0 0 0 9px rgba(222,235,247,.78)}
.warehouse-locations-v3 .warehouse-physical-map footer{flex:0 0 auto;margin-top:7px;font-size:10px}
.warehouse-locations-v3 .warehouse-location-right{display:grid;grid-template-rows:minmax(0,1fr) auto;gap:10px;min-width:0;min-height:0;overflow:hidden}
.warehouse-locations-v3 .warehouse-rack-front{display:flex;flex-direction:column;min-height:0;margin:0;padding:12px;border:1px solid #b9d1eb;border-radius:12px;background:#fff;box-shadow:0 5px 16px #184f8b10;overflow:hidden}
.warehouse-locations-v3 .warehouse-rack-front header{flex:0 0 auto;padding:0 0 8px}.warehouse-locations-v3 .warehouse-rack-front header small{font-size:9px;letter-spacing:.05em;color:#3d689a}.warehouse-locations-v3 .warehouse-rack-front h3{margin:2px 0;font-size:16px}.warehouse-locations-v3 .warehouse-rack-front p{font-size:10px;line-height:1.25}.warehouse-locations-v3 .warehouse-rack-front .badge{align-self:start;font-size:10px}
.warehouse-locations-v3 .warehouse-rack-levels{display:grid;grid-template-columns:minmax(0,1fr);align-content:start;gap:6px;min-height:0;margin-top:8px;overflow:auto}
.warehouse-locations-v3 .warehouse-rack-levels article{display:grid;grid-template-columns:auto 1fr;gap:1px 5px;padding:6px;border-radius:7px;background:#f5f9ff}.warehouse-locations-v3 .warehouse-rack-levels article>b{margin:0;font-size:10px}.warehouse-locations-v3 .warehouse-rack-levels article>small{font-size:9px;color:#607c9d;text-align:right}.warehouse-locations-v3 .warehouse-rack-levels article>div{grid-column:1/-1;grid-template-columns:repeat(auto-fit,minmax(76px,1fr));gap:4px;margin-top:3px}
.warehouse-locations-v3 .warehouse-slot{gap:2px!important;min-height:48px!important;padding:4px!important;border-radius:5px!important}.warehouse-locations-v3 .warehouse-slot-title{font-size:9px}.warehouse-locations-v3 .warehouse-slot-code{font-size:8px}.warehouse-locations-v3 .warehouse-slot-dividers{gap:2px}.warehouse-locations-v3 .warehouse-slot-dividers i{min-height:17px;padding:1px}.warehouse-locations-v3 .warehouse-slot-dividers i b{font-size:8px}.warehouse-locations-v3 .warehouse-slot-dividers i small{display:none}
.warehouse-locations-v3 .warehouse-rack-levels article>div{grid-template-columns:repeat(var(--warehouse-slot-columns,1),minmax(0,1fr))}.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.merged{grid-template-rows:auto auto 1fr;background:#fff5e6;border:2px solid #e7a12d;color:#704000}.warehouse-locations-v3 .warehouse-slot-merged-note{align-self:end;padding:3px 5px;border-radius:4px;background:#fff0d5;color:#855100;font-size:8px;font-weight:700;text-align:center}.warehouse-locations-v3 .warehouse-rack-row-merged{display:grid!important;grid-template-columns:auto 1fr!important}.warehouse-locations-v3 .warehouse-rack-row-merged>.warehouse-slot{grid-column:1/-1;margin-top:3px}
.warehouse-rack-front-empty{align-items:center;justify-content:center;text-align:center;color:#597592}.warehouse-rack-front-empty>span{display:grid;place-items:center;width:48px;height:48px;margin-bottom:8px;border-radius:14px;background:#eaf3ff;color:#1767c7;font-size:27px}.warehouse-rack-front-empty h3{font-size:16px!important}.warehouse-rack-front-empty p{max-width:250px;font-size:11px!important}
.warehouse-locations-v3 .warehouse-selected-position{display:grid;gap:6px;margin:0;padding:9px 10px;border:1px solid #b9d1eb;border-radius:10px;background:#fff;box-shadow:0 4px 12px #184f8b0d}.warehouse-locations-v3 .warehouse-selected-position header{display:grid;gap:1px}.warehouse-locations-v3 .warehouse-selected-position header small{font-size:9px;letter-spacing:.05em;color:#5f7592}.warehouse-locations-v3 .warehouse-selected-position header b{color:#0754bd;font-size:13px}.warehouse-locations-v3 .warehouse-selected-position header span{font-size:10px;color:#617b9c}.warehouse-locations-v3 .warehouse-selected-position>div{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px}.warehouse-locations-v3 .warehouse-selected-position article{display:grid;gap:2px;min-height:42px;padding:5px;border:1px solid #d8e5f2;border-radius:6px}.warehouse-locations-v3 .warehouse-selected-position article b{font-size:9px}.warehouse-locations-v3 .warehouse-selected-position article span{overflow:hidden;font-size:9px;font-weight:800;text-overflow:ellipsis;white-space:nowrap}.warehouse-locations-v3 .warehouse-selected-position article small{overflow:hidden;font-size:8px;text-overflow:ellipsis;white-space:nowrap}.warehouse-locations-v3 .warehouse-selected-position article.occupied{background:#fff5e5;border-color:#f0c36e;color:#975700}.warehouse-locations-v3 .warehouse-selected-position article.free{background:#effaf3;border-color:#bfe3cd;color:#287647}.warehouse-selected-position-empty{grid-template-columns:1fr!important;font-size:10px;color:#5d7695}.warehouse-selected-position-empty b{color:#164b88;font-size:11px}
@media(max-height:780px){.warehouse-locations-v3{height:calc(100dvh - 92px);min-height:440px;max-height:calc(100dvh - 92px);padding:9px!important}.warehouse-locations-v3 .warehouse-location-tools{min-height:35px;margin-bottom:7px;padding:4px 8px}.warehouse-locations-v3 .warehouse-location-tools label{font-size:10px}.warehouse-locations-v3 .warehouse-location-tools select{height:27px;font-size:10px}.warehouse-locations-v3 .warehouse-physical-map{padding:7px}.warehouse-locations-v3 .warehouse-rack-front{padding:8px}.warehouse-locations-v3 .warehouse-rack-levels{gap:4px;margin-top:5px}.warehouse-locations-v3 .warehouse-rack-levels article{padding:4px}.warehouse-locations-v3 .warehouse-slot{min-height:37px!important}.warehouse-locations-v3 .warehouse-slot-dividers i{min-height:13px}.warehouse-locations-v3 .warehouse-selected-position{padding:6px 8px}.warehouse-locations-v3 .warehouse-selected-position article{min-height:34px;padding:3px}}
@media(max-width:1050px){.warehouse-location-workspace{grid-template-columns:minmax(0,1fr) 360px}.warehouse-location-hint{display:none}}@media(max-width:820px){.warehouse-locations-v3{height:auto;max-height:none;overflow:visible}.warehouse-location-workspace{grid-template-columns:1fr}.warehouse-locations-v3 .warehouse-physical-map{min-height:400px}.warehouse-locations-v3 .warehouse-location-right{min-height:480px}.warehouse-locations-v3 .warehouse-rack-levels{overflow:visible}}
.warehouse-location-legend{display:flex;gap:12px;flex-wrap:wrap;margin:0 2px 6px;color:#58759a;font-size:10px;font-weight:700}.warehouse-location-legend span{display:inline-flex;align-items:center;gap:4px}.warehouse-location-legend i{display:inline-block;width:9px;height:9px;border-radius:3px;background:#bce8ca;border:1px solid #64b77e}.warehouse-location-legend i.occupied{background:#ffd99d;border-color:#df9c34}.warehouse-location-legend i.active{background:#a9d1ff;border-color:#176cc9}
.warehouse-plan-rack-labeled.has-space{background:#c8e8d2!important}.warehouse-plan-rack-labeled.full{background:#ffe4bd!important}.warehouse-plan-rack-grid i.occupied{background:#f4bb67;border-color:#b86b00}.warehouse-plan-rack-grid i.free{background:#c5e9d0;border-color:#4eaa72}.warehouse-plan-rack-labeled.active{outline:3px solid #176cc9;outline-offset:2px;z-index:5}.warehouse-plan-rack-labeled.active>b{background:#176cc9;color:#fff}
.warehouse-locations-v3 .warehouse-location-workspace{grid-template-columns:minmax(0,1.55fr) minmax(410px,.85fr)}
.warehouse-location-minimap{position:absolute;right:18px;bottom:34px;z-index:8;width:178px;padding:8px;border:1px solid #b8d0ea;border-radius:9px;background:#fff;box-shadow:0 5px 18px #123f7026}.warehouse-location-minimap header{display:flex;justify-content:space-between;gap:5px;margin-bottom:5px;color:#194d88;font-size:10px}.warehouse-location-minimap header small{color:#7188a4;font-size:8px}.warehouse-minimap-canvas{position:relative;height:92px;border:1px solid #c6d8eb;border-radius:4px;background:#f3f8fe}.warehouse-minimap-canvas button{position:absolute;padding:0;border:1px solid #6b91bd;border-radius:2px;background:#a9cdef;cursor:pointer}.warehouse-minimap-canvas button.active{background:#176cc9;border-color:#0b3975;box-shadow:0 0 0 2px #a7d1ff}
.warehouse-locations-v3 .warehouse-physical-map{position:relative}.warehouse-locations-v3 .warehouse-plan-canvas{min-width:0}
.warehouse-locations-v3 .warehouse-physical-map{overflow:auto}.warehouse-locations-v3 .warehouse-plan-canvas{max-width:none;max-height:none;flex:0 0 auto}.warehouse-locations-v3 .warehouse-location-minimap{bottom:10px;right:12px}.warehouse-minimap-viewport{position:absolute;left:15%;top:15%;width:70%;height:70%;border:2px solid #176cc9;border-radius:3px;background:#176cc91c;pointer-events:none;box-shadow:0 0 0 1px #fff8}
.warehouse-locations-v3 .warehouse-location-tabs{flex:0 0 auto;display:flex;gap:4px;margin:-5px 0 8px;padding:0;border-bottom:1px solid #c9dcef}.warehouse-locations-v3 .warehouse-location-tabs button{padding:6px 11px;border:0;border-bottom:3px solid transparent;border-radius:6px 6px 0 0;background:transparent;font-size:11px}.warehouse-locations-v3 .warehouse-location-tabs button.active{border-bottom-color:#176cc9;background:#eaf3ff;color:#063d83}.warehouse-locations-v3 .warehouse-location-tools{margin-bottom:6px}.warehouse-locations-v3{height:calc(100dvh - 80px);max-height:calc(100dvh - 80px);padding:8px!important}
.warehouse-workspace{padding:0!important}.warehouse-workspace>.warehouse-locations-v3{margin:0;border-radius:0;border-left:0;border-right:0}
.warehouse-locations-v3 .warehouse-slot-dividers i{cursor:pointer}.warehouse-locations-v3 .warehouse-slot-dividers i.selected{outline:2px solid #075fc5;outline-offset:1px;background:#d9ecff;color:#07488f}.warehouse-operational-tools{display:grid;gap:7px;padding:9px 10px;border:1px solid #b9d7f2;border-radius:10px;background:#f5faff}.warehouse-operational-tools header{display:flex;justify-content:space-between;gap:8px;color:#0a4b99;font-size:11px}.warehouse-operational-tools header span{color:#627b99;font-size:10px}.warehouse-operational-tools p{margin:0;color:#526f92;font-size:10px;line-height:1.35}.warehouse-operational-tools>div{display:flex;gap:5px;flex-wrap:wrap}.warehouse-operational-tools .btn{min-height:30px;padding:5px 8px;font-size:10px}
.warehouse-location-workspace{position:relative}.warehouse-location-workspace>.warehouse-location-minimap{position:absolute;left:14px;right:auto;bottom:14px;z-index:30}.warehouse-map-zoom{display:flex;align-items:center;gap:3px;margin-left:auto}.warehouse-map-zoom button,.warehouse-map-zoom b{min-width:30px;height:28px;padding:0 8px;border:1px solid #c4d8ee;background:#fff;color:#0b4b92;font-size:11px;font-weight:800;line-height:26px;text-align:center}.warehouse-map-zoom button{cursor:pointer}.warehouse-map-zoom button:first-child{border-radius:7px 0 0 7px}.warehouse-map-zoom button:last-child{border-radius:0 7px 7px 0}.warehouse-map-zoom button:nth-last-child(1){margin-left:3px;border-radius:7px}.warehouse-map-zoom b{border-left:0;border-right:0}.warehouse-locations-v3 .warehouse-physical-map{scrollbar-gutter:stable both-edges}

/* Puesto de ubicaciones: el lienzo usa exactamente el área disponible.
   El plano se recorre con rueda, zoom y minimapa; nunca con barras visibles. */
.warehouse .warehouse-workspace:has(>.warehouse-locations-v3){height:100%!important;min-height:0!important;max-height:100%!important;overflow:hidden!important}
.warehouse-locations-v3{height:100%!important;min-height:0!important;max-height:100%!important;box-sizing:border-box!important;overflow:hidden!important}
.warehouse-locations-v3 .warehouse-location-workspace{min-height:0!important;overflow:hidden!important}
.warehouse-locations-v3 .warehouse-physical-map{align-items:flex-start!important;justify-content:flex-start!important;overflow:auto!important;scrollbar-gutter:auto!important}
.warehouse-locations-v3 .warehouse-plan-canvas{margin:0!important;align-self:flex-start!important}
.warehouse-locations-v3 .warehouse-physical-map,.warehouse-locations-v3 .warehouse-rack-levels{scrollbar-width:none!important;-ms-overflow-style:none!important}
.warehouse-locations-v3 .warehouse-physical-map::-webkit-scrollbar,.warehouse-locations-v3 .warehouse-rack-levels::-webkit-scrollbar{display:none!important;width:0!important;height:0!important}
.warehouse-locations-v3 .warehouse-rack-levels{display:flex!important;flex-direction:column!important;flex:1 1 auto!important;gap:3px!important;overflow:hidden!important}
.warehouse-locations-v3 .warehouse-rack-levels article{flex:1 1 0!important;min-height:0!important;padding:3px 4px!important}
.warehouse-locations-v3 .warehouse-rack-levels article>div{margin-top:1px!important;gap:3px!important}
.warehouse-locations-v3 .warehouse-slot{min-height:0!important;padding:3px!important}
.warehouse-locations-v3 .warehouse-slot-dividers i{min-height:13px!important}
.warehouse-locations-v3 .warehouse-selected-position{display:none!important}.warehouse-locations-v3 .warehouse-location-right{grid-template-rows:minmax(0,1fr) auto!important}.warehouse-locations-v3 .warehouse-operational-tools{grid-template-columns:1fr auto;align-items:center;gap:5px;padding:7px 8px}.warehouse-locations-v3 .warehouse-operational-tools header{display:contents}.warehouse-locations-v3 .warehouse-operational-tools header b{font-size:10px}.warehouse-locations-v3 .warehouse-operational-tools header span{font-size:9px}.warehouse-locations-v3 .warehouse-operational-tools p{display:none}.warehouse-locations-v3 .warehouse-operational-tools>div{grid-column:1/-1;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.warehouse-locations-v3 .warehouse-operational-tools .btn{min-height:28px;padding:4px 6px;font-size:9px}
.warehouse-locations-v3 .warehouse-operational-tools>div{grid-template-columns:repeat(4,minmax(0,1fr))}.warehouse-operational-info-dialog{width:min(620px,calc(100vw - 32px));max-height:min(720px,calc(100vh - 32px));padding:0;border:0;border-radius:18px;color:#123b70;box-shadow:0 22px 60px rgba(11,47,97,.32)}.warehouse-operational-info-dialog::backdrop{background:rgba(11,36,76,.48)}.warehouse-operational-info-dialog>header{display:flex;align-items:center;gap:10px;padding:17px 20px;border-bottom:1px solid #d9e7fa;background:#fff}.warehouse-operational-info-dialog header strong{display:block;font-size:20px;color:#075bc6}.warehouse-operational-info-dialog header small{display:block;margin-top:2px;color:#6281aa}.warehouse-operational-info-dialog .warehouse-dialog-logo{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;color:#fff;background:#6636cf;font-size:22px}.warehouse-operational-info-dialog .icon-btn{margin-left:auto;border:0;background:transparent;color:#31577f;font-size:26px;line-height:1;cursor:pointer}.warehouse-operational-info-dialog>section{padding:18px 22px;overflow:auto;line-height:1.48}.warehouse-operational-info-dialog h2{margin:0 0 7px;color:#083f86;font-size:17px}.warehouse-operational-info-dialog p{margin:0 0 14px}.warehouse-operational-info-dialog ul{margin:0 0 18px;padding-left:21px}.warehouse-operational-info-dialog li{margin:7px 0}.warehouse-operational-info-dialog code{padding:1px 5px;border-radius:4px;background:#edf5ff;color:#0b57b5;font-weight:700}.warehouse-operational-info-dialog footer{display:flex;justify-content:flex-end;padding:14px 20px;border-top:1px solid #d9e7fa;background:#f8fbff}.warehouse-operational-info-dialog footer .btn{min-width:118px}
.warehouse-location-workspace>.warehouse-location-minimap{position:absolute!important;left:12px!important;right:auto!important;bottom:12px!important;margin:0!important;z-index:40!important}
.warehouse-locations-v3 .warehouse-physical-map>header{flex:0 0 34px!important;min-width:0!important;overflow:visible!important}.warehouse-locations-v3 .warehouse-physical-map>header>.warehouse-map-header-actions{min-width:0!important;flex:0 0 auto!important;flex-wrap:nowrap!important}.warehouse-locations-v3 .warehouse-map-zoom{display:flex!important;visibility:visible!important;flex:0 0 auto!important;white-space:nowrap!important}.warehouse-location-workspace>.warehouse-location-minimap{left:14px!important;right:auto!important;bottom:14px!important;top:auto!important;transform:none!important}
.warehouse-locations-v3 .warehouse-location-workspace{grid-template-columns:minmax(0,1.2fr) minmax(540px,1fr)!important}.warehouse-locations-v3 .warehouse-rack-front{padding:10px!important}.warehouse-locations-v3 .warehouse-rack-front header{display:flex;justify-content:space-between;gap:8px}.warehouse-locations-v3 .warehouse-rack-front h3{font-size:17px!important}.warehouse-front-legend{display:flex;gap:9px;align-items:center;padding:5px 0 6px;border-top:1px solid #dce8f5;font-size:9px;color:#507194;font-weight:700}.warehouse-front-legend span{display:inline-flex;align-items:center;gap:4px}.warehouse-front-legend i{width:8px;height:8px;border:1px solid;border-radius:2px;background:#edf8f1;border-color:#65b483}.warehouse-front-legend i.occupied{background:#fff1d9;border-color:#e8a542}.warehouse-front-legend i.active{background:#dcebff;border-color:#0a65ce}.warehouse-slot-info-bubble{display:flex;gap:7px;align-items:center;margin:0 0 6px;padding:6px 8px;border:1px solid #bcd7f0;border-radius:7px;background:#f6fbff;color:#245787;font-size:10px}.warehouse-slot-info-bubble b{padding:2px 5px;border-radius:999px;background:#e5f5eb;color:#177445;font-size:9px}.warehouse-slot-info-bubble.occupied{border-color:#f0c36e;background:#fff8eb;color:#8c5908}.warehouse-slot-info-bubble.occupied b{background:#fff0d5;color:#9a5a00}.warehouse-locations-v3 .warehouse-rack-levels{gap:4px!important}.warehouse-locations-v3 .warehouse-rack-levels article{padding:4px 5px!important;background:#f8fbff}.warehouse-locations-v3 .warehouse-slot{min-height:42px!important;padding:3px!important}.warehouse-locations-v3 .warehouse-slot-title{font-size:9px!important}.warehouse-locations-v3 .warehouse-slot-code{font-size:8px!important}.warehouse-locations-v3 .warehouse-slot-dividers i{min-height:15px!important}.warehouse-locations-v3 .warehouse-slot-dividers i small{display:block!important;font-size:7px!important}
.warehouse-locations-v3 .warehouse-physical-map{overflow:hidden!important}.warehouse-locations-v3 .warehouse-map-viewport{position:relative;flex:1 1 auto;min-height:0;overflow:hidden;cursor:default}.warehouse-locations-v3 .warehouse-map-viewport:has(.warehouse-plan-canvas[style*="scale(1."]){cursor:grab}.warehouse-locations-v3 .warehouse-plan-canvas{position:absolute!important;left:0;top:0;transform-origin:0 0;will-change:transform}.warehouse-locations-v3 .warehouse-map-viewport:active{cursor:grabbing}

/* Leyenda y controles dentro de la cabecera: no consumen una fila del lienzo. */
.warehouse-locations-v3 .warehouse-physical-map>header>.warehouse-map-header-actions{display:flex!important;align-items:center!important;justify-content:flex-end!important;gap:8px!important;margin-left:auto!important}.warehouse-locations-v3 .warehouse-map-header-actions>.warehouse-location-legend{display:flex!important;margin:0!important;gap:7px!important;white-space:nowrap}.warehouse-locations-v3 .warehouse-map-header-actions>.warehouse-location-legend span{font-size:9px}.warehouse-locations-v3 .warehouse-map-header-actions>.warehouse-location-legend i{width:8px;height:8px}

/* Marco común de las tres pestañas: mismo selector de nave y misma jerarquía. */
.warehouse-location-tabs .warehouse-location-view-context{display:flex;align-items:center;gap:7px;min-height:0;margin:0 0 0 auto;padding:0;color:#174680;font-size:11px;font-weight:800;white-space:nowrap}.warehouse-location-tabs .warehouse-location-view-context select{width:210px;height:30px;padding:4px 9px;border:1px solid #bdd2eb;border-radius:7px;background:#fff;color:#123f78;font-size:12px;font-weight:800}.warehouse-locations-v3 .warehouse-location-tools{display:none!important}
@media(max-width:800px){.warehouse-location-tabs .warehouse-location-view-context span{display:none}.warehouse-location-tabs .warehouse-location-view-context select{width:155px}}

/* Puesto operativo compacto: misma densidad que el diseñador. La matriz
   completa y sus acciones permanecen visibles; el área libre se entrega al plano. */
.warehouse-locations-v3 .warehouse-location-workspace{grid-template-columns:minmax(0,1.35fr) minmax(480px,.9fr)!important;gap:8px!important}
.warehouse-locations-v3 .warehouse-physical-map{padding:7px!important}
.warehouse-locations-v3 .warehouse-physical-map>header{flex-basis:30px!important;min-height:30px!important;margin:0!important;padding:0 1px!important}
.warehouse-locations-v3 .warehouse-physical-map>header>div:first-child small{display:none!important}
.warehouse-locations-v3 .warehouse-physical-map>header b{font-size:12px!important}
.warehouse-locations-v3 .warehouse-map-header-actions{gap:5px!important}
.warehouse-locations-v3 .warehouse-map-header-actions>span{font-size:9px!important}
.warehouse-locations-v3 .warehouse-map-header-actions>.warehouse-location-legend{gap:5px!important}
.warehouse-locations-v3 .warehouse-map-header-actions>.warehouse-location-legend span{font-size:8px!important}
.warehouse-locations-v3 .warehouse-map-zoom{gap:0!important}
.warehouse-locations-v3 .warehouse-map-zoom button,.warehouse-locations-v3 .warehouse-map-zoom b{min-width:27px!important;height:25px!important;padding:0 6px!important;font-size:10px!important;line-height:23px!important}
.warehouse-locations-v3 .warehouse-map-zoom button:last-child{margin-left:3px!important}
.warehouse-locations-v3 .warehouse-physical-map>footer{display:none!important}
.warehouse-locations-v3 .warehouse-location-right{gap:6px!important}
.warehouse-locations-v3 .warehouse-rack-front{padding:7px!important}
.warehouse-locations-v3 .warehouse-rack-front header{padding-bottom:5px!important}
.warehouse-locations-v3 .warehouse-rack-front h3{font-size:15px!important;line-height:1.1!important}
.warehouse-locations-v3 .warehouse-rack-front p{font-size:9px!important;line-height:1.15!important}
.warehouse-locations-v3 .warehouse-front-legend{padding:3px 0 4px!important;gap:6px!important}
.warehouse-locations-v3 .warehouse-rack-levels{gap:2px!important;margin-top:3px!important}
.warehouse-locations-v3 .warehouse-rack-levels article{flex:1 1 0!important;min-height:0!important;padding:2px 4px!important}
.warehouse-locations-v3 .warehouse-rack-levels article>b,.warehouse-locations-v3 .warehouse-rack-levels article>small{font-size:9px!important;line-height:1!important}
.warehouse-locations-v3 .warehouse-rack-levels article>div{gap:2px!important;margin-top:1px!important}
.warehouse-locations-v3 .warehouse-slot{min-height:0!important;padding:2px!important}
.warehouse-locations-v3 .warehouse-slot-title{font-size:8px!important}
.warehouse-locations-v3 .warehouse-slot-code{font-size:7px!important}
.warehouse-locations-v3 .warehouse-slot-dividers{gap:1px!important}
.warehouse-locations-v3 .warehouse-slot-dividers i{min-height:11px!important;padding:0!important}
.warehouse-locations-v3 .warehouse-slot-dividers i b{font-size:7px!important;line-height:11px!important}
.warehouse-locations-v3 .warehouse-slot-dividers i small{display:none!important}
.warehouse-locations-v3 .warehouse-operational-tools{padding:5px 7px!important;gap:3px!important}
.warehouse-locations-v3 .warehouse-operational-tools .btn{min-height:27px!important;padding:3px 5px!important;font-size:9px!important}
@media(max-width:1180px){.warehouse-locations-v3 .warehouse-location-workspace{grid-template-columns:minmax(0,1fr) minmax(430px,.82fr)!important}.warehouse-locations-v3 .warehouse-map-header-actions>.warehouse-location-legend{display:none!important}}

/* Unión operativa: se dibuja como una única celda, pero no altera la
   plantilla física ni la matriz almacenada en el diseñador. */
.warehouse-locations-v3 .warehouse-slot.operational-merged{border:2px solid #0b66c9!important;background:#e9f4ff!important;color:#06488f!important}
.warehouse-locations-v3 .warehouse-slot.operational-merged .warehouse-slot-merged-note{background:#d7ebff!important;color:#0752a8!important}
.warehouse-locations-v3 .warehouse-slot-dividers .operational-merged{display:grid!important;place-items:center!important;min-height:100%!important;border:2px solid #0b66c9!important;background:#e9f4ff!important;color:#06488f!important;font-weight:900!important}
.warehouse-locations-v3 .warehouse-slot-dividers .operational-merged small{display:block!important;font-size:7px!important;line-height:1!important}
.warehouse-locations-v3 .warehouse-operational-tools>div{grid-template-columns:repeat(5,minmax(0,1fr))!important}

/* Área de trabajo de Ubicaciones: ocupa íntegramente el lienzo entre el menú
   lateral y la cabecera. La navegación se hace dentro del plano, nunca con
   scroll global del formulario. */
.warehouse .warehouse-workspace:has(>.warehouse-locations-v3){display:block!important;height:100%!important;min-height:0!important;padding:0!important;overflow:hidden!important}
.warehouse .warehouse-locations-v3{display:flex!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;padding:7px 10px 9px!important;border:0!important;border-radius:0!important;box-shadow:none!important;overflow:hidden!important}
.warehouse-locations-v3>.warehouse-location-tabs{min-height:31px!important;margin:0 0 4px!important}.warehouse-locations-v3>.warehouse-location-tabs button{min-height:30px!important;padding:5px 10px!important;font-size:11px!important}
.warehouse-locations-v3>.warehouse-location-tabs .warehouse-location-view-context{display:flex!important;align-items:center!important;gap:6px!important;margin-left:auto!important;color:#174680!important;font-size:11px!important;font-weight:800!important}.warehouse-locations-v3>.warehouse-location-tabs .warehouse-location-view-context select{width:190px!important;min-width:0!important;height:28px!important;padding:3px 26px 3px 8px!important;font-size:11px!important}
.warehouse-locations-v3 .warehouse-location-tools{display:none!important}
.warehouse-locations-v3 .warehouse-location-workspace{grid-template-columns:minmax(0,1.72fr) minmax(415px,.82fr)!important;gap:9px!important;flex:1 1 auto!important;min-height:0!important;height:0!important;overflow:hidden!important}
.warehouse-locations-v3 .warehouse-physical-map{display:grid!important;grid-template-rows:auto minmax(0,1fr) auto!important;min-width:0!important;min-height:0!important;padding:8px!important;overflow:hidden!important}.warehouse-locations-v3 .warehouse-physical-map>header{min-width:0!important;min-height:29px!important;margin:0 0 4px!important}.warehouse-locations-v3 .warehouse-map-header-actions{min-width:0!important;gap:6px!important}.warehouse-locations-v3 .warehouse-location-legend{gap:6px!important;margin:0!important;white-space:nowrap!important}.warehouse-locations-v3 .warehouse-location-legend span{font-size:9px!important}
.warehouse-locations-v3 .warehouse-map-viewport{position:relative!important;min-width:0!important;min-height:0!important;overflow:hidden!important;border:1px solid #d2e1f1!important}.warehouse-locations-v3 .warehouse-plan-canvas{transform-origin:0 0!important;flex:none!important}.warehouse-locations-v3 .warehouse-physical-map>footer{min-height:15px!important;margin-top:4px!important;font-size:9px!important}
.warehouse-locations-v3 .warehouse-location-minimap{left:18px!important;bottom:28px!important;width:142px!important;padding:6px!important}.warehouse-locations-v3 .warehouse-location-minimap header{margin-bottom:3px!important}.warehouse-locations-v3 .warehouse-minimap-canvas{height:66px!important}
.warehouse-locations-v3 .warehouse-location-right{grid-template-rows:minmax(0,1fr) auto!important;gap:7px!important;min-width:0!important;min-height:0!important;overflow:hidden!important}.warehouse-locations-v3 .warehouse-rack-front{min-height:0!important;padding:8px!important;overflow:hidden!important}.warehouse-locations-v3 .warehouse-rack-front header{padding-bottom:4px!important}.warehouse-locations-v3 .warehouse-rack-front h3{font-size:14px!important}.warehouse-locations-v3 .warehouse-rack-front p{margin:2px 0!important;font-size:10px!important}.warehouse-locations-v3 .warehouse-front-legend{margin:1px 0 4px!important}.warehouse-locations-v3 .warehouse-rack-levels{overflow:hidden!important;gap:3px!important}.warehouse-locations-v3 .warehouse-rack-levels article{padding:3px 4px!important}.warehouse-locations-v3 .warehouse-rack-levels article>b,.warehouse-locations-v3 .warehouse-rack-levels article>small{font-size:9px!important}.warehouse-locations-v3 .warehouse-slot{min-height:0!important;padding:2px 3px!important}.warehouse-locations-v3 .warehouse-slot-title{font-size:8px!important}.warehouse-locations-v3 .warehouse-slot-code{font-size:7px!important}.warehouse-locations-v3 .warehouse-slot-dividers i{min-height:12px!important;padding:0!important}.warehouse-locations-v3 .warehouse-slot-dividers i b{font-size:7px!important}
.warehouse-locations-v3 .warehouse-operational-tools{padding:5px 7px!important;gap:3px!important}.warehouse-locations-v3 .warehouse-operational-tools>div{grid-template-columns:1.35fr repeat(4,minmax(0,1fr))!important;gap:4px!important}.warehouse-locations-v3 .warehouse-operational-tools .btn{min-height:27px!important;padding:3px 4px!important;font-size:9px!important;white-space:nowrap!important}
@media(max-width:1180px){.warehouse-locations-v3 .warehouse-location-workspace{grid-template-columns:minmax(0,1.2fr) minmax(350px,.8fr)!important}.warehouse-locations-v3 .warehouse-location-legend{display:none!important}}

/* El miniplano pertenece al área del mapa y queda fijado a su esquina inferior
   derecha. El viewport es la única zona que se desplaza o se amplía. */
.warehouse-locations-v3 .warehouse-location-workspace>.warehouse-location-minimap{
  top:auto!important;
  right:18px!important;
  bottom:28px!important;
  left:auto!important;
  z-index:50!important;
}
.warehouse-locations-v3 .warehouse-physical-map>.warehouse-map-viewport{
  width:100%!important;
  height:100%!important;
  min-height:0!important;
  touch-action:none!important;
  cursor:grab!important;
}
.warehouse-locations-v3 .warehouse-physical-map>.warehouse-map-viewport:active{cursor:grabbing!important}
.warehouse-locations-v3 .warehouse-plan-canvas{display:block!important;visibility:visible!important;opacity:1!important}

/* Código de estado único de ubicaciones SmartWarehouse.
   Una unión solo cambia la forma del hueco: nunca su estado ni su color. */
.warehouse{
  --warehouse-location-free-bg:#e4f6ea;
  --warehouse-location-free-line:#62b780;
  --warehouse-location-free-text:#166a39;
  --warehouse-location-occupied-bg:#fff0d8;
  --warehouse-location-occupied-line:#df9d31;
  --warehouse-location-occupied-text:#905300;
  --warehouse-location-blocked-bg:#e9eef4;
  --warehouse-location-blocked-line:#8a9aad;
  --warehouse-location-blocked-text:#47596d;
  --warehouse-location-selected-bg:#dcebff;
  --warehouse-location-selected-line:#0865ca;
  --warehouse-location-selected-text:#07478d;
}
.warehouse-locations-v3 .warehouse-slot,
.warehouse-locations-v3 .warehouse-slot.merged,
.warehouse-locations-v3 .warehouse-slot.operational-merged{
  background:var(--warehouse-location-free-bg)!important;
  border-color:var(--warehouse-location-free-line)!important;
  color:var(--warehouse-location-free-text)!important;
}
.warehouse-locations-v3 .warehouse-slot.is-occupied{background:var(--warehouse-location-occupied-bg)!important;border-color:var(--warehouse-location-occupied-line)!important;color:var(--warehouse-location-occupied-text)!important}
.warehouse-locations-v3 .warehouse-slot.is-blocked{background:var(--warehouse-location-blocked-bg)!important;border-color:var(--warehouse-location-blocked-line)!important;color:var(--warehouse-location-blocked-text)!important}
.warehouse-locations-v3 .warehouse-slot.active{background:var(--warehouse-location-selected-bg)!important;border-color:var(--warehouse-location-selected-line)!important;color:var(--warehouse-location-selected-text)!important;outline:1px solid var(--warehouse-location-selected-line)!important;outline-offset:0!important}
.warehouse-locations-v3 .warehouse-slot .warehouse-slot-merged-note{background:transparent!important;color:inherit!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.free{background:var(--warehouse-location-free-bg)!important;border-color:var(--warehouse-location-free-line)!important;color:var(--warehouse-location-free-text)!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.occupied{background:var(--warehouse-location-occupied-bg)!important;border-color:var(--warehouse-location-occupied-line)!important;color:var(--warehouse-location-occupied-text)!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.blocked{background:var(--warehouse-location-blocked-bg)!important;border-color:var(--warehouse-location-blocked-line)!important;color:var(--warehouse-location-blocked-text)!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.selected{background:var(--warehouse-location-selected-bg)!important;border-color:var(--warehouse-location-selected-line)!important;color:var(--warehouse-location-selected-text)!important}
.warehouse-location-legend i.free,.warehouse-front-legend i.free{background:var(--warehouse-location-free-bg)!important;border-color:var(--warehouse-location-free-line)!important}.warehouse-location-legend i.occupied,.warehouse-front-legend i.occupied{background:var(--warehouse-location-occupied-bg)!important;border-color:var(--warehouse-location-occupied-line)!important}.warehouse-location-legend i.blocked,.warehouse-front-legend i.blocked{background:var(--warehouse-location-blocked-bg)!important;border-color:var(--warehouse-location-blocked-line)!important}.warehouse-location-legend i.active,.warehouse-front-legend i.active{background:var(--warehouse-location-selected-bg)!important;border-color:var(--warehouse-location-selected-line)!important}

/* Matriz operativa: los separadores son unidades seleccionables, no un detalle
   oculto. Conservan el mismo idioma de color de todo SmartWarehouse. */
.warehouse-locations-v3 .warehouse-slot-dividers{
  display:grid!important;
  grid-template-columns:repeat(var(--warehouse-divider-count,4),minmax(0,1fr))!important;
  gap:2px!important;
}
.warehouse-locations-v3 .warehouse-slot-dividers i{
  display:grid!important;
  place-items:center!important;
  align-content:center!important;
  min-height:17px!important;
  padding:1px!important;
  border-width:1px!important;
  border-radius:3px!important;
  cursor:pointer!important;
  line-height:1!important;
}
.warehouse-locations-v3 .warehouse-slot-dividers i b{display:block!important;font-size:7px!important;line-height:1!important}
.warehouse-locations-v3 .warehouse-slot-dividers i b::before{content:'S';font-size:6px!important;font-weight:800!important}
.warehouse-locations-v3 .warehouse-slot-dividers i small{display:none!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.free{background:#e4f6ea!important;border-color:#62b780!important;color:#166a39!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.occupied{background:#fff0d8!important;border-color:#df9d31!important;color:#905300!important}
.warehouse-locations-v3 .warehouse-slot-dividers i.selected{background:#dcebff!important;border-color:#0865ca!important;color:#07478d!important;outline:1px solid #0865ca!important;outline-offset:0!important}
.warehouse-locations-v3 .warehouse-slot-dividers .operational-merged{min-height:17px!important;background:#dcebff!important;border-color:#0865ca!important;color:#07478d!important}

/* Una celda unida continúa siendo libre, ocupada, bloqueada o seleccionada;
   jamás usa un color propio por el mero hecho de estar unida. */
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.merged:not(.is-occupied):not(.is-blocked):not(.active),
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.operational-merged:not(.is-occupied):not(.is-blocked):not(.active){background:var(--warehouse-location-free-bg)!important;border-color:var(--warehouse-location-free-line)!important;color:var(--warehouse-location-free-text)!important}
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.merged.is-occupied,
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.operational-merged.is-occupied{background:var(--warehouse-location-occupied-bg)!important;border-color:var(--warehouse-location-occupied-line)!important;color:var(--warehouse-location-occupied-text)!important}
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.merged.is-blocked,
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.operational-merged.is-blocked{background:var(--warehouse-location-blocked-bg)!important;border-color:var(--warehouse-location-blocked-line)!important;color:var(--warehouse-location-blocked-text)!important}
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.merged.active,
.warehouse-locations-v3 .warehouse-rack-levels .warehouse-slot.operational-merged.active,
.warehouse-locations-v3 .warehouse-slot-dividers .operational-merged.selected{background:var(--warehouse-location-selected-bg)!important;border-color:var(--warehouse-location-selected-line)!important;color:var(--warehouse-location-selected-text)!important}
.warehouse-locations-v3 .warehouse-slot-dividers .operational-merged:not(.selected){background:var(--warehouse-location-free-bg)!important;border-color:var(--warehouse-location-free-line)!important;color:var(--warehouse-location-free-text)!important}

/* En Ubicaciones la matriz es operativa: las medidas solo pertenecen al
   Diseñador de espacio y no deben consumir área de lectura. */
.warehouse-locations-v3 .warehouse-rack-levels article>small{display:none!important}
.warehouse-locations-v3 .warehouse-rack-levels article>b{grid-column:1/-1!important}

/* El miniplano se mantiene dentro del mapa, abajo a la derecha, y nunca dentro
   de la columna de matriz. */
.warehouse-locations-v3 .warehouse-location-workspace>.warehouse-location-minimap{display:none!important}
.warehouse-locations-v3 .warehouse-physical-map>.warehouse-location-minimap{
  position:absolute!important;
  top:auto!important;
  right:14px!important;
  bottom:28px!important;
  left:auto!important;
  z-index:30!important;
}

/* La nave se elige al principio de la misma barra de pestañas. Así no crea
   una franja adicional y el frontal de la estantería gana altura real. */
.warehouse-locations-v3>.warehouse-location-tabs .warehouse-location-view-context{
  order:-1!important;
  margin:0 9px 0 0!important;
}
.warehouse-locations-v3>.warehouse-location-tabs .warehouse-location-view-context select{width:176px!important}

/* Cabecera frontal compacta: el espacio útil pertenece a la matriz completa,
   incluidas sus gavetas y separadores seleccionables. */
.warehouse-locations-v3 .warehouse-rack-front{padding:6px!important}
.warehouse-locations-v3 .warehouse-rack-front header{min-height:34px!important;padding:0 0 2px!important}
.warehouse-locations-v3 .warehouse-rack-front header small{font-size:8px!important;line-height:1!important}
.warehouse-locations-v3 .warehouse-rack-front h3{margin:1px 0!important;font-size:14px!important;line-height:1.05!important}
.warehouse-locations-v3 .warehouse-rack-front header p{display:none!important}
.warehouse-locations-v3 .warehouse-rack-front .badge{padding:3px 6px!important;font-size:9px!important}
.warehouse-locations-v3 .warehouse-front-legend{margin:0 0 2px!important;padding:2px 0!important}
.warehouse-locations-v3 .warehouse-rack-levels{margin-top:0!important;gap:2px!important}

/* La matriz comienza en el borde superior del formulario. La barra de
   pestañas conserva únicamente el subrayado de la pestaña activa: el divisor
   horizontal completo se elimina porque no aporta ninguna separación útil. */
.warehouse-locations-v3>.warehouse-location-tabs{
  border:0!important;
  box-shadow:none!important;
  outline:0!important;
}
.warehouse-locations-v3 .warehouse-location-right{
  position:relative!important;
  z-index:2!important;
  transform:none!important;
  margin-bottom:0!important;
}

/* La ubicación operativa preparada es un resumen fijo: no se inserta entre
   filas de la matriz ni provoca saltos al seleccionar o unir separadores. */
.warehouse-prepared-location{
  display:grid;
  grid-template-columns:auto 1fr;
  gap:3px 9px;
  align-items:center;
  padding:7px 9px;
  margin:4px 0;
  border:1px solid #76b7ff;
  border-left:4px solid #1266d6;
  border-radius:8px;
  background:#edf6ff;
  color:#063f85;
  line-height:1.1;
}
.warehouse-prepared-location small{font-size:10px;font-weight:800;letter-spacing:.035em;color:#27629e}
.warehouse-prepared-location strong{font-size:13px;overflow-wrap:anywhere}
.warehouse-prepared-location span{grid-column:1/-1;font-size:11px;color:#486f9b}
.warehouse-locations-v3 .warehouse-slot-code{display:none!important}

/* Plano cenital operativo: una lectura ligera de la implantación física.
   Los pasillos no son objetos interactivos aquí; solo identifican el área.
   Cada estantería conserva su escala, ubicación, estado y selección real. */
.warehouse-locations-v3 .warehouse-plan-canvas{
  background-image:radial-gradient(#c7dbf4 1px,transparent 1.4px)!important;
  background-size:18px 18px!important;
}
.warehouse-locations-v3 .warehouse-aisle.warehouse-aisle-label{
  display:block!important;
  min-width:0!important;
  min-height:0!important;
  border:0!important;
  background:transparent!important;
  color:#5d3d91!important;
  font-size:10px!important;
  line-height:1!important;
  pointer-events:none!important;
  overflow:visible!important;
}
.warehouse-locations-v3 .warehouse-aisle.warehouse-aisle-label>b{
  position:absolute!important;
  top:50%!important;
  left:50%!important;
  display:block!important;
  color:#5d3d91!important;
  font-size:10px!important;
  font-weight:800!important;
  letter-spacing:.02em!important;
  white-space:nowrap!important;
  transform:translate(-50%,-50%)!important;
}
.warehouse-locations-v3 .warehouse-plan-rack-labeled{
  display:grid!important;
  place-items:center!important;
  min-width:24px!important;
  min-height:20px!important;
  padding:2px!important;
  border-width:1px!important;
  border-style:solid!important;
  border-radius:4px!important;
  box-shadow:none!important;
  cursor:pointer!important;
  overflow:visible!important;
}
.warehouse-locations-v3 .warehouse-plan-rack-labeled>b{
  display:block!important;
  position:absolute!important;
  top:50%!important;
  left:3px!important;
  right:3px!important;
  max-width:none!important;
  padding:1px 3px!important;
  border:0!important;
  border-radius:2px!important;
  background:transparent!important;
  color:inherit!important;
  font-size:9px!important;
  font-weight:800!important;
  line-height:1!important;
  text-align:center!important;
  white-space:nowrap!important;
  text-shadow:0 1px 0 #ffffffaa!important;
  transform:translateY(-50%)!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
}
.warehouse-locations-v3 .warehouse-plan-rack-labeled .warehouse-plan-rack-grid,
.warehouse-locations-v3 .warehouse-plan-rack-labeled>small{display:none!important}
.warehouse-locations-v3 .warehouse-plan-rack-labeled.is-free{background:var(--warehouse-location-free-bg)!important;border-color:var(--warehouse-location-free-line)!important;color:var(--warehouse-location-free-text)!important}
.warehouse-locations-v3 .warehouse-plan-rack-labeled.is-occupied{background:var(--warehouse-location-occupied-bg)!important;border-color:var(--warehouse-location-occupied-line)!important;color:var(--warehouse-location-occupied-text)!important}
.warehouse-locations-v3 .warehouse-plan-rack-labeled.is-blocked{background:var(--warehouse-location-blocked-bg)!important;border-color:var(--warehouse-location-blocked-line)!important;color:var(--warehouse-location-blocked-text)!important}
.warehouse-locations-v3 .warehouse-plan-rack-labeled.active{background:var(--warehouse-location-selected-bg)!important;border-color:var(--warehouse-location-selected-line)!important;color:var(--warehouse-location-selected-text)!important;outline:2px solid var(--warehouse-location-selected-line)!important;outline-offset:2px!important;z-index:4!important}

/* El visor cenital es un único espacio de trabajo: el lienzo nunca puede
   quedar limitado a una fracción del panel por reglas heredadas. */
.warehouse-locations-v3 .warehouse-physical-map{
  display:grid!important;
  grid-template-columns:minmax(0,1fr)!important;
  grid-template-rows:34px minmax(0,1fr)!important;
  align-items:stretch!important;
  justify-items:stretch!important;
}
.warehouse-locations-v3 .warehouse-physical-map>header{
  grid-column:1!important;
  grid-row:1!important;
  min-height:0!important;
  margin:0!important;
}
.warehouse-locations-v3 .warehouse-physical-map>.warehouse-map-viewport{
  grid-column:1!important;
  grid-row:2!important;
  width:auto!important;
  height:auto!important;
  min-width:0!important;
  min-height:0!important;
  box-sizing:border-box!important;
  align-self:stretch!important;
  justify-self:stretch!important;
  background-color:#f8fbff!important;
  background-image:radial-gradient(#c7dbf4 1px,transparent 1.4px)!important;
  background-size:18px 18px!important;
}
.warehouse-locations-v3 .warehouse-physical-map>.warehouse-map-viewport>.warehouse-plan-canvas{
  box-sizing:border-box!important;
  max-width:none!important;
  max-height:none!important;
}
.warehouse-locations-v3 .warehouse-physical-map>footer{display:none!important}
.warehouse-locations-v3 .warehouse-physical-map>.warehouse-location-minimap{
  position:absolute!important;
  right:14px!important;
  bottom:14px!important;
  left:auto!important;
  top:auto!important;
  z-index:30!important;
}

/* La matriz frontal es el área operativa principal. Se eleva hasta la
   cabecera del módulo para aprovechar la altura completa, sin alterar el
   plano cenital ni las pestañas de navegación de la izquierda. */
.warehouse-locations-v3{position:relative!important}
.warehouse-locations-v3 .warehouse-location-workspace{
  position:relative!important;
  grid-template-columns:minmax(0,1fr) 540px!important;
  overflow:visible!important;
}
.warehouse-locations-v3 .warehouse-location-right{
  position:absolute!important;
  /* El área de columnas empieza bajo las pestañas. Se compensa esa franja
     para que el frontal quede a 5 px de la cabecera azul del módulo. */
  top:-60px!important;
  right:0!important;
  bottom:9px!important;
  width:540px!important;
  height:auto!important;
  margin:0!important;
  z-index:6!important;
}

/* El identificador de una estantería forma parte del propio plano: no puede
   depender de espacio exterior ni quedar oculto por el área lateral. */
.warehouse-locations-v3 .warehouse-plan-rack-labeled>.warehouse-plan-rack-label{
  display:block!important;
  position:absolute!important;
  z-index:12!important;
  top:50%!important;
  right:2px!important;
  left:2px!important;
  bottom:auto!important;
  width:auto!important;
  max-width:none!important;
  margin:0!important;
  padding:1px 2px!important;
  overflow:hidden!important;
  border:0!important;
  border-radius:2px!important;
  background:rgba(255,255,255,.92)!important;
  color:#063d76!important;
  font-size:10px!important;
  font-weight:900!important;
  line-height:1.05!important;
  text-align:center!important;
  text-overflow:ellipsis!important;
  white-space:nowrap!important;
  text-shadow:none!important;
  pointer-events:none!important;
  transform:translateY(-50%)!important;
}
.warehouse-locations-v3 .warehouse-plan-rack-labeled.active>.warehouse-plan-rack-label{
  background:#075ebd!important;
  color:#fff!important;
}

/* La ubicación elegida pertenece al plano cenital: queda justo debajo de él,
   sin consumir altura ni desplazar la matriz frontal de la estantería. */
.warehouse-locations-v3 .warehouse-map-prepared{
  display:flex;align-items:center;justify-content:space-between;gap:8px;
  min-height:34px;padding:5px 8px;border:1px solid #a9ccea;border-radius:7px;
  background:#f3f8ff;color:#0b4f99;
}
.warehouse-locations-v3 .warehouse-map-prepared span{display:grid;gap:1px;min-width:0}
.warehouse-locations-v3 .warehouse-map-prepared small{font-size:8px;font-weight:900;letter-spacing:.04em}
.warehouse-locations-v3 .warehouse-map-prepared b{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}
.warehouse-locations-v3 .warehouse-map-prepared .btn{flex:0 0 auto;min-height:25px;padding:3px 8px;font-size:9px}

/* El cenital cede altura al bloque de asignación situado debajo: conserva
   navegación interna y no invade ni desplaza la matriz frontal. */
.warehouse-locations-v3 .warehouse-physical-map{
  align-self:start!important;
  height:calc(100% - 42px)!important;
  max-height:calc(100% - 42px)!important;
  grid-template-rows:auto minmax(0,1fr) auto!important;
}
.warehouse-locations-v3 .warehouse-map-prepared{margin-top:4px!important}

/* Separadores operativos: cada uno representa una franja horizontal dentro
   de su gaveta. Aprovecha el ancho completo de su tramo y conserva el color
   de estado (libre, ocupada, bloqueada o seleccionada). */
.warehouse-locations-v3 .warehouse-slot-dividers{
  display:grid!important;
  grid-auto-flow:column!important;
  grid-auto-columns:minmax(0,1fr)!important;
  grid-template-columns:repeat(var(--warehouse-divider-count,4),minmax(0,1fr))!important;
  align-items:stretch!important;
  width:100%!important;
  min-height:22px!important;
  gap:2px!important;
}
.warehouse-locations-v3 .warehouse-slot-dividers i{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:100%!important;
  min-width:0!important;
  min-height:22px!important;
  height:100%!important;
  margin:0!important;
  padding:1px 0!important;
  border-radius:3px!important;
}
.warehouse-locations-v3 .warehouse-slot-dividers i b{font-size:8px!important;line-height:1!important}

/* Superficie nueva de Ubicaciones: aislada de las reglas históricas del
   diseñador. Una matriz horizontal, sin columnas anidadas ni repintados de
   tamaño, evita que una unión altere la selección siguiente. */
.warehouse-locations-clean{height:calc(100dvh - 96px)!important;min-height:520px!important;padding:8px!important;overflow:hidden!important}
.warehouse-locations-clean .swl-tabs{display:flex;gap:4px;height:32px;align-items:stretch}
.warehouse-locations-clean .swl-tabs button{border:0;border-bottom:2px solid transparent;background:transparent;color:#0a4b99;font-size:11px;font-weight:800;padding:0 10px;cursor:pointer}
.warehouse-locations-clean .swl-tabs button.active{border-bottom-color:#0b66c9;background:#eef6ff}
.warehouse-locations-clean .swl-workspace{display:grid;grid-template-columns:minmax(0,1fr) minmax(520px,.84fr);gap:8px;height:calc(100% - 34px);min-height:0}
.warehouse-locations-clean .swl-left{display:grid;grid-template-rows:minmax(0,1fr) auto;min-height:0;gap:6px}
.warehouse-locations-clean .swl-map{display:grid;grid-template-rows:34px minmax(0,1fr);min-height:0;border:1px solid #b7d5f2;border-radius:9px;background:#f7fbff;overflow:hidden}
.warehouse-locations-clean .swl-map>header{display:flex;align-items:center;gap:7px;padding:4px 7px;border-bottom:1px solid #d8e8f8;color:#285783;font-size:9px;font-weight:800}
.warehouse-locations-clean .swl-map>header label{display:flex;align-items:center;gap:5px;margin-right:auto}.warehouse-locations-clean .swl-map select{height:24px;min-width:130px;border:1px solid #b7d5f2;border-radius:4px;background:#fff;color:#073d78;font-weight:800}
.warehouse-locations-clean .swl-map>header button{height:24px;min-width:25px;border:1px solid #b7d5f2;border-radius:4px;background:#fff;color:#0757af;font-weight:900;cursor:pointer}
/* Selector de nave: misma escala y caja que los controles de zoom. */
.warehouse-locations-clean .swl-map>header label{height:24px;min-width:0}
.warehouse-locations-clean .swl-map>header select{box-sizing:border-box!important;width:160px!important;min-width:160px!important;max-width:160px!important;height:24px!important;min-height:24px!important;max-height:24px!important;margin:0!important;padding:2px 25px 2px 7px!important;font:800 10px/18px "Segoe UI",sans-serif!important;vertical-align:middle}
.warehouse-locations-clean .swl-map-viewport{position:relative;min-height:0;overflow:hidden;cursor:grab;background-image:radial-gradient(#cadff5 1px,transparent 1px);background-size:18px 18px}.warehouse-locations-clean .swl-map-viewport:active{cursor:grabbing}
.warehouse-locations-clean .swl-map-canvas{position:relative;width:auto;height:auto;min-width:1px;min-height:1px;box-sizing:border-box;transform-origin:0 0;will-change:transform}
.warehouse-locations-clean .swl-map{position:relative}
.warehouse-locations-clean .swl-minimap{position:absolute!important;right:10px!important;bottom:10px!important;left:auto!important;top:auto!important;z-index:12!important;width:132px!important;padding:6px!important;pointer-events:auto}
.warehouse-locations-clean .swl-minimap header{display:none!important}
.warehouse-locations-clean .swl-minimap .warehouse-minimap-canvas{height:76px!important;cursor:crosshair}
.warehouse-locations-clean .swl-aisle{position:absolute;display:grid;place-items:center;min-width:28px;min-height:18px;border:1px dashed #8d66cf;border-radius:4px;background:rgba(159,115,224,.12);color:#69429b;font-size:9px;font-weight:900;pointer-events:none}
.warehouse-locations-clean .swl-aisle{display:none!important}
.warehouse-locations-clean .swl-rack{position:absolute;display:grid;place-items:center;min-width:40px;min-height:25px;padding:2px;border:1px solid #54ad75;border-radius:4px;background:#e4f6ea;color:#176a3b;font-size:9px;font-weight:900;cursor:pointer}.warehouse-locations-clean .swl-rack.occupied{border-color:#dc9a2f;background:#fff0d8;color:#8c5100}.warehouse-locations-clean .swl-rack.selected{outline:2px solid #0765cb;outline-offset:2px;background:#dcebff;color:#07488e}
/* Capa física compartida con el Diseñador: visible en el mapa operativo,
   pero no interactúa con las ubicaciones ni altera su disponibilidad. */
.warehouse-locations-clean .swl-feature{position:absolute;display:grid;place-items:center;align-content:center;gap:1px;box-sizing:border-box;min-width:7px;min-height:7px;padding:1px;border:1px solid var(--swl-feature-color,#64748b);border-radius:3px;background:color-mix(in srgb,var(--swl-feature-color,#64748b) 25%,transparent);color:#183b61;pointer-events:none!important;user-select:none;-webkit-user-select:none;overflow:hidden;z-index:1}
.warehouse-locations-clean .swl-feature i{font-style:normal;font-size:11px;line-height:1;color:var(--swl-feature-color,#64748b)}
.warehouse-locations-clean .swl-feature b{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:7px;line-height:1;color:#183b61}
.warehouse-locations-clean .swl-feature-label{border:0;background:transparent;align-content:start;align-items:start;padding:0;overflow:visible}
.warehouse-locations-clean .swl-feature-label b{max-width:none;white-space:normal;font-size:clamp(8px,0.8vw,15px);line-height:1.1;color:var(--swl-feature-color,#173f78);font-weight:800;text-shadow:0 1px 0 #fff}
.warehouse-locations-clean .swl-feature-wall{border-radius:0;background:color-mix(in srgb,var(--swl-feature-color,#64748b) 40%,transparent)}
.warehouse-locations-clean .swl-feature-no_storage,.warehouse-locations-clean .swl-feature-safety_zone{border-style:dashed}
.warehouse-locations-clean .swl-aisle-area{position:absolute;display:grid;place-items:center;box-sizing:border-box;border:1px dashed #6aa5dc;border-radius:5px;background:rgba(87,159,220,.10);color:#245f96;pointer-events:none;overflow:hidden;z-index:0}
.warehouse-locations-clean .swl-aisle-area b{max-width:100%;padding:2px 5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:8px;line-height:1;background:rgba(255,255,255,.78);border-radius:999px}
.warehouse-locations-clean button.swl-feature-storage_zone{appearance:none;cursor:pointer;pointer-events:auto!important;border:2px solid var(--swl-feature-color,#2f9f62);background:color-mix(in srgb,var(--swl-feature-color,#2f9f62) 20%,#fff);z-index:2}
.warehouse-locations-clean button.swl-feature-storage_zone:hover,.warehouse-locations-clean button.swl-feature-storage_zone:focus-visible{outline:3px solid rgba(47,159,98,.25);background:color-mix(in srgb,var(--swl-feature-color,#2f9f62) 32%,#fff)}
.warehouse-locations-clean .swl-feature-temporary_storage_zone{border:2px dashed var(--swl-feature-color,#df8b23);background:color-mix(in srgb,var(--swl-feature-color,#df8b23) 18%,#fff);color:#754000;z-index:2}
.warehouse-location-operational-view .warehouse-location-status.reference{background:#e8f3ff;color:#245f96}
.warehouse-location-operational-view .warehouse-location-status.partial{background:#e8f3ff;color:#145c9e}
.warehouse-location-operational-view .warehouse-location-status.full{background:#f2f4f7;color:#667386}
.warehouse-location-operational-view tr.partial td{background:#f8fbff}
.warehouse-location-operational-view tr.full td{background:#f2f4f7;color:#65758a}
.warehouse-location-operational-view tr.reference td{background:#f7fbff}
.warehouse-locations-clean .swl-right{display:grid;grid-template-columns:minmax(0,1fr) 118px;grid-template-rows:minmax(0,1fr);min-height:0;border:1px solid #b7d5f2;border-radius:9px;background:#fff;overflow:hidden}
.warehouse-locations-clean .swl-front{grid-column:1;grid-row:1;display:grid;grid-template-rows:auto minmax(0,1fr);min-height:0;padding:7px 5px 7px 7px;overflow:hidden}.warehouse-locations-clean .swl-front>header{display:grid;gap:2px;padding:0 2px 4px;border-bottom:1px solid #d8e8f8}.warehouse-locations-clean .swl-front small{color:#55779b;font-size:8px;font-weight:800}.warehouse-locations-clean .swl-front h2{margin:0;color:#073e7b;font-size:14px;line-height:1.1}.warehouse-locations-clean .swl-front header span{color:#4e6f92;font-size:8px}
.warehouse-locations-clean .swl-rows{display:grid;grid-auto-rows:minmax(112px,max-content);align-content:start;gap:5px;min-height:0;overflow-y:auto;overflow-x:hidden;padding:6px 8px 28px 0;scrollbar-gutter:stable;scroll-padding-block:12px}.warehouse-locations-clean .swl-rows article{display:grid;grid-template-columns:27px minmax(0,1fr);gap:4px;align-items:stretch;min-height:var(--swl-row-min-height,112px);position:relative}.warehouse-locations-clean .swl-rows article:last-child{margin-bottom:12px}.warehouse-locations-clean .swl-rows article>b{display:flex;align-items:center;justify-content:center;color:#174c87;font-size:12px}.warehouse-locations-clean .swl-rows article>div{display:grid;grid-template-columns:repeat(var(--swl-drawers,1),minmax(0,1fr));gap:5px;min-width:0}
.warehouse-locations-clean .swl-drawer{display:grid;grid-template-rows:minmax(0,1fr) 16px;gap:4px;min-width:0;padding:3px 4px;border:1px solid #62b780;border-radius:4px;background:#e4f6ea;color:#176a3b;text-align:left;cursor:pointer;overflow:hidden}.warehouse-locations-clean .swl-drawer.occupied{border-color:#df9d31;background:#fff0d8;color:#905300}.warehouse-locations-clean .swl-drawer.selected,.warehouse-locations-clean .swl-separator.selected{border-color:#0865ca;background:#dcebff;color:#07478d;outline:2px solid #0865ca;outline-offset:0}.warehouse-locations-clean .swl-drawer>b{font-size:11px;line-height:16px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.warehouse-locations-clean .swl-separators{display:grid;grid-template-columns:minmax(0,1fr);grid-template-rows:repeat(var(--swl-separators,4),minmax(0,1fr));gap:3px;align-items:stretch;min-height:0;position:relative;z-index:2}.warehouse-locations-clean .swl-separator{display:flex;align-items:center;justify-content:center;width:100%;min-width:0;min-height:0;position:relative;z-index:3;pointer-events:auto;touch-action:manipulation;border:1px solid #62b780;border-radius:3px;background:#f4fcf6;color:#176a3b;font-size:10px;font-weight:900;cursor:pointer}.warehouse-locations-clean .swl-separator.occupied{border-color:#df9d31;background:#fff0d8;color:#905300}.warehouse-locations-clean .swl-separator-group,.warehouse-locations-clean .swl-drawer-group{border:2px solid #0a65c8;background:#dcebff;color:#07478d;font-weight:900;text-align:center}
.warehouse-locations-clean .swl-actions{grid-column:2;grid-row:1;display:grid;grid-template-rows:auto minmax(0,1fr);align-content:start;gap:5px;padding:7px 6px;border-top:0;border-left:1px solid #d8e8f8;background:#f6fbff;color:#174c87;font-size:9px;min-width:0}.warehouse-locations-clean .swl-actions>div{display:grid;grid-template-columns:1fr;grid-auto-rows:minmax(32px,auto);align-content:start;gap:5px}.warehouse-locations-clean .swl-actions .btn{min-height:32px;padding:3px 2px;font-size:9px;line-height:1.05;white-space:normal}.warehouse-locations-clean .swl-prepared{display:flex;align-items:center;gap:8px;padding:6px 8px;border:1px solid #a9ccea;border-radius:7px;background:#f3f8ff;color:#0b4f99;font-size:10px}.warehouse-locations-clean .swl-prepared span{margin-right:auto;font-weight:900}
.warehouse-locations-clean .swl-separator-group,.warehouse-locations-clean .swl-drawer-group{border:1px solid #62b780;background:#e4f6ea;color:#176a3b}.warehouse-locations-clean .swl-separator-group.selected,.warehouse-locations-clean .swl-drawer-group.selected{border:2px solid #0865ca;background:#dcebff;color:#07478d;outline:2px solid #0865ca;outline-offset:0}
.warehouse-locations-clean .swl-drawer-group{display:grid!important;grid-template-rows:1fr!important;place-items:center;text-align:center;font-size:9px;line-height:1.15;white-space:normal;overflow:hidden}
.warehouse-locations-clean .swl-row-location{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;width:100%;min-height:64px;text-align:center}.warehouse-locations-clean .swl-row-location>b{font-size:12px;line-height:1.15}.warehouse-locations-clean .swl-row-location>span{font-size:9px;font-weight:700;color:#55779b}.warehouse-locations-clean .swl-row-location.occupied>span{color:#905300}
/* Acciones laterales: no compiten con la matriz ni pueden desbordar su carril. */
.warehouse-locations-clean .swl-actions{overflow:hidden;min-width:118px}
.warehouse-locations-clean .swl-actions>div{width:100%;min-width:0}
.warehouse-locations-clean .swl-actions .btn{width:100%;max-width:100%;overflow:visible;text-overflow:clip;font-size:10px;white-space:nowrap}
@media(max-width:1100px){.warehouse-locations-clean .swl-workspace{grid-template-columns:minmax(0,1fr) 430px}.warehouse-locations-clean .swl-map>header span{display:none}}

/* Lista y árbol: mismas acciones operativas, estados y escala que el plano. */
.warehouse-location-operational-view{height:calc(100dvh - 80px);max-height:calc(100dvh - 80px);min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr) auto;gap:7px;padding:8px!important;overflow:hidden}
.warehouse-location-operational-view .warehouse-location-tabs{display:flex;align-items:end;gap:4px;margin:0;padding:0;border-bottom:1px solid #c9dcef}.warehouse-location-operational-view .warehouse-location-tabs button{min-height:30px;padding:5px 10px;border:0;border-bottom:3px solid transparent;border-radius:6px 6px 0 0;background:transparent;color:#084b97;font-size:11px;font-weight:800;cursor:pointer}.warehouse-location-operational-view .warehouse-location-tabs button.active{border-bottom-color:#176cc9;background:#eaf3ff;color:#063d83}
.warehouse-location-view-head{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:4px 2px}.warehouse-location-view-head small{display:block;color:#4d719d;font-size:10px;font-weight:900}.warehouse-location-view-head h2{margin:2px 0;color:#073e7b;font-size:19px}.warehouse-location-view-head p{margin:0;color:#55779b;font-size:11px}.warehouse-location-view-head label{display:flex;align-items:center;gap:7px;color:#174680;font-size:11px;font-weight:800}.warehouse-location-view-head select{width:210px;height:30px;padding:4px 9px;border:1px solid #bdd2eb;border-radius:7px;background:#fff;color:#123f78;font-size:12px;font-weight:800}
.warehouse-location-operational-view .warehouse-location-view-body{min-height:0;overflow:auto;border:1px solid #c5ddf3;border-radius:10px;background:#f8fbff;padding:8px}.warehouse-location-operational-view .warehouse-location-filters{display:grid;grid-template-columns:minmax(260px,1fr) 160px 160px auto;align-items:end;gap:8px;margin:0 0 8px;padding:8px;border:1px solid #d4e5f6;border-radius:8px;background:#f2f8ff}.warehouse-location-operational-view .warehouse-location-filters label{display:grid;gap:4px;color:#174680;font-size:10px;font-weight:900}.warehouse-location-operational-view .warehouse-location-filters select,.warehouse-location-operational-view .warehouse-location-filters input{min-width:0;height:30px;padding:5px 8px;border:1px solid #bdd2eb;border-radius:6px;background:#fff;color:#123f78;font:700 11px "Segoe UI",sans-serif}.warehouse-location-operational-view .warehouse-location-filters>b{padding:7px 0;color:#0a5ab5;font-size:11px;white-space:nowrap}.warehouse-location-operational-view .warehouse-location-table-wrap{min-height:0;overflow:auto;border:1px solid #d2e3f4;border-radius:8px;background:#fff}.warehouse-location-operational-view .warehouse-location-table-wrap table{width:100%;border-collapse:collapse}.warehouse-location-operational-view .warehouse-location-table-wrap th{position:sticky;top:0;z-index:1;background:#eaf3ff}.warehouse-location-operational-view .warehouse-location-table-wrap th button{width:100%;padding:9px 8px;border:0;background:transparent;color:#164b88;font-size:11px;font-weight:900;text-align:left;cursor:pointer}.warehouse-location-operational-view .warehouse-location-table-wrap td{padding:8px;border-top:1px solid #e0ebf6;color:#214d81;font-size:11px;vertical-align:middle;cursor:pointer}.warehouse-location-operational-view .warehouse-location-table-wrap tr{cursor:pointer}.warehouse-location-operational-view .warehouse-location-table-wrap tr:hover td,.warehouse-location-operational-view .warehouse-location-table-wrap tr.selected-row td{background:#eaf4ff}.warehouse-location-operational-view .warehouse-location-table-wrap tr.blocked td{background:#f2f4f7;color:#65758a}.warehouse-location-operational-view .warehouse-location-table-wrap small{display:block;margin-top:2px;color:#607d9f;font-size:10px}.warehouse-location-operational-view .warehouse-location-status{display:inline-flex;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:900}.warehouse-location-operational-view .warehouse-location-status.free{background:#e7f8ed;color:#177341}.warehouse-location-operational-view .warehouse-location-status.occupied{background:#fff0dc;color:#935300}.warehouse-location-operational-view .warehouse-location-status.blocked{background:#edf0f4;color:#667386}.warehouse-location-operational-view .warehouse-location-type{padding:3px 6px;border-radius:99px;background:#eef4fb;color:#315c91;font-size:10px;font-weight:900}
.warehouse-location-operational-view .warehouse-location-tree{display:grid;align-content:start;gap:7px;padding:2px}.warehouse-location-operational-view .warehouse-location-tree-rack{margin:0}.warehouse-location-operational-view .warehouse-location-tree details{border:1px solid #d7e4f3;border-radius:8px;background:#fff}.warehouse-location-operational-view .warehouse-location-tree summary{display:grid;grid-template-columns:minmax(130px,auto) minmax(0,1fr) auto;align-items:center;gap:10px;padding:9px 11px;color:#173e76;cursor:pointer;list-style:none;font-size:12px;font-weight:700}.warehouse-location-operational-view .warehouse-location-tree summary::-webkit-details-marker{display:none}.warehouse-location-operational-view .warehouse-location-tree summary::before{content:'›';grid-row:1;grid-column:1;justify-self:end;color:#2470ce;font-size:16px}.warehouse-location-operational-view .warehouse-location-tree details[open]>summary::before{transform:rotate(90deg)}.warehouse-location-operational-view .warehouse-location-tree .tree-code{font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-weight:900}.warehouse-location-operational-view .warehouse-location-tree-children{display:grid;gap:5px;margin:0 10px 9px 24px;padding-left:10px;border-left:2px solid #d9e8f9}.warehouse-location-operational-view .warehouse-location-tree-divider{display:grid;grid-template-columns:minmax(210px,auto) minmax(0,1fr) auto;align-items:center;gap:10px;width:100%;padding:7px 9px;border:1px solid #d9e6f4;border-radius:6px;background:#fbfdff;color:#254c80;text-align:left;cursor:pointer;font-size:11px}.warehouse-location-operational-view .warehouse-location-tree-divider:hover,.warehouse-location-operational-view .warehouse-location-tree-divider.selected{border-color:#1670d1;background:#eaf4ff;box-shadow:0 0 0 2px #d7eaff}.warehouse-location-operational-view .warehouse-location-tree-divider.blocked{opacity:.72;background:#f2f4f7}.warehouse-location-operational-view .warehouse-location-tree-divider small{color:#587494}.warehouse-location-operational-view .warehouse-location-tree-divider b{padding:3px 6px;border-radius:99px;font-size:10px}.warehouse-location-operational-view .warehouse-location-tree-divider b.free{background:#eaf8ef;color:#197242}.warehouse-location-operational-view .warehouse-location-tree-divider b.occupied{background:#fff1df;color:#9a5d00}.warehouse-location-operational-view .warehouse-location-tree-divider b.blocked{background:#edf0f4;color:#667386}
.warehouse-location-view-actions{display:grid;grid-template-columns:minmax(180px,1fr) auto;align-items:center;gap:9px;padding:7px 9px;border:1px solid #b9d7f2;border-radius:9px;background:#f4f9ff}.warehouse-location-selected-summary{display:flex;align-items:center;gap:8px;min-width:0;color:#0b4f99;font-size:11px}.warehouse-location-selected-summary span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:900}.warehouse-location-action-buttons{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:5px}.warehouse-location-action-buttons .btn{min-height:29px;padding:4px 8px;font-size:10px}
@media(max-width:900px){.warehouse-location-operational-view .warehouse-location-filters{grid-template-columns:1fr 1fr}.warehouse-location-view-head p{display:none}.warehouse-location-view-head select{width:150px}.warehouse-location-view-actions{grid-template-columns:1fr}.warehouse-location-action-buttons{justify-content:stretch}.warehouse-location-action-buttons .btn{flex:1}.warehouse-location-operational-view .warehouse-location-tree-divider{grid-template-columns:1fr auto}.warehouse-location-operational-view .warehouse-location-tree-divider small{display:none}}

/* Listado y árbol: la navegación, el contexto, los filtros y la selección
   pertenecen al puesto de trabajo; únicamente se desplaza el contenido. */
.warehouse-location-operational-view .warehouse-location-view-body{overflow:hidden}
.warehouse-location-table-panel .warehouse-location-view-body{display:grid;grid-template-rows:auto minmax(0,1fr);gap:8px}
.warehouse-location-table-panel .warehouse-location-filters{margin:0}
.warehouse-location-table-panel .warehouse-location-table-wrap{height:100%;margin:0;min-height:0;overflow:auto;scrollbar-gutter:stable both-edges}
.warehouse-location-table-panel .warehouse-location-table-wrap thead th{position:sticky;top:0;z-index:2}
.warehouse-location-tree-panel .warehouse-location-view-body.warehouse-location-tree{overflow:auto;scrollbar-gutter:stable both-edges}

/* Capacidad y elegibilidad operativa: lo no asignable se identifica en rojo
   y nunca se presenta como un destino interactivo. */
.warehouse-location-operational-view tr.unavailable td{background:#fff1f1;color:#8f2630;cursor:not-allowed}
.warehouse-location-operational-view tr.unavailable:hover td{background:#ffe8e8}
.warehouse-location-operational-view .warehouse-location-tree summary span>small{display:block;margin-top:2px;color:#55779b;font-size:10px;font-weight:700}
.warehouse-location-operational-view .warehouse-location-tree-divider.unavailable,.warehouse-location-operational-view .warehouse-location-tree-divider:disabled{border-color:#efb4b8;background:#fff1f1;color:#8f2630;cursor:not-allowed;opacity:1}
.warehouse-location-operational-view .warehouse-location-tree-divider.unavailable small,.warehouse-location-operational-view .warehouse-location-tree-divider:disabled small{color:#a44a52}
.warehouse-location-operational-view .warehouse-location-tree-divider.unavailable b,.warehouse-location-operational-view .warehouse-location-tree-divider:disabled b{background:#ffdfe1;color:#9f2631}
