.stepper-container { display: flex; flex-direction: column; width: 100%; } /* ─── Header (indicator bar) ─── */ .stepper-header { display: flex; align-items: flex-start; justify-content: center; gap: 0; margin-bottom: 2rem; position: relative; &__item { display: flex; flex-direction: column; align-items: center; flex: 1; position: relative; } &__line { position: absolute; top: 19px; // center of the 40px circle right: 50%; left: -50%; height: 2px; background-color: var(--bs-gray-300); transition: background-color 0.35s ease; z-index: 0; &.is-completed { background-color: var(--bs-primary); } } &__circle { position: relative; z-index: 1; width: 40px; height: 40px; border-radius: 50%; border: 2px solid var(--bs-gray-300); background-color: var(--bs-gray-100); color: var(--bs-gray-500); font-weight: 700; font-size: 0.875rem; display: flex; align-items: center; justify-content: center; cursor: default; transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1); outline: none; &:not(:disabled) { cursor: pointer; &:hover { border-color: var(--bs-primary); color: var(--bs-primary); } } } &__label { margin-top: 8px; font-size: 0.8125rem; font-weight: 500; color: var(--bs-gray-500); text-align: center; transition: color 0.3s ease; max-width: 120px; line-height: 1.3; } // Active step &__item.is-active { .stepper-header__circle { background-color: var(--bs-primary); border-color: var(--bs-primary); color: white; box-shadow: 0 4px 12px rgba(var(--bs-primary-rgb), 0.35); } .stepper-header__label { color: var(--bs-primary); font-weight: 600; } } // Completed step &__item.is-completed { .stepper-header__circle { background-color: var(--bs-primary); border-color: var(--bs-primary); color: white; } .stepper-header__label { color: var(--bs-body-color); } } } /* ─── Body (content area) ─── */ .stepper-body { // Hide all step wrappers visually — step.component.html // controls visibility with *ngIf on the inner content }