NonInventPurchasingSystem/CPRNIMS.WebApps/Views/Shared/PagesView/Inventory/_InventoryStyles.cshtml
2026-06-15 16:41:50 +08:00

1405 lines
34 KiB
Plaintext

<style>
:root {
--teal-dark: #0d5c63;
--teal-mid: #0e7c86;
--teal-light: #18a8b5;
--teal-pale: #e6f7f8;
--text-dark: #1a2e35;
--text-muted: #6b8890;
--border: #d6eaec;
--card-bg: #ffffff;
--bg-page: #f0f6f7;
--radius-lg: 14px;
--radius-sm: 8px;
--shadow-card: 0 2px 12px rgba(13,92,99,.10), 0 1px 3px rgba(0,0,0,.06);
--shadow-hover: 0 6px 24px rgba(13,92,99,.18);
--shadow-drop: 0 8px 28px rgba(13,92,99,.20);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
/* ── WRAPPER ─────────────────────────────── */
.inventory-wrapper {
font-family: 'DM Sans', sans-serif;
background: var(--bg-page);
color: var(--text-dark);
width: 100%;
padding: 20px 24px 48px;
}
@@media (max-width: 768px) {
.inventory-wrapper {
padding: 12px 12px 36px;
}
}
/* ── HEADER ── */
.inv-header {
background: linear-gradient( 270deg, #004d40, #00695c, #00897b, #00acc1, #00897b, #00695c, #004d40 );
background-size: 300% 100%;
animation: gradientShimmer 6s ease infinite;
padding: 26px 30px 22px;
border-radius: var(--radius-lg);
box-shadow: 0 6px 20px rgba(0, 150, 136, 0.35);
position: relative;
overflow: hidden;
margin-bottom: 18px;
margin-top: -60px;
}
.inv-header::before {
content: '';
position: absolute;
inset: 0;
background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none' fill-rule='evenodd'%3E%3Cg fill='%23ffffff' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
}
.inv-header-inner {
position: relative;
z-index: 1;
display: flex;
align-items: flex-start;
gap: 14px;
}
.inv-header-icon {
font-size: 2rem;
color: rgba(255,255,255,.85);
margin-top: 2px;
}
.inv-header h1 {
font-family: 'Space Grotesk', sans-serif;
font-size: 1.7rem;
font-weight: 700;
color: #fff;
line-height: 1.2;
}
.inv-header p {
font-size: .875rem;
color: rgba(255,255,255,.72);
margin-top: 4px;
}
@@media (max-width: 768px) {
.inv-header h1 {
font-size: 1.35rem;
}
}
/* ── TAB NAV ─── */
.inv-tabs {
display: flex;
gap: 6px;
background: #fff;
border-radius: var(--radius-lg);
padding: 6px;
box-shadow: var(--shadow-card);
margin-bottom: 18px;
}
.inv-tab-btn {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 11px 18px;
border: none;
border-radius: var(--radius-sm);
background: transparent;
color: var(--text-muted);
font-family: 'DM Sans', sans-serif;
font-size: .875rem;
font-weight: 600;
cursor: pointer;
transition: all .2s ease;
white-space: nowrap;
}
.inv-tab-btn i {
font-size: .88rem;
}
.inv-tab-btn:hover {
background: var(--teal-pale);
color: var(--teal-dark);
}
.inv-tab-btn.active {
background: var(--teal-mid);
color: #fff;
box-shadow: 0 2px 8px rgba(14,124,134,.35);
}
.inv-tab-btn.loading {
opacity: .6;
pointer-events: none;
}
/* ── TAB CONTENT AREA ──── */
#inv-tab-content {
min-height: 300px;
}
.inv-tab-loading {
display: flex;
align-items: center;
justify-content: center;
gap: 12px;
padding: 80px 20px;
color: var(--text-muted);
font-size: .9rem;
}
/* ── SHARED FILTER BAR ─── */
.inv-filters {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: stretch;
background: #fff;
border-radius: var(--radius-lg);
padding: 14px 16px;
box-shadow: var(--shadow-card);
margin-bottom: 16px;
}
.inv-search-box {
display: flex;
align-items: center;
gap: 8px;
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
padding: 0 12px;
flex: 1;
min-width: 140px;
background: #fff;
transition: border-color .2s;
}
.inv-search-box:focus-within {
border-color: var(--teal-mid);
}
.inv-search-box i {
color: var(--text-muted);
font-size: .8rem;
flex-shrink: 0;
}
.inv-search-box input {
border: none;
outline: none;
background: transparent;
padding: 9px 0;
font-family: 'DM Sans', sans-serif;
font-size: .875rem;
color: var(--text-dark);
width: 100%;
}
.inv-search-box input::placeholder {
color: var(--text-muted);
}
/* ── department DROPDOWN ── */
.inv-department-wrap {
position: relative;
flex: 1;
min-width: 210px;
max-width: 280px;
}
@@media (max-width: 768px) {
.inv-department-wrap {
max-width: 100%;
}
}
.inv-dep-trigger {
display: flex;
align-items: center;
justify-content: space-between;
gap: 8px;
height: 100%;
min-height: 40px;
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
padding: 8px 12px;
background: #fff;
cursor: pointer;
user-select: none;
font-family: 'DM Sans', sans-serif;
font-size: .875rem;
transition: border-color .2s;
}
.inv-dep-trigger:hover, .inv-dep-trigger.open {
border-color: var(--teal-mid);
}
.inv-dep-left {
display: flex;
align-items: center;
gap: 8px;
overflow: hidden;
color: var(--text-dark);
}
.inv-dep-left i {
color: var(--text-muted);
font-size: .8rem;
flex-shrink: 0;
}
.inv-dep-lbl {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.inv-dep-caret {
color: var(--text-muted);
font-size: .72rem;
flex-shrink: 0;
transition: transform .2s;
}
.inv-dep-trigger.open .inv-dep-caret {
transform: rotate(180deg);
}
.inv-dep-dropdown {
display: none;
position: absolute;
top: calc(100% + 5px);
left: 0;
right: 0;
z-index: 1000;
background: #fff;
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
box-shadow: var(--shadow-drop);
overflow: hidden;
}
.inv-dep-dropdown.open {
display: flex;
flex-direction: column;
}
.inv-dep-searchbox {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 12px;
border-bottom: 1px solid var(--border);
}
.inv-dep-searchbox i {
color: var(--text-muted);
font-size: .8rem;
flex-shrink: 0;
}
.inv-dep-searchbox input {
border: none;
outline: none;
background: transparent;
font-family: 'DM Sans', sans-serif;
font-size: .85rem;
color: var(--text-dark);
width: 100%;
}
.inv-dep-searchbox input::placeholder {
color: var(--text-muted);
}
.inv-dep-list {
max-height: 250px;
overflow-y: auto;
overscroll-behavior: contain;
}
.inv-dep-list::-webkit-scrollbar {
width: 4px;
}
.inv-dep-list::-webkit-scrollbar-thumb {
background: var(--border);
border-radius: 4px;
}
.inv-dep-opt {
display: flex;
align-items: center;
gap: 8px;
padding: 9px 12px;
cursor: pointer;
font-size: .85rem;
color: var(--text-dark);
transition: background .15s;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.inv-dep-opt i {
color: var(--text-muted);
font-size: .78rem;
flex-shrink: 0;
}
.inv-dep-opt:hover {
background: var(--teal-pale);
}
.inv-dep-opt.active {
background: var(--teal-pale);
color: var(--teal-dark);
font-weight: 600;
}
.inv-dep-opt.active i {
color: var(--teal-mid);
}
.inv-dep-empty {
padding: 14px 12px;
font-size: .85rem;
color: var(--text-muted);
text-align: center;
}
/* ── FILTER RIGHT ────────────────────────── */
.inv-filter-right {
display: flex;
align-items: center;
gap: 10px;
margin-left: auto;
flex-shrink: 0;
}
@@media (max-width: 768px) {
.inv-filter-right {
margin-left: 0;
width: 100%;
}
}
.inv-pgsz-lbl {
font-size: .8rem;
color: var(--text-muted);
font-weight: 500;
}
.inv-pgsz-sel {
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
padding: 8px 10px;
background: #fff;
font-family: 'DM Sans', sans-serif;
font-size: .875rem;
color: var(--text-dark);
cursor: pointer;
outline: none;
transition: border-color .2s;
}
.inv-pgsz-sel:focus {
border-color: var(--teal-mid);
}
.inv-result-count {
font-size: .8rem;
font-weight: 600;
background: var(--teal-pale);
color: var(--teal-dark);
padding: 6px 14px;
border-radius: 50px;
white-space: nowrap;
}
/* ── CARD GRID ───────────────────────────── */
.inv-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 18px;
min-height: 220px;
}
@@media (max-width: 768px) {
.inv-grid {
grid-template-columns: 1fr;
}
}
@@media (min-width: 769px) and (max-width: 1100px) {
.inv-grid {
grid-template-columns: repeat(2,1fr);
}
}
/* ── CARD ────────────────────────────────── */
.inv-card {
background: var(--card-bg);
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
border: 1px solid var(--border);
overflow: hidden;
display: flex;
flex-direction: column;
transition: box-shadow .25s, transform .25s;
}
.inv-card:hover {
box-shadow: var(--shadow-hover);
transform: translateY(-2px);
}
.inv-card-hd {
background: linear-gradient(135deg, var(--teal-dark), var(--teal-mid));
padding: 14px 16px 12px;
}
.inv-card-code {
font-size: .7rem;
color: rgba(255,255,255,.62);
font-weight: 600;
letter-spacing: .06em;
text-transform: uppercase;
margin-bottom: 3px;
}
.inv-card-name {
font-family: 'Space Grotesk', sans-serif;
font-size: 1rem;
font-weight: 700;
color: #fff;
line-height: 1.25;
word-break: break-word;
}
.inv-card-email {
font-size: .77rem;
color: rgba(255,255,255,.68);
margin-top: 5px;
display: flex;
align-items: flex-start;
gap: 5px;
word-break: break-all;
}
.inv-card-email i {
margin-top: 2px;
flex-shrink: 0;
}
.inv-card-body {
padding: 14px 16px;
flex: 1;
display: flex;
flex-direction: column;
gap: 12px;
}
.inv-agg-row {
display: flex;
gap: 8px;
}
.inv-agg-badge {
flex: 1;
background: var(--teal-pale);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
padding: 9px 11px;
display: flex;
flex-direction: column;
gap: 3px;
}
.inv-agg-lbl {
font-size: .67rem;
text-transform: uppercase;
letter-spacing: .06em;
color: var(--text-muted);
font-weight: 700;
display: flex;
align-items: center;
gap: 4px;
}
.inv-agg-val {
font-size: .83rem;
color: var(--teal-dark);
font-weight: 600;
line-height: 1.45;
word-break: break-word;
}
.inv-item-lbl {
font-size: .67rem;
text-transform: uppercase;
letter-spacing: .06em;
color: var(--text-muted);
font-weight: 700;
display: flex;
align-items: center;
gap: 4px;
margin-bottom: 6px;
}
.inv-item-tags {
display: flex;
flex-wrap: wrap;
gap: 5px;
}
.inv-item-tag {
display: inline-block;
padding: 3px 9px;
background: #f3f8f9;
border: 1px solid var(--border);
border-radius: 4px;
font-size: .78rem;
color: var(--text-dark);
max-width: 100%;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.inv-item-more {
display: inline-block;
padding: 3px 9px;
background: var(--teal-pale);
border: 1px solid var(--border);
border-radius: 4px;
font-size: .78rem;
color: var(--teal-dark);
font-weight: 600;
}
.inv-card-ft {
padding: 10px 16px 14px;
display: flex;
gap: 8px;
border-top: 1px solid var(--border);
}
.inv-btn {
flex: 1;
padding: 9px 14px;
border-radius: var(--radius-sm);
border: none;
cursor: pointer;
font-family: 'DM Sans', sans-serif;
font-size: .82rem;
font-weight: 600;
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
transition: all .2s;
}
.inv-btn-primary {
background: var(--teal-mid);
color: #fff;
}
.inv-btn-primary:hover {
background: var(--teal-dark);
}
.inv-btn-outline {
background: transparent;
color: var(--teal-dark);
border: 1.5px solid var(--teal-mid);
}
.inv-btn-outline:hover {
background: var(--teal-pale);
}
/* ── STATE / SPINNER ─────────────────────── */
.inv-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 64px 20px;
gap: 14px;
}
.inv-state i {
font-size: 2.4rem;
color: var(--border);
}
.inv-state p {
color: var(--text-muted);
font-size: .9rem;
}
.inv-spinner {
width: 34px;
height: 34px;
border: 3px solid var(--border);
border-top-color: var(--teal-mid);
border-radius: 50%;
animation: cvspin .7s linear infinite;
}
@@keyframes cvspin {
to {
transform: rotate(360deg);
}
}
/* ── PAGINATION ──────────────────────────── */
.inv-pagination {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-top: 20px;
padding: 14px 18px;
background: #fff;
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.inv-pg-info {
font-size: .82rem;
color: var(--text-muted);
}
.inv-pg-btns {
display: flex;
gap: 4px;
flex-wrap: wrap;
}
.inv-pg-btn {
min-width: 36px;
height: 36px;
padding: 0 8px;
display: flex;
align-items: center;
justify-content: center;
border-radius: var(--radius-sm);
border: 1.5px solid var(--border);
background: #fff;
color: var(--text-dark);
font-family: 'DM Sans', sans-serif;
font-size: .85rem;
font-weight: 600;
cursor: pointer;
transition: all .18s;
}
.inv-pg-btn:hover:not(:disabled) {
border-color: var(--teal-mid);
color: var(--teal-mid);
background: var(--teal-pale);
}
.inv-pg-btn.active {
background: var(--teal-mid);
border-color: var(--teal-mid);
color: #fff;
}
.inv-pg-btn:disabled {
opacity: .35;
cursor: default;
}
}
/* ── CV PLACEHOLDER PANEL ───────────────────── */
.inv-placeholder {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 80px 20px;
gap: 14px;
background: #fff;
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.inv-placeholder i {
font-size: 2.8rem;
color: var(--border);
}
.inv-placeholder h3 {
font-family: 'Space Grotesk', sans-serif;
font-size: 1.1rem;
color: var(--text-dark);
}
.inv-placeholder p {
font-size: .875rem;
color: var(--text-muted);
}
/* ──TABLE PLACEHOLDER PANEL ───────────────────── */
.tb-placeholder {
display: flex;
flex-direction: column;
/* align-items: center; */
padding: 20px 20px;
gap: 14px;
background: #fff;
border-radius: var(--radius-lg);
box-shadow: var(--shadow-card);
}
.tb-placeholder i {
color: var(--border);
}
.tb-placeholder h3 {
font-family: 'Space Grotesk', sans-serif;
color: var(--text-dark);
}
.tb-placeholder p {
font-size: .875rem;
color: var(--text-muted);
}
.vis-dialog {
max-width: 92vw;
width: 750px;
margin: 40px auto;
}
.vis-content {
border: none;
border-radius: 16px;
overflow: hidden;
box-shadow: 0 20px 60px rgba(0,0,0,.18), 0 4px 16px rgba(0,0,0,.10);
}
/* ── Header ─────────────────────────────────────────── */
.vis-header {
background: linear-gradient(135deg, #0d5c63 0%, #0e7c86 55%, #18a8b5 100%);
padding: 20px 24px 18px;
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
overflow: hidden;
}
.vis-header::before {
content: '';
position: absolute;
inset: 0;
background: url("data:image/svg+xml,%3Csvg width='60' height='60' viewBox='0 0 60 60' xmlns='http://www.w3.org/2000/svg'%3E%3Cg fill='none'%3E%3Cg fill='%23ffffff' fill-opacity='0.04'%3E%3Cpath d='M36 34v-4h-2v4h-4v2h4v4h2v-4h4v-2h-4zm0-30V0h-2v4h-4v2h4v4h2V6h4V4h-4zM6 34v-4H4v4H0v2h4v4h2v-4h4v-2H6zM6 4V0H4v4H0v2h4v4h2V6h4V4H6z'/%3E%3C/g%3E%3C/g%3E%3C/svg%3E");
pointer-events: none;
}
.vis-header-inner {
display: flex;
align-items: center;
gap: 14px;
position: relative;
z-index: 1;
}
.vis-header-icon {
width: 42px;
height: 42px;
background: rgba(255,255,255,.15);
border-radius: 10px;
display: flex;
align-items: center;
justify-content: center;
font-size: 1.1rem;
color: #fff;
flex-shrink: 0;
}
.vis-title {
font-family: 'Space Grotesk', sans-serif;
font-size: 1.15rem;
font-weight: 700;
color: #fff;
margin: 0;
line-height: 1.2;
}
.vis-subtitle {
font-size: .78rem;
color: rgba(255,255,255,.72);
margin: 3px 0 0;
}
.vis-close {
position: relative;
z-index: 1;
width: 34px;
height: 34px;
background: rgba(255,255,255,.12);
border: 1px solid rgba(255,255,255,.2);
border-radius: 8px;
color: rgba(255,255,255,.85);
display: flex;
align-items: center;
justify-content: center;
cursor: pointer;
transition: background .18s;
font-size: .85rem;
flex-shrink: 0;
}
.vis-close:hover {
background: rgba(255,255,255,.22);
color: #fff;
}
/* ── Body ────────────────────────────────────────────── */
.vis-body {
padding: 20px 24px 8px;
background: #f0f6f7;
}
/* ── Item info card ──────────────────────────────────── */
.vis-item-card {
background: #fff;
border-radius: 12px;
border: 1px solid #d6eaec;
padding: 14px 18px;
margin-bottom: 14px;
box-shadow: 0 2px 8px rgba(13,92,99,.07);
}
.vis-item-grid {
display: flex;
gap: 0;
flex-wrap: wrap;
}
.vis-item-field {
flex: 1;
min-width: 160px;
padding: 4px 16px 4px 0;
border-right: 1px solid #d6eaec;
margin-right: 16px;
}
.vis-item-field:last-child {
border-right: none;
margin-right: 0;
}
.vis-field-lbl {
display: flex;
align-items: center;
gap: 5px;
font-size: .67rem;
text-transform: uppercase;
letter-spacing: .06em;
color: #6b8890;
font-weight: 700;
margin-bottom: 4px;
}
.vis-field-lbl i {
font-size: .65rem;
}
.vis-field-val {
font-family: 'Space Grotesk', sans-serif;
font-size: .95rem;
font-weight: 700;
color: #0d5c63;
line-height: 1.3;
word-break: break-word;
}
.vis-sel-count {
font-size: 1.3rem;
color: #c0392b;
}
/* ── Toolbar ─────────────────────────────────────────── */
.vis-toolbar {
display: flex;
align-items: center;
gap: 10px;
margin-bottom: 12px;
}
/* ── Buttons ─────────────────────────────────────────── */
.vis-btn {
display: inline-flex;
align-items: center;
gap: 7px;
padding: 8px 18px;
border-radius: 8px;
border: none;
font-family: 'DM Sans', sans-serif;
font-size: .84rem;
font-weight: 700;
cursor: pointer;
transition: all .18s;
white-space: nowrap;
}
.vis-btn-primary {
background: #0e7c86;
color: #fff;
box-shadow: 0 2px 8px rgba(14,124,134,.3);
}
.vis-btn-primary:hover {
background: #0d5c63;
transform: translateY(-1px);
box-shadow: 0 4px 14px rgba(14,124,134,.35);
}
.vis-btn-success {
background: #28a745;
color: #fff;
box-shadow: 0 2px 8px rgba(40,167,69,.25);
}
.vis-btn-success:hover {
background: #218838;
transform: translateY(-1px);
}
.vis-btn-ghost {
background: #fff;
color: #0d5c63;
border: 1.5px solid #d6eaec;
}
.vis-btn-ghost:hover {
background: #e6f7f8;
border-color: #0e7c86;
}
/* ── Table wrapper ───────────────────────────────────── */
.vis-table-wrap {
background: #fff;
border-radius: 12px;
border: 1px solid #d6eaec;
overflow: hidden;
box-shadow: 0 2px 8px rgba(13,92,99,.07);
overflow-x: auto;
}
.vis-table {
width: 100% !important;
font-family: 'DM Sans', sans-serif;
font-size: .84rem;
border-collapse: collapse;
}
.vis-table thead tr {
background: linear-gradient(135deg, #1a3a4a, #1e5468);
}
.vis-table thead th {
color: rgba(255,255,255,.88);
font-size: .7rem;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .05em;
padding: 11px 13px;
border-bottom: none !important;
white-space: nowrap;
}
.vis-th-check {
width: 40px;
text-align: center !important;
}
.vis-table tbody tr {
border-bottom: 1px solid #edf2f3;
transition: background .12s;
}
.vis-table tbody tr:last-child {
border-bottom: none;
}
.vis-table tbody tr:hover {
background: #f0f6f7;
}
.vis-table tbody tr.selected-row {
background: #e6f7f8;
}
.vis-table tbody td {
padding: 10px 13px;
color: #1a2e35;
vertical-align: middle;
}
/* ── Checkbox styling ────────────────────────────────── */
.vis-checkbox,
.vis-table .select-CanvassItem-checkbox,
.vis-table .select-all-CanvassItem-checkbox,
#selectAllHeaderCheckbox {
width: 16px;
height: 16px;
accent-color: #0e7c86;
cursor: pointer;
}
/* ── Footer ──────────────────────────────────────────── */
.vis-footer {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 10px;
padding: 14px 24px 18px;
background: #f0f6f7;
border-top: 1px solid #d6eaec;
}
/* ── Deletable item rows (light theme) ───────────── */
.inv-item-rows-wrap {
display: flex;
flex-direction: column;
gap: 4px;
}
.inv-item-row {
display: flex;
align-items: center;
gap: 6px;
padding: 5px 6px 5px 10px;
border-radius: 6px;
background: #f3f8f9;
border: 1px solid var(--border);
transition: background .15s, border-color .15s;
}
.inv-item-row:hover {
background: var(--teal-pale);
border-color: var(--teal-mid);
}
.inv-item-name {
flex: 1;
font-size: .78rem;
color: var(--text-dark); /* dark text for light card */
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.inv-item-del {
flex-shrink: 0;
display: flex;
align-items: center;
justify-content: center;
width: 22px;
height: 22px;
border: none;
border-radius: 5px;
background: transparent;
color: #e53e3e;
cursor: pointer;
font-size: .68rem;
opacity: 0;
transition: opacity .15s, background .15s;
}
.inv-item-row:hover .inv-item-del {
opacity: 1;
}
.inv-item-del:hover {
background: rgba(229,62,62,.12);
}
.inv-items-more-btn {
display: inline-block;
margin-top: 2px;
border: none;
background: none;
color: var(--teal-mid);
font-size: .75rem;
font-weight: 600;
cursor: pointer;
padding: 3px 8px;
border-radius: 4px;
transition: background .15s;
}
.inv-items-more-btn:hover {
background: var(--teal-pale);
}
#invPerItemTable .btn {
padding: 2px 5px !important;
line-height: 1 !important;
}
/* ── Collapsible description ── */
.inv-desc-wrap {
border: 1px solid var(--border);
border-radius: var(--radius-sm);
overflow: hidden;
}
.inv-desc-header {
display: flex;
align-items: center;
justify-content: space-between;
padding: 8px 11px;
background: #f8fbfc;
cursor: pointer;
user-select: none;
}
.inv-desc-caret {
font-size: .7rem;
color: var(--text-muted);
transition: transform .2s;
}
.inv-desc-caret.open {
transform: rotate(180deg);
}
.inv-desc-body {
padding: 9px 11px;
font-size: .82rem;
color: var(--text-dark);
line-height: 1.5;
border-top: 1px solid var(--border);
display: none;
}
.inv-desc-body.open {
display: block;
}
.inv-card-sub {
font-size: .77rem;
color: rgba(255,255,255,.65) !Important;
margin-top: 4px;
display: flex;
align-items: center;
gap: 5px;
}
/* ── Card header icon ── */
.inv-card-icon-wrap {
width: 36px;
height: 36px;
flex-shrink: 0;
border-radius: 10px;
background: var(--teal-pale);
display: flex;
align-items: center;
justify-content: center;
font-size: 16px;
color: var(--teal-mid);
}
.inv-card-icon-wrap.inv-card-icon-low {
background: #FAECE7;
color: #993C1D;
}
/* ── Card header meta rows ── */
.inv-card-meta-row {
display: flex;
gap: 12px;
flex-wrap: wrap;
font-size: 11px;
color: rgba(255,255,255,.65);
margin-top: 3px;
}
.inv-card-meta-row i {
font-size: 10px;
margin-right: 3px;
}
/* ── Stock badges ── */
.inv-stock-badge {
flex-shrink: 0;
font-size: 11px;
font-weight: 600;
padding: 3px 10px;
border-radius: 50px;
white-space: nowrap;
align-self: flex-start;
}
.inv-stock-ok {
background: rgba(255,255,255,.18);
color: #fff;
}
.inv-stock-low {
background: #FAECE7;
color: #993C1D;
}
.inv-stock-empty {
background: rgba(229,62,62,.15);
color: #ff5c5c;
}
/* ── Stats grid — 4-column ── */
.inv-stats-grid {
display: grid;
grid-template-columns: 1fr 1fr 1fr;
gap: 1px;
background: var(--border);
}
.inv-stat-cell {
padding: 10px 12px;
background: var(--card-bg);
display: flex;
flex-direction: column;
gap: 3px;
}
.inv-stat-lbl {
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: .05em;
display: flex;
align-items: center;
gap: 4px;
white-space: nowrap;
}
.inv-stat-lbl i {
font-size: 11px;
}
.inv-stat-val {
font-size: 17px;
font-weight: 700;
line-height: 1.2;
}
/* Colour coding per metric */
.inv-stat-in .inv-stat-lbl,
.inv-stat-in .inv-stat-val {
color: var(--teal-mid);
}
.inv-stat-out .inv-stat-lbl,
.inv-stat-out .inv-stat-val {
color: #c53030;
}
.inv-stat-hand .inv-stat-lbl,
.inv-stat-hand .inv-stat-val {
color: #185FA5;
}
.inv-stat-rem .inv-stat-lbl,
.inv-stat-rem .inv-stat-val {
color: #854F0B;
}
/* ── Progress bar ── */
.inv-progress-wrap {
padding: 10px 14px 8px;
border-top: 1px solid var(--border);
}
.inv-progress-labels {
display: flex;
justify-content: space-between;
font-size: 11px;
color: var(--text-muted);
margin-bottom: 5px;
}
.inv-progress-track {
height: 5px;
border-radius: 99px;
background: var(--border);
overflow: hidden;
}
.inv-progress-fill {
height: 100%;
border-radius: 99px;
background: var(--teal-mid);
transition: width .4s ease;
}
.inv-progress-fill.inv-progress-low {
background: #c53030;
}
/* ── Item description row ── */
.inv-item-desc-row {
display: flex;
align-items: center;
gap: 8px;
padding: 8px 14px;
border-top: 1px solid var(--border);
font-size: 12px;
}
.inv-item-desc-lbl {
font-size: 10px;
font-weight: 700;
color: var(--text-muted);
text-transform: uppercase;
letter-spacing: .05em;
white-space: nowrap;
display: flex;
align-items: center;
gap: 4px;
}
.inv-item-desc-name {
flex: 1;
color: var(--text-dark);
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.inv-item-desc-qty {
flex-shrink: 0;
font-weight: 600;
color: var(--teal-dark);
display: flex;
align-items: center;
gap: 4px;
}
.inv-item-desc-qty i {
font-size: 11px;
}
/* ── Transact button ── */
.btn-transact {
width: 100%;
}
</style>