/**
 * Wire 3 Order Form Styling
 *  - using bootstrap 5 grid, bs-stepper, and nice-forms.css
 *  - wire 3 theme colors in wire3.css
 *  - bootswatch's zephyr theme colors in wire3.css
 *
 * made with care and lots of coffee
 * @author pat m. <pat@wire3.com>
 */
/* layout */
main {
  width: 100%;
  margin: 0 auto;
  padding: 0;
  overflow-x: hidden;
}

header {
  width: 100%;
  height: auto;
  z-index: 1;
  background: #ccc;
}

/* stepper */
.bs-stepper-header {
  margin: 0.25rem 0;
  overflow-x: auto;
  scrollbar-width: thin;
}
.bs-stepper-header .line {
  margin: 16px 3px 48px 3px !important;
}
.bs-stepper-header .step .step-trigger {
  padding: 0.5rem 1rem !important;
  flex-direction: column;
  flex-wrap: nowrap;
  font-weight: 500 !important;
}
.bs-stepper-header .step .step.active .step-trigger {
  color: var(--wire3-blue-dark);
  font-weight: 800 !important;
}
.bs-stepper-header .step .bs-stepper-circle {
  margin: 0 !important;
  padding: 0 !important;
  width: 4em !important;
  height: 4em !important;
  background: none !important;
}
.bs-stepper-header .step.disabled > .step-trigger {
  cursor: not-allowed !important;
}
.bs-stepper-header .step.disabled .bs-stepper-circle img {
  filter: grayscale(0.95);
}

/* in-step layout */
.step-title {
  font-size: 70%;
}

@media screen and (min-width: 550px) {
  .step-title {
    font-size: 100%;
  }
}
.step-title > hr {
  width: calc(100% - 1em);
  margin-left: 0.5em;
}

.horizon {
  border-radius: 1.5em;
  background: var(--wire3-blue-dark);
  background: linear-gradient(0deg, var(--wire3-horizon) 30%, var(--wire3-blue-dark) 100%);
  color: var(--wire3-light);
}

.dabby-wrapper {
  height: 0;
  max-width: 180px;
}
.dabby-wrapper > img.dabby {
  -webkit-filter: drop-shadow(5px 3px 8px var(--wire3-blue-dark));
  filter: drop-shadow(5px 3px 8px var(--wire3-blue-dark));
}

/* components */
.alert {
  --bg: var(--wire3-light);
  --border: 1px solid var(--wire3-blue-dark);
  --color: var(--wire3-blue-dark);
  background: var(--bg);
  border: var(--border);
  color: var(--color);
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: start;
  border-radius: 0.75em;
  padding: 1rem 1.5rem;
}
.alert.alert-success {
  --bg: var(--bs-success-bg-subtle);
  --border: 1px solid var(--bs-success);
  --color: var(--bs-success);
}
.alert.alert-danger {
  --bg: var(--bs-danger-bg-subtle);
  --border: 1px solid var(--bs-danger);
  --color: var(--bs-danger);
}
.alert.alert-danger hr {
  border-color: var(--bs-danger);
}
.alert.alert-action {
  --bg: var(--wire3-green-dark);
  --border: none;
  --color: var(--wire3-light);
  flex-direction: row;
  align-items: center;
  padding: 0.6rem 1rem;
  cursor: pointer;
}
.alert > .alert-title {
  font-size: 2rem;
}
.alert > hr {
  width: 100%;
}
.alert > button.dismiss {
  min-width: 24px;
  margin-left: auto;
  padding: 0;
  color: var(--color);
  opacity: 0.75;
  cursor: pointer;
}
.alert > button.dismiss .fa {
  margin: 0;
  padding: 0;
}
.alert > button.dismiss:hover {
  background: unset !important;
  border: unset !important;
  color: unset !important;
  opacity: 1;
}

.card {
  border-radius: 2.25em;
  background: var(--wire3-light);
}
.card > fieldset {
  border: none;
}
.card .card {
  background: var(--bs-light);
  border: 1px solid var(--bs-gray-300);
}

