NonInventPurchasingSystem/CPRNIMS.WebApps/wwwroot/css/Canvass/ForCanvass.css

514 lines
12 KiB
CSS

:root {
--teal-dark: #0d5c63;
--teal-mid: #0e7c86;
--teal-light: #18a8b5;
--teal-pale: #e6f7f8;
--accent: #ff5c5c;
--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);
}
* {
box-sizing: border-box;
margin: 0;
padding: 0;
}
body, .canvass-wrapper {
font-family: 'DM Sans', sans-serif;
background: var(--bg-page);
color: var(--text-dark);
}
/* ── HEADER ─────────────────────────────────────────── */
.cv-header {
background: linear-gradient(135deg, var(--teal-dark) 0%, var(--teal-mid) 55%, var(--teal-light) 100%);
padding: 28px 32px 24px;
border-radius: var(--radius-lg) var(--radius-lg) 0 0;
position: relative;
overflow: hidden;
}
.cv-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");
}
.cv-header-inner {
position: relative;
z-index: 1;
display: flex;
align-items: flex-start;
gap: 14px;
}
.cv-header-icon {
font-size: 2rem;
color: rgba(255,255,255,.85);
margin-top: 2px;
}
.cv-header h1 {
font-family: 'Space Grotesk', sans-serif;
font-size: 1.75rem;
font-weight: 700;
color: #fff;
line-height: 1.2;
}
.cv-header p {
font-size: .875rem;
color: rgba(255,255,255,.75);
margin-top: 4px;
}
/* ── OUTER WRAPPER ───────────────────────────────────── */
.canvass-wrapper {
max-width: 1400px;
margin: 0 auto;
padding: 24px 20px 40px;
}
/* ── TAB NAV ─────────────────────────────────────────── */
.cv-tabs {
display: flex;
gap: 6px;
background: #fff;
border-radius: var(--radius-lg);
padding: 6px;
box-shadow: var(--shadow-card);
margin-bottom: 20px;
overflow-x: auto;
}
.cv-tab-btn {
flex: 1;
min-width: 160px;
display: flex;
align-items: center;
justify-content: center;
gap: 8px;
padding: 10px 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;
}
.cv-tab-btn i {
font-size: .95rem;
}
.cv-tab-btn:hover {
background: var(--teal-pale);
color: var(--teal-dark);
}
.cv-tab-btn.active {
background: var(--teal-mid);
color: #fff;
box-shadow: 0 2px 8px rgba(14,124,134,.35);
}
/* ── TAB PANELS ─────────────────────────────────────── */
.cv-panel {
display: none;
}
.cv-panel.active {
display: block;
}
/* ── FILTER BAR ─────────────────────────────────────── */
.cv-filters {
display: flex;
flex-wrap: wrap;
gap: 10px;
align-items: center;
margin-bottom: 18px;
}
.cv-search-box {
display: flex;
align-items: center;
background: #fff;
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
padding: 0 12px;
gap: 8px;
flex: 1;
min-width: 160px;
max-width: 260px;
transition: border-color .2s;
}
.cv-search-box:focus-within {
border-color: var(--teal-mid);
}
.cv-search-box i {
color: var(--text-muted);
font-size: .85rem;
}
.cv-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%;
}
.cv-search-box input::placeholder {
color: var(--text-muted);
}
.cv-page-size {
display: flex;
align-items: center;
gap: 8px;
margin-left: auto;
}
.cv-page-size label {
font-size: .8rem;
color: var(--text-muted);
font-weight: 500;
}
.cv-page-size select {
border: 1.5px solid var(--border);
border-radius: var(--radius-sm);
padding: 8px 12px;
font-family: 'DM Sans', sans-serif;
font-size: .875rem;
color: var(--text-dark);
cursor: pointer;
outline: none;
background: #fff;
transition: border-color .2s;
}
.cv-page-size select:focus {
border-color: var(--teal-mid);
}
.cv-result-count {
font-size: .8rem;
color: var(--text-muted);
font-weight: 500;
white-space: nowrap;
}
/* ── SUPPLIER PILLS ─────────────────────────────────── */
.cv-supplier-pills {
display: flex;
flex-wrap: wrap;
gap: 8px;
margin-bottom: 18px;
}
.cv-pill {
display: inline-flex;
align-items: center;
gap: 6px;
padding: 6px 14px;
border-radius: 50px;
border: 1.5px solid var(--border);
background: #fff;
color: var(--text-muted);
font-size: .8rem;
font-weight: 600;
cursor: pointer;
transition: all .2s;
white-space: nowrap;
}
.cv-pill i {
font-size: .8rem;
}
.cv-pill:hover {
border-color: var(--teal-mid);
color: var(--teal-dark);
background: var(--teal-pale);
}
.cv-pill.active {
border-color: var(--teal-mid);
color: #fff;
background: var(--teal-mid);
}
/* ── CARD GRID ──────────────────────────────────────── */
.cv-grid {
display: grid;
grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
gap: 18px;
min-height: 200px;
}
/* ── SINGLE CARD ────────────────────────────────────── */
.cv-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;
}
.cv-card:hover {
box-shadow: var(--shadow-hover);
transform: translateY(-2px);
}
.cv-card-header {
background: linear-gradient(135deg, var(--teal-dark), var(--teal-mid));
padding: 14px 16px 12px;
display: flex;
justify-content: space-between;
align-items: flex-start;
gap: 8px;
}
.cv-card-header-left {
flex: 1;
min-width: 0;
}
.cv-card-supplier-code {
font-size: .72rem;
color: rgba(255,255,255,.7);
font-weight: 600;
letter-spacing: .04em;
text-transform: uppercase;
margin-bottom: 2px;
}
.cv-card-supplier-name {
font-family: 'Space Grotesk', sans-serif;
font-size: 1rem;
font-weight: 700;
color: #fff;
line-height: 1.25;
word-break: break-word;
}
.cv-card-email {
font-size: .78rem;
color: rgba(255,255,255,.7);
margin-top: 4px;
display: flex;
align-items: center;
gap: 5px;
}
.cv-card-body {
padding: 14px 16px;
flex: 1;
display: flex;
flex-direction: column;
gap: 12px;
}
.cv-agg-row {
display: flex;
gap: 8px;
}
.cv-agg-badge {
flex: 1;
background: var(--teal-pale);
border: 1px solid var(--border);
border-radius: var(--radius-sm);
padding: 8px 10px;
display: flex;
flex-direction: column;
align-items: flex-start;
gap: 2px;
}
.cv-agg-badge .label {
font-size: .68rem;
text-transform: uppercase;
letter-spacing: .05em;
color: var(--text-muted);
font-weight: 600;
}
.cv-agg-badge .value {
font-size: .82rem;
color: var(--teal-dark);
font-weight: 600;
word-break: break-all;
line-height: 1.3;
}
.cv-item-names {
font-size: .82rem;
color: var(--text-dark);
line-height: 1.55;
}
.cv-item-names .item-label {
font-size: .68rem;
text-transform: uppercase;
letter-spacing: .05em;
color: var(--text-muted);
font-weight: 600;
margin-bottom: 4px;
}
.cv-card-footer {
padding: 10px 16px 14px;
display: flex;
gap: 8px;
border-top: 1px solid var(--border);
}
.cv-btn {
flex: 1;
padding: 8px 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;
}
.cv-btn-primary {
background: var(--teal-mid);
color: #fff;
}
.cv-btn-primary:hover {
background: var(--teal-dark);
}
.cv-btn-outline {
background: transparent;
color: var(--teal-dark);
border: 1.5px solid var(--teal-mid);
}
.cv-btn-outline:hover {
background: var(--teal-pale);
}
/* ── LOADING / EMPTY ────────────────────────────────── */
.cv-state {
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
padding: 60px 20px;
gap: 12px;
}
.cv-state i {
font-size: 2.5rem;
color: var(--border);
}
.cv-state p {
color: var(--text-muted);
font-size: .9rem;
}
.cv-spinner {
width: 36px;
height: 36px;
border: 3px solid var(--border);
border-top-color: var(--teal-mid);
border-radius: 50%;
animation: spin .7s linear infinite;
}
@@keyframes spin {
to {
transform: rotate(360deg);
}
}
/* ── PAGINATION ─────────────────────────────────────── */
.cv-pagination {
display: flex;
align-items: center;
justify-content: space-between;
flex-wrap: wrap;
gap: 12px;
margin-top: 24px;
padding: 12px 0;
}
.cv-pagination-info {
font-size: .82rem;
color: var(--text-muted);
}
.cv-page-btns {
display: flex;
gap: 4px;
}
.cv-page-btn {
width: 36px;
height: 36px;
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;
}
.cv-page-btn:hover:not(:disabled) {
border-color: var(--teal-mid);
color: var(--teal-mid);
background: var(--teal-pale);
}
.cv-page-btn.active {
background: var(--teal-mid);
border-color: var(--teal-mid);
color: #fff;
}
.cv-page-btn:disabled {
opacity: .35;
cursor: default;
}