/* ============================================================
   SECTIONS — Programs, About, Membership, Reviews,
               Gallery, Facilities, Contact
   ============================================================ */

/* ─────────────────────────── PROGRAMS ──────────────────── */
#programs { background: var(--dark); }

.prog-grid {
  display: grid; grid-template-columns: repeat(4,1fr); gap: 1px;
}

.pc {
  background: var(--dark2); padding: 34px 28px;
  position: relative; overflow: hidden;
  cursor: default;
  border: 1px solid transparent;
  transition: border-color .4s, transform .4s cubic-bezier(.16,1,.3,1), box-shadow .4s;
}
.pc::before {
  content: '';
  position: absolute; inset: 0;
  background: linear-gradient(135deg, rgba(255,255,255,.04) 0%, transparent 60%);
  opacity: 0; transition: opacity .4s; pointer-events: none;
}
.pc:hover { border-color: var(--border2); transform: translateY(-3px); box-shadow: 0 18px 52px rgba(0,0,0,.6); }
.pc:hover::before { opacity: 1; }

.pc-ghost { position: absolute; top:8px; right:14px; font-family:var(--ff-bb); font-size:60px; color:rgba(255,255,255,.025); user-select:none; pointer-events:none; }
.pc-ico { width:46px; height:46px; background:rgba(255,255,255,.06); display:flex; align-items:center; justify-content:center; font-size:20px; margin-bottom:18px; transition:background .3s,transform .3s; }
.pc:hover .pc-ico { background:rgba(255,255,255,.12); transform:scale(1.06); }
.pc-name { font-family:var(--ff-con); font-weight:700; font-size:17px; letter-spacing:1px; text-transform:uppercase; margin-bottom:8px; }
.pc-desc { font-size:13px; color:rgba(255,255,255,0.72); line-height:1.75; }
.pc-more { display:inline-block; margin-top:16px; font-family:var(--ff-con); font-weight:700; font-size:11px; letter-spacing:2px; text-transform:uppercase; color:var(--silver); opacity:0; transform:translateX(-6px); transition:all .3s; }
.pc:hover .pc-more { opacity:1; transform:translateX(0); }

@media (max-width:1100px) { .prog-grid { grid-template-columns:repeat(3,1fr); } }
@media (max-width:768px)  { .prog-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:480px)  { .prog-grid { grid-template-columns:1fr; } }

@media (max-width:768px) {
  .pc-more {
    opacity: 1;
    transform: translateX(0);
    color: var(--silver);
  }
}

/* ─────────────────────────── ABOUT ──────────────────────── */
#about { background: var(--black); }

.about-wrap {
  display: grid; grid-template-columns: 1fr 1fr;
  gap: 88px; align-items: center;
}
.about-img-side { position: relative; }
.about-img-side img {
  width: 100%; aspect-ratio: 4/5; object-fit: cover;
  filter: grayscale(100%) contrast(1.08); display: block;
}
.about-img-side::before {
  content: ''; position: absolute;
  top: -14px; left: -14px; right: 14px; bottom: 14px;
  border: 1px solid var(--border2); z-index: -1;
}
.about-badge {
  position: absolute; bottom: 32px; left: -24px;
  background: var(--white); color: var(--black); padding: 16px 22px; z-index: 2;
}
.about-badge .big { font-family:var(--ff-bb); font-size:44px; line-height:1; color:var(--black); }
.about-badge .sm  { font-family:var(--ff-con); font-size:9px; letter-spacing:2px; text-transform:uppercase; color:var(--mid); margin-top:2px; }

.about-body { font-size:15px; line-height:1.9; color:rgba(255,255,255,0.78); font-weight:300; margin-top:18px; }

.astats { display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:40px; }
.as { border-top:1px solid var(--border2); padding-top:14px; }
.as .n { font-family:var(--ff-bb); font-size:40px; line-height:1; }
.as .l { font-family:var(--ff-con); font-size:10px; letter-spacing:1px; text-transform:uppercase; color:var(--gray); margin-top:4px; }

@media (max-width:1024px) { .about-wrap { grid-template-columns:1fr; } .about-img-side { display:none; } }

/* ─────────────────────────── MEMBERSHIP ─────────────────── */
#membership { background: var(--dark); }

.price-grid {
  display: grid; grid-template-columns: repeat(5,1fr);
  gap: 1px;
  align-items: stretch;   /* all cards stretch to same height */
}

.pricecard {
  background: var(--dark2); padding: 36px 28px;
  display: flex; flex-direction: column; position: relative;
  height: 100%;           /* fill the equal-height cell */
  transition: transform .35s cubic-bezier(.16,1,.3,1);
}
.pricecard:not(.best):hover { transform: translateY(-6px); }
.pricecard.best {
  background: var(--white); color: var(--black);
  /* no scaleY — equal height grid makes it redundant */
}

.price-badge {
  position: absolute; top: 16px; right: 16px;
  font-family: var(--ff-con); font-size: 9px;
  letter-spacing: 2px; text-transform: uppercase; padding: 3px 10px;
}
.pricecard:not(.best) .price-badge { background: rgba(255,255,255,.07); color: var(--silver); }
.pricecard.best .price-badge       { background: rgba(0,0,0,.08); color: var(--mid); }