.modal {
  display: none;
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  z-index: 1050;
}
.modal.fade:not(.show) {
  opacity: 0;
}
.modal > .modal-dialog {
  width: auto;
  max-width: 800px;
  margin: 2rem auto;
  transition: transform 0.3s ease-out;
  transform: translate(0, -50px);
}
.modal.show > .modal-dialog {
  transform: none;
}
.modal .modal-content {
  display: flex;
  flex-direction: column;
  padding: 1rem;
  background-color: white;
  border: 1px solid var(--bs-gray-300);
  border-radius: 0.5rem;
}
.modal .modal-content > .modal-header {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  justify-content: space-between;
  align-items: center;
  border-bottom: 1px solid var(--bs-gray-300);
  border-top-left-radius: calc(0.5em - 1px);
  border-top-right-radius: calc(0.5em - 1px);
  padding: 0.5rem 1rem;
}
.modal .modal-content > .modal-header .modal-title {
  font-size: 2.25rem;
}
.modal .modal-content > .modal-body {
  padding: 0.5rem 1rem;
}
.modal .modal-content > .modal-body ul {
  margin-bottom: 1rem;
}
.modal .btn-close {
  position: relative;
  padding: 8px 12px;
}
.modal .btn-close::after {
  content: "X";
  font-size: 14px;
  line-height: 12px;
  margin-right: 1px;
  margin-top: 1px;
}

.modal-backdrop {
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  background-color: black;
  z-index: 1040;
}
.modal-backdrop.fade {
  opacity: 0;
}
.modal-backdrop.show {
  opacity: 0.5;
}

/* form styling + nice-form overrides */
/* consult https://nielsvoogt.github.io/nice-forms.css/#customization */
.nice-form-group {
  /* customizations */
  --nf-input-size: 1.2rem;
  --nf-input-font-size: 1.15rem;
  --nf-input-placeholder-color: var(--bs-gray-500);
  --nf-input-color: var(--bs-gray-800);
  --nf-input-background-color: var(--bs-light);
  --nf-input-border-radius: 0.75rem;
  --nf-input-border-color: var(--bs-gray-300);
  --nf-input-border-bottom-width: 1px;
  --nf-input-focus-border-color: var(--wire3-blue-light);
  --nf-valid-input-border-color: var(--bs-success);
  --nf-valid-input-border-bottom-color: var(--bs-success);
  --nf-invalid-input-border-color: var(--bs-danger);
  --nf-invalid-input-border-bottom-color: var(--bs-danger);
}
.nice-form-group select {
  padding: 0.5rem 0.8rem;
}
.nice-form-group {
  /* styling */
  margin-top: 0.5rem;
  /* sizing */
}
.nice-form-group input.sm {
  height: calc(var(--nf-input-size) * 2.15);
}
.nice-form-group {
  /* labels */
}
.nice-form-group > label {
  margin-left: 4px;
}
.nice-form-group > label > em {
  font-style: normal;
  color: var(--bs-danger);
}
.nice-form-group {
  /* errors */
}
.nice-form-group > small {
  display: none;
  font-size: 0.8em;
  margin-left: 4px;
  color: var(--bs-danger);
}
.nice-form-group > input.is-invalid + small {
  display: inline-block;
}
.nice-form-group {
  /* custom validity */
}
.nice-form-group input {
  /* fix nice-forms styling on invalid elements */
}
.nice-form-group input:required:invalid:not(:placeholder-shown) {
  border-color: var(--nf-invalid-input-border-bottom-color);
}
.nice-form-group input.is-invalid {
  border-color: var(--bs-danger) !important;
}
.nice-form-group input.is-valid {
  border-color: var(--bs-success) !important;
}
.nice-form-group {
  /* i don't want the icons! */
  --icon-padding: calc(var(--nf-input-size) * 0.75);
}
.nice-form-group input[type=email], .nice-form-group input[type=tel], .nice-form-group input[type=url], .nice-form-group input[type=password] {
  background-image: none !important;
}

