/* Override some bootstrap styles */

body {
  font-family: 'Exo', sans-serif;
  font-size: 14px;
}

.btn-light,.btn-light:disabled,.btn-light:hover {
  border: 1px solid #c0c0c0;
}

/* -- */

:root {
  --font: Helvetica, Arial, sans-serif;
  --primary: #4d99e5;
  --gray-light: #e9ecef;
  --gray-medium-light: #bcbcbc;
}

html, body {
  height: 100%;
  margin: 0;
  padding: 0;
  overflow: hidden;
}

.svg * {
  color: currentColor;
  fill: currentColor;
}
.svg svg {
  flex: 1;
  vertical-align: middle;
  fill: currentColor;
  height: 100%;
  width: 100%;
}
.svg svg:not(:root) {
  overflow: hidden;
}

.aro-loader {
  display: none;
  justify-content: center;
  align-items: center;
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  left: 0;
  background-color: rgba(255, 255, 255, 0.9);
}
.aro-loader.loading {
  display: flex;
}
.aro-loader h3 {
  display: none;
}
.aro-loader.has-title h3 {
  display: block;
  margin: 0 20px 0 0;
  font: bold 14px/1 'Exo', sans-serif;
}
@keyframes aro-loader {
  0% { transform: rotate(0deg); }
  100% { transform: rotate(360deg); }
}
.aro-loader .spinny {
  flex: 0 0 auto;
  transform-origin: center center;
  border: 4px solid white;
  border-right-color: #4d99e5;
  width: 25px;
  height: 25px;
  border-radius: 50%;
  animation: aro-loader 0.5s infinite linear;
}

.boundary-options a {
  padding: 0 4px;
}

#map-canvas-wrapper {
  position: absolute;
  top: 100px;
  bottom: 0px;
  left: 0px;
  right: 0px;
}

#map-canvas {
  height: 100%;
  width: 100%;
}

#left-col-wrapper {
  position: absolute;
  top: 0px;
  bottom: 0px; /* footer height */
  left: 0;
  z-index: 3;
  width: 400px;
  pointer-events: none;
}

#left-col {
  padding: 0px;
  height: 100%;
  max-height: 100%;
  overflow: hidden;
}

.map-tool-title-text {
  margin: 0px;
}

.map-tools-buttons-container {
  position:absolute;
  left: 0px;
  top: 10px;
  padding-left: 10px;
  height: 100%;
}

.map-tool-wrapper {
  position: absolute;
  top: 75px;
  left: 85px;
  z-index: 1;
}

.map-tool {
  border: 2px solid #eee;
  width: 360px;
  margin-top: 8%;
}

.map-tool.ng-hide-remove {
    animation: fadeInLeft 0.5s;
}

.map-tool.ng-hide-add {
    animation: fadeOutLeft 0.5s;
}

.loader {
  margin: 60px auto;
  font-size: 10px;
  position: relative;
  text-indent: -9999em;
  border-top: 1.1em solid rgba(255, 255, 255, 0.2);
  border-right: 1.1em solid rgba(255, 255, 255, 0.2);
  border-bottom: 1.1em solid rgba(255, 255, 255, 0.2);
  border-left: 1.1em solid #ffffff;
  -webkit-transform: translateZ(0);
  -ms-transform: translateZ(0);
  transform: translateZ(0);
  -webkit-animation: load8 1.1s infinite linear;
  animation: load8 1.1s infinite linear;
}
.loader,
.loader:after {
  border-radius: 50%;
  width: 10em;
  height: 10em;
}
@-webkit-keyframes load8 {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}
@keyframes load8 {
  0% {
    -webkit-transform: rotate(0deg);
    transform: rotate(0deg);
  }
  100% {
    -webkit-transform: rotate(360deg);
    transform: rotate(360deg);
  }
}

#loader-wrapper {
  position: absolute;
  width: 100%;
  height: 100%;
  top: 0;
  left: 0;
  z-index: 9999999;
  background-color: #eee;
}

footer {
  position: absolute;
  bottom: 0;
  width: 100%;
}

footer nav {
  margin-bottom: 0 !important;
}

