336 lines
8.7 KiB
CSS
336 lines
8.7 KiB
CSS
/*
|
|
* Catalogue skin for the parts labelling pages.
|
|
*
|
|
* Deliberately denser and cooler-toned than the rest of LIM: this is a
|
|
* reference catalogue you scan hundreds of rows in, not a library of sets
|
|
* you browse by cover art. Small type, tight rows, thin rules, counts
|
|
* everywhere - the conventions old-school parts catalogues settled on
|
|
* because they work for this job.
|
|
*
|
|
* Scoped to .bl - nothing here leaks into the red LEGO-themed pages.
|
|
* These are our own colours and layout, not a copy of anyone's site.
|
|
*
|
|
* Created by: Jess Rogerson (yelling commands at Claude.AI)
|
|
*/
|
|
|
|
.bl {
|
|
--bl-navy: #0b3c5d;
|
|
--bl-navy-dark: #072a41;
|
|
--bl-blue: #1e6ba8;
|
|
--bl-blue-light: #e8f1f8;
|
|
--bl-amber: #f0a500;
|
|
--bl-line: #c3cdd6;
|
|
--bl-line-soft: #e2e8ed;
|
|
--bl-bg: #f4f6f8;
|
|
--bl-row-alt: #fafbfc;
|
|
--bl-text: #1f2d3a;
|
|
--bl-muted: #6b7b8a;
|
|
|
|
font-size: 13px;
|
|
color: var(--bl-text);
|
|
}
|
|
|
|
.bl a { color: var(--bl-blue); text-decoration: none; }
|
|
.bl a:hover { text-decoration: underline; }
|
|
|
|
/* ---------------------------------------------------------- title bar */
|
|
|
|
.bl-bar {
|
|
background: linear-gradient(180deg, var(--bl-navy) 0%, var(--bl-navy-dark) 100%);
|
|
color: #fff;
|
|
padding: 8px 12px;
|
|
border-radius: 3px 3px 0 0;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: space-between;
|
|
gap: 12px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.bl-bar h1,
|
|
.bl-bar h2 {
|
|
font-size: 15px;
|
|
font-weight: 700;
|
|
margin: 0;
|
|
letter-spacing: .2px;
|
|
color: #fff;
|
|
}
|
|
|
|
.bl-bar .bl-sub { color: #b9d2e4; font-size: 12px; }
|
|
|
|
/* --------------------------------------------------------- navigation */
|
|
|
|
.bl-tabs {
|
|
display: flex;
|
|
gap: 1px;
|
|
background: var(--bl-navy-dark);
|
|
padding: 0 6px;
|
|
flex-wrap: wrap;
|
|
}
|
|
|
|
.bl-tabs a {
|
|
color: #cfe1ee;
|
|
padding: 6px 12px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
border-radius: 3px 3px 0 0;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.bl-tabs a:hover { background: #10486c; color: #fff; text-decoration: none; }
|
|
.bl-tabs a.active { background: var(--bl-bg); color: var(--bl-navy); }
|
|
|
|
.bl-crumb {
|
|
background: var(--bl-blue-light);
|
|
border: 1px solid var(--bl-line);
|
|
border-top: 0;
|
|
padding: 5px 10px;
|
|
font-size: 12px;
|
|
color: var(--bl-muted);
|
|
}
|
|
|
|
.bl-crumb a { font-weight: 600; }
|
|
.bl-crumb .sep { color: #9fb3c3; margin: 0 5px; }
|
|
|
|
/* ------------------------------------------------------------- panels */
|
|
|
|
.bl-panel {
|
|
background: #fff;
|
|
border: 1px solid var(--bl-line);
|
|
border-radius: 3px;
|
|
margin-bottom: 12px;
|
|
}
|
|
|
|
.bl-panel > .bl-panel-head {
|
|
background: var(--bl-blue-light);
|
|
border-bottom: 1px solid var(--bl-line);
|
|
padding: 6px 10px;
|
|
font-weight: 700;
|
|
font-size: 12px;
|
|
text-transform: uppercase;
|
|
letter-spacing: .4px;
|
|
color: var(--bl-navy);
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
gap: 8px;
|
|
}
|
|
|
|
.bl-panel > .bl-panel-body { padding: 10px; }
|
|
.bl-panel > .bl-panel-body.tight { padding: 0; }
|
|
|
|
/* -------------------------------------------------------------- table */
|
|
|
|
.bl-table { width: 100%; border-collapse: collapse; font-size: 12px; }
|
|
|
|
.bl-table thead th {
|
|
background: #dde5ec;
|
|
border-bottom: 1px solid var(--bl-line);
|
|
padding: 5px 8px;
|
|
text-align: left;
|
|
font-weight: 700;
|
|
font-size: 11px;
|
|
text-transform: uppercase;
|
|
letter-spacing: .3px;
|
|
color: var(--bl-navy);
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.bl-table tbody td {
|
|
padding: 4px 8px;
|
|
border-bottom: 1px solid var(--bl-line-soft);
|
|
vertical-align: middle;
|
|
}
|
|
|
|
.bl-table tbody tr:nth-child(even) { background: var(--bl-row-alt); }
|
|
.bl-table tbody tr:hover { background: #fff7e0; }
|
|
|
|
.bl-table .num {
|
|
font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
|
|
font-size: 11px;
|
|
color: var(--bl-navy);
|
|
}
|
|
|
|
.bl-table .thumb {
|
|
width: 40px; height: 32px;
|
|
object-fit: contain;
|
|
background: #fff;
|
|
border: 1px solid var(--bl-line-soft);
|
|
}
|
|
|
|
.bl-name { font-weight: 600; }
|
|
.bl-dim { color: var(--bl-muted); font-weight: 400; }
|
|
|
|
/* --------------------------------------------------------------- tree */
|
|
|
|
.bl-tree { font-size: 12px; }
|
|
|
|
.bl-tree a {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
gap: 6px;
|
|
padding: 3px 10px;
|
|
color: var(--bl-text);
|
|
border-bottom: 1px solid var(--bl-line-soft);
|
|
}
|
|
|
|
.bl-tree a:hover { background: var(--bl-blue-light); text-decoration: none; }
|
|
|
|
.bl-tree a.active {
|
|
background: var(--bl-navy);
|
|
color: #fff;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.bl-tree a.active .bl-count { color: #cfe1ee; }
|
|
.bl-tree .child { padding-left: 24px; font-size: 11.5px; }
|
|
.bl-tree .bl-count { color: var(--bl-muted); font-variant-numeric: tabular-nums; }
|
|
|
|
.bl-swatch {
|
|
display: inline-block;
|
|
width: 9px; height: 9px;
|
|
border-radius: 2px;
|
|
margin-right: 5px;
|
|
vertical-align: baseline;
|
|
}
|
|
|
|
/* ------------------------------------------------------------ buttons */
|
|
|
|
.bl-btn {
|
|
display: inline-block;
|
|
background: linear-gradient(180deg, #fff 0%, #e9eef2 100%);
|
|
border: 1px solid var(--bl-line);
|
|
border-radius: 3px;
|
|
padding: 4px 10px;
|
|
font-size: 12px;
|
|
font-weight: 600;
|
|
color: var(--bl-navy);
|
|
cursor: pointer;
|
|
white-space: nowrap;
|
|
}
|
|
|
|
.bl-btn:hover { background: #fff; border-color: var(--bl-blue); text-decoration: none; }
|
|
.bl-btn:disabled { opacity: .55; cursor: not-allowed; }
|
|
|
|
.bl-btn-primary {
|
|
background: linear-gradient(180deg, #2b82c4 0%, var(--bl-blue) 100%);
|
|
border-color: #15567f;
|
|
color: #fff;
|
|
}
|
|
.bl-btn-primary:hover { background: #2b82c4; color: #fff; }
|
|
|
|
.bl-btn-go {
|
|
background: linear-gradient(180deg, #ffc23d 0%, var(--bl-amber) 100%);
|
|
border-color: #c98700;
|
|
color: #3d2a00;
|
|
}
|
|
.bl-btn-go:hover { background: #ffc23d; color: #3d2a00; }
|
|
|
|
.bl-btn-sm { padding: 2px 7px; font-size: 11px; }
|
|
|
|
/* ------------------------------------------------------------- fields */
|
|
|
|
.bl input[type="text"],
|
|
.bl input[type="search"],
|
|
.bl input[type="number"],
|
|
.bl input[type="url"],
|
|
.bl select,
|
|
.bl textarea {
|
|
border: 1px solid var(--bl-line);
|
|
border-radius: 3px;
|
|
padding: 3px 6px;
|
|
font-size: 12px;
|
|
background: #fff;
|
|
color: var(--bl-text);
|
|
}
|
|
|
|
.bl input:focus, .bl select:focus, .bl textarea:focus {
|
|
outline: 0;
|
|
border-color: var(--bl-blue);
|
|
box-shadow: 0 0 0 2px rgba(30, 107, 168, .15);
|
|
}
|
|
|
|
.bl label.fld { display: block; font-size: 11px; font-weight: 700;
|
|
color: var(--bl-muted); text-transform: uppercase;
|
|
letter-spacing: .3px; margin-bottom: 2px; }
|
|
|
|
.bl .bl-filters { display: flex; flex-wrap: wrap; gap: 8px; align-items: flex-end; }
|
|
|
|
/* -------------------------------------------------------------- stats */
|
|
|
|
.bl-stats { display: flex; flex-wrap: wrap; gap: 0; }
|
|
|
|
.bl-stat {
|
|
flex: 1 1 110px;
|
|
padding: 8px 10px;
|
|
border-right: 1px solid var(--bl-line-soft);
|
|
}
|
|
.bl-stat:last-child { border-right: 0; }
|
|
.bl-stat .v { font-size: 18px; font-weight: 700; color: var(--bl-navy);
|
|
font-variant-numeric: tabular-nums; line-height: 1.1; }
|
|
.bl-stat .k { font-size: 10.5px; text-transform: uppercase; letter-spacing: .4px;
|
|
color: var(--bl-muted); font-weight: 600; }
|
|
|
|
/* ----------------------------------------------------------- progress */
|
|
|
|
.bl-progress {
|
|
height: 16px;
|
|
background: #dde5ec;
|
|
border: 1px solid var(--bl-line);
|
|
border-radius: 3px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.bl-progress > span {
|
|
display: block;
|
|
height: 100%;
|
|
background: linear-gradient(180deg, #43a3e0 0%, var(--bl-blue) 100%);
|
|
width: 0;
|
|
transition: width .4s ease;
|
|
}
|
|
|
|
/* -------------------------------------------------------------- misc */
|
|
|
|
.bl-tag {
|
|
display: inline-block;
|
|
font-size: 10px;
|
|
font-weight: 700;
|
|
text-transform: uppercase;
|
|
letter-spacing: .3px;
|
|
padding: 1px 5px;
|
|
border-radius: 2px;
|
|
background: #dde5ec;
|
|
color: var(--bl-navy);
|
|
}
|
|
|
|
.bl-tag.ok { background: #d6f0da; color: #1d6b2c; }
|
|
.bl-tag.warn { background: #fdeccc; color: #8a5a00; }
|
|
.bl-tag.err { background: #f8d7da; color: #8a1c24; }
|
|
|
|
.bl-pager { display: flex; gap: 4px; align-items: center;
|
|
justify-content: center; padding: 8px; font-size: 12px; }
|
|
.bl-pager .bl-btn.on { background: var(--bl-navy); color: #fff;
|
|
border-color: var(--bl-navy-dark); }
|
|
|
|
.bl-empty { padding: 28px 12px; text-align: center; color: var(--bl-muted); }
|
|
|
|
.bl-tape-preview {
|
|
background: repeating-linear-gradient(45deg, #eef2f5, #eef2f5 8px,
|
|
#e4eaef 8px, #e4eaef 16px);
|
|
border: 1px solid var(--bl-line);
|
|
border-radius: 3px;
|
|
padding: 10px;
|
|
overflow-x: auto;
|
|
}
|
|
.bl-tape-preview img {
|
|
display: block;
|
|
background: #fff;
|
|
box-shadow: 0 1px 4px rgba(0,0,0,.25);
|
|
}
|
|
|
|
@media (max-width: 767px) {
|
|
.bl { font-size: 12px; }
|
|
.bl-tabs a { padding: 6px 9px; }
|
|
.bl-stat { flex-basis: 50%; }
|
|
}
|