:root {
      --brand: #2d8f6f;
      --brand2: #25a386;
      --ink: #1e293b;
      --bg: #f0fdf4
    }

    * {
      box-sizing: border-box
    }

    body {
      font-family: Arial, sans-serif;
      margin: 0;
      padding: 0;
      background: var(--bg);
      color: var(--ink)
    }

    /* Header */
    header {
      background: linear-gradient(135deg, var(--brand), var(--brand2));
      text-align: center;
      padding: 25px;
      box-shadow: 0 4px 10px rgba(0, 0, 0, .2)
    }

    header img {
      max-width: 220px;
      width: 100%;
      height: auto;
      display: block;
      margin: 0 auto
    }

    .carousel-indicators [data-bs-target] {
        width: 15px;
        height: 15px;
        border-radius: 50%;
        border: none;
        background: #e5e7eb;
        cursor: pointer;
    }

    .carousel-indicators .active {
        background: var(--brand);
    }

    .carousel-control-next, .carousel-control-prev {
        width: 42px;
        height: 42px;
        top: calc(50% - 42px);
        background-color: rgba(0,0,0,.35);
        border-radius: 50%;
        font-size: 25px;
    }

    .carousel-control-prev {
        left: 10px;
    }
    .carousel-control-next {
        right: 10px;
    }

    /* Form container */
    .form-container {
      max-width: 720px;
      margin: 40px auto;
      background: #fff;
      padding: 30px;
      border-radius: 16px;
      box-shadow: 0 8px 25px rgba(0, 0, 0, .15)
    }

    .form-container h2 {
      text-align: center;
      margin: 0 0 18px;
      color: var(--brand);
      font-size: 22px
    }

    /* Stepper modern (node+connector) */
    .progress-wrapper {
      margin-bottom: 16px
    }

    .progress-info {
      font-size: 14px;
      font-weight: 700;
      color: var(--brand);
      text-align: center;
      margin-bottom: 10px
    }

    .stepper {
      display: flex;
      align-items: flex-end;
      gap: 10px;
      margin-bottom: 12px
    }

    .node {
      width: 28px;
      height: 28px;
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      background: #e5e7eb;
      color: #64748b;
      font-weight: 700;
      font-size: 13px;
      position: relative;
      z-index: 1;
      transition: .25s;
    }

    .node.active {
      background: var(--brand);
      color: #fff
    }

    .node.done {
      background: #16a34a;
      color: #fff
    }

    .node.done::after {
      content: "✔";
      position: absolute;
      inset: 0;
      display: flex;
      align-items: center;
      justify-content: center;
      font-size: 14px;
      font-weight: 900
    }

    .connector {
      flex: 1;
      position: relative;
      height: 20px;
      display: flex;
      align-items: flex-end;
      margin-bottom: 4px
    }

    .connector::before {
      content: "";
      width: 100%;
      height: 4px;
      background: #e5e7eb;
      border-radius: 999px
    }

    .connector .fill {
      position: absolute;
      left: 0;
      bottom: 0;
      height: 4px;
      width: 0%;
      background: linear-gradient(90deg, var(--brand), var(--brand2));
      border-radius: 999px;
      transition: width .35s ease
    }

    /* Global progress bar + % */
    .progress-container {
      width: 100%;
      background: #e5e7eb;
      border-radius: 30px;
      height: 14px;
      overflow: hidden
    }

    .progress-bar {
      height: 100%;
      width: 0;
      background: linear-gradient(135deg, var(--brand), var(--brand2));
      transition: width .6s ease
    }

    /* Fields */
    label {
      display: block;
      margin-top: 12px;
      font-weight: 700;
      font-size: 14px
    }

    input,
    select,
    button {
      width: 100%;
      padding: 12px;
      margin-top: 6px;
      border: 1px solid #cbd5e1;
      border-radius: 10px;
      font-size: 15px;
      transition: .25s
    }

    input:focus,
    select:focus {
      border-color: var(--brand);
      outline: none;
      box-shadow: 0 0 0 4px rgba(45, 143, 111, .15)
    }

    /* Buttons + loading */
    .btn-custom {
      background: linear-gradient(135deg, var(--brand), var(--brand2));
      color: #fff;
      font-weight: 700;
      cursor: pointer;
      margin-top: 20px;
      border: none;
      box-shadow: 0 4px 12px rgba(0, 0, 0, .18);
      display: flex;
      align-items: center;
      justify-content: center;
      gap: 8px;
      border-radius: 12px
    }

    .btn-custom:hover {
      filter: saturate(1.05) brightness(1.02);
      transform: translateY(-1px);
      color: #fff;
    }

    .btn-custom.loading {
      pointer-events: none;
      opacity: .85
    }

    .spinner {
      display: none;
      width: 18px;
      height: 18px;
      border: 3px solid rgba(255, 255, 255, .6);
      border-top: 3px solid #fff;
      border-radius: 50%;
      animation: spin 1s linear infinite
    }

    @keyframes spin {
      to {
        transform: rotate(360deg)
      }
    }

    .loading-text {
      display: none;
      color: #fff;
      font-size: 14px;
      animation: fadeBlink 1.2s infinite
    }

    @keyframes fadeBlink {

      0%,
      100% {
        opacity: 1
      }

      50% {
        opacity: .4
      }
    }

    .btn-custom.loading .spinner,
    .btn-custom.loading .loading-text {
      display: inline-block
    }

    /* Step content visibility */
    .step {
      animation: fadeIn .45s
    }

    .step.active {
      display: block
    }

    @keyframes fadeIn {
      from {
        opacity: 0;
        transform: translateY(8px)
      }

      to {
        opacity: 1;
        transform: translateY(0)
      }
    }

    /* OTP 5 kolom */
    .code-inputs {
      display: flex;
      justify-content: space-between;
      gap: 10px;
      margin-top: 10px
    }

    .code-inputs input {
      flex: 1;
      text-align: center;
      font-size: 22px;
      padding: 16px;
      border: 1.5px solid #cbd5e1;
      border-radius: 10px
    }

    .code-inputs input:focus {
      border-color: var(--brand);
      box-shadow: 0 0 0 4px rgba(45, 143, 111, .15)
    }

    /* Success block */
    .success-card {
      background: #fff;
      border-radius: 16px;
      box-shadow: 0 2px 0 rgba(2, 132, 199, .2) inset, 0 12px 30px rgba(0, 0, 0, .08);
      padding: 22px;
      margin-top: 8px;
      border: 1px solid #eef2f7
    }

    .success-icon {
      width: 120px;
      height: 120px;
      border-radius: 999px;
      background: radial-gradient(ellipse at center, #1fb978, #118a5a);
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 8px auto 14px;
      box-shadow: 0 10px 30px rgba(31, 185, 120, .35)
    }

    .success-icon svg {
      width: 64px;
      height: 64px;
      fill: #fff
    }

    .success-title {
      color: #16a34a;
      text-align: center;
      margin: 0 0 6px;
      font-size: 22px;
      font-weight: 800
    }

    .success-desc {
      color: #475569;
      text-align: center;
      margin: 0 10px 16px;
      line-height: 1.55
    }

    .summary {
      margin: 14px 0 18px;
      border: 1px dashed #cbd5e1;
      border-radius: 12px;
      padding: 12px 14px;
      background: #f8fffb
    }

    .summary h4 {
      margin: 0 0 8px;
      color: #0f513a
    }

    .summary dl {
      display: grid;
      grid-template-columns: 140px 1fr;
      gap: 8px 14px;
      margin: 0
    }

    .summary dt {
      font-weight: 700;
      color: #065f46
    }

    .summary dd {
      margin: 0;
      color: #0f172a
    }

    .next-box {
      background: #ecfeff;
      border: 1.5px solid #7dd3fc;
      border-radius: 16px;
      padding: 16px 18px;
      box-shadow: 0 8px 18px rgba(125, 211, 252, .22) inset
    }

    .next-box h4 {
      margin: 0 0 8px;
      color: #0369a1;
      font-size: 18px
    }

    .next-box ul {
      margin: 0 0 0 18px
    }

    .next-box li {
      margin: 8px 0
    }

    /* Testimonial */
    .testimonial {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
      gap: 20px;
      padding: 40px;
      background: #e6f9f3
    }

    .card {
      background: #fff;
      border-radius: 12px;
      box-shadow: 0 4px 15px rgba(0, 0, 0, .1);
      padding: 20px;
      text-align: center;
      transition: transform .6s cubic-bezier(.2, .8, .2, 1), opacity .6s, box-shadow .3s;
      transform: translateY(20px) scale(.98);
      opacity: 0
    }

    .card:hover {
      transform: translateY(-5px) scale(1.01);
      box-shadow: 0 6px 20px rgba(0, 0, 0, .15)
    }

    .card img {
      width: 80px;
      height: 80px;
      border-radius: 50%;
      object-fit: cover;
      margin-bottom: 10px;
      border: 3px solid var(--brand)
    }

    .card.in-view {
      transform: translateY(0) scale(1);
      opacity: 1;
      display: flex;
      align-items: center;
    }

    .card.pressed {
      animation: pop .25s ease
    }

    @keyframes pop {
      0% {
        transform: scale(.97)
      }

      50% {
        transform: scale(1.02)
      }

      100% {
        transform: scale(1)
      }
    }

    /* Footer */
    footer {
      background: linear-gradient(135deg, var(--brand), var(--brand2));
      color: #fff;
      text-align: center;
      padding: 22px;
      margin-top: 44px;
      font-size: 14px
    }

    footer .desc {
      max-width: 700px;
      margin: 10px auto 0;
      font-size: 13px;
      line-height: 1.5;
      color: #d1fae5
    }

    /* Responsive */
    @media(max-width:768px) {
      .form-container {
        margin: 20px;
        padding: 20px
      }
    }

    @media(max-width:520px) {
      .summary dl {
        grid-template-columns: 1fr
      }

      .summary dt {
        color: #065f46
      }
    }

    @media(max-width:480px) {

      input,
      select,
      .btn-custom {
        font-size: 14px;
        padding: 10px
      }

      .card img {
        width: 60px;
        height: 60px
      }

      .code-inputs {
        gap: 6px
      }

      .code-inputs input {
        padding: 12px;
        font-size: 18px
      }
    }