.login-page-bg {
  display: flex;
  justify-content: center;
  align-items: center;
  height: 100%;
  width: 100%;
  padding: 100px;
  overflow-y: scroll;
  top: 0;
  left: 0;
  z-index: 4;
  background-color: #ececec;
}

.login-box {
  background-color: white;
  width: 500px;
  padding: 0px 50px 50px 50px;
  border: solid 1px #a0a0a0;
}

#aro_logo {
  margin-top: 10px;
  margin-left: -5px;
  margin-bottom: 10px;
  width: 400px;
  /*height:100px;*/
}

.outlineLegendIcon{
	display: inline-block;
	width: 1.0em;
	height: 1.0em;
	border-style: solid;
	border-width: 2px;
	border-color: #888888;
	background-color: #88888833;
}

.popover {
  width: 250px;
}

.checkbox.disabled label {
  color: #ccc;
}

.radio.disabled label {
  color: #ccc;
}

#measuring-stick-result {
  position: absolute;
  bottom: 10px;
  left: 55px;
}

/* from bootstrap, but applied at any screen size */
.table-responsive {
  width: 100%;
  margin-bottom: 15px;
  overflow-y: hidden;
  -ms-overflow-style: -ms-autohiding-scrollbar;
  border: 1px solid #ddd;
}
.table-responsive > .table {
  margin-bottom: 0;
}
.table-responsive > .table > thead > tr > th,
.table-responsive > .table > tbody > tr > th,
.table-responsive > .table > tfoot > tr > th,
.table-responsive > .table > thead > tr > td,
.table-responsive > .table > tbody > tr > td,
.table-responsive > .table > tfoot > tr > td {
  white-space: nowrap;
}
.table-responsive > .table-bordered {
  border: 0;
}
.table-responsive > .table-bordered > thead > tr > th:first-child,
.table-responsive > .table-bordered > tbody > tr > th:first-child,
.table-responsive > .table-bordered > tfoot > tr > th:first-child,
.table-responsive > .table-bordered > thead > tr > td:first-child,
.table-responsive > .table-bordered > tbody > tr > td:first-child,
.table-responsive > .table-bordered > tfoot > tr > td:first-child {
  border-left: 0;
}
.table-responsive > .table-bordered > thead > tr > th:last-child,
.table-responsive > .table-bordered > tbody > tr > th:last-child,
.table-responsive > .table-bordered > tfoot > tr > th:last-child,
.table-responsive > .table-bordered > thead > tr > td:last-child,
.table-responsive > .table-bordered > tbody > tr > td:last-child,
.table-responsive > .table-bordered > tfoot > tr > td:last-child {
  border-right: 0;
}
.table-responsive > .table-bordered > tbody > tr:last-child > th,
.table-responsive > .table-bordered > tfoot > tr:last-child > th,
.table-responsive > .table-bordered > tbody > tr:last-child > td,
.table-responsive > .table-bordered > tfoot > tr:last-child > td {
  border-bottom: 0;
}

#global-search {
  position: absolute;
  left: 76px;
  width: 319px;
  top: 200px;
  z-index: 1;
}

.btn.btn-thin{
	padding: 1px 8px;
}

.customer-type {
  padding-left: 0px;
}

ul.customer-type {
  margin-bottom: 0px;
}

ul.customer-type li{
  list-style: none;
  display: flex;
  flex-direction: row;
  margin-top: 5px;
  margin-bottom: 5px;
}
ul.customer-type .ctype-icon {
  flex: 0 ;
}
ul.customer-type .ctype-checkbox {
  flex: 0;
}
ul.customer-type .ctype-name {
  flex:1;
}
.map-tools-card-header {
  padding: 10px 20px;
}
.map-tools-card-body {
  padding: 0.75rem;
}

.map-layer-spinner.fa-repeat {
  opacity: 0;
  transition: opacity 0.3s ease-in-out;
}

.map-layer-spinner.spin {
  opacity: 1;
}

a[data-toggle="collapse"].collapsed > .fa-caret-up {
  display: none
}

a[data-toggle="collapse"]:not(.collapsed) > .fa-caret-down {
  display: none
}

/* Map tool buttons */
.map-tools-button {
  width: 50px;
  height: 50px;
  border-radius: 25px;
  background-color: #333;
  border: none;
  padding: 0px;
  opacity: 0.7;
}

