/*
This file contains styles specifically tailored for the public-facing section of the application. These styles override
the general ones defined in styles.css.
*/

.form-check-input:disabled {
    background-color: #a6a7a8;
    cursor: not-allowed;
    opacity: 0.6;
}

.form-select:disabled {
    --cui-form-select-bg-img: none;
}

.logo-max-size {
    max-width: 150px;
    max-height: 150px;
}

.logo-max-size-small {
    max-width: 75px;
    max-height: 75px;
}

.canceled-event td {
    background-color: #f8edee !important;
    color: #721c24 !important;
}

.canceled-participant td {
    background-color: #f8edee !important;
    color: #721c24 !important;
}

/* Step icon circle */
.step-icon {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  display: flex;
  justify-content: center;
  align-items: center;
  font-size: 0.9rem;
  font-weight: 600;
}

/* Container spacing for vertical step list */
.step-vertical-item {
  min-height: 75px;
}

/* Vertical line that connects steps */
.step-line-vertical {
    position: absolute;
    top: 42px;
    left: 50%;
    transform: translateX(-50%);
    width: 3px;
    height: 25px;
    background-color: #dee2e6;
    z-index: 0;
}

.step-horizontal-wrapper {
  position: relative;
  margin-bottom: 1.5rem;
}

.step-horizontal-item {
    position: relative;
    flex: 1;
}

.step-line-horizontal {
    position: absolute;
    top: 16px;
    left: 65%;
    right: -45%;
    height: 2px;
    background-color: #dee2e6;
    z-index: 0;
}
.icon-reservation-sidebar {
    position: absolute;
    left: 15px;
    top: 15px;
    color: gray;
    cursor: pointer;
}

.description-limit {
    display: -webkit-box;
    -webkit-line-clamp: 5;
    -webkit-box-orient: vertical;
    overflow: hidden;
    line-clamp: 5;
    box-orient: vertical;
    text-overflow: ellipsis;
    white-space: pre-line;
    word-break: break-word;
}

/* ─── Phone number widget ────────────────────────────────────────────
   Crispy emits a field's error as a span.invalid-feedback sibling of the
   widget, and Bootstrap keeps it hidden until it follows an .is-invalid
   sibling. The widget's three inputs carry that class but sit inside the
   container, out of reach of a sibling selector, so the container mirrors
   it and this rule does the reveal.                                    */
.phone-widget-container.is-invalid ~ .invalid-feedback {
    display: block;
}

/* The invalid state also swaps a red (!) into the select and pushes its padding to
   4.125rem, which leaves a country column too narrow to read its own label. The border
   and the message below say the same thing, so the icon goes and the caret stays.     */
.phone-widget-container .form-select.is-invalid:not([multiple]):not([size]) {
    --cui-form-select-bg-icon: none;
    padding-right: 2.25rem;
}

/* Same for the extension box, which is narrower still: the (!) leaves it about 5px of
   text and its own 'ext.' placeholder reads as 'e' on a phone.                        */
.phone-widget-ext .form-control.is-invalid {
    background-image: none;
    padding-right: 0.75rem;
}