.price-tier { font-family:var(--ff-con); font-size:10px; letter-spacing:3px; text-transform:uppercase; margin-bottom:12px; }
.pricecard:not(.best) .price-tier { color:var(--gray); }
.pricecard.best .price-tier       { color:var(--mid); }

.price-amt { display:flex; align-items:flex-start; gap:1px; font-family:var(--ff-bb); font-size:56px; line-height:1; }
.price-amt sup { font-size:22px; margin-top:8px; }
.price-duration {
  font-family: var(--ff-con); font-size: 10px;
  letter-spacing: 1px; text-transform: uppercase; margin-top: 6px; opacity: .55;
}

.price-div { height:1px; margin:22px 0; }
.pricecard:not(.best) .price-div { background:rgba(255,255,255,.07); }
.pricecard.best .price-div       { background:rgba(0,0,0,.1); }

.price-feats { display:flex; flex-direction:column; gap:10px; flex:1; }
.price-feats li { display:flex; align-items:flex-start; gap:8px; font-size:12px; line-height:1.5; }
.price-feats li::before { content:'✓'; font-weight:700; font-size:11px; flex-shrink:0; margin-top:1px; }
.pricecard:not(.best) .price-feats li          { color:rgba(255,255,255,.65); }
.pricecard:not(.best) .price-feats li::before  { color:var(--silver); }
.pricecard.best .price-feats li                { color:rgba(0,0,0,.65); }
.pricecard.best .price-feats li::before        { color:var(--mid); }

.price-cta {
  display:block; text-align:center; margin-top:28px;
  font-family:var(--ff-con); font-weight:700; font-size:12px;
  letter-spacing:2px; text-transform:uppercase; padding:12px;
  transition:all .3s;
}
.pricecard:not(.best) .price-cta { border:1px solid rgba(255,255,255,.18); color:var(--white); }
.pricecard:not(.best) .price-cta:hover { background:var(--white); color:var(--black); }
.pricecard.best .price-cta { background:var(--black); color:var(--white); border:none; }
.pricecard.best .price-cta:hover { background:var(--dark3); }

@media (max-width:1200px) { .price-grid { grid-template-columns:repeat(3,1fr); } }
@media (max-width:768px)  { .price-grid { grid-template-columns:1fr 1fr; } }
@media (max-width:480px)  { .price-grid { grid-template-columns:1fr; } }

/* ─────────────────────────── REVIEWS ────────────────────── */
#reviews { background: var(--black); }

.review-head {
  display: flex; align-items: center; gap: 20px; margin-bottom: 56px;
  flex-wrap: wrap;
}
.review-badge {
  display: flex; align-items: center; gap: 10px;
  background: var(--dark2); border: 1px solid var(--border2);
  padding: 12px 20px;
}
.review-badge .score {
  font-family: var(--ff-bb); font-size: 36px; line-height: 1;
}
.review-badge .info .stars { color: var(--light); letter-spacing: 3px; font-size: 14px; }
.review-badge .info .count {
  font-family: var(--ff-con); font-size: 10px;
  letter-spacing: 2px; text-transform: uppercase;
  color: var(--gray); margin-top: 3px;
}

.rv-grid { display:grid; grid-template-columns:repeat(3,1fr); gap:1px; }

.rv-card {
  background: var(--dark2); border: 1px solid transparent;
  padding: 32px; cursor: default;
  transition: border-color .3s, transform .35s cubic-bezier(.16,1,.3,1);
}
.rv-card:hover { border-color: var(--border2); transform: translateY(-3px); }

.rv-top { display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:16px; }
.rv-av  { width:40px; height:40px; border-radius:50%; background:var(--dark3); border:1px solid var(--border2); display:flex; align-items:center; justify-content:center; font-family:var(--ff-bb); font-size:17px; color:var(--silver); flex-shrink:0; }
.rv-stars { color: var(--light); font-size: 13px; letter-spacing: 2px; }
.rv-name { font-family:var(--ff-con); font-weight:700; font-size:14px; margin-top:2px; }
.rv-date { font-size:11px; color:var(--gray); margin-top:2px; }
.rv-text { font-size:13px; line-height:1.85; color:rgba(255,255,255,0.85); font-style:italic; }
.rv-src  { display:flex; align-items:center; gap:6px; margin-top:16px; font-family:var(--ff-con); font-size:10px; letter-spacing:2px; text-transform:uppercase; color:var(--mid); }
.rv-src::before { content:'G'; width:18px; height:18px; background:rgba(255,255,255,.07); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; font-family:var(--ff-bar); }

@media (max-width:900px) { .rv-grid { grid-template-columns:1fr; } }

/* ─────────────────────────── GALLERY ────────────────────── */
#gallery { background: var(--dark); }