.map-tools-button:hover {
  background-color: #4d99e5;
  opacity: 1.0;
}

.map-tools-button.active {
  background-color: #4d99e5;
  opacity: 1.0;
}

.map-tools-button span {
  pointer-events: none;
}

.map-tools-button-icon {
  line-height: 48px;  /* Hack to get fontawesome icons centered */
  margin: 0px;
  padding: 0px;
  text-align: center;
}

/* Selected locations */
.selected-locations-header {
  width: 766px;
  height: 194px;
}

.selected-locations-map-overlay {
  color: white;
  background: rgba(0, 0, 0, 0.7);
  position:relative;
  left:0px;
  top:-194px;
  width: 100%;
  height: 100%;
  padding: 10px;
  padding-top: 40px;
}

.selected-location-label {
  font-size: 12px;
}

.selected-location-value {
  font-size: 22px;
}

.selected-location-address {
  font-size: 30px;
  padding: 10px;
}

.selected-location-empty-chart {
  text-align:center;
  width:200px;
  height:200px;
  border: 1px dashed #a0a0a0;
  border-radius: 100px;
  line-height:200px;
  color:#a0a0a0;
  margin: 0 auto;
}

.selected-location-pill-padding {
  padding: 4px 10px;
}

.selected-modal-table-header {
  font-weight: 300;
  color: #a0a0a0;
}

.selected-modal-table-row {
  font-size: 12px;
  font-weight: 700;
}

/* Override Select2 css */
.select2-container {
  border: solid 1px #e0e0e0;
  padding: 0px;
  background: none;
}

.select2-container .select2-choice {
  height: 29px;
  line-height: 29px;
  background: none;
}

.select2-container-multi .select2-choices {
  border: none;
  background: #ffffff;
}

.select2-container-multi .select2-choices .select2-search-choice {
  background: #4d99e5;
  padding-top: 6px;
  padding-bottom: 7px;
  padding-right: 6px;
  border: none;
  color: white;
}

.modal-content {
  border-radius:0px;
}

.nav>li>a:focus {
	color:#222;
}

.navbar-text {
	color:#fff
}

.navbar-default .navbar-brand,
.navbar-default .navbar-brand:hover,
.navbar-default .navbar-brand:focus {
	color:#fff;
  padding: 0px 0px 0px 15px;
}

.navbar-default {
	background-color:#4d99e5;
  border-radius: 0px;
}

.navbar-default .navbar-nav>li>a {
	color:#fff
}

/* .navbar-default .navbar-nav .open .dropdown-menu>li>a {
	color:#fff
} */

.navbar-default .navbar-link {
	color:#fff
}

.navbar-default .btn-link {
	color:#fff
}

.navbar-default .navbar-nav>li>a:focus, .navbar-default .navbar-nav>li>a:hover {
	color:#fff;
}

/* .navbar-default .navbar-nav .open .dropdown-menu>li>a:focus, .navbar-default .navbar-nav .open .dropdown-menu>li>a:hover {
	color:#fff;
} */

.navbar-default .navbar-link:hover {
	color:#fff
}

.navbar-default .btn-link:focus,.navbar-default .btn-link:hover {
	color:#fff
}

.navbar-default .navbar-nav>.active>a,.navbar-default .navbar-nav>.active>a:focus,.navbar-default .navbar-nav>.active>a:hover {
	color:#fff;
}

.navbar-default .navbar-nav>.open>a,.navbar-default .navbar-nav>.open>a:focus,.navbar-default .navbar-nav>.open>a:hover {
	color:#fff;
}

.nav>li>a:focus,.nav>li>a:hover {
	color:#222;
}

.cursor_disabled {
    pointer-events: none;
}

