@codingfactory/inventory-locator-client 0.1.0 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index-BrZt55_Z.js +22405 -0
- package/dist/index-D6KBu_HL.cjs +20 -0
- package/dist/index.cjs +2 -0
- package/dist/index.d.ts +1803 -0
- package/dist/index.js +6057 -0
- package/dist/inventory-locator-client.css +1 -0
- package/package.json +2 -1
- package/src/components/dashboard/InventoryDashboard.vue +29 -18
- package/tsconfig.json +0 -21
- package/vite.config.ts +0 -37
|
@@ -0,0 +1 @@
|
|
|
1
|
+
.inv-card[data-v-11729604]{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:8px;box-shadow:var(--shadow-sm);overflow:hidden}.inv-card__header[data-v-11729604]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);border-bottom:1px solid var(--admin-border)}.inv-card--compact .inv-card__header[data-v-11729604]{padding:var(--space-3, .75rem) var(--space-4, 1rem)}.inv-card__header-content[data-v-11729604]{display:flex;align-items:center;min-width:0;flex:1}.inv-card__title-area[data-v-11729604]{display:flex;align-items:center;gap:var(--space-2, .5rem);min-width:0}.inv-card__title-button[data-v-11729604]{background:none;border:none;padding:0;margin:0;cursor:pointer;color:inherit;font:inherit;text-align:left;border-radius:4px}.inv-card__title-button[data-v-11729604]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.inv-card__chevron[data-v-11729604]{flex-shrink:0;color:var(--admin-text-tertiary);transition:transform .2s ease}.inv-card__chevron--collapsed[data-v-11729604]{transform:rotate(-90deg)}.inv-card__title[data-v-11729604]{margin:0;font-size:var(--text-base, 1rem);font-weight:600;color:var(--admin-text-primary);line-height:1.4}.inv-card--compact .inv-card__title[data-v-11729604]{font-size:var(--text-sm, .875rem)}.inv-card__subtitle[data-v-11729604]{margin:var(--space-1, .25rem) 0 0;font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary);line-height:1.4}.inv-card__actions[data-v-11729604]{display:flex;align-items:center;gap:var(--space-2, .5rem);flex-shrink:0}.inv-card__body[data-v-11729604]{padding:var(--space-5, 1.25rem);position:relative}.inv-card--compact .inv-card__body[data-v-11729604]{padding:var(--space-4, 1rem)}.inv-card--no-padding .inv-card__body[data-v-11729604]{padding:0}.inv-card__loading-overlay[data-v-11729604]{display:flex;flex-direction:column;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) 0}.inv-card__shimmer[data-v-11729604]{height:16px;width:100%;border-radius:4px;background:linear-gradient(90deg,var(--admin-border) 25%,var(--admin-content-bg) 50%,var(--admin-border) 75%);background-size:200% 100%;animation:inv-shimmer-11729604 1.5s ease-in-out infinite}.inv-card__shimmer--short[data-v-11729604]{width:60%}.inv-card__shimmer--medium[data-v-11729604]{width:80%}@keyframes inv-shimmer-11729604{0%{background-position:200% 0}to{background-position:-200% 0}}.sr-only[data-v-11729604]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.inv-btn[data-v-6f9fc98e]{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2, .5rem);border:1px solid transparent;border-radius:6px;font-weight:500;line-height:1;cursor:pointer;white-space:nowrap;transition:background-color .15s ease,border-color .15s ease,color .15s ease,box-shadow .15s ease;-webkit-user-select:none;user-select:none}.inv-btn[data-v-6f9fc98e]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.inv-btn--sm[data-v-6f9fc98e]{min-height:36px;padding:var(--space-1, .25rem) var(--space-3, .75rem);font-size:var(--text-xs, .75rem)}.inv-btn--md[data-v-6f9fc98e]{min-height:44px;padding:var(--space-2, .5rem) var(--space-4, 1rem);font-size:var(--text-sm, .875rem)}.inv-btn--lg[data-v-6f9fc98e]{min-height:52px;padding:var(--space-3, .75rem) var(--space-6, 1.5rem);font-size:var(--text-base, 1rem)}.inv-btn--primary[data-v-6f9fc98e]{background:var(--color-primary, #2563eb);color:#fff;border-color:var(--color-primary, #2563eb)}.inv-btn--primary[data-v-6f9fc98e]:hover:not(:disabled){background:color-mix(in srgb,var(--color-primary, #2563eb) 85%,black);border-color:color-mix(in srgb,var(--color-primary, #2563eb) 85%,black)}.inv-btn--primary[data-v-6f9fc98e]:active:not(:disabled){background:color-mix(in srgb,var(--color-primary, #2563eb) 75%,black)}.inv-btn--secondary[data-v-6f9fc98e]{background:var(--admin-card-bg);color:var(--admin-text-primary);border-color:var(--admin-border)}.inv-btn--secondary[data-v-6f9fc98e]:hover:not(:disabled){background:var(--admin-content-bg);border-color:var(--admin-text-tertiary)}.inv-btn--secondary[data-v-6f9fc98e]:active:not(:disabled){background:var(--admin-table-header-bg)}.inv-btn--danger[data-v-6f9fc98e]{background:var(--color-error, #dc2626);color:#fff;border-color:var(--color-error, #dc2626)}.inv-btn--danger[data-v-6f9fc98e]:hover:not(:disabled){background:color-mix(in srgb,var(--color-error, #dc2626) 85%,black);border-color:color-mix(in srgb,var(--color-error, #dc2626) 85%,black)}.inv-btn--danger[data-v-6f9fc98e]:active:not(:disabled){background:color-mix(in srgb,var(--color-error, #dc2626) 75%,black)}.inv-btn--ghost[data-v-6f9fc98e]{background:transparent;color:var(--admin-text-secondary);border-color:transparent}.inv-btn--ghost[data-v-6f9fc98e]:hover:not(:disabled){background:var(--admin-content-bg);color:var(--admin-text-primary)}.inv-btn--ghost[data-v-6f9fc98e]:active:not(:disabled){background:var(--admin-table-header-bg)}.inv-btn--disabled[data-v-6f9fc98e]{opacity:.5;cursor:not-allowed}.inv-btn--loading[data-v-6f9fc98e]{cursor:wait}.inv-btn__spinner[data-v-6f9fc98e]{display:flex;align-items:center;justify-content:center;animation:inv-btn-spin-6f9fc98e .8s linear infinite}@keyframes inv-btn-spin-6f9fc98e{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.inv-btn__icon[data-v-6f9fc98e]{display:flex;align-items:center;justify-content:center;flex-shrink:0}.inv-btn__label[data-v-6f9fc98e]{display:flex;align-items:center}.inv-dashboard[data-v-bb9b566d]{max-width:960px;display:flex;flex-direction:column;gap:var(--space-5, 1.25rem)}.inv-dashboard__title[data-v-bb9b566d]{margin:0;font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary)}.inv-dashboard__stats[data-v-bb9b566d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:var(--space-4, 1rem)}.inv-dashboard__stat-card[data-v-bb9b566d]{display:flex;flex-direction:column;align-items:flex-start;gap:var(--space-1, .25rem);padding:var(--space-4, 1rem) var(--space-5, 1.25rem);background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:8px;border-left-width:4px;min-height:80px}.inv-dashboard__stat-card--primary[data-v-bb9b566d]{border-left-color:var(--color-primary, #2563eb)}.inv-dashboard__stat-card--success[data-v-bb9b566d]{border-left-color:var(--color-success, #059669)}.inv-dashboard__stat-card--info[data-v-bb9b566d]{border-left-color:var(--color-info, #0891b2)}.inv-dashboard__stat-card--warning[data-v-bb9b566d]{border-left-color:var(--color-warning, #d97706)}.inv-dashboard__stat-shimmer[data-v-bb9b566d]{width:60px;height:28px;border-radius:4px;background:linear-gradient(90deg,var(--admin-border) 25%,var(--admin-content-bg) 50%,var(--admin-border) 75%);background-size:200% 100%;animation:dashboard-shimmer-bb9b566d 1.5s ease-in-out infinite}@keyframes dashboard-shimmer-bb9b566d{0%{background-position:200% 0}to{background-position:-200% 0}}.inv-dashboard__stat-value[data-v-bb9b566d]{font-size:var(--text-2xl, 1.5rem);font-weight:700;font-variant-numeric:tabular-nums;color:var(--admin-text-primary);line-height:1.2}.inv-dashboard__stat-label[data-v-bb9b566d]{font-size:var(--text-xs, .75rem);color:var(--admin-text-secondary);text-transform:uppercase;letter-spacing:.05em}.inv-dashboard__type-grid[data-v-bb9b566d]{display:flex;flex-wrap:wrap;gap:var(--space-4, 1rem)}.inv-dashboard__type-item[data-v-bb9b566d]{display:flex;align-items:baseline;gap:var(--space-1, .25rem)}.inv-dashboard__type-count[data-v-bb9b566d]{font-weight:700;font-variant-numeric:tabular-nums;color:var(--admin-text-primary)}.inv-dashboard__type-label[data-v-bb9b566d]{font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary)}.inv-dashboard__actions-grid[data-v-bb9b566d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:var(--space-3, .75rem)}.inv-dashboard__action-btn[data-v-bb9b566d]{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-2, .5rem);min-height:80px;padding:var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:8px;background:var(--admin-card-bg);color:var(--admin-text-primary);cursor:pointer;transition:background-color .15s ease,border-color .15s ease,box-shadow .15s ease}.inv-dashboard__action-btn[data-v-bb9b566d]:hover{background:var(--admin-content-bg);border-color:var(--admin-text-tertiary)}.inv-dashboard__action-btn[data-v-bb9b566d]:active{background:var(--admin-table-header-bg)}.inv-dashboard__action-btn[data-v-bb9b566d]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.inv-dashboard__action-icon[data-v-bb9b566d]{display:flex;align-items:center;justify-content:center;color:var(--color-primary, #2563eb)}.inv-dashboard__action-label[data-v-bb9b566d]{font-size:var(--text-sm, .875rem);font-weight:500;text-align:center}.inv-dashboard__activity-list[data-v-bb9b566d]{display:flex;flex-direction:column}.inv-dashboard__activity-row[data-v-bb9b566d]{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) 0;border:none;background:none;color:var(--admin-text-primary);cursor:pointer;text-align:left;font:inherit;width:100%;border-bottom:1px solid var(--admin-border);border-radius:0;transition:background-color .1s ease}.inv-dashboard__activity-row[data-v-bb9b566d]:last-child{border-bottom:none}.inv-dashboard__activity-row[data-v-bb9b566d]:hover{background:var(--admin-content-bg)}.inv-dashboard__activity-row[data-v-bb9b566d]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.inv-dashboard__activity-icon[data-v-bb9b566d]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;font-weight:700;font-size:var(--text-sm, .875rem);flex-shrink:0}.inv-dashboard__activity-icon--placed[data-v-bb9b566d],.inv-dashboard__activity-icon--received[data-v-bb9b566d]{background:color-mix(in srgb,var(--color-success, #059669) 12%,transparent);color:var(--color-success, #059669)}.inv-dashboard__activity-icon--moved[data-v-bb9b566d]{background:color-mix(in srgb,var(--color-primary, #2563eb) 12%,transparent);color:var(--color-primary, #2563eb)}.inv-dashboard__activity-icon--picked[data-v-bb9b566d]{background:color-mix(in srgb,var(--color-error, #dc2626) 12%,transparent);color:var(--color-error, #dc2626)}.inv-dashboard__activity-icon--adjusted[data-v-bb9b566d],.inv-dashboard__activity-icon--returned[data-v-bb9b566d]{background:color-mix(in srgb,var(--color-warning, #d97706) 12%,transparent);color:var(--color-warning, #d97706)}.inv-dashboard__activity-icon--counted[data-v-bb9b566d]{background:color-mix(in srgb,var(--color-purple, #7c3aed) 12%,transparent);color:var(--color-purple, #7c3aed)}.inv-dashboard__activity-info[data-v-bb9b566d]{display:flex;flex-direction:column;gap:1px;min-width:0;flex:1}.inv-dashboard__activity-product[data-v-bb9b566d]{font-size:var(--text-sm, .875rem);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.inv-dashboard__activity-location[data-v-bb9b566d]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace}.inv-dashboard__activity-time[data-v-bb9b566d]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);flex-shrink:0;white-space:nowrap}.inv-dashboard__no-activity[data-v-bb9b566d]{margin:0;padding:var(--space-4, 1rem) 0;text-align:center;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary);font-style:italic}.inv-dashboard__bottom-row[data-v-bb9b566d]{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:var(--space-4, 1rem)}.inv-dashboard__unlocated-content[data-v-bb9b566d]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem)}.inv-dashboard__unlocated-text[data-v-bb9b566d]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary)}.inv-dashboard__unlocated-none[data-v-bb9b566d]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary);font-style:italic}.inv-dashboard__count-row[data-v-bb9b566d]{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) 0;border-bottom:1px solid var(--admin-border)}.inv-dashboard__count-row[data-v-bb9b566d]:last-child{border-bottom:none}.inv-dashboard__count-info[data-v-bb9b566d]{flex:1;min-width:0}.inv-dashboard__count-name[data-v-bb9b566d]{display:block;font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;margin-bottom:var(--space-1, .25rem)}.inv-dashboard__count-progress[data-v-bb9b566d]{display:flex;align-items:center;gap:var(--space-2, .5rem)}.inv-dashboard__count-progress-track[data-v-bb9b566d]{flex:1;height:6px;border-radius:3px;background:var(--admin-border);overflow:hidden}.inv-dashboard__count-progress-fill[data-v-bb9b566d]{height:100%;border-radius:3px;background:var(--color-primary, #2563eb);transition:width .3s ease}.inv-dashboard__count-pct[data-v-bb9b566d]{font-size:var(--text-xs, .75rem);font-weight:600;font-variant-numeric:tabular-nums;color:var(--admin-text-secondary)}.inv-dashboard__no-counts[data-v-bb9b566d]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary);font-style:italic}.inv-empty-state[data-v-c60a887a]{display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--space-8, 2rem) var(--space-4, 1rem)}.inv-empty-state__icon[data-v-c60a887a]{color:var(--admin-text-tertiary);margin-bottom:var(--space-4, 1rem);opacity:.6}.inv-empty-state__title[data-v-c60a887a]{margin:0;font-size:var(--text-base, 1rem);font-weight:600;color:var(--admin-text-secondary);line-height:1.4}.inv-empty-state__description[data-v-c60a887a]{margin:var(--space-2, .5rem) 0 0;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary);line-height:1.5;max-width:360px}.inv-empty-state__action[data-v-c60a887a]{margin-top:var(--space-5, 1.25rem)}.inv-empty-state__btn[data-v-c60a887a]{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:var(--space-2, .5rem) var(--space-5, 1.25rem);border:none;border-radius:6px;background:var(--color-primary, #2563eb);color:#fff;font-size:var(--text-sm, .875rem);font-weight:500;cursor:pointer;transition:background-color .15s ease}.inv-empty-state__btn[data-v-c60a887a]:hover{background:color-mix(in srgb,var(--color-primary, #2563eb) 85%,black)}.inv-empty-state__btn[data-v-c60a887a]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.location-type-icon[data-v-e96e218e]{color:currentColor;flex-shrink:0;display:inline-block;vertical-align:middle}.location-type-icon--sm[data-v-e96e218e]{width:16px;height:16px}.location-type-icon--md[data-v-e96e218e]{width:20px;height:20px}.location-type-icon--lg[data-v-e96e218e]{width:24px;height:24px}.location-search[data-v-6191a2a0]{position:relative;width:100%}.location-search__input-wrapper[data-v-6191a2a0]{position:relative;display:flex;align-items:center}.location-search__icon[data-v-6191a2a0]{position:absolute;left:var(--space-3, .75rem);color:var(--admin-text-tertiary);pointer-events:none;flex-shrink:0}.location-search__input[data-v-6191a2a0]{width:100%;height:44px;padding:0 var(--space-8, 2rem) 0 calc(var(--space-3, .75rem) + 18px + var(--space-2, .5rem));border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);line-height:1;outline:none;transition:border-color .15s ease,box-shadow .15s ease}.location-search__input[data-v-6191a2a0]::placeholder{color:var(--admin-text-tertiary)}.location-search__input[data-v-6191a2a0]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.location-search__input[data-v-6191a2a0]::-webkit-search-cancel-button{display:none}.location-search__clear[data-v-6191a2a0]{position:absolute;right:var(--space-2, .5rem);display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--admin-text-tertiary);cursor:pointer;transition:background-color .15s ease,color .15s ease}.location-search__clear[data-v-6191a2a0]:hover{background:var(--admin-content-bg);color:var(--admin-text-primary)}.location-search__clear[data-v-6191a2a0]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.location-search__spinner[data-v-6191a2a0]{position:absolute;right:var(--space-3, .75rem);display:flex;align-items:center;color:var(--admin-text-tertiary);animation:location-search-spin-6191a2a0 .8s linear infinite}.location-search__input-wrapper:has(.location-search__clear) .location-search__spinner[data-v-6191a2a0]{right:calc(var(--space-2, .5rem) + 28px + var(--space-1, .25rem))}@keyframes location-search-spin-6191a2a0{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.location-search__dropdown[data-v-6191a2a0]{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:100;max-height:280px;overflow-y:auto;margin:0;padding:var(--space-1, .25rem) 0;list-style:none;background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:8px;box-shadow:var(--shadow-md, 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -2px rgba(0, 0, 0, .1))}.location-search__dropdown-item[data-v-6191a2a0]{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);cursor:pointer;transition:background-color .1s ease;color:var(--admin-text-primary)}.location-search__dropdown-item[data-v-6191a2a0]:hover,.location-search__dropdown-item--active[data-v-6191a2a0]{background:var(--admin-table-row-hover)}.location-search__dropdown-item--loading[data-v-6191a2a0],.location-search__dropdown-item--empty[data-v-6191a2a0]{cursor:default;color:var(--admin-text-tertiary);font-size:var(--text-sm, .875rem);font-style:italic;justify-content:center;padding:var(--space-3, .75rem)}.location-search__dropdown-item--loading[data-v-6191a2a0]:hover,.location-search__dropdown-item--empty[data-v-6191a2a0]:hover{background:transparent}.location-search__result-info[data-v-6191a2a0]{display:flex;flex-direction:column;gap:1px;min-width:0}.location-search__result-name[data-v-6191a2a0]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.location-search__result-code[data-v-6191a2a0]{font-size:var(--text-xs, .75rem);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--admin-text-tertiary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.location-search-dropdown-enter-active[data-v-6191a2a0],.location-search-dropdown-leave-active[data-v-6191a2a0]{transition:opacity .15s ease,transform .15s ease}.location-search-dropdown-enter-from[data-v-6191a2a0],.location-search-dropdown-leave-to[data-v-6191a2a0]{opacity:0;transform:translateY(-4px)}.location-code-badge[data-v-62592fe1]{display:inline-flex;align-items:center;padding:2px var(--space-2, .5rem);border-radius:9999px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:var(--text-xs, .75rem);font-weight:500;line-height:1.4;white-space:nowrap;background:var(--admin-card-bg);border:1px solid var(--admin-border);color:var(--admin-text-secondary)}.tree-node__row[data-v-b2045bb5]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding-top:var(--space-1, .25rem);padding-bottom:var(--space-1, .25rem);padding-right:var(--space-3, .75rem);cursor:pointer;border-radius:4px;transition:background-color .1s ease;-webkit-user-select:none;user-select:none;min-height:36px}.tree-node__row[data-v-b2045bb5]:hover{background:var(--admin-table-row-hover)}.tree-node__row--selected[data-v-b2045bb5]{background:var(--admin-sidebar-active-bg, color-mix(in srgb, var(--color-primary, #2563eb) 12%, transparent))}.tree-node__row--selected[data-v-b2045bb5]:hover{background:var(--admin-sidebar-active-bg, color-mix(in srgb, var(--color-primary, #2563eb) 16%, transparent))}.tree-node__row[data-v-b2045bb5]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.tree-node__toggle[data-v-b2045bb5]{display:flex;align-items:center;justify-content:center;width:20px;height:20px;padding:0;border:none;border-radius:4px;background:transparent;color:var(--admin-text-tertiary);cursor:pointer;flex-shrink:0;transition:color .15s ease}.tree-node__toggle[data-v-b2045bb5]:hover{color:var(--admin-text-primary)}.tree-node__toggle-spacer[data-v-b2045bb5]{display:block;width:20px;flex-shrink:0}.tree-node__chevron[data-v-b2045bb5]{transition:transform .2s ease}.tree-node__chevron--expanded[data-v-b2045bb5]{transform:rotate(90deg)}.tree-node__spinner[data-v-b2045bb5]{animation:tree-node-spin-b2045bb5 .8s linear infinite}@keyframes tree-node-spin-b2045bb5{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.tree-node__name[data-v-b2045bb5]{font-size:var(--text-sm, .875rem);color:var(--admin-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}.tree-node__count[data-v-b2045bb5]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);flex-shrink:0;margin-left:auto}.location-tree[data-v-e21f92ca]{padding:var(--space-2, .5rem);overflow-y:auto;flex:1;min-height:0}.location-tree__loading[data-v-e21f92ca]{display:flex;flex-direction:column;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem)}.location-tree__skeleton-row[data-v-e21f92ca]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-1, .25rem) var(--space-3, .75rem);min-height:36px}.location-tree__skeleton-bar[data-v-e21f92ca]{border-radius:4px;background:linear-gradient(90deg,var(--admin-border) 25%,var(--admin-content-bg) 50%,var(--admin-border) 75%);background-size:200% 100%;animation:tree-shimmer-e21f92ca 1.5s ease-in-out infinite}.location-tree__skeleton-bar--icon[data-v-e21f92ca]{width:16px;height:16px;flex-shrink:0;border-radius:50%}.location-tree__skeleton-bar--name[data-v-e21f92ca]{width:100px;height:14px;flex-shrink:0}.location-tree__skeleton-bar--code[data-v-e21f92ca]{width:60px;height:14px;flex-shrink:0}@keyframes tree-shimmer-e21f92ca{0%{background-position:200% 0}to{background-position:-200% 0}}.sr-only[data-v-e21f92ca]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.inv-table-wrapper[data-v-59a6e64b]{overflow-x:auto;-webkit-overflow-scrolling:touch}.inv-table[data-v-59a6e64b]{width:100%;border-collapse:collapse;font-size:var(--text-sm, .875rem);color:var(--admin-text-primary)}.inv-table__head[data-v-59a6e64b]{position:sticky;top:0;z-index:1}.inv-table__th[data-v-59a6e64b]{padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-table-header-bg);font-weight:600;font-size:var(--text-xs, .75rem);text-transform:uppercase;letter-spacing:.05em;color:var(--admin-text-secondary);border-bottom:1px solid var(--admin-border);white-space:nowrap}.inv-table__th--left[data-v-59a6e64b]{text-align:left}.inv-table__th--center[data-v-59a6e64b]{text-align:center}.inv-table__th--right[data-v-59a6e64b]{text-align:right}.inv-table__sort-btn[data-v-59a6e64b]{display:inline-flex;align-items:center;gap:var(--space-1, .25rem);padding:0;margin:0;border:none;background:none;font:inherit;color:inherit;cursor:pointer;border-radius:4px;text-transform:uppercase;letter-spacing:.05em;font-weight:600}.inv-table__sort-btn[data-v-59a6e64b]:hover{color:var(--admin-text-primary)}.inv-table__sort-btn[data-v-59a6e64b]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.inv-table__sort-btn--active[data-v-59a6e64b]{color:var(--color-primary, #2563eb)}.inv-table__sort-icon[data-v-59a6e64b]{flex-shrink:0}.inv-table__row[data-v-59a6e64b]{background:var(--admin-table-row-bg);border-bottom:1px solid var(--admin-border);transition:background-color .1s ease}.inv-table__row[data-v-59a6e64b]:hover{background:var(--admin-table-row-hover)}.inv-table__row--clickable[data-v-59a6e64b]{cursor:pointer}.inv-table__row--clickable[data-v-59a6e64b]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.inv-table__row--skeleton[data-v-59a6e64b]:hover{background:var(--admin-table-row-bg)}.inv-table__td[data-v-59a6e64b]{padding:var(--space-3, .75rem) var(--space-4, 1rem);vertical-align:middle;line-height:1.5}.inv-table__td--left[data-v-59a6e64b]{text-align:left}.inv-table__td--center[data-v-59a6e64b]{text-align:center}.inv-table__td--right[data-v-59a6e64b]{text-align:right}.inv-table__td--empty[data-v-59a6e64b]{text-align:center;padding:var(--space-8, 2rem) var(--space-4, 1rem)}.inv-table__empty-text[data-v-59a6e64b]{color:var(--admin-text-tertiary);font-style:italic}.inv-table__skeleton-bar[data-v-59a6e64b]{height:14px;width:70%;border-radius:4px;background:linear-gradient(90deg,var(--admin-border) 25%,var(--admin-content-bg) 50%,var(--admin-border) 75%);background-size:200% 100%;animation:inv-table-shimmer-59a6e64b 1.5s ease-in-out infinite}@keyframes inv-table-shimmer-59a6e64b{0%{background-position:200% 0}to{background-position:-200% 0}}.inv-badge[data-v-f0803bf2]{display:inline-flex;align-items:center;border-radius:9999px;font-weight:500;line-height:1;white-space:nowrap}.inv-badge--sm[data-v-f0803bf2]{padding:2px var(--space-2, .5rem);font-size:var(--text-xs, .75rem)}.inv-badge--md[data-v-f0803bf2]{padding:var(--space-1, .25rem) var(--space-3, .75rem);font-size:var(--text-sm, .875rem)}.inv-badge--default[data-v-f0803bf2]{background:color-mix(in srgb,var(--color-primary, #2563eb) 12%,transparent);color:var(--color-primary, #2563eb)}.inv-badge--success[data-v-f0803bf2]{background:color-mix(in srgb,var(--color-success, #059669) 12%,transparent);color:var(--color-success, #059669)}.inv-badge--warning[data-v-f0803bf2]{background:color-mix(in srgb,var(--color-warning, #d97706) 12%,transparent);color:var(--color-warning, #d97706)}.inv-badge--error[data-v-f0803bf2]{background:color-mix(in srgb,var(--color-error, #dc2626) 12%,transparent);color:var(--color-error, #dc2626)}.inv-badge--info[data-v-f0803bf2]{background:color-mix(in srgb,var(--color-info, #0891b2) 12%,transparent);color:var(--color-info, #0891b2)}.inv-badge--muted[data-v-f0803bf2]{background:var(--admin-content-bg);color:var(--admin-text-tertiary)}.inv-modal__backdrop[data-v-7484015c]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9999;display:flex;align-items:center;justify-content:center;padding:var(--space-4, 1rem);background:#00000080;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.inv-modal__dialog[data-v-7484015c]{background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:12px;box-shadow:var(--shadow-md);width:100%;max-height:calc(100vh - 2rem);display:flex;flex-direction:column;outline:none}.inv-modal__dialog--sm[data-v-7484015c]{max-width:400px}.inv-modal__dialog--md[data-v-7484015c]{max-width:560px}.inv-modal__dialog--lg[data-v-7484015c]{max-width:720px}.inv-modal__dialog--xl[data-v-7484015c]{max-width:900px}.inv-modal__header[data-v-7484015c]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3, .75rem);padding:var(--space-5, 1.25rem) var(--space-5, 1.25rem) var(--space-3, .75rem);flex-shrink:0}.inv-modal__title[data-v-7484015c]{margin:0;font-size:var(--text-lg, 1.125rem);font-weight:600;color:var(--admin-text-primary);line-height:1.4}.inv-modal__description[data-v-7484015c]{margin:var(--space-1, .25rem) 0 0;font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary);line-height:1.5}.inv-modal__close[data-v-7484015c]{display:flex;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--admin-text-tertiary);cursor:pointer;flex-shrink:0;transition:background-color .15s ease,color .15s ease}.inv-modal__close[data-v-7484015c]:hover{background:var(--admin-content-bg);color:var(--admin-text-primary)}.inv-modal__close[data-v-7484015c]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.inv-modal__body[data-v-7484015c]{padding:var(--space-3, .75rem) var(--space-5, 1.25rem);overflow-y:auto;flex:1;min-height:0}.inv-modal__footer[data-v-7484015c]{display:flex;align-items:center;justify-content:flex-end;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-5, 1.25rem) var(--space-5, 1.25rem);border-top:1px solid var(--admin-border);flex-shrink:0}.inv-modal-enter-active[data-v-7484015c],.inv-modal-leave-active[data-v-7484015c]{transition:opacity .2s ease}.inv-modal-enter-active .inv-modal__dialog[data-v-7484015c],.inv-modal-leave-active .inv-modal__dialog[data-v-7484015c]{transition:transform .2s ease,opacity .2s ease}.inv-modal-enter-from[data-v-7484015c],.inv-modal-leave-to[data-v-7484015c]{opacity:0}.inv-modal-enter-from .inv-modal__dialog[data-v-7484015c],.inv-modal-leave-to .inv-modal__dialog[data-v-7484015c]{transform:scale(.95);opacity:0}.location-breadcrumb[data-v-911e6f70]{overflow:hidden}.location-breadcrumb__list[data-v-911e6f70]{display:flex;align-items:center;flex-wrap:nowrap;gap:var(--space-1, .25rem);margin:0;padding:0;list-style:none;overflow:hidden}.location-breadcrumb__item[data-v-911e6f70]{display:flex;align-items:center;gap:var(--space-1, .25rem);min-width:0}.location-breadcrumb__separator[data-v-911e6f70]{color:var(--admin-text-tertiary);font-size:var(--text-sm, .875rem);flex-shrink:0;-webkit-user-select:none;user-select:none}.location-breadcrumb__ellipsis[data-v-911e6f70]{color:var(--admin-text-tertiary);font-size:var(--text-sm, .875rem)}.location-breadcrumb__link[data-v-911e6f70]{display:inline-block;padding:0;margin:0;border:none;background:none;font-size:var(--text-sm, .875rem);color:var(--color-primary, #2563eb);cursor:pointer;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:160px;border-radius:2px;line-height:1.4}.location-breadcrumb__link[data-v-911e6f70]:hover{text-decoration:underline}.location-breadcrumb__link[data-v-911e6f70]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.location-breadcrumb__current[data-v-911e6f70]{font-size:var(--text-sm, .875rem);font-weight:600;color:var(--admin-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:200px}.inv-input[data-v-b681751f]{display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.inv-input__label[data-v-b681751f]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary);line-height:1.4}.inv-input__field[data-v-b681751f]{height:44px;padding:0 var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);line-height:1;transition:border-color .15s ease,box-shadow .15s ease;outline:none;width:100%}.inv-input__field[data-v-b681751f]::placeholder{color:var(--admin-text-tertiary)}.inv-input__field[data-v-b681751f]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.inv-input--error .inv-input__field[data-v-b681751f]{border-color:var(--color-error, #dc2626)}.inv-input--error .inv-input__field[data-v-b681751f]:focus{border-color:var(--color-error, #dc2626);box-shadow:0 0 0 3px #dc262626}.inv-input--disabled .inv-input__field[data-v-b681751f]{opacity:.5;cursor:not-allowed;background:var(--admin-content-bg)}.inv-input__error[data-v-b681751f]{margin:0;font-size:var(--text-xs, .75rem);color:var(--color-error, #dc2626);line-height:1.4}.inv-select[data-v-40ea769b]{display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.inv-select__label[data-v-40ea769b]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary);line-height:1.4}.inv-select__wrapper[data-v-40ea769b]{position:relative;display:flex;align-items:center}.inv-select__field[data-v-40ea769b]{height:44px;width:100%;padding:0 var(--space-8, 2rem) 0 var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);line-height:1;transition:border-color .15s ease,box-shadow .15s ease;outline:none;-moz-appearance:none;appearance:none;-webkit-appearance:none;cursor:pointer}.inv-select__field[data-v-40ea769b]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.inv-select--error .inv-select__field[data-v-40ea769b]{border-color:var(--color-error, #dc2626)}.inv-select--error .inv-select__field[data-v-40ea769b]:focus{border-color:var(--color-error, #dc2626);box-shadow:0 0 0 3px #dc262626}.inv-select--disabled .inv-select__field[data-v-40ea769b]{opacity:.5;cursor:not-allowed;background:var(--admin-content-bg)}.inv-select__chevron[data-v-40ea769b]{position:absolute;right:var(--space-3, .75rem);color:var(--admin-text-tertiary);pointer-events:none}.inv-select__error[data-v-40ea769b]{margin:0;font-size:var(--text-xs, .75rem);color:var(--color-error, #dc2626);line-height:1.4}.location-form[data-v-7b871a38]{display:flex;flex-direction:column;gap:var(--space-4, 1rem)}.location-form__field[data-v-7b871a38]{display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.location-form__label[data-v-7b871a38]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary);line-height:1.4}.location-form__textarea[data-v-7b871a38]{padding:var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);font-family:inherit;line-height:1.5;resize:vertical;outline:none;transition:border-color .15s ease,box-shadow .15s ease;min-height:80px}.location-form__textarea[data-v-7b871a38]::placeholder{color:var(--admin-text-tertiary)}.location-form__textarea[data-v-7b871a38]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.location-form__code-preview[data-v-7b871a38]{margin:var(--space-1, .25rem) 0 0;font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);line-height:1.4}.location-form__code-preview code[data-v-7b871a38]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;padding:1px 4px;border-radius:3px;background:var(--admin-content-bg);color:var(--admin-text-secondary)}.location-detail[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-4, 1rem);padding:var(--space-4, 1rem);overflow-y:auto;flex:1;min-height:0}.location-detail__header[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-3, .75rem)}.location-detail__title-row[data-v-388046b7]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-4, 1rem);flex-wrap:wrap}.location-detail__title-area[data-v-388046b7]{display:flex;align-items:center;gap:var(--space-2, .5rem);flex-wrap:wrap;min-width:0}.location-detail__name[data-v-388046b7]{margin:0;font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary);line-height:1.3}.location-detail__actions[data-v-388046b7]{display:flex;align-items:center;gap:var(--space-2, .5rem);flex-shrink:0}.location-detail__info-grid[data-v-388046b7]{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:var(--space-4, 1rem)}.location-detail__info-item[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.location-detail__info-label[data-v-388046b7]{font-size:var(--text-xs, .75rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--admin-text-tertiary)}.location-detail__info-value[data-v-388046b7]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-primary);line-height:1.5}.location-detail__child-cell[data-v-388046b7]{display:flex;align-items:center;gap:var(--space-2, .5rem)}.location-detail__count[data-v-388046b7]{color:var(--admin-text-tertiary)}.location-detail__product-count-label[data-v-388046b7]{font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary)}.location-detail__product-cell[data-v-388046b7]{display:flex;flex-direction:column;gap:1px}.location-detail__product-name[data-v-388046b7]{font-weight:500;color:var(--admin-text-primary)}.location-detail__product-sku[data-v-388046b7]{font-size:var(--text-xs, .75rem);font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--admin-text-tertiary)}.location-detail__movements-list[data-v-388046b7]{display:flex;flex-direction:column}.location-detail__movement[data-v-388046b7]{display:flex;align-items:flex-start;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);border-bottom:1px solid var(--admin-border)}.location-detail__movement[data-v-388046b7]:last-child{border-bottom:none}.location-detail__movement-icon[data-v-388046b7]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:50%;flex-shrink:0;background:var(--admin-content-bg);color:var(--admin-text-secondary)}.location-detail__movement-icon--placed[data-v-388046b7],.location-detail__movement-icon--received[data-v-388046b7]{background:color-mix(in srgb,var(--color-success, #059669) 12%,transparent);color:var(--color-success, #059669)}.location-detail__movement-icon--picked[data-v-388046b7]{background:color-mix(in srgb,var(--color-warning, #d97706) 12%,transparent);color:var(--color-warning, #d97706)}.location-detail__movement-icon--moved[data-v-388046b7]{background:color-mix(in srgb,var(--color-info, #0891b2) 12%,transparent);color:var(--color-info, #0891b2)}.location-detail__movement-info[data-v-388046b7]{display:flex;flex-direction:column;gap:2px;min-width:0}.location-detail__movement-primary[data-v-388046b7]{font-size:var(--text-sm, .875rem);color:var(--admin-text-primary);line-height:1.4}.location-detail__movement-qty[data-v-388046b7]{color:var(--admin-text-tertiary)}.location-detail__movement-meta[data-v-388046b7]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary)}.location-detail__label-preview[data-v-388046b7]{display:flex;align-items:center;gap:var(--space-4, 1rem);padding:var(--space-2, .5rem)}.location-detail__label-qr[data-v-388046b7]{flex-shrink:0;width:80px;height:80px;color:var(--admin-text-primary)}.location-detail__label-qr[data-v-388046b7] svg{width:100%;height:100%}.location-detail__label-info[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-1, .25rem);font-size:var(--text-sm, .875rem);color:var(--admin-text-primary)}.location-detail__label-code[data-v-388046b7]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;color:var(--admin-text-secondary)}.location-detail__label-path[data-v-388046b7]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary)}.location-detail__delete-warning[data-v-388046b7]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-primary);line-height:1.5}.location-detail__loading[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-4, 1rem);padding:var(--space-4, 1rem)}.location-detail__loading-header[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-3, .75rem)}.location-detail__loading-inline[data-v-388046b7]{display:flex;flex-direction:column;gap:var(--space-2, .5rem);padding:var(--space-4, 1rem)}.location-detail__empty-inline[data-v-388046b7]{text-align:center;padding:var(--space-6, 1.5rem) var(--space-4, 1rem);color:var(--admin-text-tertiary);font-size:var(--text-sm, .875rem)}.location-detail__empty-inline p[data-v-388046b7]{margin:0}.location-detail__skeleton[data-v-388046b7]{border-radius:4px;background:linear-gradient(90deg,var(--admin-border) 25%,var(--admin-content-bg) 50%,var(--admin-border) 75%);background-size:200% 100%;animation:detail-shimmer-388046b7 1.5s ease-in-out infinite}.location-detail__skeleton--breadcrumb[data-v-388046b7]{width:200px;height:14px}.location-detail__skeleton--title[data-v-388046b7]{width:300px;height:24px}.location-detail__skeleton--badges[data-v-388046b7]{width:180px;height:18px}.location-detail__skeleton--card[data-v-388046b7]{height:120px;border-radius:8px}.location-detail__skeleton--row[data-v-388046b7]{height:40px}@keyframes detail-shimmer-388046b7{0%{background-position:200% 0}to{background-position:-200% 0}}.sr-only[data-v-388046b7]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.inv-shell[data-v-e77a95d2]{display:flex;flex-direction:column;height:100%;min-height:0;background:var(--admin-content-bg)}.inv-shell__header[data-v-e77a95d2]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-4, 1rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-card-bg);border-bottom:1px solid var(--admin-border);flex-shrink:0;z-index:10}.inv-shell__header-left[data-v-e77a95d2]{display:flex;align-items:center;gap:var(--space-3, .75rem);min-width:0}.inv-shell__menu-toggle[data-v-e77a95d2]{display:none;align-items:center;justify-content:center;width:36px;height:36px;padding:0;border:none;border-radius:6px;background:transparent;color:var(--admin-text-secondary);cursor:pointer;transition:background-color .15s ease,color .15s ease}.inv-shell__menu-toggle[data-v-e77a95d2]:hover{background:var(--admin-content-bg);color:var(--admin-text-primary)}.inv-shell__menu-toggle[data-v-e77a95d2]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}@media(max-width:1023px){.inv-shell__menu-toggle[data-v-e77a95d2]{display:flex}}.inv-shell__title[data-v-e77a95d2]{margin:0;font-size:var(--text-lg, 1.125rem);font-weight:600;color:var(--admin-text-primary);line-height:1.3;white-space:nowrap}.inv-shell__header-actions[data-v-e77a95d2]{display:flex;align-items:center;gap:var(--space-2, .5rem);flex-shrink:0}.inv-shell__search-wrapper[data-v-e77a95d2]{width:260px}@media(max-width:767px){.inv-shell__search-wrapper[data-v-e77a95d2]{width:160px}.inv-shell__title[data-v-e77a95d2]{font-size:var(--text-base, 1rem)}}.inv-shell__body[data-v-e77a95d2]{display:flex;flex:1;min-height:0;position:relative}.inv-shell__backdrop[data-v-e77a95d2]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:20;background:#0006;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.inv-shell-backdrop-enter-active[data-v-e77a95d2],.inv-shell-backdrop-leave-active[data-v-e77a95d2]{transition:opacity .2s ease}.inv-shell-backdrop-enter-from[data-v-e77a95d2],.inv-shell-backdrop-leave-to[data-v-e77a95d2]{opacity:0}.inv-shell__sidebar[data-v-e77a95d2]{width:300px;min-width:300px;display:flex;flex-direction:column;background:var(--admin-card-bg);border-right:1px solid var(--admin-border);overflow:hidden;flex-shrink:0}.inv-shell__sidebar--compact[data-v-e77a95d2]{position:fixed;top:0;left:0;bottom:0;z-index:30;transform:translate(-100%);transition:transform .25s ease;box-shadow:none}.inv-shell__sidebar--compact.inv-shell__sidebar--open[data-v-e77a95d2]{transform:translate(0);box-shadow:var(--shadow-lg, 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .1))}.inv-shell__detail[data-v-e77a95d2]{flex:1;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden}.scan-result__backdrop[data-v-575ebb3b]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9100;display:flex;align-items:flex-end;justify-content:center;background:#0000004d}.scan-result[data-v-575ebb3b]{width:100%;max-width:560px;max-height:80vh;background:var(--admin-card-bg, #fff);border-top-left-radius:16px;border-top-right-radius:16px;box-shadow:0 -4px 24px #00000026;display:flex;flex-direction:column;overflow:hidden;outline:none;color:var(--admin-text-primary)}.scan-result__handle[data-v-575ebb3b]{display:flex;justify-content:center;padding:var(--space-3, .75rem) 0 var(--space-1, .25rem)}.scan-result__handle-bar[data-v-575ebb3b]{width:36px;height:4px;border-radius:2px;background:var(--admin-border)}.scan-result__header[data-v-575ebb3b]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-5, 1.25rem)}.scan-result__check-icon[data-v-575ebb3b]{color:var(--color-success, #059669);flex-shrink:0}.scan-result__title[data-v-575ebb3b]{margin:0;font-size:var(--text-lg, 1.125rem);font-weight:600;color:var(--admin-text-primary)}.scan-result__body[data-v-575ebb3b]{padding:var(--space-2, .5rem) var(--space-5, 1.25rem) var(--space-4, 1rem);overflow-y:auto;flex:1;min-height:0}.scan-result__path[data-v-575ebb3b]{margin-bottom:var(--space-3, .75rem)}.scan-result__location-info[data-v-575ebb3b]{display:flex;align-items:center;gap:var(--space-2, .5rem);margin-bottom:var(--space-4, 1rem)}.scan-result__products[data-v-575ebb3b]{border:1px solid var(--admin-border);border-radius:8px;overflow:hidden}.scan-result__products-label[data-v-575ebb3b]{margin:0;padding:var(--space-2, .5rem) var(--space-3, .75rem);font-size:var(--text-xs, .75rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--admin-text-secondary);background:var(--admin-table-header-bg);border-bottom:1px solid var(--admin-border)}.scan-result__product-list[data-v-575ebb3b]{margin:0;padding:0;list-style:none}.scan-result__product-item[data-v-575ebb3b]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);border-bottom:1px solid var(--admin-border);font-size:var(--text-sm, .875rem)}.scan-result__product-item[data-v-575ebb3b]:last-child{border-bottom:none}.scan-result__product-name[data-v-575ebb3b]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;color:var(--admin-text-primary)}.scan-result__product-qty[data-v-575ebb3b]{flex-shrink:0;font-variant-numeric:tabular-nums;color:var(--admin-text-secondary)}.scan-result__products-more[data-v-575ebb3b]{margin:0;padding:var(--space-2, .5rem) var(--space-3, .75rem);font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);border-top:1px solid var(--admin-border)}.scan-result__no-products[data-v-575ebb3b]{padding:var(--space-4, 1rem);text-align:center}.scan-result__no-products-text[data-v-575ebb3b]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary);font-style:italic}.scan-result__actions[data-v-575ebb3b]{display:flex;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-5, 1.25rem) var(--space-5, 1.25rem);border-top:1px solid var(--admin-border);flex-shrink:0}.scan-result__actions[data-v-575ebb3b]>*{flex:1}.scan-result-enter-active[data-v-575ebb3b]{transition:opacity .2s ease}.scan-result-enter-active .scan-result[data-v-575ebb3b]{transition:transform .3s cubic-bezier(.16,1,.3,1)}.scan-result-leave-active[data-v-575ebb3b]{transition:opacity .15s ease}.scan-result-leave-active .scan-result[data-v-575ebb3b]{transition:transform .15s ease}.scan-result-enter-from[data-v-575ebb3b]{opacity:0}.scan-result-enter-from .scan-result[data-v-575ebb3b]{transform:translateY(100%)}.scan-result-leave-to[data-v-575ebb3b]{opacity:0}.scan-result-leave-to .scan-result[data-v-575ebb3b]{transform:translateY(100%)}.scan-history__title[data-v-2eaec2d3]{margin:0 0 var(--space-2, .5rem);font-size:var(--text-xs, .75rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:#ffffff80}.scan-history__list[data-v-2eaec2d3]{margin:0;padding:0;list-style:none}.scan-history__item[data-v-2eaec2d3]{border-bottom:1px solid rgba(255,255,255,.08)}.scan-history__item[data-v-2eaec2d3]:last-child{border-bottom:none}.scan-history__link[data-v-2eaec2d3]{display:flex;align-items:center;gap:var(--space-2, .5rem);width:100%;padding:var(--space-2, .5rem) 0;border:none;background:none;color:#fffc;font-size:var(--text-sm, .875rem);cursor:pointer;text-align:left;border-radius:4px;transition:color .15s ease}.scan-history__link[data-v-2eaec2d3]:hover{color:#fff}.scan-history__link[data-v-2eaec2d3]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.scan-history__code[data-v-2eaec2d3]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-weight:500;flex-shrink:0}.scan-history__name[data-v-2eaec2d3]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1;color:#ffffff80}.scan-history__time[data-v-2eaec2d3]{flex-shrink:0;font-size:var(--text-xs, .75rem);color:#fff6}.scanner-overlay[data-v-e0f50099]{position:fixed;top:0;right:0;bottom:0;left:0;z-index:9000;display:flex;flex-direction:column;background:var(--admin-bg, #0f172a);color:#fff;overflow:hidden}.scanner-overlay__counting-banner[data-v-e0f50099]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-4, 1rem);background:color-mix(in srgb,var(--color-primary, #2563eb) 90%,black);color:#fff;font-size:var(--text-sm, .875rem);font-weight:500;flex-shrink:0}.scanner-overlay__counting-text[data-v-e0f50099]{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.scanner-overlay__header[data-v-e0f50099]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3, .75rem) var(--space-4, 1rem);flex-shrink:0;z-index:10;position:relative}.scanner-overlay__close-btn[data-v-e0f50099],.scanner-overlay__flash-btn[data-v-e0f50099]{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:none;border-radius:50%;background:#0006;color:#fff;cursor:pointer;transition:background-color .15s ease}.scanner-overlay__close-btn[data-v-e0f50099]:hover,.scanner-overlay__flash-btn[data-v-e0f50099]:hover{background:#0009}.scanner-overlay__close-btn[data-v-e0f50099]:focus-visible,.scanner-overlay__flash-btn[data-v-e0f50099]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.scanner-overlay__flash-btn--active[data-v-e0f50099]{background:#ffffff4d}.scanner-overlay__camera-area[data-v-e0f50099]{flex:1;position:relative;min-height:0;display:flex;align-items:center;justify-content:center;overflow:hidden}.scanner-overlay__camera-feed[data-v-e0f50099]{width:100%;height:100%}.scanner-overlay__camera-feed[data-v-e0f50099] video{width:100%!important;height:100%!important;object-fit:cover}.scanner-overlay__scan-guide[data-v-e0f50099]{position:absolute;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;pointer-events:none}.scanner-overlay__scan-box[data-v-e0f50099]{width:250px;height:250px;position:relative}.scanner-overlay__scan-corner[data-v-e0f50099]{position:absolute;width:28px;height:28px;border-color:#fff;border-style:solid;border-width:0}.scanner-overlay__scan-corner--tl[data-v-e0f50099]{top:0;left:0;border-top-width:3px;border-left-width:3px;border-top-left-radius:8px}.scanner-overlay__scan-corner--tr[data-v-e0f50099]{top:0;right:0;border-top-width:3px;border-right-width:3px;border-top-right-radius:8px}.scanner-overlay__scan-corner--bl[data-v-e0f50099]{bottom:0;left:0;border-bottom-width:3px;border-left-width:3px;border-bottom-left-radius:8px}.scanner-overlay__scan-corner--br[data-v-e0f50099]{bottom:0;right:0;border-bottom-width:3px;border-right-width:3px;border-bottom-right-radius:8px}.scanner-overlay__starting[data-v-e0f50099]{display:flex;flex-direction:column;align-items:center;gap:var(--space-3, .75rem)}.scanner-overlay__spinner[data-v-e0f50099]{width:36px;height:36px;border:3px solid rgba(255,255,255,.2);border-top-color:#fff;border-radius:50%;animation:scanner-spin-e0f50099 .8s linear infinite}@keyframes scanner-spin-e0f50099{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.scanner-overlay__starting-text[data-v-e0f50099]{margin:0;font-size:var(--text-sm, .875rem);color:#ffffffb3}.scanner-overlay__error[data-v-e0f50099]{display:flex;flex-direction:column;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-6, 1.5rem);text-align:center;color:#fffc}.scanner-overlay__error-title[data-v-e0f50099]{margin:0;font-size:var(--text-base, 1rem);font-weight:600;color:#fff}.scanner-overlay__error-desc[data-v-e0f50099]{margin:0;font-size:var(--text-sm, .875rem);max-width:320px;line-height:1.5}.scanner-overlay__no-camera[data-v-e0f50099]{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-4, 1rem);padding:var(--space-6, 1.5rem);color:#fff9;text-align:center}.scanner-overlay__no-camera-text[data-v-e0f50099]{margin:0;font-size:var(--text-sm, .875rem);max-width:320px;line-height:1.5}.scanner-overlay__instruction[data-v-e0f50099]{margin:0;padding:var(--space-3, .75rem);text-align:center;font-size:var(--text-sm, .875rem);color:#ffffffb3;flex-shrink:0}.scanner-overlay__toast[data-v-e0f50099]{position:absolute;bottom:240px;left:var(--space-4, 1rem);right:var(--space-4, 1rem);display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);border-radius:8px;font-size:var(--text-sm, .875rem);z-index:20;animation:scanner-toast-in-e0f50099 .2s ease}.scanner-overlay__toast--error[data-v-e0f50099]{background:var(--color-error, #dc2626);color:#fff}@keyframes scanner-toast-in-e0f50099{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.scanner-overlay__toast-dismiss[data-v-e0f50099]{display:flex;align-items:center;justify-content:center;width:28px;height:28px;padding:0;border:none;border-radius:50%;background:#fff3;color:#fff;cursor:pointer;flex-shrink:0}.scanner-overlay__toast-dismiss[data-v-e0f50099]:hover{background:#ffffff4d}.scanner-overlay__toast-dismiss[data-v-e0f50099]:focus-visible{outline:2px solid #fff;outline-offset:2px}.scanner-overlay__manual[data-v-e0f50099]{padding:var(--space-3, .75rem) var(--space-4, 1rem);flex-shrink:0}.scanner-overlay__manual-label[data-v-e0f50099]{display:block;font-size:var(--text-sm, .875rem);color:#ffffffb3;margin-bottom:var(--space-2, .5rem)}.scanner-overlay__manual-row[data-v-e0f50099]{display:flex;gap:var(--space-2, .5rem)}.scanner-overlay__manual-input[data-v-e0f50099]{flex:1;height:44px;padding:0 var(--space-3, .75rem);border:1px solid rgba(255,255,255,.2);border-radius:6px;background:#ffffff1a;color:#fff;font-size:var(--text-sm, .875rem);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.scanner-overlay__manual-input[data-v-e0f50099]::placeholder{color:#fff6}.scanner-overlay__manual-input[data-v-e0f50099]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb4d}.scanner-overlay__history[data-v-e0f50099]{flex-shrink:0;padding:0 var(--space-4, 1rem) var(--space-4, 1rem);max-height:160px;overflow-y:auto}.sr-only[data-v-e0f50099]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.count-session-list[data-v-900e6502]{max-width:800px}.count-session-list__header[data-v-900e6502]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem);margin-bottom:var(--space-5, 1.25rem)}.count-session-list__title[data-v-900e6502]{margin:0;font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary)}.count-session-list__create[data-v-900e6502]{margin-bottom:var(--space-5, 1.25rem)}.count-session-list__create-fields[data-v-900e6502]{display:flex;flex-direction:column;gap:var(--space-4, 1rem)}.count-session-list__scope-field[data-v-900e6502]{display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.count-session-list__scope-label[data-v-900e6502]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary)}.count-session-list__scope-hint[data-v-900e6502]{margin:0;font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);line-height:1.4}.count-session-list__scope-input[data-v-900e6502]{position:relative;margin-top:var(--space-1, .25rem)}.count-session-list__scope-search[data-v-900e6502]{width:100%;height:44px;padding:0 var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.count-session-list__scope-search[data-v-900e6502]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.count-session-list__scope-results[data-v-900e6502]{position:absolute;top:100%;left:0;right:0;z-index:10;max-height:200px;overflow-y:auto;background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:6px;box-shadow:var(--shadow-md);margin-top:var(--space-1, .25rem)}.count-session-list__scope-option[data-v-900e6502]{display:flex;align-items:center;gap:var(--space-2, .5rem);width:100%;padding:var(--space-2, .5rem) var(--space-3, .75rem);border:none;background:none;color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);cursor:pointer;text-align:left}.count-session-list__scope-option[data-v-900e6502]:hover,.count-session-list__scope-option--selected[data-v-900e6502]{background:var(--admin-content-bg)}.count-session-list__scope-option[data-v-900e6502]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.count-session-list__scope-selected[data-v-900e6502]{display:flex;align-items:center;gap:var(--space-2, .5rem);margin-top:var(--space-2, .5rem);padding:var(--space-2, .5rem) var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-content-bg);font-size:var(--text-sm, .875rem);color:var(--admin-text-primary)}.count-session-list__scope-clear[data-v-900e6502]{display:flex;align-items:center;justify-content:center;width:24px;height:24px;padding:0;border:none;border-radius:50%;background:none;color:var(--admin-text-tertiary);cursor:pointer;margin-left:auto;flex-shrink:0}.count-session-list__scope-clear[data-v-900e6502]:hover{color:var(--admin-text-primary);background:var(--admin-border)}.count-session-list__scope-clear[data-v-900e6502]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.count-session-list__create-actions[data-v-900e6502]{display:flex;justify-content:flex-end;gap:var(--space-2, .5rem);margin-top:var(--space-4, 1rem)}.count-session-list__loading[data-v-900e6502]{display:flex;flex-direction:column;gap:var(--space-4, 1rem)}.count-session-list__section[data-v-900e6502]{margin-bottom:var(--space-6, 1.5rem)}.count-session-list__section-title[data-v-900e6502]{margin:0 0 var(--space-3, .75rem);font-size:var(--text-sm, .875rem);font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--admin-text-secondary)}.count-session-list__cards[data-v-900e6502]{display:flex;flex-direction:column;gap:var(--space-4, 1rem)}.count-session-list__card-header[data-v-900e6502]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2, .5rem);margin-bottom:var(--space-3, .75rem)}.count-session-list__card-name[data-v-900e6502]{margin:0;font-size:var(--text-base, 1rem);font-weight:600;color:var(--admin-text-primary)}.count-session-list__progress[data-v-900e6502]{display:flex;align-items:center;gap:var(--space-2, .5rem);margin-bottom:var(--space-2, .5rem)}.count-session-list__progress-track[data-v-900e6502]{flex:1;height:8px;border-radius:4px;background:var(--admin-border);overflow:hidden}.count-session-list__progress-fill[data-v-900e6502]{height:100%;border-radius:4px;transition:width .3s ease}.count-session-list__progress-fill--primary[data-v-900e6502]{background:var(--color-primary, #2563eb)}.count-session-list__progress-fill--success[data-v-900e6502]{background:var(--color-success, #059669)}.count-session-list__progress-fill--warning[data-v-900e6502]{background:var(--color-warning, #d97706)}.count-session-list__progress-label[data-v-900e6502]{font-size:var(--text-sm, .875rem);font-weight:600;font-variant-numeric:tabular-nums;color:var(--admin-text-secondary);min-width:36px;text-align:right}.count-session-list__card-stats[data-v-900e6502]{margin:0 0 var(--space-2, .5rem);font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary)}.count-session-list__card-meta[data-v-900e6502]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);margin-bottom:var(--space-3, .75rem)}.count-session-list__card-actions[data-v-900e6502]{display:flex;gap:var(--space-2, .5rem)}.count-session-list__completed[data-v-900e6502]{display:flex;flex-direction:column;border:1px solid var(--admin-border);border-radius:8px;overflow:hidden}.count-session-list__completed-row[data-v-900e6502]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);border:none;background:var(--admin-card-bg);color:var(--admin-text-primary);cursor:pointer;width:100%;text-align:left;font:inherit;border-bottom:1px solid var(--admin-border);transition:background-color .1s ease}.count-session-list__completed-row[data-v-900e6502]:last-child{border-bottom:none}.count-session-list__completed-row[data-v-900e6502]:hover{background:var(--admin-content-bg)}.count-session-list__completed-row[data-v-900e6502]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.count-session-list__completed-info[data-v-900e6502]{display:flex;align-items:center;gap:var(--space-2, .5rem);min-width:0}.count-session-list__completed-name[data-v-900e6502]{font-size:var(--text-sm, .875rem);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.count-session-list__completed-meta[data-v-900e6502]{display:flex;align-items:center;gap:var(--space-3, .75rem);font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);flex-shrink:0}.count-create-enter-active[data-v-900e6502],.count-create-leave-active[data-v-900e6502]{transition:opacity .2s ease,max-height .2s ease;overflow:hidden}.count-create-enter-from[data-v-900e6502],.count-create-leave-to[data-v-900e6502]{opacity:0;max-height:0}.count-detail[data-v-faf8e3d1]{max-width:900px;display:flex;flex-direction:column;gap:var(--space-5, 1.25rem)}.count-detail__header[data-v-faf8e3d1]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3, .75rem)}.count-detail__header-info[data-v-faf8e3d1]{min-width:0}.count-detail__title[data-v-faf8e3d1]{margin:0 0 var(--space-2, .5rem);font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary)}.count-detail__meta[data-v-faf8e3d1]{display:flex;align-items:center;gap:var(--space-3, .75rem);flex-wrap:wrap}.count-detail__meta-item[data-v-faf8e3d1]{font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary)}.count-detail__progress-bar[data-v-faf8e3d1]{display:flex;align-items:center;gap:var(--space-3, .75rem);margin-bottom:var(--space-4, 1rem)}.count-detail__progress-track[data-v-faf8e3d1]{flex:1;height:10px;border-radius:5px;background:var(--admin-border);overflow:hidden}.count-detail__progress-fill[data-v-faf8e3d1]{height:100%;border-radius:5px;transition:width .3s ease}.count-detail__progress-fill--primary[data-v-faf8e3d1]{background:var(--color-primary, #2563eb)}.count-detail__progress-fill--success[data-v-faf8e3d1]{background:var(--color-success, #059669)}.count-detail__progress-fill--warning[data-v-faf8e3d1]{background:var(--color-warning, #d97706)}.count-detail__progress-pct[data-v-faf8e3d1]{font-size:var(--text-base, 1rem);font-weight:700;font-variant-numeric:tabular-nums;color:var(--admin-text-primary);min-width:42px;text-align:right}.count-detail__stats-grid[data-v-faf8e3d1]{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-4, 1rem)}.count-detail__stat[data-v-faf8e3d1]{display:flex;flex-direction:column;align-items:center;gap:var(--space-1, .25rem)}.count-detail__stat-value[data-v-faf8e3d1]{font-size:var(--text-lg, 1.125rem);font-weight:700;font-variant-numeric:tabular-nums;color:var(--admin-text-primary)}.count-detail__stat-value--pending[data-v-faf8e3d1]{color:var(--admin-text-tertiary)}.count-detail__stat-value--warning[data-v-faf8e3d1]{color:var(--color-warning, #d97706)}.count-detail__stat-label[data-v-faf8e3d1]{font-size:var(--text-xs, .75rem);color:var(--admin-text-secondary);text-transform:uppercase;letter-spacing:.05em}.count-detail__action-grid[data-v-faf8e3d1]{display:flex;flex-wrap:wrap;gap:var(--space-2, .5rem)}.count-detail__filters[data-v-faf8e3d1]{display:flex;align-items:center;gap:var(--space-3, .75rem)}.count-detail__discrepancy-toggle[data-v-faf8e3d1]{display:flex;align-items:center;gap:var(--space-2, .5rem);font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary);cursor:pointer;white-space:nowrap}.count-detail__discrepancy-checkbox[data-v-faf8e3d1]{width:16px;height:16px;accent-color:var(--color-primary, #2563eb);cursor:pointer}.count-detail__entry-status[data-v-faf8e3d1]{font-size:var(--text-base, 1rem)}.count-detail__entry-product[data-v-faf8e3d1]{font-weight:500;color:var(--admin-text-primary)}.count-detail__entry-qty[data-v-faf8e3d1]{font-variant-numeric:tabular-nums}.count-detail__entry-qty--match[data-v-faf8e3d1]{color:var(--color-success, #059669)}.count-detail__entry-qty--discrepancy[data-v-faf8e3d1]{color:var(--color-warning, #d97706)}.count-detail__entry-disc[data-v-faf8e3d1]{font-size:var(--text-xs, .75rem);font-weight:600}.count-detail__entry-pending[data-v-faf8e3d1]{color:var(--admin-text-tertiary);font-style:italic;font-size:var(--text-sm, .875rem)}.count-entry[data-v-b11de393]{display:flex;flex-direction:column;min-height:100vh;background:var(--admin-content-bg)}.count-entry__header[data-v-b11de393]{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-card-bg);border-bottom:1px solid var(--admin-border);flex-shrink:0}.count-entry__back-btn[data-v-b11de393]{display:flex;align-items:center;gap:var(--space-1, .25rem);padding:var(--space-1, .25rem) var(--space-2, .5rem);border:none;border-radius:6px;background:none;color:var(--color-primary, #2563eb);font-size:var(--text-sm, .875rem);font-weight:500;cursor:pointer;flex-shrink:0}.count-entry__back-btn[data-v-b11de393]:hover{background:var(--admin-content-bg)}.count-entry__back-btn[data-v-b11de393]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.count-entry__session-name[data-v-b11de393]{font-size:var(--text-sm, .875rem);font-weight:600;color:var(--admin-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;flex:1}.count-entry__location-count[data-v-b11de393]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);font-variant-numeric:tabular-nums;flex-shrink:0}.count-entry__connectivity[data-v-b11de393]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-1, .25rem) var(--space-4, 1rem);font-size:var(--text-xs, .75rem);color:var(--color-success, #059669);background:color-mix(in srgb,var(--color-success, #059669) 8%,var(--admin-card-bg));flex-shrink:0}.count-entry__connectivity--offline[data-v-b11de393]{color:var(--color-warning, #d97706);background:color-mix(in srgb,var(--color-warning, #d97706) 8%,var(--admin-card-bg))}.count-entry__connectivity-dot[data-v-b11de393]{width:8px;height:8px;border-radius:50%;flex-shrink:0}.count-entry__connectivity-dot--online[data-v-b11de393]{background:var(--color-success, #059669)}.count-entry__connectivity-dot--offline[data-v-b11de393]{background:var(--color-warning, #d97706)}.count-entry__no-location[data-v-b11de393]{padding:var(--space-4, 1rem);flex:1}.count-entry__no-location-text[data-v-b11de393]{margin:0 0 var(--space-4, 1rem);font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary)}.count-entry__no-location-actions[data-v-b11de393]{display:flex;flex-direction:column;gap:var(--space-3, .75rem)}.count-entry__search-row[data-v-b11de393]{display:flex;gap:var(--space-2, .5rem)}.count-entry__search-input[data-v-b11de393]{flex:1;height:44px;padding:0 var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);outline:none}.count-entry__search-input[data-v-b11de393]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.count-entry__search-results[data-v-b11de393]{margin:0;padding:0;list-style:none;border:1px solid var(--admin-border);border-radius:6px;max-height:200px;overflow-y:auto;background:var(--admin-card-bg)}.count-entry__search-result-btn[data-v-b11de393]{display:flex;align-items:center;gap:var(--space-2, .5rem);width:100%;padding:var(--space-2, .5rem) var(--space-3, .75rem);border:none;background:none;color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);cursor:pointer;text-align:left}.count-entry__search-result-btn[data-v-b11de393]:hover{background:var(--admin-content-bg)}.count-entry__search-result-btn[data-v-b11de393]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.count-entry__location-card[data-v-b11de393]{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-card-bg);border-bottom:1px solid var(--admin-border);flex-shrink:0}.count-entry__location-details[data-v-b11de393]{min-width:0}.count-entry__location-name[data-v-b11de393]{margin:0;font-size:var(--text-base, 1rem);font-weight:600;color:var(--admin-text-primary)}.count-entry__products[data-v-b11de393]{flex:1;overflow-y:auto;padding:var(--space-2, .5rem) 0}.count-entry__no-entries[data-v-b11de393]{padding:var(--space-6, 1.5rem) var(--space-4, 1rem);text-align:center;color:var(--admin-text-tertiary);font-style:italic;font-size:var(--text-sm, .875rem);margin:0}.count-entry__product-row[data-v-b11de393]{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-card-bg);border-bottom:1px solid var(--admin-border);cursor:pointer;transition:background-color .1s ease}.count-entry__product-row[data-v-b11de393]:hover{background:var(--admin-content-bg)}.count-entry__product-row--selected[data-v-b11de393]{background:color-mix(in srgb,var(--color-primary, #2563eb) 8%,var(--admin-card-bg));border-left:3px solid var(--color-primary, #2563eb)}.count-entry__product-row--match[data-v-b11de393]{border-left:3px solid var(--color-success, #059669)}.count-entry__product-row--discrepancy[data-v-b11de393]{border-left:3px solid var(--color-warning, #d97706)}.count-entry__product-info[data-v-b11de393]{display:flex;flex-direction:column;gap:var(--space-1, .25rem);min-width:0}.count-entry__product-name[data-v-b11de393]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.count-entry__product-expected[data-v-b11de393]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);font-variant-numeric:tabular-nums}.count-entry__product-count[data-v-b11de393]{display:flex;align-items:center;gap:var(--space-2, .5rem);flex-shrink:0}.count-entry__count-input[data-v-b11de393]{width:80px;height:44px;padding:0 var(--space-2, .5rem);border:2px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-lg, 1.125rem);font-weight:600;font-variant-numeric:tabular-nums;text-align:center;outline:none}.count-entry__count-input[data-v-b11de393]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.count-entry__count-input--match[data-v-b11de393]{border-color:var(--color-success, #059669);color:var(--color-success, #059669)}.count-entry__count-input--discrepancy[data-v-b11de393]{border-color:var(--color-warning, #d97706);color:var(--color-warning, #d97706)}.count-entry__status-icon[data-v-b11de393]{font-size:var(--text-lg, 1.125rem)}.count-entry__status-icon--match[data-v-b11de393]{color:var(--color-success, #059669)}.count-entry__status-icon--discrepancy[data-v-b11de393]{color:var(--color-warning, #d97706)}.count-entry__keypad[data-v-b11de393]{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-card-bg);border-top:1px solid var(--admin-border);flex-shrink:0}.count-entry__key[data-v-b11de393]{min-height:60px;min-width:60px;display:flex;align-items:center;justify-content:center;border:1px solid var(--admin-border);border-radius:8px;background:var(--admin-content-bg);color:var(--admin-text-primary);font-size:var(--text-xl, 1.25rem);font-weight:600;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .1s ease;-webkit-tap-highlight-color:transparent}.count-entry__key[data-v-b11de393]:hover:not(:disabled){background:var(--admin-table-header-bg)}.count-entry__key[data-v-b11de393]:active:not(:disabled){background:var(--admin-border);transform:scale(.97)}.count-entry__key[data-v-b11de393]:disabled{opacity:.3;cursor:not-allowed}.count-entry__key[data-v-b11de393]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.count-entry__bottom-actions[data-v-b11de393]{display:flex;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);background:var(--admin-card-bg);border-top:1px solid var(--admin-border);flex-shrink:0}.count-entry__complete-btn[data-v-b11de393]{flex:1}.count-entry__scan-next-btn[data-v-b11de393]{flex-shrink:0}.sr-only[data-v-b11de393]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.count-report[data-v-e12a8dba]{max-width:900px;display:flex;flex-direction:column;gap:var(--space-5, 1.25rem)}.count-report__header[data-v-e12a8dba]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3, .75rem);flex-wrap:wrap}.count-report__title[data-v-e12a8dba]{margin:0;font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary)}.count-report__actions[data-v-e12a8dba]{display:flex;gap:var(--space-2, .5rem);flex-shrink:0}.count-report__summary-grid[data-v-e12a8dba]{display:grid;grid-template-columns:repeat(auto-fit,minmax(100px,1fr));gap:var(--space-4, 1rem);margin-bottom:var(--space-5, 1.25rem)}.count-report__summary-stat[data-v-e12a8dba]{display:flex;flex-direction:column;align-items:center;gap:var(--space-1, .25rem);padding:var(--space-3, .75rem);background:var(--admin-content-bg);border-radius:8px}.count-report__summary-value[data-v-e12a8dba]{font-size:var(--text-xl, 1.25rem);font-weight:700;font-variant-numeric:tabular-nums;color:var(--admin-text-primary)}.count-report__summary-value--success[data-v-e12a8dba]{color:var(--color-success, #059669)}.count-report__summary-value--warning[data-v-e12a8dba]{color:var(--color-warning, #d97706)}.count-report__summary-value--error[data-v-e12a8dba]{color:var(--color-error, #dc2626)}.count-report__summary-value--muted[data-v-e12a8dba]{color:var(--admin-text-tertiary)}.count-report__summary-label[data-v-e12a8dba]{font-size:var(--text-xs, .75rem);color:var(--admin-text-secondary);text-transform:uppercase;letter-spacing:.05em}.count-report__totals[data-v-e12a8dba]{border-top:1px solid var(--admin-border);padding-top:var(--space-4, 1rem);display:flex;flex-direction:column;gap:var(--space-2, .5rem)}.count-report__total-row[data-v-e12a8dba]{display:flex;justify-content:space-between;align-items:center;font-size:var(--text-sm, .875rem)}.count-report__total-row--net[data-v-e12a8dba]{padding-top:var(--space-2, .5rem);border-top:1px solid var(--admin-border);font-weight:600}.count-report__total-label[data-v-e12a8dba]{color:var(--admin-text-secondary)}.count-report__total-value[data-v-e12a8dba]{font-variant-numeric:tabular-nums;color:var(--admin-text-primary)}.count-report__total-value--positive[data-v-e12a8dba]{color:var(--color-success, #059669)}.count-report__total-value--negative[data-v-e12a8dba]{color:var(--color-error, #dc2626)}.count-report__disc-location[data-v-e12a8dba]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,Liberation Mono,monospace;font-size:var(--text-xs, .75rem);color:var(--admin-text-secondary)}.count-report__disc-product[data-v-e12a8dba]{font-weight:500}.count-report__disc-qty[data-v-e12a8dba]{font-variant-numeric:tabular-nums}.count-report__disc-delta[data-v-e12a8dba]{font-weight:700;font-variant-numeric:tabular-nums}.count-report__disc-delta--positive[data-v-e12a8dba]{color:var(--color-success, #059669)}.count-report__disc-delta--negative[data-v-e12a8dba]{color:var(--color-error, #dc2626)}@media print{.count-report__actions[data-v-e12a8dba]{display:none}.count-report[data-v-e12a8dba]{gap:12pt}}.label-batch[data-v-1eb7f5c2]{max-width:800px;display:flex;flex-direction:column;gap:var(--space-5, 1.25rem)}.label-batch__header[data-v-1eb7f5c2]{display:flex;align-items:center;justify-content:space-between}.label-batch__title[data-v-1eb7f5c2]{margin:0;font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary)}.label-batch__format[data-v-1eb7f5c2]{max-width:200px}.label-batch__quick-selectors[data-v-1eb7f5c2]{display:flex;flex-wrap:wrap;gap:var(--space-2, .5rem);margin-bottom:var(--space-4, 1rem)}.label-batch__quick-btn[data-v-1eb7f5c2]{padding:var(--space-2, .5rem) var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);cursor:pointer;transition:background-color .15s ease,border-color .15s ease}.label-batch__quick-btn[data-v-1eb7f5c2]:hover{background:var(--admin-content-bg);border-color:var(--admin-text-tertiary)}.label-batch__quick-btn[data-v-1eb7f5c2]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.label-batch__filter-row[data-v-1eb7f5c2]{display:flex;gap:var(--space-3, .75rem)}.label-batch__filter-row[data-v-1eb7f5c2]>*{flex:1}.label-batch__group[data-v-1eb7f5c2]{border-bottom:1px solid var(--admin-border)}.label-batch__group[data-v-1eb7f5c2]:last-child{border-bottom:none}.label-batch__group-header[data-v-1eb7f5c2]{display:flex;align-items:center;gap:var(--space-3, .75rem);width:100%;padding:var(--space-3, .75rem) var(--space-4, 1rem);border:none;background:var(--admin-table-header-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);font-weight:600;cursor:pointer;text-align:left}.label-batch__group-header[data-v-1eb7f5c2]:hover{background:var(--admin-content-bg)}.label-batch__group-header[data-v-1eb7f5c2]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.label-batch__group-name[data-v-1eb7f5c2]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.label-batch__group-count[data-v-1eb7f5c2]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);font-weight:400}.label-batch__group-chevron[data-v-1eb7f5c2]{color:var(--admin-text-tertiary);transition:transform .2s ease;flex-shrink:0}.label-batch__group-chevron--collapsed[data-v-1eb7f5c2]{transform:rotate(-90deg)}.label-batch__group-items[data-v-1eb7f5c2]{padding:0}.label-batch__location-row[data-v-1eb7f5c2]{display:flex;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-2, .5rem) var(--space-4, 1rem) var(--space-2, .5rem) var(--space-8, 2rem);cursor:pointer;transition:background-color .1s ease;border-bottom:1px solid var(--admin-border);font-size:var(--text-sm, .875rem)}.label-batch__location-row[data-v-1eb7f5c2]:last-child{border-bottom:none}.label-batch__location-row[data-v-1eb7f5c2]:hover{background:var(--admin-content-bg)}.label-batch__checkbox[data-v-1eb7f5c2]{width:18px;height:18px;accent-color:var(--color-primary, #2563eb);cursor:pointer;flex-shrink:0}.label-batch__location-name[data-v-1eb7f5c2]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--admin-text-primary)}.label-batch__footer[data-v-1eb7f5c2]{position:sticky;bottom:0;display:flex;align-items:center;justify-content:space-between;gap:var(--space-3, .75rem);padding:var(--space-4, 1rem);background:var(--admin-card-bg);border:1px solid var(--admin-border);border-radius:8px;box-shadow:var(--shadow-md)}.label-batch__selected-count[data-v-1eb7f5c2]{font-size:var(--text-sm, .875rem);font-weight:600;color:var(--admin-text-primary)}.label-batch__footer-actions[data-v-1eb7f5c2]{display:flex;gap:var(--space-2, .5rem)}.pll-location-link[data-v-47c4cd6e]{display:inline-flex;align-items:center;padding:var(--space-1, .25rem) 0;min-height:44px;border:none;background:transparent;color:var(--color-primary, #2563eb);font-size:var(--text-sm, .875rem);font-family:inherit;font-weight:500;cursor:pointer;text-align:left;border-radius:4px;transition:color .15s ease}.pll-location-link[data-v-47c4cd6e]:hover{text-decoration:underline}.pll-location-link[data-v-47c4cd6e]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:2px}.pll-location-path[data-v-47c4cd6e]{line-height:1.4}.pll-quantity[data-v-47c4cd6e]{font-variant-numeric:tabular-nums;font-weight:500;color:var(--admin-text-primary)}.pll-primary-star[data-v-47c4cd6e]{color:var(--color-warning, #d97706)}.pll-no-primary[data-v-47c4cd6e]{display:block;width:18px;height:18px}.pll-footer[data-v-47c4cd6e]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem) var(--space-4, 1rem);border-top:1px solid var(--admin-border);background:var(--admin-content-bg);font-size:var(--text-sm, .875rem)}.pll-total-label[data-v-47c4cd6e]{font-weight:600;color:var(--admin-text-primary)}.pll-total-value[data-v-47c4cd6e]{color:var(--admin-text-secondary);font-variant-numeric:tabular-nums}.label-preview[data-v-c9c4e755]{display:flex;flex-direction:column;gap:var(--space-4, 1rem)}.label-preview__controls[data-v-c9c4e755]{max-width:200px}.label-preview__loading[data-v-c9c4e755]{display:flex;align-items:center;justify-content:center;padding:var(--space-8, 2rem)}.label-preview__loading-spinner[data-v-c9c4e755]{width:32px;height:32px;border:3px solid var(--admin-border);border-top-color:var(--color-primary, #2563eb);border-radius:50%;animation:label-spin-c9c4e755 .8s linear infinite}@keyframes label-spin-c9c4e755{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.label-preview__error[data-v-c9c4e755]{display:flex;flex-direction:column;align-items:center;gap:var(--space-3, .75rem);padding:var(--space-6, 1.5rem)}.label-preview__error-text[data-v-c9c4e755]{margin:0;font-size:var(--text-sm, .875rem);color:var(--color-error, #dc2626)}.label-preview__container[data-v-c9c4e755]{display:flex;justify-content:center;padding:var(--space-4, 1rem);background:var(--admin-content-bg);border-radius:8px}.label-preview__label[data-v-c9c4e755]{display:flex;flex-direction:column;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-4, 1rem);background:#fff;border:2px solid var(--admin-border);border-radius:4px;color:#000;transform:scale(2);transform-origin:top center;margin-bottom:100%}.label-preview__path[data-v-c9c4e755]{margin:0;font-size:7px;color:#666;text-align:center;line-height:1.3}.label-preview__code[data-v-c9c4e755]{margin:0;font-size:12px;font-weight:700;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;text-align:center}.label-preview__name[data-v-c9c4e755]{margin:0;font-size:8px;color:#333;text-align:center}.label-preview__barcode[data-v-c9c4e755]{width:100%;display:flex;justify-content:center}.label-preview__barcode[data-v-c9c4e755] svg{max-width:100%;height:auto}.label-preview__qr[data-v-c9c4e755]{display:flex;justify-content:center}.label-preview__qr[data-v-c9c4e755] svg{width:48px;height:48px}.label-preview__print[data-v-c9c4e755]{display:flex;justify-content:center}.sr-only[data-v-c9c4e755]{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}@media print{.label-preview__controls[data-v-c9c4e755],.label-preview__print[data-v-c9c4e755]{display:none}.label-preview__label[data-v-c9c4e755]{transform:none;margin-bottom:0;border:none;box-shadow:none}.label-preview__container[data-v-c9c4e755]{background:none;padding:0}}.unlocated-products[data-v-9a21fb9b]{max-width:800px;display:flex;flex-direction:column;gap:var(--space-4, 1rem)}.unlocated-products__header[data-v-9a21fb9b]{display:flex;align-items:flex-start;justify-content:space-between;gap:var(--space-3, .75rem)}.unlocated-products__title[data-v-9a21fb9b]{margin:0;font-size:var(--text-xl, 1.25rem);font-weight:700;color:var(--admin-text-primary)}.unlocated-products__subtitle[data-v-9a21fb9b]{margin:var(--space-1, .25rem) 0 0;font-size:var(--text-sm, .875rem);color:var(--admin-text-secondary)}.unlocated-products__product-name[data-v-9a21fb9b]{font-weight:500;color:var(--admin-text-primary)}.unlocated-products__sku[data-v-9a21fb9b]{font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:var(--text-xs, .75rem);color:var(--admin-text-secondary)}.unlocated-products__no-sku[data-v-9a21fb9b]{font-size:var(--text-xs, .75rem);color:var(--admin-text-tertiary);font-style:italic}.unlocated-products__load-more[data-v-9a21fb9b]{display:flex;align-items:center;justify-content:space-between;padding:var(--space-3, .75rem) var(--space-4, 1rem);border-top:1px solid var(--admin-border)}.unlocated-products__showing[data-v-9a21fb9b]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary)}.unlocated-products__locate-form[data-v-9a21fb9b]{display:flex;flex-direction:column;gap:var(--space-3, .75rem)}.unlocated-products__locate-search[data-v-9a21fb9b]{display:flex;flex-direction:column;gap:var(--space-1, .25rem)}.unlocated-products__locate-label[data-v-9a21fb9b]{font-size:var(--text-sm, .875rem);font-weight:500;color:var(--admin-text-primary)}.unlocated-products__locate-input[data-v-9a21fb9b]{width:100%;height:44px;padding:0 var(--space-3, .75rem);border:1px solid var(--admin-border);border-radius:6px;background:var(--admin-card-bg);color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);outline:none;transition:border-color .15s ease,box-shadow .15s ease}.unlocated-products__locate-input[data-v-9a21fb9b]:focus{border-color:var(--color-primary, #2563eb);box-shadow:0 0 0 3px #2563eb26}.unlocated-products__locate-results[data-v-9a21fb9b]{margin:0;padding:0;list-style:none;border:1px solid var(--admin-border);border-radius:6px;max-height:200px;overflow-y:auto;background:var(--admin-card-bg)}.unlocated-products__locate-option[data-v-9a21fb9b]{display:flex;align-items:center;gap:var(--space-2, .5rem);width:100%;padding:var(--space-2, .5rem) var(--space-3, .75rem);border:none;background:none;color:var(--admin-text-primary);font-size:var(--text-sm, .875rem);cursor:pointer;text-align:left;transition:background-color .1s ease}.unlocated-products__locate-option[data-v-9a21fb9b]:hover,.unlocated-products__locate-option--selected[data-v-9a21fb9b]{background:var(--admin-content-bg)}.unlocated-products__locate-option[data-v-9a21fb9b]:focus-visible{outline:2px solid var(--admin-focus-ring, #2563eb);outline-offset:-2px}.unlocated-products__locate-option-name[data-v-9a21fb9b]{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.unlocated-products__locate-no-results[data-v-9a21fb9b]{margin:0;font-size:var(--text-sm, .875rem);color:var(--admin-text-tertiary);font-style:italic;text-align:center;padding:var(--space-3, .75rem)}.unlocated-products__locate-selected[data-v-9a21fb9b]{display:flex;align-items:center;gap:var(--space-2, .5rem);padding:var(--space-3, .75rem);background:color-mix(in srgb,var(--color-success, #059669) 8%,var(--admin-card-bg));border:1px solid color-mix(in srgb,var(--color-success, #059669) 20%,var(--admin-border));border-radius:6px;font-size:var(--text-sm, .875rem);color:var(--admin-text-primary)}.unlocated-products__locate-selected-label[data-v-9a21fb9b]{font-weight:500;color:var(--color-success, #059669);flex-shrink:0}
|
package/package.json
CHANGED
|
@@ -1,31 +1,31 @@
|
|
|
1
1
|
<template>
|
|
2
|
-
<div class="inv-dashboard">
|
|
2
|
+
<div class="inv-dashboard" data-testid="page-inventory-dashboard">
|
|
3
3
|
<h1 class="inv-dashboard__title">Inventory Dashboard</h1>
|
|
4
4
|
|
|
5
5
|
<!-- Stat cards -->
|
|
6
|
-
<div class="inv-dashboard__stats">
|
|
7
|
-
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--primary">
|
|
6
|
+
<div class="inv-dashboard__stats" data-testid="panel-dashboard-stats">
|
|
7
|
+
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--primary" data-testid="stat-total-locations">
|
|
8
8
|
<div v-if="statsLoading" class="inv-dashboard__stat-shimmer" />
|
|
9
9
|
<template v-else>
|
|
10
10
|
<span class="inv-dashboard__stat-value">{{ stats?.total_locations ?? 0 }}</span>
|
|
11
11
|
<span class="inv-dashboard__stat-label">Total Locations</span>
|
|
12
12
|
</template>
|
|
13
13
|
</div>
|
|
14
|
-
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--success">
|
|
14
|
+
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--success" data-testid="stat-products-tracked">
|
|
15
15
|
<div v-if="statsLoading" class="inv-dashboard__stat-shimmer" />
|
|
16
16
|
<template v-else>
|
|
17
17
|
<span class="inv-dashboard__stat-value">{{ formatNumber(stats?.total_products_tracked ?? 0) }}</span>
|
|
18
18
|
<span class="inv-dashboard__stat-label">Products Tracked</span>
|
|
19
19
|
</template>
|
|
20
20
|
</div>
|
|
21
|
-
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--info">
|
|
21
|
+
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--info" data-testid="stat-in-use">
|
|
22
22
|
<div v-if="statsLoading" class="inv-dashboard__stat-shimmer" />
|
|
23
23
|
<template v-else>
|
|
24
24
|
<span class="inv-dashboard__stat-value">{{ stats?.locations_with_products ?? 0 }}</span>
|
|
25
25
|
<span class="inv-dashboard__stat-label">In Use</span>
|
|
26
26
|
</template>
|
|
27
27
|
</div>
|
|
28
|
-
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--warning">
|
|
28
|
+
<div class="inv-dashboard__stat-card inv-dashboard__stat-card--warning" data-testid="stat-empty-locations">
|
|
29
29
|
<div v-if="statsLoading" class="inv-dashboard__stat-shimmer" />
|
|
30
30
|
<template v-else>
|
|
31
31
|
<span class="inv-dashboard__stat-value">{{ stats?.empty_leaf_locations ?? 0 }}</span>
|
|
@@ -41,11 +41,12 @@
|
|
|
41
41
|
compact
|
|
42
42
|
class="inv-dashboard__by-type"
|
|
43
43
|
>
|
|
44
|
-
<div class="inv-dashboard__type-grid">
|
|
44
|
+
<div class="inv-dashboard__type-grid" data-testid="panel-locations-by-type">
|
|
45
45
|
<div
|
|
46
46
|
v-for="(count, type) in stats.locations_by_type"
|
|
47
47
|
:key="type"
|
|
48
48
|
class="inv-dashboard__type-item"
|
|
49
|
+
:data-testid="`item-type-${type}`"
|
|
49
50
|
>
|
|
50
51
|
<span class="inv-dashboard__type-count">{{ count }}</span>
|
|
51
52
|
<span class="inv-dashboard__type-label">{{ formatTypeName(type as string) }}</span>
|
|
@@ -54,30 +55,33 @@
|
|
|
54
55
|
</InvCard>
|
|
55
56
|
|
|
56
57
|
<!-- Quick actions -->
|
|
57
|
-
<InvCard title="Quick Actions" compact class="inv-dashboard__quick-actions">
|
|
58
|
+
<InvCard title="Quick Actions" compact class="inv-dashboard__quick-actions" data-testid="panel-quick-actions">
|
|
58
59
|
<div class="inv-dashboard__actions-grid">
|
|
59
60
|
<button
|
|
60
61
|
v-for="action in quickActions"
|
|
61
62
|
:key="action.label"
|
|
62
63
|
type="button"
|
|
63
64
|
class="inv-dashboard__action-btn"
|
|
65
|
+
:data-testid="`btn-action-${action.route}`"
|
|
64
66
|
@click="handleAction(action.route)"
|
|
65
67
|
>
|
|
66
|
-
<span class="inv-dashboard__action-icon" v-html="action.icon" />
|
|
68
|
+
<span class="inv-dashboard__action-icon" v-html="action.icon" aria-hidden="true" />
|
|
67
69
|
<span class="inv-dashboard__action-label">{{ action.label }}</span>
|
|
68
70
|
</button>
|
|
69
71
|
</div>
|
|
70
72
|
</InvCard>
|
|
71
73
|
|
|
72
74
|
<!-- Recent Activity -->
|
|
73
|
-
<InvCard title="Recent Activity" class="inv-dashboard__activity" :loading="movementsLoading">
|
|
74
|
-
<div v-if="movements.length > 0" class="inv-dashboard__activity-list" role="list">
|
|
75
|
+
<InvCard title="Recent Activity" class="inv-dashboard__activity" :loading="movementsLoading" data-testid="panel-recent-activity">
|
|
76
|
+
<div v-if="movements.length > 0" class="inv-dashboard__activity-list" role="list" data-testid="list-recent-movements">
|
|
75
77
|
<button
|
|
76
78
|
v-for="movement in movements"
|
|
77
79
|
:key="movement.id"
|
|
78
80
|
type="button"
|
|
79
81
|
role="listitem"
|
|
80
82
|
class="inv-dashboard__activity-row"
|
|
83
|
+
:data-testid="`item-movement-${movement.id}`"
|
|
84
|
+
:aria-label="`${movement.product_name} — ${movement.reason}`"
|
|
81
85
|
@click="navigateToMovementLocation(movement)"
|
|
82
86
|
>
|
|
83
87
|
<span
|
|
@@ -112,31 +116,33 @@
|
|
|
112
116
|
<!-- Bottom widgets row -->
|
|
113
117
|
<div class="inv-dashboard__bottom-row">
|
|
114
118
|
<!-- Unlocated products summary -->
|
|
115
|
-
<InvCard title="Unlocated Products" compact class="inv-dashboard__unlocated-widget">
|
|
119
|
+
<InvCard title="Unlocated Products" compact class="inv-dashboard__unlocated-widget" data-testid="panel-unlocated-products">
|
|
116
120
|
<div v-if="unlocatedCount > 0" class="inv-dashboard__unlocated-content">
|
|
117
121
|
<p class="inv-dashboard__unlocated-text">
|
|
118
|
-
<strong>{{ unlocatedCount }}</strong> products have no assigned location
|
|
122
|
+
<strong data-testid="status-unlocated-count">{{ unlocatedCount }}</strong> products have no assigned location
|
|
119
123
|
</p>
|
|
120
124
|
<InvButton
|
|
121
125
|
variant="secondary"
|
|
122
126
|
size="sm"
|
|
127
|
+
data-testid="btn-view-unlocated"
|
|
123
128
|
@click="router.push({ name: 'inventory-unlocated' })"
|
|
124
129
|
>
|
|
125
130
|
View All
|
|
126
131
|
</InvButton>
|
|
127
132
|
</div>
|
|
128
|
-
<p v-else class="inv-dashboard__unlocated-none">
|
|
133
|
+
<p v-else class="inv-dashboard__unlocated-none" data-testid="status-all-located">
|
|
129
134
|
All products have assigned locations
|
|
130
135
|
</p>
|
|
131
136
|
</InvCard>
|
|
132
137
|
|
|
133
138
|
<!-- Active counts -->
|
|
134
|
-
<InvCard title="Active Counts" compact class="inv-dashboard__counts-widget">
|
|
139
|
+
<InvCard title="Active Counts" compact class="inv-dashboard__counts-widget" data-testid="panel-active-counts">
|
|
135
140
|
<div v-if="activeCounts.length > 0">
|
|
136
141
|
<div
|
|
137
142
|
v-for="count in activeCounts"
|
|
138
143
|
:key="count.id"
|
|
139
144
|
class="inv-dashboard__count-row"
|
|
145
|
+
:data-testid="`item-count-${count.id}`"
|
|
140
146
|
>
|
|
141
147
|
<div class="inv-dashboard__count-info">
|
|
142
148
|
<span class="inv-dashboard__count-name">{{ count.name }}</span>
|
|
@@ -211,7 +217,7 @@ const quickActions = [
|
|
|
211
217
|
},
|
|
212
218
|
{
|
|
213
219
|
label: 'Start Count',
|
|
214
|
-
route: 'inventory-counts',
|
|
220
|
+
route: 'inventory-package-counts',
|
|
215
221
|
icon: '<svg width="24" height="24" viewBox="0 0 24 24" fill="none"><rect x="4" y="4" width="16" height="16" rx="2" stroke="currentColor" stroke-width="1.5"/><path d="M8 8h2v2H8V8zm4 0h2v2h-2V8zm-4 4h2v2H8v-2zm4 0h2v2h-2v-2z" fill="currentColor"/></svg>',
|
|
216
222
|
},
|
|
217
223
|
{
|
|
@@ -302,6 +308,11 @@ function formatNumber(n: number): string {
|
|
|
302
308
|
}
|
|
303
309
|
|
|
304
310
|
function formatTypeName(type: string): string {
|
|
311
|
+
const irregulars: Record<string, string> = {
|
|
312
|
+
shelf: 'Shelves',
|
|
313
|
+
}
|
|
314
|
+
const lower = type.toLowerCase()
|
|
315
|
+
if (irregulars[lower]) return irregulars[lower]
|
|
305
316
|
return type.charAt(0).toUpperCase() + type.slice(1) + 's'
|
|
306
317
|
}
|
|
307
318
|
</script>
|
|
@@ -536,8 +547,8 @@ function formatTypeName(type: string): string {
|
|
|
536
547
|
}
|
|
537
548
|
|
|
538
549
|
.inv-dashboard__activity-icon--counted {
|
|
539
|
-
background: color-mix(in srgb, #7c3aed 12%, transparent);
|
|
540
|
-
color: #7c3aed;
|
|
550
|
+
background: color-mix(in srgb, var(--color-purple, #7c3aed) 12%, transparent);
|
|
551
|
+
color: var(--color-purple, #7c3aed);
|
|
541
552
|
}
|
|
542
553
|
|
|
543
554
|
.inv-dashboard__activity-info {
|
package/tsconfig.json
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"compilerOptions": {
|
|
3
|
-
"target": "ES2022",
|
|
4
|
-
"module": "ESNext",
|
|
5
|
-
"moduleResolution": "bundler",
|
|
6
|
-
"strict": true,
|
|
7
|
-
"jsx": "preserve",
|
|
8
|
-
"declaration": true,
|
|
9
|
-
"declarationMap": true,
|
|
10
|
-
"sourceMap": true,
|
|
11
|
-
"outDir": "dist",
|
|
12
|
-
"baseUrl": ".",
|
|
13
|
-
"paths": {
|
|
14
|
-
"@/*": ["src/*"]
|
|
15
|
-
},
|
|
16
|
-
"types": ["vite/client"],
|
|
17
|
-
"lib": ["ES2022", "DOM", "DOM.Iterable"]
|
|
18
|
-
},
|
|
19
|
-
"include": ["src/**/*.ts", "src/**/*.vue"],
|
|
20
|
-
"exclude": ["node_modules", "dist", "tests"]
|
|
21
|
-
}
|
package/vite.config.ts
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
import { defineConfig } from 'vite'
|
|
2
|
-
import vue from '@vitejs/plugin-vue'
|
|
3
|
-
import dts from 'vite-plugin-dts'
|
|
4
|
-
import { resolve } from 'path'
|
|
5
|
-
|
|
6
|
-
export default defineConfig({
|
|
7
|
-
plugins: [
|
|
8
|
-
vue(),
|
|
9
|
-
dts({ rollupTypes: true }),
|
|
10
|
-
],
|
|
11
|
-
build: {
|
|
12
|
-
lib: {
|
|
13
|
-
entry: resolve(__dirname, 'src/index.ts'),
|
|
14
|
-
name: 'InventoryLocatorClient',
|
|
15
|
-
formats: ['es', 'cjs'],
|
|
16
|
-
fileName: (format) => `index.${format === 'es' ? 'js' : 'cjs'}`,
|
|
17
|
-
},
|
|
18
|
-
rollupOptions: {
|
|
19
|
-
external: ['axios', 'pinia', 'vue', 'vue-router'],
|
|
20
|
-
output: {
|
|
21
|
-
globals: {
|
|
22
|
-
vue: 'Vue',
|
|
23
|
-
pinia: 'Pinia',
|
|
24
|
-
axios: 'axios',
|
|
25
|
-
'vue-router': 'VueRouter',
|
|
26
|
-
},
|
|
27
|
-
assetFileNames: 'inventory-locator-client.[ext]',
|
|
28
|
-
},
|
|
29
|
-
},
|
|
30
|
-
cssCodeSplit: false,
|
|
31
|
-
},
|
|
32
|
-
resolve: {
|
|
33
|
-
alias: {
|
|
34
|
-
'@': resolve(__dirname, 'src'),
|
|
35
|
-
},
|
|
36
|
-
},
|
|
37
|
-
})
|