/* * 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%; } }