button {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  align-items: center;
  font-size: 1.15em;
  border-radius: 1.75em;
  cursor: pointer;
  transition: all 150ms ease-in-out;
  --padding: 10px 30px;
  --border: none;
  --bg: var(--wire3-green-dark);
  --color: var(--wire3-light);
  padding: var(--padding);
  border: var(--border);
  background-color: var(--bg);
  color: var(--color);
  /* disabled state */
}
button:disabled {
  opacity: 0.65;
  cursor: not-allowed;
}
button {
  /* regular button hover/active */
}
button:hover, button:active {
  --bg: #283848;
  --color: var(--wire3-light);
}
button {
  /* blue button */
}
button.btn-blue {
  --bg: #283848;
  --border: none;
  --color: var(--wire3-light);
}
button.btn-blue:hover, button.btn-blue:active {
  --bg: var(--wire3-blue-dark);
}
button {
  /* outline buttons */
}
button.outline {
  --padding: 8px 26px; /* fix for border adding width/height */
  --bg: transparent;
  --border: 2px solid var(--wire3-green-dark);
  --color: var(--wire3-green-dark);
}
button.outline > .fa {
  --color: var(--wire3-green-dark);
}
button.outline {
  /* outline button hover/active */
}
button.outline:hover, button.outline:active {
  background-color: var(--wire3-green-dark);
  color: var(--wire3-light);
}
button.outline:hover > .fa, button.outline:active > .fa {
  --color: var(--wire3-light);
}
button.outline {
  /* blue outline button */
}
button.outline.btn-blue {
  --border: 2px solid #283848;
  --color: var(--wire3-blue-dark);
}
button.outline.btn-blue > .fa {
  --color: var(--wire3-blue-dark);
}
button.outline.btn-blue {
  /* blue outline button hover/active */
}
button.outline.btn-blue:hover, button.outline.btn-blue:active {
  background-color: #283848;
  color: var(--wire3-light);
}
button.outline.btn-blue:hover > .fa, button.outline.btn-blue:active > .fa {
  --color: var(--wire3-light);
}
button {
  /* link buttons */
}
button.link {
  --padding: 4px 8px;
  --bg: transparent;
  --color: var(--wire3-green-dark);
  text-decoration: underline;
  transition: all 150ms ease-in-out;
  border-radius: 0.3em;
}
button.link:hover {
  --color: var(--wire3-blue-dark);
}
button.link:active {
  --bg: var(--wire3-blue-dark);
  --color: var(--wire3-light);
}
button {
  /* sizing */
}
button.sm {
  --padding: 2px 36px;
  font-size: 1em;
}
button {
  /* icons */
}
button > .fa {
  margin-left: 0.5em;
  margin-top: -2px;
  /* 150ms is too fast, it looks weird */
  transition: all 200ms ease-in-out;
}
button.animated:not(:disabled):hover > .fa, button.animated:active > .fa {
  margin-left: 0.9em;
}

hr {
  border: none;
  border-top: 1px solid var(--bs-gray-300);
}

input[type=checkbox] {
  width: 1.75rem !important;
  height: 1.75rem !important;
  padding: 0;
  cursor: pointer;
  /* validity */
  background-color: var(--bs-light);
}
input[type=checkbox].is-invalid {
  --nf-invalid-input-background-color: var(--bs-danger-bg-subtle);
}
input[type=checkbox].is-invalid:checked {
  background-color: var(--wire3-blue-light) !important;
}
input[type=checkbox].is-valid {
  --nf-valid-input-background-color: var(--wire3-horizon);
}
input[type=checkbox].untouched {
  border-color: var(--nf-input-border-color) !important;
}
input[type=checkbox].untouched:hover {
  border-color: var(--nf-input-focus-border-color) !important;
}
input[type=checkbox].untouched:valid {
  background-color: var(--wire3-blue-light) !important;
}
input[type=checkbox] {
  /* label */
}
input[type=checkbox] + label {
  line-height: 1.15;
  vertical-align: middle;
  transition: 200ms all ease-in-out;
}
input[type=checkbox].is-invalid + label {
  font-size: 105%;
  color: var(--bs-danger) !important;
}

input[readonly] {
  background-color: var(--bs-gray-300) !important;
  cursor: not-allowed !important;
}
input[readonly] + small {
  display: inline-block;
  color: var(--bs-gray-700);
}

