* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

body {
  background: #002f12;
  font-family: 'Poppins', sans-serif;
  color: #ffffff;
  overflow: hidden;
}

/* =========================================================
   PAGE
========================================================= */

.appointment-page {
  height: 100vh;
  padding: 18px 24px;

  display: flex;
  align-items: center;
  justify-content: center;
}

/* =========================================================
   MAIN CARD
========================================================= */

.appointment-card {
  position: relative;

  width: 100%;
  max-width: 1560px;

  height: calc(100vh - 36px);

  padding: 24px;

  border-radius: 38px;

  background: #003b17;

  box-shadow: 0 30px 70px rgba(0,0,0,0.18);

  display: grid;
  grid-template-columns: 0.92fr 1.08fr;

  gap: 28px;

  overflow: hidden;
}

/* =========================================================
   CLOSE BUTTON
========================================================= */

.close-btn {
  position: absolute;

  top: 18px;
  right: 18px;

  width: 42px;
  height: 42px;

  border: none;

  border-radius: 50%;

  background: rgba(255,255,255,0.14);

  color: #ffffff;

  font-size: 28px;

  cursor: pointer;

  z-index: 50;

  display: flex;
  align-items: center;
  justify-content: center;

  transition: 0.3s ease;

  backdrop-filter: blur(8px);
}

.close-btn:hover {
  background: rgba(255,255,255,0.24);

  transform: rotate(90deg);
}

/* =========================================================
   LEFT IMAGE
========================================================= */

.appointment-image {
  position: relative;

  height: 100%;

  border-radius: 28px;

  overflow: hidden;

  background:
    linear-gradient(
      to bottom,
      rgba(255,255,255,0.04),
      rgba(0,0,0,0.20)
    ),
    url("./image.webp");

  background-size: cover;
  background-position: center;
}

/* OVERLAY */
.image-overlay {
  position: absolute;
  inset: 0;

  background: linear-gradient(
    to top,
    rgba(0,0,0,0.42),
    rgba(0,0,0,0.05)
  );
}

/* =========================================================
   BRAND LOGO
========================================================= */

.brand-box {
  position: absolute;

  top: 16px;
  left: 16px;

  z-index: 2;

  background: transparent;

  backdrop-filter: none;

  padding: 0;

  border-radius: 0;

  box-shadow: none;

  display: flex;
  align-items: center;
  justify-content: center;
}

.brand-logo {
  width: 72px;
  height: auto;
  display: block;
}

/* =========================================================
   IMAGE TEXT
========================================================= */

.image-text {
  position: absolute;

  left: 28px;
  bottom: 28px;

  z-index: 2;

  color: #ffffff;
}

.image-text h1 {
  font-family: 'Nuosu SIL', serif;

  font-size: clamp(38px, 3.8vw, 56px);

  line-height: 0.92;

  font-weight: 400;
}

.image-text p {
  margin-top: 8px;

  font-size: 13px;

  max-width: 280px;
}

/* =========================================================
   RIGHT FORM
========================================================= */

.appointment-form-wrap {
  height: 100%;

  background: #f8f5ef;

  border-radius: 28px;

  padding: 28px 42px 28px;

  overflow: hidden;
}

/* =========================================================
   HEAD
========================================================= */

.form-head {
  position: relative;

  padding-bottom: 12px;

  margin-bottom: 14px;

  border-bottom: 1px solid rgba(13,45,22,0.10);
}

/* BADGE */
.top-badge {
  position: absolute;

  top: 0;
  right: 0;

  background: #efe6d3;

  color: #0d2d16;

  border: 1px solid rgba(13,45,22,0.10);

  padding: 7px 14px;

  border-radius: 999px;

  font-size: 10px;

  font-weight: 700;

  letter-spacing: .4px;
}

.form-head h2 {
  font-family: 'Nuosu SIL', serif;

  font-size: clamp(32px, 2.8vw, 48px);

  line-height: 0.92;

  font-weight: 400;

  margin-bottom: 6px;

  color: #0d2d16;
}

.form-head p {
  font-size: 14px;

  color: rgba(13,45,22,0.72);
}

/* =========================================================
   STEPS
========================================================= */

.form-step {
  display: none;
}

