*{
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

:root{
  --card-w: 210px;   /* ความกว้างการ์ด */
  --gap: 28px;       /* ระยะห่างระหว่างการ์ด (ช่องไฟ) */
}

body{
  background-color: #eee;
  min-height: 100vh;
  font-family: 'Raleway', sans-serif;
}

/* ===== container ===== */
.container{
  max-width: 1200px;
  margin: auto;
  padding: 30px 10px;
}

/* ===== row =====
   ใช้ flex + wrap : การ์ดในแถวจะจัดกึ่งกลางเสมอ
   ไม่ว่าแถวนั้นจะมี 1, 2, 4 หรือ 5 รูปก็ตาม  */
.row{
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: var(--gap);
  margin-bottom: 40px;
}

/* แถวที่ 2 : เว้นช่องว่างตรงกลาง = 1 ช่องการ์ด
   (การ์ด 1 ใบ + ระยะห่าง 2 ข้าง) ทำให้การ์ดซ้าย-ขวา
   ตรงกับคอลัมน์ที่ 2 และ 4 ของแถวที่มี 5 รูป
   และเหลือช่องกลางตรงกับรูปนายกสมาคมด้านบนพอดี */
.row-two{
  gap: calc(var(--card-w) + var(--gap) * 2);
}

/* ===== card ===== */
.card{
  position: relative;
  width: var(--card-w);
  height: 300px;
  flex: 0 0 auto;
  background: #fff;
  box-shadow: 0 10px 20px rgba(0,0,0,0.25);
  overflow: hidden;
  cursor: pointer;
  transition: 0.3s ease;
}

/* การ์ดแถวบนสุด (นายกสมาคม) ให้ใหญ่ขึ้นเล็กน้อย */
.row-top .card{
  width: calc(var(--card-w) + var(--gap) * 2);
  height: 350px;
}

/* image */
.card img{
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: 0.4s ease;
}

/* hover zoom image */
.card:hover img{
  transform: scale(1.1);
}

/* ===== details (ชื่อ + ตำแหน่ง) ===== */
.details{
  position: absolute;
  bottom: 0;
  left: 0;
  width: 100%;
  background: rgba(255,255,255,0.95);
  text-align: center;
  padding: 12px 4px;
  transform: translateY(100%);
  transition: 0.35s ease;
}

/* show details on hover */
.card:hover .details{
  transform: translateY(0);
}

/* ชื่อ : บังคับให้อยู่บรรทัดเดียว
   ถ้าชื่อยาวเกินความกว้างการ์ด จะย่อขนาดตัวอักษรลงเองด้วย clamp */
.details .name{
  font-size: clamp(11px, 1vw, 13.5px);
  font-weight: 600;
  color: #333;
  white-space: nowrap;      /* ไม่ตัดขึ้นบรรทัดใหม่ */
  overflow: hidden;
  text-overflow: ellipsis;
  line-height: 1.4;
}

/* ถ้ามี <br> ในชื่อ ให้ไม่ทำงาน (กันชื่อตกบรรทัด) */
.details .name br{
  display: none;
}

/* ตำแหน่ง */
.details .position{
  font-size: 12.5px;
  color: #777;
  margin-top: 5px;
  line-height: 1.35;
}

/* hover card */
.card:hover{
  transform: translateY(-10px);
}

/* ===== Responsive ===== */
@media (max-width: 1100px){
  :root{
    --card-w: 190px;
    --gap: 22px;
  }
  .card{
    height: 270px;
  }
}

@media (max-width: 768px){
  :root{
    --gap: 15px;
  }
  .card{
    width: 45%;
    max-width: 220px;
    height: 300px;
  }
  .row-top .card{
    width: 60%;
    max-width: 240px;
    height: 330px;
  }
  /* จอเล็ก : แถว 2 ใช้ระยะห่างปกติ ไม่เว้นช่องกลาง */
  .row-two{
    gap: var(--gap);
  }
}

@media (max-width: 480px){
  .card,
  .row-top .card{
    width: 80%;
    max-width: 260px;
    height: 330px;
  }
}
