CodeIgniter 3 app for dinbestehjelper.no. Excludes vendor/, local backup folders (new/, archive/, archived/) and DB dumps (*.sql) via .gitignore. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01P16ttGUge8zj91dm6WrmEb
963 lines
15 KiB
CSS
963 lines
15 KiB
CSS
.steps-indicator {
|
|
right: 0;
|
|
bottom: 0;
|
|
left: 0;
|
|
margin: 0;
|
|
padding: 20px 0 0 0;
|
|
height: 30px;
|
|
list-style: none;
|
|
}
|
|
|
|
.steps-indicator li {
|
|
position: relative;
|
|
float: left;
|
|
margin: 0;
|
|
padding: 0;
|
|
padding-top: 10px;
|
|
text-align: center;
|
|
line-height: 15px;
|
|
}
|
|
|
|
.steps-indicator.steps-3 li {
|
|
width: calc(100%/3);
|
|
}
|
|
|
|
.steps-indicator li.current, .steps-indicator li.editing {
|
|
pointer-events: none;
|
|
}
|
|
|
|
.steps-indicator {
|
|
height: 100px;
|
|
position:relative;
|
|
}
|
|
|
|
.bookingContainer{
|
|
margin:0 auto;
|
|
margin-top: 115px;
|
|
/*display:inline-block;*/
|
|
width:700px;
|
|
position:relative;
|
|
}
|
|
|
|
.stepTitleContainer{
|
|
|
|
}
|
|
|
|
.stepCircle{
|
|
height:20px;
|
|
width:20px;
|
|
margin:5px auto;
|
|
border-radius:15px;
|
|
background-color: lightgray;
|
|
}
|
|
|
|
.activeStep{
|
|
background-color:rgb(9, 94, 13);
|
|
}
|
|
|
|
.stepLine{
|
|
position:absolute;
|
|
top: 47%;
|
|
left: 50%;
|
|
right: -116px;
|
|
z-index: -100;
|
|
width: 100%;
|
|
border: 1px solid lightgray;
|
|
}
|
|
|
|
.stepTitle{
|
|
text-align:center;
|
|
font-size:15px;
|
|
}
|
|
|
|
.bookingTitle{
|
|
font-size:20px;
|
|
text-align: center;
|
|
text-transform: uppercase;
|
|
margin-bottom:20px;
|
|
font-weight:bold;
|
|
}
|
|
|
|
.bookingTable{
|
|
|
|
}
|
|
|
|
.inner{
|
|
text-align: center;
|
|
}
|
|
|
|
.BookingStepContainer{
|
|
display:none;
|
|
position:relative;
|
|
min-height: 355px;
|
|
margin-bottom: 50px;
|
|
}
|
|
|
|
#bookingStep1{
|
|
display:block;
|
|
}
|
|
|
|
.bookingButtonContainer{
|
|
position: absolute;
|
|
bottom: 10px;
|
|
left: 10px;
|
|
right: 10px;
|
|
height: 45px;
|
|
}
|
|
|
|
.bookingButtonContainer button{
|
|
position: absolute;
|
|
padding: 15px;
|
|
height: auto;
|
|
background-color: lightgray;
|
|
line-height: 15px;
|
|
}
|
|
|
|
.leftButton{
|
|
left:0;
|
|
}
|
|
|
|
.rightButton{
|
|
right:0;
|
|
}
|
|
|
|
.bookingSubmit{
|
|
position: absolute;
|
|
padding: 15px!important;
|
|
height: auto!important;
|
|
line-height: 15px!important;
|
|
-moz-appearance: auto;
|
|
-webkit-appearance: auto;
|
|
-ms-appearance: auto;
|
|
appearance: auto;
|
|
position: absolute;
|
|
top: 0px;
|
|
}
|
|
|
|
.bookingButton{
|
|
position: absolute;
|
|
padding: 15px!important;
|
|
height: auto!important;
|
|
line-height: 15px!important;
|
|
}
|
|
|
|
#datepicker{
|
|
width: 300px;
|
|
}
|
|
|
|
.availableTimesContainerTitle{
|
|
|
|
}
|
|
|
|
.bookingResultsWrapper{
|
|
display:none;
|
|
}
|
|
|
|
#bookingStep3 p{
|
|
margin: 0 0 1em 0;
|
|
}
|
|
|
|
.availableTimes{
|
|
margin-bottom: 70px;
|
|
}
|
|
|
|
.availableBookingTime{
|
|
padding:10px;
|
|
display:inline-block;
|
|
margin-right:10px;
|
|
margin-bottom:10px;
|
|
cursor:pointer;
|
|
width:60px;
|
|
height:46px;
|
|
background-color: #19AFCA;
|
|
color: white;
|
|
}
|
|
|
|
.availableBookingTime span{
|
|
pointer-events: none;
|
|
}
|
|
|
|
#servicelength{
|
|
-moz-appearance: auto;
|
|
-webkit-appearance: auto;
|
|
-ms-appearance: auto;
|
|
appearance: auto;
|
|
display:none;
|
|
}
|
|
|
|
.serviceTable{
|
|
display: table;
|
|
width:90%;
|
|
border-collapse: collapse;
|
|
margin:10px auto;
|
|
margin-bottom:100px;
|
|
}
|
|
|
|
.serviceHeader{
|
|
display: table-row;
|
|
font-weight:bold;
|
|
}
|
|
|
|
.serviceRow{
|
|
display: table-row;
|
|
position:relative;
|
|
}
|
|
|
|
.serviceCol{
|
|
display: table-cell;
|
|
vertical-align: middle;
|
|
text-align: left;
|
|
position:relative;
|
|
}
|
|
|
|
.serviceNameCol{
|
|
width:60%;
|
|
text-align: left;
|
|
vertical-align: middle;
|
|
padding-left: 5px;
|
|
}
|
|
|
|
.servicePriceCol{
|
|
width:20%;
|
|
text-align: right;
|
|
min-width: 42px;
|
|
width:65px;
|
|
}
|
|
|
|
.serviceQuantityCol{
|
|
width:40px;
|
|
}
|
|
|
|
.serviceInfoCol{
|
|
width:5%;
|
|
padding-left: 10px;
|
|
}
|
|
|
|
.serviceCheckCol{
|
|
width:5%;
|
|
}
|
|
|
|
.serviceInfoIcon{
|
|
width: 25px;
|
|
height: 25px;
|
|
position: relative;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.serviceInfoLabel{
|
|
position:absolute;
|
|
top: 8px;
|
|
right: 27px;
|
|
width:150px;
|
|
text-wrap: pretty;
|
|
border:1px solid gray;
|
|
border-radius:5px;
|
|
background-color: white;
|
|
box-shadow: 5px 5px 5px rgba(0,0,0,0.1);
|
|
visibility: hidden;
|
|
cursor: pointer;
|
|
font-size:10px;
|
|
padding:5px;
|
|
line-height: normal;
|
|
z-index: 100;
|
|
}
|
|
|
|
.serviceInfoIcon .fa-info-circle{
|
|
pointer-events: none;
|
|
position:absolute;
|
|
top:0;
|
|
left:0;
|
|
font-size:25px;
|
|
cursor: pointer;
|
|
z-index: -50;
|
|
}
|
|
|
|
.serviceInfoIcon:hover .serviceInfoLabel{
|
|
visibility: visible;
|
|
}
|
|
|
|
|
|
.serviceCheckCol input[type="checkbox"]{
|
|
width:20px;
|
|
height:20px;
|
|
display:block;
|
|
opacity:1;
|
|
margin-left:5px;
|
|
-moz-appearance:auto;
|
|
-webkit-appearance: auto;
|
|
-ms-appearance: auto;
|
|
appearance: auto;
|
|
cursor:pointer;
|
|
}
|
|
|
|
.serviceCol h4{
|
|
margin-top:10px;
|
|
margin-bottom:0;
|
|
margin-left:5px;
|
|
position: relative;
|
|
left: 60px;
|
|
}
|
|
|
|
.workerTable{
|
|
display: block;
|
|
width: 430px;
|
|
margin:10px auto;
|
|
margin-bottom:100px;
|
|
height:85px;
|
|
}
|
|
|
|
.profileRow{
|
|
display: block;
|
|
height: 87px;
|
|
cursor: pointer;
|
|
}
|
|
|
|
.profileRadioBtn{
|
|
width: 35px;
|
|
height: 85px;
|
|
}
|
|
|
|
.profileCell{
|
|
display: inline-block;
|
|
float:left;
|
|
vertical-align: middle;
|
|
text-align: left;
|
|
}
|
|
|
|
.profileImage{
|
|
width: 75px;
|
|
height: 75px;
|
|
margin-top: 5px;
|
|
margin-left: 5px;
|
|
border-radius: 45px;
|
|
background-position: center center;
|
|
background-repeat: no-repeat;
|
|
background-size: cover;
|
|
}
|
|
|
|
.profileImage img{
|
|
width:100%;
|
|
}
|
|
|
|
.profileRadioBtn input[type="radio"]{
|
|
-moz-appearance: auto;
|
|
-webkit-appearance: auto;
|
|
-ms-appearance: auto;
|
|
appearance: auto;
|
|
opacity: 1;
|
|
margin:0 auto;
|
|
line-height:85px;
|
|
cursor:pointer;
|
|
width: 20px;
|
|
height: 20px;
|
|
z-index: 100;
|
|
position: relative;
|
|
top: 30px;
|
|
left: 6px;
|
|
}
|
|
|
|
.profileName{
|
|
padding-left: 10px;
|
|
font-weight: bold;
|
|
text-align: left;
|
|
line-height: 85px;
|
|
font-size: 18px;
|
|
}
|
|
|
|
.profileDescription{
|
|
padding-left: 10px;
|
|
text-align: left;
|
|
max-width: 300px;
|
|
line-height: 18px;
|
|
display: -webkit-box;
|
|
-webkit-line-clamp: 4;
|
|
-webkit-box-orient: vertical;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.bookingHeader{
|
|
text-align:center;
|
|
margin:20px auto;
|
|
}
|
|
|
|
.totalPanelContainer{
|
|
position: fixed;
|
|
top: 100px;
|
|
right: 0;
|
|
width: 440px;
|
|
z-index: 300;
|
|
}
|
|
|
|
#totalPanel{
|
|
border-top-left-radius: 5px;
|
|
border-bottom-left-radius: 5px;
|
|
box-shadow: 5px 5px 5px rgba(0,0,0,0.1);
|
|
width: 440px;
|
|
display: none;
|
|
z-index: 100;
|
|
}
|
|
|
|
#totalPanelBtnContainer{
|
|
position:absolute;
|
|
right:0px;
|
|
top:0px;
|
|
bottom:0px;
|
|
}
|
|
|
|
#totalPanelBtn{
|
|
position: absolute;
|
|
top: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
width: 20px;
|
|
cursor: pointer;
|
|
min-height: 108px;
|
|
display:none;
|
|
}
|
|
|
|
#totalPanelBtn i{
|
|
color:white;
|
|
font-size:25px;
|
|
position:absolute;
|
|
left: 50%;
|
|
top:50%;
|
|
transform: translate(-50%, -50%);
|
|
}
|
|
|
|
.arrow-right {
|
|
width: 0;
|
|
height: 0;
|
|
border-top: 20px solid transparent;
|
|
border-bottom: 20px solid transparent;
|
|
border-left: 20px solid #1d2726;
|
|
position: absolute;
|
|
top: 5px;
|
|
right: -11px;
|
|
z-index: 200;
|
|
}
|
|
|
|
.panel-heading{
|
|
font-size: 23px;
|
|
margin-top: 20px;
|
|
text-align: center;
|
|
color: #19AFCA;
|
|
font-weight: 600;
|
|
/* margin: 50px 20px 0 20px; */
|
|
position: relative;
|
|
/* left: 60px; */
|
|
margin-top: 10px;
|
|
margin-bottom: 0;
|
|
margin-left: 5px;
|
|
font-size: 22px;
|
|
}
|
|
|
|
.selectedServiceTable{
|
|
display: table;
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin: 10px auto;
|
|
margin-bottom: 45px;
|
|
text-align: left;
|
|
}
|
|
|
|
.totalServiceRow{
|
|
display: table-row;
|
|
}
|
|
|
|
.totalSelectedServiceName{
|
|
padding-left: 10px;
|
|
}
|
|
|
|
.totalSelectedServicePrice{
|
|
display: table-cell;
|
|
vertical-align: middle;
|
|
text-align: left;
|
|
}
|
|
|
|
.selectedServiceCol{
|
|
|
|
}
|
|
|
|
.serviceContent{
|
|
padding-right: 20px;
|
|
}
|
|
|
|
.totalPrice{
|
|
position: absolute;
|
|
left: 0;
|
|
bottom: 10px;
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
text-align: center;
|
|
text-align: right;
|
|
width: 100%;
|
|
padding-right: 30px;
|
|
}
|
|
|
|
.totalSelectedTime{
|
|
position: absolute;
|
|
left: 0;
|
|
bottom: 10px;
|
|
font-size: 20px;
|
|
font-weight: bold;
|
|
text-align: center;
|
|
text-align: Left;
|
|
width: 100%;
|
|
padding-left: 10px;
|
|
}
|
|
|
|
.totalPrice span{
|
|
margin:0 auto;
|
|
}
|
|
|
|
.totalSelectedServicePrice{
|
|
text-align: right;
|
|
width: 110px;
|
|
}
|
|
|
|
.serviceTime{
|
|
display: none;
|
|
}
|
|
|
|
.totalTitle{
|
|
font-size: 15px;
|
|
}
|
|
|
|
.ui-datepicker-inline{
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.bookingName, .bookingEmail, .bookingPhone{
|
|
height: 2.5em;
|
|
max-width: 500px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.bookingEmailTitle, .bookingPhoneTitle{
|
|
margin-bottom:0;
|
|
margin-top:15px;
|
|
}
|
|
|
|
.bookingThankYouTitle{
|
|
margin-top:150px;
|
|
font-weight:bold;
|
|
font-size:20px;
|
|
color:#19AFCA;;
|
|
text-transform:uppercase;
|
|
}
|
|
|
|
.bookingThankYouMessageTitle{
|
|
|
|
}
|
|
|
|
.bookingCalendar{
|
|
float:left;
|
|
margin-top: 10px;
|
|
margin-left: 10px;
|
|
}
|
|
|
|
.bookingResultsWrapper{
|
|
float: left;
|
|
width: 378px;
|
|
margin-left: 10px;
|
|
margin-top: 7px;
|
|
}
|
|
|
|
#bookingStep3{
|
|
min-height: 540px;
|
|
}
|
|
|
|
#serviceBookingDate{
|
|
font-size: 20px;
|
|
text-align: center;
|
|
padding: 10px;
|
|
font-weight: 500;
|
|
display:none;
|
|
padding: 10px 0px 0px 0px;
|
|
}
|
|
|
|
#serviceBookingTime{
|
|
font-size: 20px;
|
|
text-align: center;
|
|
padding: 10px;
|
|
font-weight: 500;
|
|
display:none;
|
|
padding: 10px 0px 0px 0px;
|
|
}
|
|
|
|
.serviceBookingprofileRowContainer{
|
|
|
|
}
|
|
|
|
.serviceBookingprofileImage{
|
|
width: 60px;
|
|
height: 60px;
|
|
background-position: center center;
|
|
background-repeat: no-repeat;
|
|
background-size: cover;
|
|
float: left;
|
|
margin-right: 10px;
|
|
background-color: white;
|
|
border-radius: 45px;
|
|
margin-top: 5px;
|
|
margin-left: 5px;
|
|
}
|
|
|
|
.serviceBookingprofileName{
|
|
float: left;
|
|
font-size: 20px;
|
|
text-align: left;
|
|
height: 60px;
|
|
line-height: 65px;
|
|
margin-top: 5px;
|
|
}
|
|
|
|
.serviceBookingWorkerContainer{
|
|
display:none;
|
|
height:85px;
|
|
}
|
|
|
|
.selectedTime{
|
|
background-color:#a5705b;
|
|
color:white;
|
|
}
|
|
|
|
#bookingStep4{
|
|
min-height:460px;
|
|
}
|
|
|
|
.g-recaptcha{
|
|
position: absolute;
|
|
top: -8px;
|
|
left: 50%;
|
|
transform: translate(-50%, 0);
|
|
}
|
|
|
|
.activeService{
|
|
color:gray;
|
|
}
|
|
|
|
.inactiveService{
|
|
color:lightgray;
|
|
}
|
|
|
|
.serviceIconsContainer{
|
|
display:inline-block;
|
|
margin: 10px auto;
|
|
}
|
|
|
|
.serviceBtn{
|
|
width: 100px;
|
|
height: 100px;
|
|
border-radius: 20px;
|
|
border: 1px solid gray;
|
|
background-size: 80%;
|
|
background-position: center center;
|
|
background-repeat:no-repeat;
|
|
display: inline-block;
|
|
background-color:white;
|
|
}
|
|
|
|
.serviceBtn:hover{
|
|
background-color:#19AFCA;
|
|
cursor:pointer;
|
|
}
|
|
|
|
#cleaningService{
|
|
background-image:url('../img/icons/mop.png');
|
|
}
|
|
|
|
#carService{
|
|
background-image:url('../img/icons/car-service.png');
|
|
}
|
|
|
|
#helphandService{
|
|
background-image:url('../img/icons/technician.png');
|
|
}
|
|
|
|
#gardenService{
|
|
background-image:url('../img/icons/trimming.png');
|
|
}
|
|
|
|
#houseService{
|
|
background-image:url('../img/icons/give.png');
|
|
}
|
|
|
|
#buildService{
|
|
background-image:url('../img/icons/construction.png');
|
|
}
|
|
|
|
.activeServiceButton{
|
|
background-color: #19AFCA;
|
|
}
|
|
|
|
#cleaningServiceContent{
|
|
display:block;
|
|
}
|
|
|
|
.serviceContainer{
|
|
display:none;
|
|
}
|
|
|
|
.xClass{
|
|
position: absolute;
|
|
bottom: 15px;
|
|
width: 10px;
|
|
height: 25px;
|
|
}
|
|
|
|
.bookingStartTitle{
|
|
text-align: center;
|
|
color: #19AFCA;
|
|
font-weight: 600;
|
|
/* margin: 50px 20px 0 20px; */
|
|
position: relative;
|
|
/* left: 60px; */
|
|
margin-top: 10px;
|
|
margin-bottom: 0;
|
|
margin-left: 5px;
|
|
font-size: 22px;
|
|
}
|
|
|
|
.ui-datepicker-week-end a{
|
|
background-image: none;
|
|
color: darkred!important;
|
|
}
|
|
|
|
.formTitle{
|
|
font-size: 15px;
|
|
text-transform: uppercase;
|
|
color: gray;
|
|
display: block;
|
|
text-align: center;
|
|
margin: 0 auto;
|
|
margin-top: 20px;
|
|
max-width: 500px;
|
|
width: auto;
|
|
min-height: 30px;
|
|
height: auto;
|
|
text-align: center;
|
|
}
|
|
|
|
|
|
.formInputBox {
|
|
text-align: center;
|
|
font-size: 18px;
|
|
padding: 5px;
|
|
border: 1px solid lightgray;
|
|
/*height: 25px;*/
|
|
height: 25px;
|
|
max-width: 490px;
|
|
margin: 10px auto;
|
|
display: block;
|
|
width:95%;
|
|
margin-top: 0;
|
|
}
|
|
|
|
.formTextarea {
|
|
text-align: center;
|
|
font-size: 15px;
|
|
padding: 5px;
|
|
border: 1px solid lightgray;
|
|
height: 100px;
|
|
min-height: 100px;
|
|
max-height: 100px;
|
|
max-width: 490px;
|
|
margin: 10px auto;
|
|
display: block;
|
|
width: 500px;
|
|
min-width: 500px;
|
|
max-width: 500px;
|
|
flex-wrap: wrap;
|
|
text-align: justify;
|
|
white-space: normal;
|
|
}
|
|
|
|
.formDropdownBox {
|
|
text-align: center;
|
|
line-height: 35px;
|
|
font-size: 18px;
|
|
padding: 5px 0;
|
|
border: 1px solid lightgray;
|
|
height: 35px;
|
|
max-width: 500px;
|
|
display: block;
|
|
margin: 0 auto;
|
|
text-align-last: center;
|
|
width:100%;
|
|
}
|
|
.formRow {
|
|
margin-bottom:20px;
|
|
text-align: center;
|
|
}
|
|
|
|
|
|
|
|
.textAreaFormRow {
|
|
margin-bottom:20px;
|
|
max-width:500px;
|
|
margin:0 auto;
|
|
}
|
|
|
|
|
|
|
|
.submitButton {
|
|
text-decoration: none;
|
|
text-transform: uppercase;
|
|
color: white;
|
|
max-width: 270px;
|
|
border-radius: 35px;
|
|
display: block;
|
|
margin: 20px auto;
|
|
padding: 12px 20px;
|
|
border: 0;
|
|
outline: 0;
|
|
cursor: pointer;
|
|
background-color: #19AFCA;
|
|
height: auto;
|
|
text-align: center;
|
|
min-width:150px;
|
|
}
|
|
|
|
.cancelButton {
|
|
text-decoration: none;
|
|
text-transform: uppercase;
|
|
color: white;
|
|
max-width: 110px;
|
|
border-radius: 35px;
|
|
display: block;
|
|
margin: 20px auto;
|
|
padding: 10px 20px;
|
|
border: 0;
|
|
outline: 0;
|
|
cursor: pointer;
|
|
background-color: #19AFCA;
|
|
height: auto;
|
|
text-align: center;
|
|
}
|
|
|
|
.proserSubTitleDescription{
|
|
margin: 0 0 30px 0;
|
|
text-align: center;
|
|
position: relative;
|
|
font-weight:bold;
|
|
}
|
|
|
|
.proserSubTitle{
|
|
font-weight:bold;
|
|
}
|
|
|
|
.inputSelectorContainer{
|
|
position:relative;
|
|
display:block;
|
|
width: 235px;
|
|
margin: 0 auto;
|
|
}
|
|
|
|
.inputSelectorContainer > input{
|
|
display:inline-block;
|
|
margin-right:10px;
|
|
font-size:14px;
|
|
}
|
|
|
|
.inputSelectorContainer > label{
|
|
display:inline-block;
|
|
}
|
|
|
|
|
|
.tgroup {
|
|
display: table-row-group;
|
|
}
|
|
|
|
.trow {
|
|
display:table-row;
|
|
}
|
|
|
|
.caption {
|
|
caption-side: top;
|
|
display: table-caption;
|
|
text-align: center;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|