:root{
  --header-h: 80px;
}

/* =========================================================
   HERO SECTION
   (Background image + overlay + heading slide + text fade)
========================================================= */
.page-hero{
  padding-top: calc(var(--header-h) + 80px);
  padding-bottom: 90px;
  position: relative;
  overflow: hidden;
  background: url("images/festival.png") no-repeat center / cover;
}

/* Hero overlay (light, no blur) */
.page-hero::before{
  content:"";
  position:absolute;
  inset:0;
  background: linear-gradient(
    90deg,
    rgba(255,255,255,.58) 0%,
    rgba(255,255,255,.38) 55%,
    rgba(255,255,255,.10) 100%
  );
  z-index:0;
}

.page-hero .container{
  position: relative;
  z-index: 1;
}

/* Hero animations */
.page-hero h1{
  max-width: 920px;
  font-size: clamp(34px, 4.5vw, 60px);
  line-height: 1.08;
  letter-spacing: -0.02em;
  margin: 0 0 18px;
  color:#0b0b0b;

  opacity: 0;
  transform: translateX(-30px);
  animation: heroTitleIn .85s ease forwards;
}

.page-hero p{
  max-width: 920px;
  font-size: 16px;
  line-height: 1.75;
  color:#111;
  margin: 0;

  background: transparent;
  padding: 0;
  border-radius: 0;
  box-shadow: none;

  text-shadow: 0 1px 0 rgba(255,255,255,.55);

  opacity: 0;
  transform: translateY(14px);
  animation: heroTextIn .85s ease forwards;
  animation-delay: .18s;
}

.page-hero p b{
  color:#000;
  font-weight: 800;
}

/* Hero keyframes */
@keyframes heroTitleIn{
  to{ opacity:1; transform: translateX(0); }
}
@keyframes heroTextIn{
  to{ opacity:1; transform: translateY(0); }
}


/* =========================================================
   FESTIVALS LIST SECTION
   (Alternating text + image, equal columns)
========================================================= */
.festivals{
  padding: 80px 0 40px; /* bottom padding reduced */
}

.festival{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 50px;
  align-items: center;
  margin-bottom: 55px; /* reduced spacing */
}

/* last festival extra gap remove */
.festival:last-child{
  margin-bottom: 10px;
}

/* alternating layout */
.festival.reverse{
  direction: rtl;
}
.festival.reverse > *{
  direction: ltr;
}

/* festivals text */
.festival-text h2{
  font-size: clamp(24px, 3vw, 34px);
  margin-bottom: 14px;
  color:#111;
}

.festival-text p{
  font-size: 16px;
  line-height: 1.7;
  color:#444;
  margin-bottom: 16px;
}

.festival-text ul{
  padding-left: 18px;
}

.festival-text li{
  margin-bottom: 6px;
  color:#333;
}

/* festivals image */
.festival-image img{
  width: 100%;
  height: 360px;
  object-fit: cover;
  border-radius: 14px;
  display:block;
}


/* =========================================================
   TICKET GUIDE SECTION
   (Centered heading + readable paragraph)
========================================================= */
.ticket-guide{
  padding: 45px 0 70px; /* top padding reduced to fix gap */
  background: #fff;
}

.ticket-guide h2{
  margin: 0 0 14px;
  text-align: center;
  font-size: clamp(22px, 3vw, 34px);
  line-height: 1.2;
  color: #111;
}

.ticket-guide p{
  margin: 0 auto;
  max-width: 920px;
  font-size: 16px;
  line-height: 1.65;
  color: #444;
  text-align: left;
}

.ticket-guide p b{
  color: #111;
  font-weight: 700;
}


/* =========================================================
   FESTIVAL INFO SECTION
   (Tips + Experience, 2 boxes in one section)
========================================================= */
.festival-info{
  padding: 60px 0;
  background: #fff;
}

/* grid */
.info-grid{
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 40px;
}

/* box */
.info-box{
  background: #fafafa;
  padding: 32px 34px;
  border-radius: 14px;
  border: 1px solid #eee;
}

.info-box h2{
  margin: 0 0 16px;
  font-size: clamp(20px, 2.6vw, 28px);
  line-height: 1.25;
  color: #111;
}

.info-box p{
  margin: 0 0 14px;
  font-size: 16px;
  line-height: 1.65;
  color: #444;
}

.info-box p:last-child{
  margin-bottom: 0;
}

/* tips list */
.tips-list{
  padding-left: 20px;
  margin: 0;
  font-size: 16px;
  line-height: 1.7;
  color: #444;
}

.tips-list li{
  margin-bottom: 10px;
}

.tips-list b,
.info-box b{
  color: #111;
  font-weight: 700;
}


/* =========================================================
   RESPONSIVE (ALL MEDIA QUERIES AT THE END)
========================================================= */

/* <= 900px */
@media (max-width: 900px){

  /* festivals */
  .festivals{
    padding: 60px 0 25px;
  }

  .festival{
    grid-template-columns: 1fr;
    gap: 24px;
    margin-bottom: 38px;
  }

  .festival.reverse{
    direction: ltr;
  }

  .festival-image img{
    height: 260px;
  }

  /* festival info */
  .info-grid{
    grid-template-columns: 1fr;
    gap: 26px;
  }

  .info-box{
    padding: 26px 22px;
  }
}

/* <= 768px */
@media (max-width: 768px){

  /* hero */
  .page-hero{
    padding-top: calc(var(--header-h) + 60px);
    padding-bottom: 70px;
  }

  .page-hero p{
    font-size: 15px;
  }

  /* ticket guide */
  .ticket-guide{
    padding: 34px 0 60px;
  }

  .ticket-guide p{
    font-size: 15px;
  }

  /* festival info */
  .festival-info{
    padding: 45px 0;
  }

  .info-box p,
  .tips-list{
    font-size: 15px;
  }
}