/* step 1 */
#customer-info #autosave span {
  display: none;
}
#customer-info img.dabby {
  /* at 768px, 11rem -> 1200px wide, 9.5rem height */
  max-height: clamp(9.5rem, 13.667rem - 5.556vw, 11rem);
  /* at 766px, -5.3rem -> 1200px, -4.5rem */
  margin-top: -5.2rem;
  max-width: unset;
}
#customer-info label[for=marketing-opt-in] > small {
  opacity: 1;
}
#customer-info #g-recaptcha-error {
  max-width: 250px;
  text-align: end;
}
@media screen and (min-width: 786px) {
  #customer-info #autosave span {
    display: inline-block;
  }
  #customer-info #g-recaptcha > div {
    flex-direction: row !important;
  }
  #customer-info #g-recaptcha-error {
    margin-bottom: 0 !important;
    margin-right: 1rem !important;
  }
}
@media screen and (min-width: 1100px) {
  #customer-info img.dabby {
    margin-top: -4.8rem;
  }
}

.autocomplete-suggestions {
  background: var(--bs-light);
  border: 1px solid var(--bs-gray-300);
  border-radius: 0.5em;
  max-height: 250px;
  margin-top: 3px;
  padding: 6px 2px;
  overflow-y: auto;
}
.autocomplete-suggestions div[role=option] {
  margin: 0 -2px;
  padding: 0.2rem 1rem;
  font-size: 1.2rem;
  cursor: pointer;
  transition: all 20ms ease-out;
}
.autocomplete-suggestions div[role=option]:hover, .autocomplete-suggestions div[role=option]:focus, .autocomplete-suggestions div[role=option]:active {
  background: var(--wire3-blue-dark);
  color: var(--wire3-light);
}
.autocomplete-suggestions .empty {
  margin: 0 -2px;
  padding: 0.2rem 1rem;
  font-size: 1.2rem;
  color: var(--bs-gray-600);
}