.radio {
  margin: 0.5rem;
}
.radio input[type="radio"] {
  position: absolute;
  opacity: 0;
}
.radio input[type="radio"] + .radio-label:before {
  content: '';
  background: #f4f4f4;
  border-radius: 100%;
  border: 1px solid #b4b4b4;
  display: inline-block;
  width: 1.4em;
  height: 1.4em;
  position: relative;
  top: -0.2em;
  margin-right: 1em;
  vertical-align: top;
  cursor: pointer;
  text-align: center;
  transition: all 250ms ease;
}
.radio input[type="radio"]:checked + .radio-label:before {
  background-color: #3197EE;
  box-shadow: inset 0 0 0 4px #f4f4f4;
}
.radio input[type="radio"]:focus + .radio-label:before {
  outline: none;
  border-color: #3197EE;
}
.radio input[type="radio"]:disabled + .radio-label:before {
  box-shadow: inset 0 0 0 4px #f4f4f4;
  border-color: #b4b4b4;
  background: #b4b4b4;
}
.radio input[type="radio"] + .radio-label:empty:before {
  margin-right: 0;
}

.btn.btn-selected {
  color: #fff;
  background-color: #5cb85c;
  border-color: #4cae4c;
}

/*ui select width problem https://github.com/angular-ui/ui-select/issues/533*/
.ui-select-multiple input.ui-select-search:not(.ng-touched) {
  width: 100% !important;
}

.panel-fiber-details {
  position: fixed;
  top: 274px;
  right: 9px;
  z-index: 2000;
  opacity: 0.8;
  padding: 5px;
  width: 280px;
}

.panel-fiber-details .panel-title {
  border-bottom: 1px solid grey;
  cursor: move;
}

.panel-fiber-details .panel-body .item {
  display: flex;
  flex-direction: row;
}

.panel-fiber-details .panel-body .item-label {
  flex: 1;
}

.panel-fiber-details .panel-body .item-value {
  flex: 0;
}

.panel-fiber-details .panel-close-icon {
  padding: 3px;
  position: relative;
  bottom: 2px;
  cursor: pointer;
}
.panel-fiber-details .panel-close-icon :hover {
  color: #c0c0c0;
}

.aro-faux-anchor {
  cursor: pointer;
  color: #007bff;
  text-decoration: none;
}

.aro-faux-anchor:hover {
  color: #0056b3;
  text-decoration: underline;
}

.aro-pointer {
  cursor: pointer;
}

.checkboxfill {
    -webkit-appearance: initial;
    width: 18px;
    height: 18px;
    position: relative;
    padding: 1px 3px;
    font-size: 10px;
    line-height: 1.5;
    border-radius: 0px;
    display: inline-block;
    margin-bottom: 0;
    font-weight: 400;
    text-align: center;
    white-space: nowrap;
    vertical-align: middle;
    touch-action: manipulation;
    cursor: pointer;
    user-select: none;
    border: 1px solid #c0c0c0;
}

.checkboxfill:checked {
    background:#4d99e5;
    border: #4d99e5;
}
.checkboxfill:disabled {
  background: #d8d8d8;
  border: 1px solid #c0c0c0;
}
.checkboxfill:checked:after {
    /* Heres your symbol replacement - this is a tick in Unicode. */
    font-family: Font Awesome\ 5 Free;
    content: "\f00c";
    font-weight: 900;
    line-height: 18px;
    color: #fff;
    font-size: 10px;
    line-height: 1.5;
    position: relative;
    top: 1px;
    display: inline-block;
    /* The following positions my tick in the center,
     * but you could just overlay the entire box
     * with a full after element with a background if you want to */
    position: absolute;
    left: 50%;
    top: 50%;
    -webkit-transform: translate(-50%,-50%);
    -moz-transform: translate(-50%,-50%);
    -ms-transform: translate(-50%,-50%);
    transform: translate(-50%,-50%);
    /*
     * If you want to fully change the check appearance, use the following:
     * content: " ";
     * width: 100%;
     * height: 100%;
     * background: blue;
     * top: 0;
     * left: 0;
     */
}

.radiofill{
  -webkit-appearance: initial;
  width: 20px;
  height: 20px;
  position: relative;
  padding: 1px 3px;
  font-size: 10px;
  line-height: 1.5;
  border-radius: 10px;
  display: inline-block;
  margin: 5px;
  font-weight: 400;
  text-align: center;
  white-space: nowrap;
  vertical-align: middle;
  touch-action: manipulation;
  cursor: pointer;
  user-select: none;
  border: 1px solid #c0c0c0;
}