.gal-grid {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-template-rows: 260px 260px;
  gap: 3px; margin-top: 56px;
}
.gal-item { position:relative; overflow:hidden; background:var(--dark2); }
.gal-item:first-child { grid-row:span 2; }
.gal-item img { width:100%; height:100%; object-fit:cover; filter:grayscale(100%) contrast(1.08); transition:transform .65s cubic-bezier(.16,1,.3,1), filter .4s; display:block; }
.gal-item:hover img { transform:scale(1.07); filter:grayscale(50%) contrast(1.1); }
.gal-ov { position:absolute; inset:0; background:rgba(7,7,7,.44); display:flex; align-items:center; justify-content:center; opacity:0; transition:opacity .3s; }
.gal-item:hover .gal-ov { opacity:1; }
.gal-lbl { font-family:var(--ff-bb); font-size:14px; letter-spacing:3px; border:1px solid rgba(255,255,255,.5); padding:8px 20px; transform:translateY(10px); transition:transform .3s; }
.gal-item:hover .gal-lbl { transform:translateY(0); }

@media (max-width:900px) { .gal-grid { grid-template-columns:1fr 1fr; grid-template-rows:auto; } .gal-item:first-child { grid-row:span 1; } }
@media (max-width:560px) { .gal-grid { grid-template-columns:1fr; } }

/* ─────────────────────────── FACILITIES ─────────────────── */
#facilities { background: var(--black); }

.fac-feat { position:relative; width:100%; height:320px; overflow:hidden; margin:52px 0; }
.fac-feat img { width:100%; height:100%; object-fit:cover; filter:grayscale(100%) contrast(1.1); display:block; }
.fac-feat::before,.fac-feat::after { content:''; position:absolute; top:0; bottom:0; width:120px; z-index:1; }
.fac-feat::before { left:0; background:linear-gradient(to right, var(--black), transparent); }
.fac-feat::after  { right:0; background:linear-gradient(to left, var(--black), transparent); }

.fac-grid { display:grid; grid-template-columns:repeat(5,1fr); gap:1px; }
.fac-item { background:var(--dark); padding:28px 18px; text-align:center; cursor:default; transition:background .3s,transform .35s cubic-bezier(.16,1,.3,1); }
.fac-item:hover { background:var(--dark2); transform:translateY(-3px); }
.fac-ico { font-size:28px; margin-bottom:10px; display:block; transition:transform .3s; }
.fac-item:hover .fac-ico { transform:scale(1.1); }
.fac-name { font-family:var(--ff-con); font-weight:700; font-size:12px; letter-spacing:1px; text-transform:uppercase; margin-bottom:6px; }
.fac-desc { font-size:12px; color:var(--gray); line-height:1.6; }

@media (max-width:1024px) { .fac-grid { grid-template-columns:repeat(3,1fr); } }
@media (max-width:600px)  { .fac-grid { grid-template-columns:repeat(2,1fr); } }

/* ─────────────────────────── CONTACT ────────────────────── */
#contact { background: var(--dark); }

.ct-wrap { display:grid; grid-template-columns:1fr 1fr; gap:64px; margin-top:52px; }

.ct-item { display:flex; gap:16px; align-items:flex-start; padding:18px 0; border-bottom:1px solid var(--border); }
.ct-ico  { width:40px; height:40px; background:rgba(255,255,255,.05); display:flex; align-items:center; justify-content:center; font-size:17px; flex-shrink:0; }
.ct-lbl  { font-family:var(--ff-con); font-size:9px; letter-spacing:3px; text-transform:uppercase; color:var(--silver); margin-bottom:5px; }
.ct-val  { font-size:14px; color:rgba(255,255,255,.7); line-height:1.65; white-space:pre-line; }
.ct-val a { color:rgba(255,255,255,.7); transition:color .3s; }
.ct-val a:hover { color:var(--white); }

.btn-wa {
  display: inline-flex; align-items: center; gap: 10px;
  background: transparent; color: var(--white);
  font-family: var(--ff-con); font-weight: 700;
  font-size: 12px; letter-spacing: 2px; text-transform: uppercase;
  padding: 13px 26px; margin-top: 24px;
  border: 1px solid rgba(255,255,255,.2);
  transition: all .3s;
}
.btn-wa:hover { border-color:var(--white); background:rgba(255,255,255,.05); transform:translateY(-1px); }

/* Hours */
.hrs-ttl { font-family:var(--ff-con); font-weight:700; font-size:11px; letter-spacing:2px; text-transform:uppercase; margin-bottom:16px; }
.hrs-grid { display:grid; grid-template-columns:1fr 1fr; gap:6px; margin-bottom:24px; }
.hr-row { background:var(--dark2); padding:12px 14px; border-left:2px solid transparent; transition:border-color .3s; }
.hr-row:hover { border-color:var(--silver); }
.hr-day { font-family:var(--ff-con); font-size:9px; letter-spacing:1px; text-transform:uppercase; color:var(--gray); }
.hr-time { font-size:13px; margin-top:3px; }

/* Map */
.map-wrap { background:var(--dark2); border:1px solid var(--border); overflow:hidden; }
.map-wrap iframe { width:100%; height:260px; border:none; filter:grayscale(100%) contrast(1.1) invert(1); opacity:.85; display:block; }

@media (max-width:900px) {
  .ct-wrap { grid-template-columns:1fr; gap:48px; }
  .hrs-grid { grid-template-columns:1fr; }
}