/* step 2 */
#service-options {
  /* loader modified from https://codepen.io/milanraring/pen/zYrYggg */
}
#service-options #offers-loader > div {
  --front-color: var(--wire3-green-dark);
  --back-color: #c3c8de;
  --text-color: var(--bs-gray-700);
  position: relative;
  width: 8rem;
  height: 8rem;
  display: flex;
  justify-content: center;
  align-items: center;
  border-radius: 50%;
}
#service-options #offers-loader > div svg {
  position: absolute;
  display: flex;
  justify-content: center;
  align-items: center;
}
#service-options #offers-loader > div svg circle {
  position: absolute;
  fill: none;
  stroke-width: 6px;
  stroke-linecap: round;
  stroke-linejoin: round;
  transform: rotate(-100deg);
  transform-origin: center;
}
#service-options #offers-loader > div svg circle.back {
  stroke: var(--back-color);
}
#service-options #offers-loader > div svg circle.front {
  stroke: var(--front-color);
}
#service-options #offers-loader > div svg {
  /* not sure how the stroke-dasharray values were calculated */
}
#service-options #offers-loader > div svg.circle-outer {
  height: 120px;
  width: 120px;
}
#service-options #offers-loader > div svg.circle-outer circle {
  stroke-dasharray: 62.75 188.25;
}
#service-options #offers-loader > div svg.circle-outer circle.back {
  animation: loader-outer 1.8s ease infinite 0.35s;
}
#service-options #offers-loader > div svg.circle-outer circle.front {
  animation: loader-outer 1.8s ease infinite 0.175s;
}
#service-options #offers-loader > div svg.circle-middle {
  height: 100px;
  width: 100px;
}
#service-options #offers-loader > div svg.circle-middle circle {
  stroke-dasharray: 42.5 127.5;
}
#service-options #offers-loader > div svg.circle-middle circle.back {
  animation: loader-middle 1.8s ease infinite 0.25s;
}
#service-options #offers-loader > div svg.circle-middle circle.front {
  animation: loader-middle 1.8s ease infinite 0.125s;
}
#service-options #offers-loader > div svg.circle-inner {
  height: 80px;
  width: 80px;
}
#service-options #offers-loader > div svg.circle-inner circle {
  stroke-dasharray: 22 66;
}
#service-options #offers-loader > div svg.circle-inner circle.back {
  animation: loader-inner 1.8s ease infinite 0.1s;
}
#service-options #offers-loader > div svg.circle-inner circle.front {
  animation: loader-inner 1.8s ease infinite 0.05s;
}
#service-options #offers-loader > div .loader-text {
  position: absolute;
  bottom: -25px;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: min(5vw, 1.5rem);
  letter-spacing: 0.2px;
  text-wrap: nowrap;
}
#service-options #offers-loader > div .loader-text::before, #service-options #offers-loader > div .loader-text::after {
  content: attr(data-text);
}
#service-options #offers-loader > div .loader-text::before {
  color: var(--text-color);
}
#service-options #offers-loader > div .loader-text::after {
  position: absolute;
  left: 0;
  color: var(--front-color);
  animation: loader-text 3.6s ease infinite;
}
#service-options .horizon {
  position: relative;
  background: linear-gradient(50deg, var(--wire3-horizon) 45%, var(--wire3-blue-dark) 100%);
  z-index: 0;
}
#service-options .horizon > div {
  z-index: 2;
}
#service-options .horizon::after {
  content: "";
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100%;
  max-width: 350px;
  height: 100%;
  background-image: url("/img/dabby/frequency.png");
  background-position: center;
  background-size: cover;
  opacity: 0;
  transition: opacity 250ms ease-in-out;
  z-index: 1;
}
#service-options img.dabby {
  max-height: 10rem;
  margin-top: -2.5rem;
}
#service-options {
  /* slider */
}
#service-options .swiffy-slider {
  --slides: 1;
}
#service-options .swiffy-slider[data-slides="2"] {
  --slides: 2;
}
#service-options .swiffy-slider[data-slides="3"] {
  --slides: 3;
}
#service-options .swiffy-slider[data-slides="4"] {
  --slides: 4;
}
#service-options .swiffy-slider[data-slides="5"] {
  --slides: 5;
}
#service-options .swiffy-slider {
  --swiffy-slider-item-count: 1;
  --swiffy-slider-item-gap: 0.25rem;
  --swiffy-slider-item-reveal: 3.5rem;
}
#service-options .swiffy-slider .slider-nav {
  z-index: 999;
  margin-left: -1.4rem;
}
#service-options .swiffy-slider .slider-nav.slider-nav-next {
  margin-right: -1.4rem;
}
@media screen and (min-width: 768px) {
  #service-options .swiffy-slider .slider-nav {
    margin-left: -2.15rem;
  }
  #service-options .swiffy-slider .slider-nav.slider-nav-next {
    margin-right: -2.15rem;
  }
}
@media screen and (min-width: 991px) {
  #service-options .swiffy-slider .slider-nav {
    margin-left: -2.25rem;
  }
  #service-options .swiffy-slider .slider-nav.slider-nav-next {
    margin-right: -2.25rem;
  }
}
@media screen and (min-width: 576px) {
  #service-options #offers-container .swiffy-slider {
    --swiffy-slider-item-count: 1.35;
  }
}
@media screen and (min-width: 768px) {
  #service-options #offers-container .swiffy-slider {
    --swiffy-slider-item-count: 2;
    --swiffy-slider-item-reveal: 0rem;
  }
  #service-options #offers-container .swiffy-slider[data-slides="1"] .slider-nav, #service-options #offers-container .swiffy-slider[data-slides="2"] .slider-nav {
    display: none;
  }
}
@media screen and (min-width: 992px) {
  #service-options #offers-container .swiffy-slider {
    --swiffy-slider-item-count: 2.5;
  }
}
@media screen and (min-width: 1200px) {
  #service-options #offers-container .swiffy-slider {
    --swiffy-slider-item-count: 3;
  }
  #service-options #offers-container .swiffy-slider[data-slides="1"] .slider-nav, #service-options #offers-container .swiffy-slider[data-slides="2"] .slider-nav, #service-options #offers-container .swiffy-slider[data-slides="3"] .slider-nav {
    display: none;
  }
}
@media screen and (min-width: 1400px) {
  #service-options #offers-container .swiffy-slider {
    --swiffy-slider-item-count: var(--slides);
  }
  #service-options #offers-container .swiffy-slider .slider-nav {
    display: none;
  }
  #service-options #offers-container .swiffy-slider .slider-container > li:first-child, #service-options #offers-container .swiffy-slider .slider-container > li:last-child {
    margin: 0;
  }
}
#service-options #offers-container .swiffy-slider[data-slides="1"] .slider-nav {
  display: none;
}
#service-options #offers-container .swiffy-slider .slider-container {
  padding: 2rem 0 1rem 0;
}
#service-options #offers-container .swiffy-slider .slider-container > li:first-child {
  padding-left: 2rem;
}
#service-options #offers-container .swiffy-slider .slider-container > li:last-child {
  padding-right: 2rem;
}
#service-options #tc-container .swiffy-slider {
  --swiffy-slider-item-count: 1.5;
  --swiffy-slider-item-reveal: 4.5rem;
}
@media screen and (min-width: 768px) {
  #service-options #tc-container .swiffy-slider {
    --swiffy-slider-item-count: attr(data-slides);
    --swiffy-slider-item-reveal: 0.25rem;
  }
  #service-options #tc-container .swiffy-slider .slider-nav {
    display: none;
  }
}
#service-options {
  /* plan styling */
}
#service-options label.plan {
  padding: 0 0.05em;
  border: none;
  cursor: pointer;
}
#service-options label.plan > input[name=plan] + .plan-wrapper {
  border: 0 solid var(--bs-white);
}
#service-options label.plan > input[name=plan]:checked + .plan-wrapper {
  box-shadow: 0 1px 6px 2px var(--bs-gray-400);
  border-width: 10px;
  transform: scale(1.08);
  z-index: 1;
}
#service-options label.plan > input[name=plan]:checked + .plan-wrapper .plan-action > button {
  --bg: var(--wire3-blue-dark);
  --color: var(--wire3-light);
  padding: 8px 36px;
}
#service-options .plan-wrapper {
  position: relative;
  display: flex;
  flex-direction: column;
  flex-wrap: nowrap;
  align-items: center;
  justify-content: center;
  background-color: var(--bs-white);
  border-radius: calc(1em + 10px);
  z-index: 0;
  transition: all 150ms ease-in-out;
}
#service-options .plan-wrapper .plan-row {
  width: 100%;
  padding: 0.8em 0;
  background: var(--bs-gray-100);
  text-align: center;
}
#service-options .plan-wrapper .plan-row:nth-child(2n) {
  background: var(--bs-gray-200);
}
#service-options .plan-image {
  position: absolute;
  top: -40px;
  max-width: 80px;
  -webkit-filter: drop-shadow(5px 3px 8px var(--wire3-blue-dark));
  filter: drop-shadow(5px 3px 8px var(--wire3-blue-dark));
}
#service-options .plan-image[src=""] {
  display: none;
}
#service-options .plan-heading {
  border-top-left-radius: 1em;
  border-top-right-radius: 1em;
}
#service-options .plan-speed {
  font-size: 115%;
}
#service-options .plan-speed > h2 {
  font-weight: 800;
  text-wrap: nowrap;
}
#service-options .plan-description {
  display: flex;
  justify-content: center;
  align-items: center;
}
#service-options .plan-action {
  border-bottom-left-radius: 1em;
  border-bottom-right-radius: 1em;
}
#service-options .eero-logo {
  display: inline-block;
  height: 12px;
  margin: 0 2px;
}
#service-options #tc-container h3, #service-options #addons-container h3, #service-options #promos-container h3 {
  font-size: 1.75rem;
}
#service-options #tc-container h3 > span, #service-options #addons-container h3 > span, #service-options #promos-container h3 > span {
  margin-left: 1rem;
  font-size: 1rem;
  font-weight: 400;
  font-style: italic;
}
#service-options label.addon {
  padding: 0 0.05em;
  cursor: pointer;
  transition: all 150ms ease-in-out;
}
#service-options label.addon .addon-wrapper {
  transition: all 150ms ease-in-out;
}
#service-options label.addon:hover {
  transform: scale(1.02);
}
#service-options label.addon {
  /* check states */
}
#service-options label.addon > input[type=checkbox] + .addon-wrapper .card-check {
  position: relative;
  width: 24px;
  min-width: 24px;
  height: 24px;
  border: 2px solid var(--wire3-blue-dark);
}
#service-options label.addon > input[type=checkbox] + .addon-wrapper .card-check > svg {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-40%, -60%) scale(2);
  fill: var(--wire3-blue);
  opacity: 0;
  transition: all 100ms ease-in-out;
}
#service-options label.addon > input[type=checkbox]:checked + .addon-wrapper {
  transform: scale(1.02);
  box-shadow: 0 1px 6px 2px var(--bs-gray-400);
}
#service-options label.addon > input[type=checkbox]:checked + .addon-wrapper .card-check {
  background: var(--wire3-green-dark);
}
#service-options label.addon > input[type=checkbox]:checked + .addon-wrapper .card-check > svg {
  opacity: 1;
}
#service-options label.addon > input[type=checkbox]:checked + .addon-wrapper .addon-action > button {
  --bg: var(--wire3-blue-dark);
  --color: var(--wire3-light);
  padding: 8px 36px;
}
#service-options label.addon .addon-image {
  width: 50px;
  height: 50px;
}
#service-options label.addon.addon-slider-col {
  padding: 0 !important;
}
#service-options label.addon.addon-slider-col .addon-wrapper {
  background-color: var(--bs-gray-100);
  border: 1px solid var(--bs-gray-300);
  border-radius: 1em;
}
#service-options label.addon.addon-slider-col .addon-wrapper > hr {
  border-width: 12px;
  border-color: var(--bs-gray-200);
}
#service-options label.addon.addon-slider-col .addon-wrapper > div {
  display: flex;
  flex-wrap: nowrap;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}