.radiofill:checked {
  background:#4d99e5;
  border: #4d99e5;
}
.radiofill:checked:after {
  /* Heres your symbol replacement - this is a tick in Unicode. */
  font-family: Font Awesome\ 5 Free;
  content: "\f00c";
  font-weight: 900;
  line-height: 18px;
  color: #fff;
  font-size: 10px;
  line-height: 1.5;
  position: relative;
  top: 1px;
  display: inline-block;
  /* The following positions my tick in the center,
   * but you could just overlay the entire box
   * with a full after element with a background if you want to */
  position: absolute;
  left: 50%;
  top: 50%;
  -webkit-transform: translate(-50%,-50%);
  -moz-transform: translate(-50%,-50%);
  -ms-transform: translate(-50%,-50%);
  transform: translate(-50%,-50%);
  /*
   * If you want to fully change the check appearance, use the following:
   * content: " ";
   * width: 100%;
   * height: 100%;
   * background: blue;
   * top: 0;
   * left: 0;
   */
}

.progress-bar-optimization {
  background-color: #1a79db;
}

.modify-analysis-button, .modify-analysis-button:hover, .modify-analysis-button:focus {
  background-color: #4cae4c;
  color: white;
}

.modify-coverage-button, .modify-coverage-button:hover, .modify-coverage-button:focus {
  background-color: #4cae4c;
  color: white;
}