.form-step.active {
  display: block;

  animation: fadeUp .35s ease;
}

@keyframes fadeUp {

  from {
    opacity: 0;
    transform: translateY(16px);
  }

  to {
    opacity: 1;
    transform: translateY(0);
  }
}

/* =========================================================
   FORM LAYOUT
========================================================= */

.form-row {
  display: grid;

  grid-template-columns: 1fr 1fr;

  gap: 18px;
}

.form-group {
  margin-bottom: 10px;
}

.form-group label {
  display: block;

  margin-bottom: 5px;

  font-size: 13px;

  font-weight: 700;

  letter-spacing: 1.8px;

  color: #0d2d16;
}

/* =========================================================
   INPUTS
========================================================= */

.form-group input,
.form-group select {
  width: 100%;

  height: 42px;

  border-radius: 12px;

  border: 1px solid rgba(13,45,22,0.16);

  background: #f8f5ef;

  color: #0d2d16;

  padding: 0 18px;

  font-size: 14px;

  font-weight: 500;

  outline: none;
}

.form-group input::placeholder {
  color: rgba(13,45,22,0.40);
}

.form-group input:focus,
.form-group select:focus {
  border-color: #d8c7a3;

  box-shadow: 0 0 0 4px rgba(216,199,163,0.10);
}

.form-group select option {
  background: #ffffff;
  color: #0d2d16;
}

/* =========================================================
   BUTTONS
========================================================= */

.main-btn,
.back-btn {
  height: 44px;

  border: none;

  border-radius: 999px;

  padding: 0 34px;

  font-size: 14px;

  font-weight: 700;

  letter-spacing: 1px;

  cursor: pointer;

  transition: 0.3s ease;
}

.main-btn {
  width: 100%;

  background: #003b17;

  color: #ffffff;

  box-shadow: 0 16px 30px rgba(0,0,0,0.16);

  margin-top: 4px;
}

.main-btn:hover {
  background: #0d5426;

  transform: translateY(-2px);
}

.back-btn {
  background: transparent;

  color: #0d2d16;

  border: 1px solid rgba(13,45,22,0.18);
}

.back-btn:hover {
  background: rgba(13,45,22,0.05);
}

.button-row {
  display: grid;

  grid-template-columns: 0.42fr 1fr;

  gap: 14px;
}

/* =========================================================
   STEP 2
========================================================= */

#step2 .form-group {
  margin-bottom: 10px;
}

#step2 .form-group input,
#step2 .form-group select {
  height: 42px;
}


/* =========================================================
   1441px+ BIG DESKTOP
========================================================= */

@media (min-width: 1441px) {

  .appointment-card{
    max-width: 1880px;

    height: calc(100vh - 44px);

    grid-template-columns: 0.94fr 1.06fr;

    gap: 10px !important;

    padding: 20px;

    border-radius: 42px;
  }

  .appointment-image{
    border-radius: 34px;
  }

  .appointment-form-wrap{
    border-radius: 34px;

    padding: 42px 56px;
  }

  .brand-logo{
    width: 95px;
  }

  .image-text{
    left: 42px;
    bottom: 42px;
  }

  .image-text h1{
    font-size: clamp(62px, 4vw, 88px);

    line-height: .92;
  }

  .image-text p{
    font-size: 19px;

    max-width: 420px;

    margin-top: 18px;

    line-height: 1.8;
  }

  .form-head{
    margin-bottom: 26px;

    padding-bottom: 18px;
  }

  .top-badge{
    padding: 10px 20px;

    font-size: 13px;
  }

  .form-head h2{
    font-size: clamp(58px, 4vw, 82px);
  }

  .form-head p{
    font-size: 18px;

    margin-top: 14px;
  }

  .form-row{
    gap: 24px;
  }

  .form-group{
    margin-bottom: 18px;
  }

  .form-group label{
    font-size: 15px;

    margin-bottom: 10px;
  }

  .form-group input,
  .form-group select{
    height: 58px;

    font-size: 17px;

    border-radius: 16px;

    padding: 0 22px;
  }

  .main-btn,
  .back-btn{
    height: 58px;

    font-size: 16px;
  }

  .button-row{
    gap: 18px;
  }

  .close-btn{
    width: 52px;
    height: 52px;

    font-size: 34px;

    top: 22px;
    right: 22px;
    color: rgba(18, 65, 28, 0.72);
  }
}