#service-options label.addon.addon-slider-col .addon-wrapper p {
  padding: 0.65rem;
  line-height: 1.15;
}
#service-options label.addon.addon-slider-col .addon-wrapper .product {
  padding: 0.75rem 0.5rem;
  transition: all 150ms ease-in-out;
}
#service-options label.addon.addon-slider-col {
  /* radio statuses */
}
#service-options label.addon.addon-slider-col > input[type=radio] + .addon-wrapper {
  position: relative;
  overflow: hidden;
}
#service-options label.addon.addon-slider-col > input[type=radio]:checked + .addon-wrapper {
  transform: scale(1.01);
  box-shadow: 0 1px 6px 2px var(--bs-gray-400);
  z-index: 1;
}
#service-options label.addon.addon-slider-col > input[type=radio]:checked + .addon-wrapper .product {
  background-color: var(--wire3-green-dark);
  color: var(--wire3-light);
}
#service-options label.addon.addon-slider-col > input[type=radio]:checked + .addon-wrapper .addon-action > button {
  --bg: var(--wire3-blue-dark);
  border-color: var(--wire3-blue-dark);
  --color: var(--wire3-light);
  padding: 8px 36px;
}
#service-options label.addon.addon-slider-col > input[type=radio]:checked + .addon-wrapper .addon-action > button:hover {
  border-color: var(--wire3-green-dark);
}
#service-options label.promo .addon-wrapper > div {
  gap: 1rem;
}
#service-options label.promo .addon-image {
  width: 74px;
  height: 52px;
}
@media screen and (min-width: 992px) {
  #service-options { /* --bs-breakpoint-lg */ }
  #service-options .horizon::after {
    opacity: 0.45;
  }
}