/* Class to disable sibling controls. Use with hatched background */
.disable-sibling-controls {
  position:absolute;
  left: 0px;
  top: 0px;
  width: 100%;
  height: 100%;
  opacity: 0.4;
  /* Define a hatched background for a div, from https://codepen.io/themitchy/pen/sHxdf */
  background-image: linear-gradient(45deg, transparent 45%, #919195 50%, transparent 55%, transparent 100%),
                    linear-gradient(-45deg, transparent 45%, #919195 50%, transparent 55%, transparent 100%);
  background-size: 8px 8px;
  background-position: 4px 4px;
  z-index: 3;
}

.sidebar-header-subinfo{
	font-weight: normal;
	margin-top: 10px;
}

.sidebar-header-subinfo-item{
	display: inline-block;
	margin-right: 10px;
}

.sidebar-table-header {
  padding: 10px;
  font-weight: 700;
  background-color: #eee;
  border: solid 1px #ccc;
}

.sidebar-table {
  border: solid 1px #ccc;
}

.sidebar-options-table td {
  line-height: 33px;
}

.satags {
  background-color:white;
  border-color:#1f7de6;
  border-style:solid;
  border-radius:0.50em;
  border-width:2px;
  font-size: 10px;
  padding: 5px;
  color:#1f7de6;
}

.map_tools_container {
  text-align: center;
}
.map_tool_label {
  color: white;
  width: 70px;
  background: #1f7de6;
  padding-top: 5px;
  padding-bottom: 5px;
  border-radius: 2px;
  padding-left: 2px;
  padding-right: 4px;
  font-size: 12px;
}

.map-toggle {
  user-select: none;
  box-shadow: rgba(0, 0, 0, 0.3) 0px 1px 4px -1px;
  border-radius: 2px;
  cursor: pointer;
  background-color: rgb(255, 255, 255);
  width: 28px;
  height: 28px;
  position: relative;
  right: 11px;
}

#map-info-link {
  border: 2px solid #1f7de6;
  border-radius: 3px;
  box-shadow: 0 2px 6px rgba(0,0,0,.3);
  cursor: pointer;
  font-size: 16px;
  font-weight: 600;
  background-color: #1f7de6;
  color: white;
  line-height: 38px;
  padding: 3px 7px;
  text-align: center;
  width: 32px;
  height: 32px;
  right: 11px;
  position: relative;
  text-decoration: none;
  margin-bottom: 20px;
}

.app_wrapper_container {
  position:absolute;
  top: 0px;
  left: 0px;
  bottom: 0px;
  right: 0px
}

.app_wrapper_container.footer {
  bottom: 25px;
}

.close {
  /* large close icon for modal window */
  font-size: 30px;
}

.select2-no-results {
  color: black;
}

/*
  After migrating to Bootstrap4, the <ui-select> component was not showing dropdown items. The following CSS fixes that (temporarily)
  until ui-select supports Bootstrap4. Workaround from https://stackoverflow.com/questions/48803798/angular-ui-select-component-broken-after-migrating-to-bootstrap-4
*/
.open > .dropdown-menu {
  display: block;
}

ui-select-font {
  font-size: 14px;
}

.ui-select-container input {
  font-size: 14px;
}

.ui-select-match span {
  font-size: 14px;
  vertical-align: -webkit-baseline-middle;
}

.ui-select-match > span .tag {
  font-size: 12px;
}

.ui-select-match > span .badge {
  font-size: 12px;
}
.ui-select-match-item {
  padding: 1px 12px;
}

.ui-select-choices-row-inner {
  font-size: 14px;
}

.multiselect {
  font-size: 14px;
}

.multiselect .multiselect-selected-text {
  word-break: break-word;
}

.multiselect-container {
  font-size: 14px;
}

.multiselect-container li a {
  color: black;
}

.multiselect-container li a label {
  padding-left: 20px;
  word-break: break-word;
}

.multiselect-container.dropdown-menu>.active,
.multiselect-container.dropdown-menu>.active:focus,
.multiselect-container.dropdown-menu>.active:hover {
  background-color: #1f7de6;
}

.multiselect-container.dropdown-menu>.active>a,
.multiselect-container.dropdown-menu>.active:focus>a,
.multiselect-container.dropdown-menu>.active:hover>a {
  color: white;
}

.aro-slider {
  -webkit-appearance: none;
  -moz-apperance: none;
  border-radius: 6px;
  height: 6px;
  background: #C5C5C5;
  width: 100%;
}
.aro-slider::-webkit-slider-thumb {
  -webkit-appearance: none !important;
  background-color: #E9E9E9;
  border: 1px solid #CECECE;
  height: 15px;
  width: 10px;
}

.tool-bar {
  z-index: 50;
  display: flex;
  flex-direction: row;
  position: absolute;
  top: 0px;
  left: 0px;
  /* background-color: #1f7de6; */
}

.tool-bar .btn {
  flex: 0 0 30px;
  /* background-color: #1f7de6; */
  border: none;
  border-radius: 0px;
  color: #eee;
  padding-top: 8px;
  padding-bottom: 8px;
  width: 36px;
}

.footer-clr {
  background:-webkit-linear-gradient(left,#a60c0d, #c1151b, #d9272d, #d9272d, #d9272d, #c1151b, #a60c0d);
}

.hue{
  background: linear-gradient(to right,
  hsl(0,25%,50%) 0%,hsl(14.4,25%,50%) 4%,
  hsl(28.8,25%,50%) 8%,hsl(43.2,25%,50%) 12%,hsl(57.6,25%,50%) 16%,
  hsl(72,25%,50%) 20%,hsl(86.4,25%,50%) 24%,hsl(100.8,25%,50%) 28%,
  hsl(115.2,25%,50%) 32%,hsl(129.6,25%,50%) 36%,hsl(144,25%,50%) 40%,
  hsl(158.4,25%,50%) 44%,hsl(172.8,25%,50%) 48%,hsl(187.2,25%,50%) 52%,
  hsl(201.6,25%,50%) 56%,hsl(216,25%,50%) 60%,hsl(230.4,25%,50%) 64%,
  hsl(244.8,25%,50%) 68%,hsl(259.2,25%,50%) 72%,hsl(273.6,25%,50%) 76%,
  hsl(288,25%,50%) 80%,hsl(302.4,25%,50%) 84%,hsl(316.8,25%,50%) 88%,
  hsl(331.2,25%,50%) 92%,hsl(345.6,25%,50%) 96%,hsl(360,25%,50%) 25%);
	border-radius: 3px;
	border-style: solid;
	border-width: thin;
}

.location-search-option[data-combobox-selected] .location-search-avatar {
  filter: invert(50%) brightness(500%);
}

.location-search-option[data-combobox-selected] .sub-label {
  color: white !important;
}

.mantine-Combobox-groupLabel::after {
  background-color: #b9b9ff !important;
}

.mantine-Divider-label::after {
  border-color: #b9b9ff !important;
}

/* ========================================
   OIDC Login Styles
   ======================================== */

/* OIDC SSO Button */
.btn-oidc {
  /* Base styles */
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 100%;
  min-height: 44px;
  padding: 12px 24px;
  font-size: 16px;
  font-weight: 600;
  line-height: 1.5;
  color: #ffffff;
  background-color: #007bff;
  border: 1px solid #007bff;
  border-radius: 4px;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
  cursor: pointer;
  text-align: center;
  text-decoration: none;
  transition: background-color 0.15s ease-in-out, 
              border-color 0.15s ease-in-out, 
              box-shadow 0.15s ease-in-out,
              transform 0.1s ease-in-out;
  -webkit-user-select: none;
  -moz-user-select: none;
  -ms-user-select: none;
  user-select: none;
}

.btn-oidc:hover {
  background-color: #0056b3;
  border-color: #0056b3;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.15);
  text-decoration: none;
  color: #ffffff;
}

.btn-oidc:focus,
.btn-oidc:focus-visible {
  outline: 2px solid #007bff;
  outline-offset: 2px;
  box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}

.btn-oidc:active {
  background-color: #004085;
  border-color: #004085;
  box-shadow: inset 0 3px 5px rgba(0, 0, 0, 0.125);
  transform: translateY(1px);
}

.btn-oidc:disabled {
  background-color: #6c757d;
  border-color: #6c757d;
  cursor: not-allowed;
  opacity: 0.65;
  box-shadow: none;
}

.btn-oidc i,
.btn-oidc svg {
  margin-right: 8px;
  font-size: 18px;
}

/* Login Divider */
.login-divider {
  display: flex;
  align-items: center;
  text-align: center;
  margin: 24px 0;
  color: #6c757d;
  font-size: 14px;
  font-weight: 500;
}

.login-divider::before,
.login-divider::after {
  content: '';
  flex: 1;
  border-bottom: 1px solid #e9ecef;
}

.login-divider::before {
  margin-right: 16px;
}

.login-divider::after {
  margin-left: 16px;
}

/* OIDC Enforced Notice */
.oidc-enforced-notice {
  display: flex;
  align-items: flex-start;
  padding: 12px 16px;
  margin-bottom: 20px;
  background-color: #d1ecf1;
  border: 1px solid #bee5eb;
  border-left: 4px solid #17a2b8;
  border-radius: 4px;
  color: #0c5460;
  font-size: 14px;
  line-height: 1.5;
}

.oidc-enforced-notice i,
.oidc-enforced-notice svg {
  margin-right: 12px;
  font-size: 18px;
  color: #17a2b8;
  flex-shrink: 0;
}

.oidc-enforced-notice p {
  margin: 0;
}

/* Flash Messages Enhancement */
.flash-message {
  display: flex;
  align-items: flex-start;
  padding: 12px 16px;
  margin-bottom: 20px;
  border-radius: 4px;
  border: 1px solid transparent;
  font-size: 14px;
  line-height: 1.5;
}

.flash-message i,
.flash-message svg {
  margin-right: 12px;
  font-size: 18px;
  flex-shrink: 0;
}

.flash-message p {
  margin: 0;
  flex: 1;
}

.flash-error {
  background-color: #f8d7da;
  border-color: #f5c6cb;
  border-left: 4px solid #dc3545;
  color: #721c24;
}

.flash-error i,
.flash-error svg {
  color: #dc3545;
}

.flash-info {
  background-color: #d1ecf1;
  border-color: #bee5eb;
  border-left: 4px solid #17a2b8;
  color: #0c5460;
}

.flash-info i,
.flash-info svg {
  color: #17a2b8;
}

.flash-success {
  background-color: #d4edda;
  border-color: #c3e6cb;
  border-left: 4px solid #28a745;
  color: #155724;
}

.flash-success i,
.flash-success svg {
  color: #28a745;
}

.flash-warning {
  background-color: #fff3cd;
  border-color: #ffeeba;
  border-left: 4px solid #ffc107;
  color: #856404;
}

.flash-warning i,
.flash-warning svg {
  color: #ffc107;
}

/* Login Page Layout Enhancements */
.login-box {
  box-shadow: 0 4px 6px rgba(0, 0, 0, 0.1);
  max-width: 500px;
  width: 100%;
}

.login-box form {
  margin-top: 20px;
}

.login-box .form-group {
  margin-bottom: 20px;
}

.login-box .form-control {
  height: 44px;
  font-size: 16px;
  border-radius: 4px;
}

.login-box .form-control:focus {
  border-color: #007bff;
  box-shadow: 0 0 0 3px rgba(0, 123, 255, 0.25);
}

.login-box label {
  font-weight: 600;
  margin-bottom: 8px;
  color: #333;
}

/* Screen Reader Only (for accessibility) */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border-width: 0;
}

/* ========================================
   Responsive Breakpoints
   ======================================== */

/* Tablet and below (768px) */
@media (max-width: 768px) {
  .login-page-bg {
    padding: 40px 20px;
  }

  .login-box {
    width: 100%;
    max-width: 100%;
    padding: 0 30px 30px 30px;
  }

  .btn-oidc {
    font-size: 16px;
    padding: 12px 20px;
  }

  .login-divider {
    margin: 20px 0;
  }

  #aro_logo {
    width: 100%;
    max-width: 300px;
  }
}

