:root{
  --brand-green: #1a8c4a;
  --brand-green-dark: #0f5c30;
  --brand-green-light: #eaf7ef;
}

body{
  font-family: 'Poppins', sans-serif;
  color: #222;
}

.fw-400{font-weight:400;}
.fw-500{font-weight:500;}
.fw-600{font-weight:600;}
.fw-700{font-weight:700;}
.fw-800{font-weight:800;}

/* ===== Navbar ===== */
#mainNavbar{
  transition: all .3s ease;
}
.navbar-brand{
  font-family:'Poppins',sans-serif;
}
.nav-link{
  color:#333 !important;
  position: relative;
}
.nav-link::after{
  content:"";
  position:absolute;
  left:0; bottom:-2px;
  width:0; height:2px;
  background: var(--brand-green);
  transition: width .25s ease;
}
.nav-link:hover::after{ width:100%; }

.navbar-brand img{
  max-height: 40px;
}
.btn-success{
  background-color: var(--brand-green);
  border-color: var(--brand-green);
}
.btn-success:hover{
  background-color: var(--brand-green-dark);
  border-color: var(--brand-green-dark);
}
.text-success{ color: var(--brand-green) !important; }
.btn-outline-success{
  color: var(--brand-green);
  border-color: var(--brand-green);
}
.btn-outline-success:hover{
  background-color: var(--brand-green);
  border-color: var(--brand-green);
}

/* ===== Hero Slider ===== */
header{ margin-top:76px; }
.hero-slide{
  height: 88vh;
  min-height: 560px;
  background-size: cover;
  background-position: center;
  display:flex;
  align-items:center;
  position:relative;
}
.hero-overlay{
  position:absolute;
  inset:0;
  background: linear-gradient(90deg, rgba(10,40,20,.85) 10%, rgba(10,40,20,.45) 60%, rgba(10,40,20,.2) 100%);
}
.hero-content{
  position:relative;
  z-index:2;
}
.carousel-indicators [data-bs-target]{
  background-color: var(--brand-green);
  width:10px; height:10px;
  border-radius:50%;
}