/* =========================================================
   1025px — 1440px DESKTOP
========================================================= */

@media (min-width: 1025px) and (max-width: 1440px){

  .appointment-card{
    max-width: 1380px;

    height: calc(100vh - 34px);

    gap: 24px;
  }

  .appointment-form-wrap{
    padding: 26px 34px;
  }

  .image-text h1{
    font-size: clamp(42px, 3vw, 58px);
  }

  .form-head h2{
    font-size: clamp(38px, 3vw, 54px);
  }
}


/* =========================================================
   769px — 1024px LAPTOP / TABLET
========================================================= */

@media (min-width: 769px) and (max-width: 1024px){

  .appointment-card{
    height: auto;

    min-height: calc(100vh - 30px);

    grid-template-columns: 1fr;

    gap: 20px;

    padding: 20px;
  }

  .appointment-image{
    min-height: 420px;
  }

  .appointment-form-wrap{
    padding: 28px;
  }

  .image-text h1{
    font-size: 52px;
  }

  .form-head h2{
    font-size: 48px;
  }

  .form-row{
    gap: 16px;
  }
}


/* =========================================================
   481px — 768px TABLET
========================================================= */

@media (min-width: 481px) and (max-width: 768px){

  .appointment-card{
    height: auto;

    grid-template-columns: 1fr;

    gap: 18px;

    padding: 16px;

    border-radius: 28px;
  }

  .appointment-image{
    min-height: 360px;

    border-radius: 22px;
  }

  .appointment-form-wrap{
    border-radius: 22px;

    padding: 24px 20px;
  }

  .brand-logo{
    width: 68px;
  }

  .image-text{
    left: 22px;
    bottom: 22px;
  }

  .image-text h1{
    font-size: 42px;
  }

  .image-text p{
    font-size: 14px;
  }

  .form-head h2{
    font-size: 40px;
  }

  .form-head p{
    font-size: 14px;
  }

  .form-row{
    grid-template-columns: 1fr;
  }

  .button-row{
    grid-template-columns: 1fr;
  }

  .main-btn,
  .back-btn{
    width: 100%;
  }
}


/* =========================================================
   MOBILE ≤480px
========================================================= */

@media (max-width: 480px){

  .appointment-card{
    height: auto;

    grid-template-columns: 1fr;

    gap: 14px;

    padding: 12px;

    border-radius: 22px;
  }

  .appointment-image{
    min-height: 280px;

    border-radius: 18px;
  }

  .appointment-form-wrap{
    border-radius: 18px;

    padding: 20px 16px;
  }

  .brand-box{
    top: 12px;
    left: 12px;
  }

  .brand-logo{
    width: 58px;
  }

  .image-text{
    left: 18px;
    bottom: 18px;
  }

  .image-text h1{
    font-size: 34px;

    line-height: .95;
  }

  .image-text p{
    font-size: 13px;

    max-width: 240px;
  }

  .close-btn{
    width: 40px;
    height: 40px;

    font-size: 24px;

    top: 12px;
    right: 12px;
  }

  .form-head{
    padding-bottom: 10px;

    margin-bottom: 14px;
  }

  .top-badge{
    position: static;

    display: inline-flex;

    margin-bottom: 14px;
  }

  .form-head h2{
    font-size: 34px;

    line-height: .95;
  }

  .form-head p{
    font-size: 13px;

    line-height: 1.6;

    margin-top: 10px;
  }

  .form-row{
    grid-template-columns: 1fr;

    gap: 0;
  }

  .form-group{
    margin-bottom: 14px;
  }

  .form-group label{
    font-size: 12px;

    letter-spacing: 1.2px;
  }

  .form-group input,
  .form-group select{
    height: 48px;

    font-size: 14px;

    border-radius: 12px;

    padding: 0 16px;
  }

  .button-row{
    grid-template-columns: 1fr;

    gap: 12px;
  }

  .main-btn,
  .back-btn{
    width: 100%;

    height: 48px;

    font-size: 14px;
  }
}