/* step 3 */
#service-confirmation .summary-title {
  font-size: 85%;
}
#service-confirmation #summary-table {
  width: 100%;
}
#service-confirmation #summary-table tr > td:first-child {
  font-weight: bold;
  vertical-align: top;
  text-wrap: nowrap;
}
#service-confirmation .fcc-label {
  max-width: min(350px, 100%);
  border: 1px solid var(--bs-gray-900);
}
#service-confirmation .review-links {
  display: flex;
  flex-direction: row;
  flex-wrap: nowrap;
  gap: 1.5rem;
}
#service-confirmation .review-links > a {
  text-decoration: none;
  transition: 150ms all ease-in-out;
}
#service-confirmation .review-links > a:hover {
  font-weight: bold;
  text-decoration: underline;
}

/* step 4 */
#payment h4 {
  font-size: 1.75em;
}
#payment h6 {
  text-wrap: unset;
}
#payment #payment-form {
  max-width: 600px;
  margin: 0 auto;
}
#payment #payment-form .nice-form-group {
  --nf-input-size: 1rem;
}
#payment #payment-form .form-control.CbHosted {
  padding: 12px;
  border: 1px solid var(--bs-gray-300);
  border-radius: 0.75rem;
}
#payment #payment-form .form-control.CbHosted.is-invalid {
  border-color: var(--bs-danger);
}
#payment #payment-form .form-control.CbHosted.is-valid {
  border-color: var(--bs-success);
}
#payment #payment-form fieldset {
  position: relative;
  border-radius: 1em;
  border: 1px solid var(--bs-gray-300);
  background-color: var(--bs-light);
}
#payment #payment-form fieldset > legend {
  position: absolute;
  top: 0;
  left: 16px;
  margin: 0;
  margin-top: -11px;
  padding: 0 5px;
  width: auto;
  height: 22px;
  line-height: 1;
  font-size: 22px;
  background: var(--wire3-light);
}
#payment #payment-form .form-label {
  margin-bottom: 0.05rem;
}