/* ===== Section spacing ===== */
.section-pad{ padding-top:80px; padding-bottom:80px; }
.bg-light-green{ background-color: var(--brand-green-light); }
.bg-dark-green{ background-color: #0b3d22; }

/* ===== Court Cards ===== */
.court-card{
  border-radius: 18px;
  overflow:hidden;
  transition: transform .3s ease, box-shadow .3s ease;
}
.court-card:hover{
  transform: translateY(-8px);
  box-shadow: 0 15px 30px rgba(0,0,0,.12) !important;
}
.court-img-wrap{
  position:relative;
  overflow:hidden;
  height:200px;
}
.court-img-wrap img{
  height:100%;
  width:100%;
  object-fit:cover;
  transition: transform .4s ease;
}
.court-card:hover .court-img-wrap img{
  transform: scale(1.08);
}

/* ===== Racket Cards (icon) ===== */
.racket-card{
  background:#fff;
  border-radius:16px;
  box-shadow: 0 4px 15px rgba(0,0,0,.06);
  transition: all .3s ease;
}
.racket-card:hover{
  transform: translateY(-6px);
  box-shadow: 0 12px 25px rgba(0,0,0,.1);
}
.racket-icon{
  width:64px; height:64px;
  margin:0 auto;
  background: var(--brand-green-light);
  color: var(--brand-green);
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.8rem;
}

/* ===== Feature icons ===== */
.feature-icon{
  width:52px; height:52px; min-width:52px;
  background: var(--brand-green-light);
  color: var(--brand-green);
  border-radius:14px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.4rem;
}

/* ===== FAQ ===== */
.accordion-item{
  border:none !important;
  border-radius: 14px !important;
  overflow:hidden;
  box-shadow: 0 3px 12px rgba(0,0,0,.05);
}
.accordion-button{
  background:#fff;
}
.accordion-button:not(.collapsed){
  background: var(--brand-green-light);
  color: var(--brand-green-dark);
}
.accordion-button:focus{
  box-shadow:none;
}

/* ===== CTA ===== */
.cta-section{
  background: linear-gradient(135deg, var(--brand-green) 0%, var(--brand-green-dark) 100%);
}

/* ===== Footer ===== */
.footer-links li{ margin-bottom:10px; }
.footer-links a{
  color: rgba(255,255,255,.7);
  text-decoration:none;
  transition: color .2s ease;
}
.footer-links a:hover{ color:#fff; }
.social-btn{
  width:38px; height:38px;
  background: rgba(255,255,255,.1);
  color:#fff;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  text-decoration:none;
  transition: all .25s ease;
}
.social-btn:hover{
  background: var(--brand-green);
  transform: translateY(-3px);
}

/* ===== Floating WhatsApp ===== */
.whatsapp-float{
  position:fixed;
  bottom:24px;
  right:24px;
  background:#25D366;
  color:#fff;
  width:60px;
  height:60px;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:2rem;
  box-shadow: 0 5px 20px rgba(37,211,102,.5);
  z-index:1000;
  animation: pulse 2s infinite;
  text-decoration:none;
}
.whatsapp-float:hover{
  color:#fff;
  transform: scale(1.08);
}
@keyframes pulse{
  0%{ box-shadow:0 0 0 0 rgba(37,211,102,.6); }
  70%{ box-shadow:0 0 0 16px rgba(37,211,102,0); }
  100%{ box-shadow:0 0 0 0 rgba(37,211,102,0); }
}

/* ===== Booking Page ===== */
.booking-hero{
  background: linear-gradient(135deg, var(--brand-green) 0%, var(--brand-green-dark) 100%);
  padding-top:140px;
  padding-bottom:60px;
}
.booking-card{
  border-radius:20px;
  border:none;
  box-shadow: 0 10px 40px rgba(0,0,0,.08);
}
.step-badge{
  width:32px; height:32px;
  background: var(--brand-green);
  color:#fff;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  font-weight:700;
  font-size:.9rem;
}
.court-select-item{
  border:2px solid #eee;
  border-radius:14px;
  cursor:pointer;
  transition: all .2s ease;
  overflow: hidden;
}
.court-select-item img{
  height:110px;
  object-fit:cover;
  width:100%;
}
.court-select-item.selected,
.court-select-item:hover{
  border-color: var(--brand-green);
}
.court-select-item.selected{
  background: var(--brand-green-light);
}

.court-select-item {
    position: relative;
    display: block;
    cursor: pointer;
    overflow: hidden;

    border: 2px solid #e9ecef;
    border-radius: 12px;

    background: #fff;

    transition: all .2s ease;
}

.court-select-item:hover {
    border-color: #86bfa1;
    transform: translateY(-2px);
}

/* Radio disembunyikan */
.court-radio {
    position: absolute;
    opacity: 0;
    pointer-events: none;
}

/* Foto */
.court-select-item img {
    width: 100%;
    height: 130px;
    object-fit: cover;
    display: block;
}

/* Icon check */
.court-check-mark {
    position: absolute;

    top: 10px;
    right: 10px;

    width: 30px;
    height: 30px;

    display: flex;
    align-items: center;
    justify-content: center;

    border-radius: 50%;

    background: #fff;
    color: #198754;

    border: 2px solid #dee2e6;

    opacity: 0;
    transform: scale(.7);

    transition: all .2s ease;

    z-index: 2;
}

/* RADIO DIPILIH */
.court-select-item:has(.court-radio:checked) {
    border-color: #198754;
    background: #f0fff5;

    box-shadow:
        0 0 0 2px rgba(25, 135, 84, .12);
}

/* CHECK MUNCUL */
.court-select-item:has(.court-radio:checked) .court-check-mark {
    opacity: 1;
    transform: scale(1);

    background: #198754;
    border-color: #198754;
    color: #fff;
}

.time-slot{
  display: block;
  border:1px solid #ddd;
  border-radius:10px;
  padding:10px 6px;
  text-align:center;
  cursor:pointer;
  font-size:.85rem;
  font-weight:600;
  transition: all .2s ease;
  background:#fff;
}

/* Saat radio dipilih */
.time-slot:has(input[type="radio"]:checked) {
    background: var(--brand-green);
    color: #fff;
    border-color: var(--brand-green);
}

.time-slot.booked{
  background:#f5f5f5;
  color:#bbb;
  cursor:not-allowed;
  text-decoration: line-through;
}
.time-slot.selected{
  background: var(--brand-green);
  color:#fff;
  border-color: var(--brand-green);
}
.time-slot:not(.booked):hover{
  border-color: var(--brand-green);
  color: var(--brand-green);
}
.time-slot.selected:hover{ color:#fff; }

.racket-qty-card{
  border:1px solid #eee;
  border-radius:14px;
  padding:14px;
}
.qty-control{
  display:flex;
  align-items:center;
  gap:10px;
}
.qty-btn{
  width:30px; height:30px;
  border-radius:50%;
  border:1px solid #ccc;
  background:#fff;
  display:flex;
  align-items:center;
  justify-content:center;
  cursor:pointer;
}
.qty-btn:hover{ background: var(--brand-green-light); border-color: var(--brand-green); }

.summary-box{
  background: var(--brand-green-light);
  border-radius:16px;
  padding:24px;
  position: sticky;
  top: 100px;
}
.summary-row{
  display:flex;
  justify-content:space-between;
  padding:6px 0;
  font-size:.92rem;
}

/* Responsive tweaks */
@media (max-width: 767px){
  .hero-slide{ height:75vh; min-height:480px; }
  .section-pad{ padding-top:50px; padding-bottom:50px; }
  .summary-box{ position:static; margin-top:20px; }
}

/* ===== Cek Status Booking ===== */
#searchTabs .nav-link{
  border-radius: 50px;
  color:#333;
  background:#f2f2f2;
  border:none;
}
#searchTabs .nav-link.active{
  background: var(--brand-green);
  color:#fff;
}

.status-tracker{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
}
.tracker-step{
  display:flex;
  flex-direction:column;
  align-items:center;
  text-align:center;
  flex:0 0 auto;
  width:90px;
}
.tracker-dot{
  width:44px; height:44px;
  border-radius:50%;
  background:#eee;
  color:#aaa;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.1rem;
  margin-bottom:8px;
  transition: all .3s ease;
}
.tracker-step.done .tracker-dot{
  background: var(--brand-green);
  color:#fff;
}
.tracker-step.current .tracker-dot{
  background: #fff;
  color: var(--brand-green);
  border:3px solid var(--brand-green);
}
.tracker-label{
  font-size:.75rem;
  font-weight:600;
  color:#999;
}
.tracker-step.done .tracker-label,
.tracker-step.current .tracker-label{
  color:#222;
}
.tracker-line{
  flex:1 1 auto;
  height:3px;
  background:#eee;
  margin-top:22px;
  border-radius:3px;
}
.tracker-line.done{
  background: var(--brand-green);
}

.detail-box{
  background: var(--brand-green-light);
  border-radius:14px;
  padding:20px;
}

.badge-status-pending{ background:#fff3cd; color:#997404; }
.badge-status-confirmed{ background:#d1f2df; color:#0f5c30; }
.badge-status-done{ background:#e2e3e5; color:#41464b; }
.badge-status-cancelled{ background:#f8d7da; color:#842029; }

/* ===== Jadwal Lapangan ===== */
.legend-box{
  background:#fafafa;
  border-radius:12px;
  padding:12px 18px;
}
.legend-dot{
  width:14px; height:14px;
  border-radius:4px;
  display:inline-block;
}
.legend-dot.available{ background:#fff; border:2px solid var(--brand-green); }
.legend-dot.booked{ background: var(--brand-green); }
.legend-dot.past{ background:#e9e9e9; border:2px solid #ddd; }

.mini-stat{
  background: var(--brand-green-light);
  border-radius:14px;
  text-align:center;
  padding:16px 8px;
}
.mini-stat-num{
  font-size:1.8rem;
  font-weight:800;
  line-height:1;
}
.mini-stat-label{
  font-size:.78rem;
  color:#666;
  font-weight:500;
  margin-top:4px;
}

.schedule-court-card{
  border:1px solid #eee;
  border-radius:16px;
  padding:20px;
  margin-bottom:20px;
}
.schedule-court-header{
  display:flex;
  justify-content:space-between;
  align-items:center;
  flex-wrap:wrap;
  gap:10px;
  margin-bottom:16px;
}
.schedule-slot{
  border-radius:10px;
  padding:10px 4px;
  text-align:center;
  font-size:.8rem;
  font-weight:700;
  border:2px solid var(--brand-green);
  color: var(--brand-green);
  background:#fff;
  transition: all .2s ease;
}
.schedule-slot.booked{
  background: var(--brand-green);
  color:#fff;
  cursor:not-allowed;
}
.schedule-slot.blocked{
  position: relative;
  overflow: hidden;

  background-color: #dc3545;
  color: #fff;
  border: 2px solid #dc3545;

  cursor: not-allowed;
}

/* Garis datar di tengah kotak */
.schedule-slot.blocked::after{
    content: "";
    position: absolute;

    left: 8px;
    right: 8px;
    top: 50%;

    height: 2px;
    background-color: rgba(255,255,255,0.9);

    transform: translateY(-50%);
    pointer-events: none;
}

/* Pastikan tulisan berada di atas garis */
.schedule-slot.blocked .slot-sub{
    position: relative;
    z-index: 2;
}

/* Isi teks tetap berada di atas garis */
.schedule-slot.blocked > *{
  position: relative;
  z-index: 2;
}

.schedule-slot.blocked{
  font-weight: 700;
}
.schedule-slot.past{
  border-color:#e2e2e2;
  color:#bbb;
  background:#f7f7f7;
  cursor:not-allowed;
}
.schedule-slot.available:hover{
  background: var(--brand-green);
  color:#fff;
  cursor:pointer;
}
.schedule-slot .slot-sub{
  display:block;
  font-size:.65rem;
  font-weight:500;
  margin-top:2px;
  opacity:.85;
}

/* ===== Pembayaran ===== */
.pay-icon-circle{
  width:64px; height:64px;
  margin:0 auto;
  background: var(--brand-green-light);
  color: var(--brand-green);
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.8rem;
}
.pay-group-label{
  font-size:.78rem;
  font-weight:700;
  text-transform:uppercase;
  color:#999;
  letter-spacing:.03em;
  margin:18px 0 8px;
}
.pay-method-item{
  display:block;
  border:2px solid #eee;
  border-radius:14px;
  padding:14px 16px;
  margin-bottom:10px;
  cursor:pointer;
  transition: all .2s ease;
}
.pay-method-item:hover{
  border-color: var(--brand-green);
}
.pay-method-item input{
  display:none;
}
.pay-method-item input:checked ~ .pay-method-content{
  color: var(--brand-green-dark);
}
.pay-method-item:has(input:checked){
  border-color: var(--brand-green);
  background: var(--brand-green-light);
}
.pay-method-content{
  display:flex;
  align-items:center;
  gap:14px;
}
.pay-method-icon{
  width:44px; height:44px; min-width:44px;
  background:#fff;
  border-radius:10px;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:1.3rem;
  color: var(--brand-green);
  box-shadow: 0 2px 6px rgba(0,0,0,.06);
}
.countdown-box{
  background:#fff5f5;
  border-radius:12px;
  padding:12px 14px;
}

.qris-photo {
    max-height: 0;
    opacity: 0;
    overflow: hidden;
    padding: 0 15px;
    text-align: center;
    transition:
        max-height 0.6s ease,
        opacity 0.5s ease,
        padding 0.6s ease;
}

.qris-photo.show {
    max-height: 500px;
    opacity: 1;
    padding: 15px;
}

.qris-photo img {
    max-width: 300px;
    width: 100%;
    height: auto;
    display: inline-block;
}
/* ===== Booking Success ===== */
.success-check{
  width:70px; height:70px;
  margin:0 auto;
  background: rgba(255,255,255,.15);
  border:3px solid #fff;
  color:#fff;
  border-radius:50%;
  display:flex;
  align-items:center;
  justify-content:center;
  font-size:2.2rem;
}
.qr-box{
  background: var(--brand-green-light);
  border-radius:18px;
  padding:28px 20px;
}
#qrcodeContainer img,
#qrcodeContainer canvas{
  border-radius:12px;
  background:#fff;
  padding:10px;
  box-shadow: 0 4px 15px rgba(0,0,0,.08);
}
.info-mini{
  background:#fff;
  border:1px solid #eee;
  border-radius:14px;
  padding:18px 10px;
}


/* Upload area */
.upload-area {
  border: 2px dashed #cccccc;
  border-radius: 14px;
  padding: 15px 20px;
  text-align: center;
  cursor: pointer;
  transition: all 0.2s;
  background: var(--sur2);
}

.upload-area:hover {
  border-color: var(--accent);
  background: rgba(0, 212, 255, 0.03);
}

.upload-icon {
  font-size: 32px;
  color: var(--text-muted);
  margin-bottom: 8px;
}

.upload-text {
  font-size: 13px;
  color: var(--text-muted);
}

.fileChosen {
  display: block;
  margin-top: 10px;
  padding: 10px 14px;
  background: rgba(16, 185, 129, 0.1);
  border-radius: 12px;
  border: 1px solid rgba(16, 185, 129, 0.2);
  font-size: 13px;
  color: var(--success);
  word-wrap: break-word;
}



@media print{
  nav, footer, .whatsapp-float, #btnDownloadQr, #btnPrint, .info-mini, hr, .booking-hero{ display:none !important; }
}

/* Responsive tweaks */
@media (max-width: 767px){
  .hero-slide{ height:75vh; min-height:480px; }
  .section-pad{ padding-top:50px; padding-bottom:50px; }
  .summary-box{ position:static; margin-top:20px; }
}