/* Mobile (480px and below) */
@media (max-width: 480px) {
  .login-page-bg {
    padding: 20px 10px;
  }

  .login-box {
    padding: 0 20px 20px 20px;
    border: none;
    box-shadow: none;
  }

  .btn-oidc {
    font-size: 15px;
    padding: 10px 16px;
    min-height: 44px; /* Maintain touch target size */
  }

  .login-divider {
    margin: 16px 0;
    font-size: 13px;
  }

  .login-divider::before {
    margin-right: 12px;
  }

  .login-divider::after {
    margin-left: 12px;
  }

  .oidc-enforced-notice,
  .flash-message {
    padding: 10px 12px;
    font-size: 13px;
  }

  .login-box .form-control {
    font-size: 16px; /* Prevent iOS zoom on focus */
  }

  #aro_logo {
    width: 100%;
    max-width: 250px;
  }
}

/* Large screens (1920px and above) */
@media (min-width: 1920px) {
  .login-box {
    max-width: 600px;
    padding: 0 60px 60px 60px;
  }

  .btn-oidc {
    font-size: 18px;
    padding: 14px 28px;
    min-height: 48px;
  }

  .login-divider {
    margin: 28px 0;
    font-size: 16px;
  }

  #aro_logo {
    width: 450px;
  }
}