/* utility classes */
.visually-hidden {
  position: absolute !important;
  width: 1px !important;
  height: 1px !important;
  padding: 0 !important;
  margin: -1px !important;
  overflow: hidden !important;
  clip: rect(0, 0, 0, 0) !important;
  white-space: nowrap !important;
  border: 0 !important;
}

.w-100 {
  width: 100%;
}

.w-50 {
  width: 50%;
}

.h-100 {
  height: 100%;
}

.h-0 {
  height: 0;
  overflow: hidden;
}

.mw-small {
  max-width: 225px;
}

.align-middle {
  vertical-align: middle !important;
}

.text-center {
  text-align: center;
}

.text-wrap-balance {
  text-wrap: balance;
}

.text-decoration-line-through {
  text-decoration: line-through;
}

.text-blue {
  color: var(--wire3-blue-dark);
}

.text-lime {
  color: var(--wire3-green-dark);
}

.text-error {
  color: var(--bs-danger);
}

.bg-white {
  background-color: var(--bs-white);
}

.fa {
  --w: 28px;
  --h: 28px;
  --lh: 28px;
  --color: var(--wire3-light);
  width: var(--w);
  height: var(--h);
  line-height: var(--lh);
  fill: var(--color);
}
.fa.blue {
  --color: var(--wire3-blue-dark);
}
.fa.lime {
  --color: var(--wire3-green-dark);
}
.fa.sm {
  --w: 24px;
  --h: 24px;
  --lh: 24px;
}
.fa.md {
  --w: 48px ;
  --h: 48px;
  --lh: 48px;
}
.fa.lg {
  --w: 64px ;
  --h: 64px;
  --lh: 64px;
}
.fa .right-arrow {
  background-repeat: no-repeat;
}

/* loading spinner for button state, from https://cssloaders.github.io/ */
.spinner {
  width: 28px;
  height: 28px;
  margin-top: -2px;
  margin-left: 8px;
  border: 5px solid var(--wire3-light);
  border-bottom-color: transparent;
  border-radius: 50%;
  display: inline-block;
  box-sizing: border-box;
  animation: spin 1s infinite linear;
}

/* animations */
.fade {
  transition: opacity 0.15s linear;
}

.fade-out {
  animation: fadeOut 300ms forwards;
}

@keyframes spin {
  to {
    transform: rotate(1turn);
  }
}
@keyframes fadeOut {
  from {
    opacity: 1;
  }
  to {
    opacity: 0;
    display: none;
  }
}
@keyframes loader-outer {
  0% {
    stroke-dashoffset: 25;
  }
  25% {
    stroke-dashoffset: 0;
  }
  65% {
    stroke-dashoffset: 301;
  }
  80% {
    stroke-dashoffset: 276;
  }
  100% {
    stroke-dashoffset: 276;
  }
}
@keyframes loader-middle {
  0% {
    stroke-dashoffset: 17;
  }
  25% {
    stroke-dashoffset: 0;
  }
  65% {
    stroke-dashoffset: 204;
  }
  80% {
    stroke-dashoffset: 187;
  }
  100% {
    stroke-dashoffset: 187;
  }
}
@keyframes loader-inner {
  0% {
    stroke-dashoffset: 9;
  }
  25% {
    stroke-dashoffset: 0;
  }
  65% {
    stroke-dashoffset: 106;
  }
  80% {
    stroke-dashoffset: 97;
  }
  100% {
    stroke-dashoffset: 97;
  }
}
@keyframes loader-text {
  0% {
    clip-path: inset(0 100% 0 0);
  }
  50% {
    clip-path: inset(0);
  }
  100% {
    clip-path: inset(0 0 0 100%);
  }
}

/*# sourceMappingURL=order-form.css.map */
