1 /* You can add global styles to this file, and also import other style files */
3 /* bootstrap CSS only -- JS bits come from ng-bootstrap */
4 @import '~bootstrap-5-css-only/css/bootstrap.min.css';
6 /* Locally served material icon fonts */
7 @import '~material-design-icons-iconfont/dist/material-design-icons.css';
9 /* BS default colors lack sufficient contrast for accessibility */
11 --blue: #0A58CA; /* $blue-600 in BS5 */
13 --bs-blue-rgb: 10,88,202;
14 --bs-primary-rgb: 10,88,202;
15 --green: #198754; /* $green ($green-500) in BS5 */
17 --bs-green-rgb: 25,135,84;
18 --bs-success-rgb: 25,135,84;
19 --cyan: #087990; /* $cyan-700 in BS5 */
21 --bs-cyan-rgb: 8,121,144;
22 --bs-info-rgb: 8,121,144;
25 /** BS default fonts are huge */
26 body, .form-control, .btn, .input-group-text {
27 /* This more or less matches the font size of the angularjs client.
28 * The default BS4 font of 1rem is comically large.
42 h3 {font-size: 1.15rem}
43 h4 {font-size: 1.05rem}
44 h5 {font-size: .95rem}
46 .small-text-1 {font-size: 85%}
48 /** Use a default link color that achieves WCAG AA
49 * color contrast against a white background
52 border-color: #0A58CA;
58 border-color: #0848A5;
72 /** Ang5 routes on clicks to href's with no values, so we can't have
73 * bare href's to force anchor styling. Use this for anchors w/ no href.
74 * TODO: should we style all of them? a:not([href]) ....
82 border-color: #0848A5;
86 /** BS has flex utility classes, but none for specifying flex widths.
87 * BS class="col" is roughly equivelent to flex-1, but col-2 is not
88 * equivalent to flex-2, since col-2 really means 2/12 width. */
96 /** BS deprecated the well, but it's replacement is not quite the same.
97 * Define our own version and expand it to a full "table".
102 .well-table .well-label {
111 .well-table .well-label-no-flex {
119 .well-table .well-value {
123 background-color: #f5f5f5;
125 box-shadow: inset 0 1px 1px rgba(0,0,0,.05);
131 .btn.disabled, .btn:disabled {
135 /* copies color/border/elements from above sans position elements */
137 background-color: #f5f5f5;
139 box-shadow: inset 0 1px 1px rgba(0,0,0,.05);
142 /* usefuf for mat-icon buttons without any background or borders */
143 .material-icon-button {
144 /* Transparent background */
146 background-color: rgba(0, 0, 0, 0.0);
147 padding-left: .25rem;
148 padding-right: .25rem; /* default .5rem */
151 .mat-icon-in-button {
152 line-height: inherit;
155 .mat-icon-shrunk-in-button {
156 line-height: inherit;
160 .material-icons.small {
164 .input-group .mat-icon-in-button {
165 font-size: .88rem !important; /* useful for buttons that cuddle up with inputs */
169 /** default is 24px which is pretty chunky */
173 /* allow spans/labels to vertically orient with material icons */
174 .label-with-material-icon {
175 display: inline-flex;
176 vertical-align: middle;
180 /* dropdown menu link/button with no downward carrot icon */
181 .no-dropdown-caret::after {
185 /* Default .card padding is extreme */
186 .tight-card .card-body,
187 .tight-card .list-group-item {
190 .tight-card .card-header {
194 @media all and (min-width: 800px) {
195 /* scrollable typeahead menus for full-size screens */
196 ngb-typeahead-window {
203 /* Limit size of dropdown menus and allow for scrolling */
211 /* Items stick to the top of the page once scrolled past,
212 * leaving room above for the nav bar */
213 .sticky-top-with-nav {
216 /* Sticky menus display above sticky grid headers */
220 /* --------------------------------------------------------------------------
221 /* Form Validation CSS - https://angular.io/guide/form-validation
222 * TODO: these colors don't fit the EG color scheme
223 * Required valid fields are left-border styled in green-ish.
224 * Invalid fields are left-border styled in red-ish.
226 .form-validated .ng-valid[required]:not(eg-combobox):not(eg-date-select),
227 .form-validated .ng-valid.required, input[formcontrolname].ng-valid.required {
228 border-left: 5px solid #78FA89;
230 .form-validated .ng-invalid:not(form):not(eg-combobox):not(eg-date-select),
231 input[formcontrolname].ng-invalid {
232 border-left: 5px solid #FA787E;
236 border-left: 5px solid #FA787E;
240 * Brings font size down 5% to squeeze a bit more in.
242 * Fixes some bootstrap margin funkiness with checkboxes for
243 * better vertical alignment.
244 * Optional faint odd or even row striping.
258 .common-form.striped-even .row:nth-child(even),
259 .striped-rows-even .row:nth-child(even) {
261 background-color: rgba(0,0,0,.03);
262 border-top: 1px solid rgba(0,0,0,.125);
263 border-bottom: 1px solid rgba(0,0,0,.125);
266 .common-form.striped-odd .row:nth-child(odd),
267 .striped-rows-odd .row:nth-child(odd) {
269 background-color: rgba(0,0,0,.03);
270 border-top: 1px solid rgba(0,0,0,.125);
271 border-bottom: 1px solid rgba(0,0,0,.125);
275 color: rgba(0,0,0,.3);
278 .form-check-input[type=checkbox] {
280 border-color: rgba(0, 0, 0, .4);
286 * Only display the print container when printing
288 #eg-print-container {
292 head {display: none} /* just to be safe */
293 body div:not([id="eg-print-container"]) {display: none}
295 @page {size: auto} /* work around Bootrap 4's default
296 of A3; specifying any paper
297 size stops browsers from letting
298 the user choose portrait or
299 landscape. LP#1986725 */
300 #eg-print-container {display: block}
301 #eg-print-container div {display: block}
302 #eg-print-container pre {border: none}
306 * Make sure that comboboxes (including org select
307 * are visible, even in nested modals.
309 * See https://github.com/ng-bootstrap/ng-bootstrap/issues/2505
310 * for the upstream issue that necessitates this.
312 body>.dropdown-menu {z-index: 2100;}
314 /* Styles for eg-daterange-select that don't work
315 * in the component's CSS file.
317 .ngb-dp-day:not(.disabled) .daterange-day.focused {
318 background-color: #e6e6e6;
320 .ngb-dp-day:not(.disabled) .daterange-day.range, .ngb-dp-day:not(.disabled) .daterange-day:hover {
321 background-color: #129a78;
325 .ngb-dp-day:not(.disabled) .daterange-day.faded {
326 background-color: #c9efe4;
330 /* Washed out version of the Bootstrap 'info' background.
331 * Useful for blocking out sections of a page/form without it
332 * being so intensely colorful */
334 /*background-color: rgb(204, 229, 255, 0.3);*/
337 /*background-color: rgb(217, 237, 247, 0.5);*/
339 background-color: rgba(0,0,0,.03);
342 /* Allow for larger XL dialogs */
343 @media (min-width: 1300px) { .modal-xl { max-width: 1200px; } }
344 @media (min-width: 1600px) { .modal-xl { max-width: 1500px; } }
345 @media (min-width: 1700px) { .modal-xl { max-width: 1600px; } }
347 /* Default modal background color */
349 background-color: var(--info);
352 /* Contrast for dialog titles */
353 .modal-header .modal-title {
358 .modal-header .close,
359 .modal-header .close:hover {
365 .modal-header .close:not(:disabled):not(.disabled):focus,
366 .modal-header .close:not(:disabled):not(.disabled):hover {
371 * Make the acquisitions search form's navigation tabs match
372 * those of the staff interface. This is a global rule because
373 * various approaches to doing it local to the acq search component
376 * 1. A rule bound to the container of the acq search tabset
377 * would make the entire background be grey.
378 * 2. ":host ::ng-deep" for a local rule works, but depends on a
379 * mechanism that is deprecated.
380 * 4. ng-tabset provides no hooks for custom styles for the nav-tab
382 * 5. Turning off view encapsulation for the acq search component
383 * breaks a lot of styles.
385 #acq-search-page ngbNav .nav.nav-tabs {
386 background-color: rgb(247, 247, 247);
390 * Similar to the CSS above for the search form, set some
391 * CSS for the line item worksheet. Ordinarily would be
392 * preferable to just add the CSS to the worksheet component,
393 * but untl a well-supported alternative to ng-deep comes along...
395 #worksheet-outlet thead th { font-weight: bold; background-color: #ccc; text-align: center; border-bottom: 1px #000 solid; border-right: 1px #000 solid; padding: 0
397 #worksheet-outlet tbody td { text-align: left; vertical-align: top; border: 1px #999 inset; padding: 0 2px; }
399 /* style for negative monetary values */
400 .negative-money-amount {
413 * Created initially for styled grid rows where full 'bg-danger' CSS is
414 * intense and not especially readable, more so when rows are stacked.
415 * http://web-accessibility.carnegiemuseums.org/design/color/
417 .less-intense-alert {
418 background-color: #f9dede;
422 /* Accessible button colors */
425 .btn-outline-warning {
426 border-color: #BB8402;
429 /* other colors' focus state shadows do not need to change */
432 border-color: #FFC107;
433 box-shadow: 0 0 0 .2rem rgba(255, 205, 57,.5);
437 background-color: #0A58CA;
438 border-color: #0A58CA;
446 background-color: #0848A5;
447 border-color: #0848A5;
451 .btn-outline-primary {
452 background-color: #fff;
453 border-color: #0A58CA;
457 .btn-outline-primary:hover,
458 .btn-outline-primary.hover,
459 .btn-outline-primary:focus,
460 .btn-outline-primary.focus {
461 background-color: #fff;
462 border-color: #0848A5;
466 .btn-primary.disabled,
467 .btn-primary:disabled {
469 background-color: #156EF4;
470 border-color: #156EF4;
473 .btn-outline-primary.disabled,
474 .btn-outline-primary:disabled {
476 background-color: #fff;
477 border-color: #156EF4;
481 background-color: #087990;
482 border-color: #087990;
490 background-color: #076376;
491 border-color: #076376;
496 background-color: #fff;
497 border-color: #087990;
501 .btn-outline-info:hover,
502 .btn-outline-info.hover,
503 .btn-outline-info:focus,
504 .btn-outline-info.focus,
505 .btn-check:active+.btn-info,
506 .btn-check:checked+.btn-info,
509 .show>.btn-info.dropdown-toggle {
511 background-color: #076376;
512 border-color: #076376;
518 background-color: #0A92AE;
519 border-color: #0A92AE;
522 .btn-outline-info.disabled,
523 .btn-outline-info:disabled {
525 background-color: #fff;
526 border-color: #0A92AE;
530 background-color: #198754;
531 border-color: #198754;
539 background-color: #157146;
540 border-color: #157146;
544 .btn-outline-success {
545 background-color: #fff;
546 border-color: #198754;
550 .btn-outline-success:hover,
551 .btn-outline-success.hover,
552 .btn-outline-success:focus,
553 .btn-outline-success.focus {
554 background-color: #fff;
555 border-color: #157146;
559 .btn-success.disabled,
560 .btn-success:disabled {
562 background-color: #1D9F63;
563 border-color: #1D9F63;
566 .btn-outline-success.disabled,
567 .btn-outline-success:disabled {
569 background-color: #fff;
570 border-color: #1D9F63;
573 /* Less intense, WCAG AAA-compliant badges */
582 .badge.text-bg-primary {
588 .badge.text-bg-secondary {
594 .badge.text-bg-success {
600 .badge.text-bg-danger {
606 .badge.text-bg-warning {
612 .badge.text-bg-info {
618 .badge.text-bg-light {
624 .badge.text-bg-dark {
630 * https://getbootstrap.com/docs/5.0/migration/#content-reboot-etc
631 * Links are underlined by default.
634 text-decoration: none;
641 .input-group-text label,
642 .input-group-text button {
648 .form-label.input-group-text {
649 margin-bottom: inherit;
663 /* Fix tooltip link colors */
664 .tooltip .tooltip-inner a {