/* ========================================
   Accessibility Features
   ======================================== */

/* Reduced Motion Support */
@media (prefers-reduced-motion: reduce) {
  .btn-oidc,
  .login-divider,
  .flash-message,
  .oidc-enforced-notice {
    transition: none;
  }

  .btn-oidc:active {
    transform: none;
  }

  * {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}

/* High Contrast Mode Support */
@media (prefers-contrast: high) {
  .btn-oidc {
    border: 2px solid currentColor;
  }

  .btn-oidc:focus,
  .btn-oidc:focus-visible {
    outline: 3px solid currentColor;
    outline-offset: 3px;
  }

  .flash-message,
  .oidc-enforced-notice {
    border-width: 2px;
  }

  .login-divider::before,
  .login-divider::after {
    border-bottom-width: 2px;
  }
}

/* Focus Visible (Modern Browsers) */
.btn-oidc:focus:not(:focus-visible) {
  outline: none;
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
}

/* Ensure sufficient touch targets on all devices */
@media (pointer: coarse) {
  .btn-oidc,
  .login-box .form-control,
  .login-box button,
  .login-box a {
    min-height: 44px;
    min-width: 44px;
  }
}

/* Print Styles */
@media print {
  .btn-oidc,
  .login-divider,
  .oidc-enforced-notice {
    box-shadow: none;
  }

  .flash-message {
    border: 1px solid #000;
  }
}

/* Dark Mode Support (if needed in future) */
@media (prefers-color-scheme: dark) {
  /* Uncomment when dark mode is implemented
  .login-box {
    background-color: #2d2d2d;
    border-color: #444;
    color: #f0f0f0;
  }

  .login-box label {
    color: #f0f0f0;
  }

  .login-divider {
    color: #aaa;
  }

  .login-divider::before,
  .login-divider::after {
    border-bottom-color: #555;
  }
  */
}