/* GeoCARE Lab Photos slider */
.gcg { width: 80%; max-width: 1080px; margin: 0.6rem auto 0.8rem; padding: 0; box-sizing: border-box; font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif; color: #322427; --gcg-h: 300px; }
.gcg *, .gcg *::before, .gcg *::after { box-sizing: border-box; }
.gcg figure { margin: 0; }

.gcg__head { display: grid; grid-template-columns: 1fr auto; gap: 0.2rem 1.5rem; align-items: end; margin-bottom: 1.1rem; }
.gcg__h2 { grid-column: 1; margin: 0; padding: 0; color: #6b1239; font-family: 'Montserrat', 'Segoe UI', Arial, sans-serif; font-size: 1.7rem; font-weight: 800; line-height: 1.2; }
.gcg__sub { grid-column: 1; margin: 0; padding: 0; color: #7f4862; font-size: 0.95rem; line-height: 1.5; }
.gcg__add { grid-column: 2; grid-row: 1 / span 2; align-self: center; white-space: nowrap; }
.gcg__head--min { display: flex; justify-content: flex-end; margin: 0 0 0.6rem; }
.gcg__empty { margin: 0; padding: 1.2rem; border: 1px dashed #d9bcd5; border-radius: 12px; color: #7f4862; text-align: center; }

.gcg__slider { position: relative; }
.gcg__track {
  display: flex; gap: 12px; height: var(--gcg-h);
  overflow-x: auto; overflow-y: hidden;
  scroll-snap-type: x mandatory; scroll-behavior: smooth;
  -webkit-overflow-scrolling: touch; scrollbar-width: none;
  border-radius: 14px; outline: none;
}
.gcg__track::-webkit-scrollbar { display: none; }
.gcg__track:focus-visible { box-shadow: 0 0 0 3px #d9bcd5; }
.gcg__item {
  position: relative; flex: 0 0 calc((100% - 24px) / 3); height: 100%;
  scroll-snap-align: start; border-radius: 14px; overflow: hidden;
  background: #f6eef2; box-shadow: 0 6px 18px rgba(107, 18, 57, 0.10);
}
.gcg__item:nth-child(3n+1) { scroll-snap-align: start; }
.gcg__link { display: block; width: 100%; height: 100%; }
.gcg__item img {
  display: block; width: 100%; height: 100%; object-fit: cover;
  transition: transform 0.45s ease; will-change: transform;
}
.gcg__item:hover img { transform: scale(1.04); }
.gcg__cap {
  position: absolute; left: 0; right: 0; bottom: 0; padding: 2.2rem 0.9rem 0.75rem;
  background: linear-gradient(to top, rgba(50, 12, 30, 0.82), rgba(50, 12, 30, 0));
  color: #fff; font-size: 0.86rem; line-height: 1.35; font-weight: 600; pointer-events: none;
  opacity: 0; transform: translateY(6px); transition: opacity 0.3s ease, transform 0.3s ease;
}
.gcg__item:hover .gcg__cap, .gcg__item:focus-within .gcg__cap { opacity: 1; transform: none; }
.gcg__edit { position: absolute; top: 10px; right: 10px; opacity: 0; }
.gcg__item:hover .gcg__edit, .gcg__edit:focus-visible { opacity: 1; }

.gcg__arrow {
  position: absolute; top: 50%; transform: translateY(-50%); z-index: 2;
  width: 42px; height: 42px; border-radius: 50%; border: 0; cursor: pointer;
  background: rgba(255, 255, 255, 0.92); color: #6b1239; font-size: 1.9rem; line-height: 1; padding: 0 0 4px;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.18); transition: background 0.2s, color 0.2s, transform 0.2s;
}
.gcg__arrow:hover, .gcg__arrow:focus-visible { background: #6b1239; color: #fff; outline: none; }
.gcg__arrow--prev { left: -21px; }
.gcg__arrow--next { right: -21px; }
.gcg__arrow--prev:hover { transform: translateY(-50%) translateX(-2px); }
.gcg__arrow--next:hover { transform: translateY(-50%) translateX(2px); }

.gcg__dots { display: flex; justify-content: center; gap: 8px; margin-top: 0.85rem; min-height: 10px; }
.gcg__dot { width: 9px; height: 9px; padding: 0; border: 0; border-radius: 50%; background: #d9bcd5; cursor: pointer; transition: background 0.2s, transform 0.2s; }
.gcg__dot.is-active { background: #6b1239; transform: scale(1.25); }

/* Lightbox */
.gcg__lightbox {
  position: fixed; inset: 0; z-index: 99999; display: flex; align-items: center; justify-content: center;
  background: rgba(20, 5, 12, 0.92); padding: 3rem 4rem;
}
.gcg__lightbox[hidden] { display: none; }
.gcg__lightbox figure { max-width: 100%; max-height: 100%; text-align: center; }
.gcg__lightbox img { display: block; max-width: 100%; max-height: calc(100vh - 8rem); margin: 0 auto; border-radius: 10px; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5); object-fit: contain; }
.gcg__lightbox figcaption { color: #e2cdd9; font-size: 0.95rem; margin-top: 0.8rem; min-height: 1.2em; }
.gcg__lightbox figcaption:empty { display: none; }
.gcg__close, .gcg__lb-arrow {
  position: absolute; border: 0; background: rgba(255, 255, 255, 0.12); color: #fff; cursor: pointer;
  border-radius: 50%; width: 46px; height: 46px; font-size: 2rem; line-height: 1; padding: 0 0 4px; transition: background 0.2s;
}
.gcg__close:hover, .gcg__lb-arrow:hover { background: #6b1239; }
.gcg__close { top: 18px; right: 18px; }
.gcg__lb-prev { left: 18px; top: 50%; transform: translateY(-50%); }
.gcg__lb-next { right: 18px; top: 50%; transform: translateY(-50%); }

@media (max-width: 980px) {
  .gcg { --gcg-h: 240px !important; }
  .gcg__item { flex-basis: calc((100% - 12px) / 2); }
  .gcg__arrow--prev { left: 6px; }
  .gcg__arrow--next { right: 6px; }
}
@media (max-width: 640px) {
  .gcg { --gcg-h: 220px !important; width: calc(100% - 32px); }
  .gcg__head { grid-template-columns: 1fr; }
  .gcg__add { grid-column: 1; grid-row: auto; justify-self: start; margin-top: 0.4rem; }
  .gcg__item { flex-basis: 100%; }
  .gcg__cap { opacity: 1; transform: none; }
  .gcg__lightbox { padding: 3.5rem 0.75rem; }
  .gcg__lb-prev { left: 6px; } .gcg__lb-next { right: 6px; }
}
@media (hover: none) { .gcg__cap, .gcg__edit { opacity: 1; transform: none; } }
@media print { .gcg__arrow, .gcg__dots, .gcg__add, .gcg__edit, .gcg__lightbox { display: none !important; } }

/* ---------- Full-width hero slideshow (Teaching) ---------- */
.gch-hero { position: relative; width: 100%; height: var(--gch-hero-h, 380px); overflow: hidden; background: #3a0a20; font-family: 'Open Sans', 'Segoe UI', Arial, sans-serif; color: #fff; isolation: isolate; }
.gch-hero *, .gch-hero *::before, .gch-hero *::after { box-sizing: border-box; }
.gch-hero__slides, .gch-hero__slide, .gch-hero__shade { position: absolute; inset: 0; }
.gch-hero__slide {
  background-size: cover; background-position: center 35%; opacity: 0;
  transform: scale(1.06); transition: opacity 1.4s ease;
}
.gch-hero__slide.is-active { opacity: 1; animation: gch-kb 9s ease-out forwards; }
@keyframes gch-kb { from { transform: scale(1.06); } to { transform: scale(1.0); } }
.gch-hero__slide--empty { background: linear-gradient(135deg, #6b1239, #3a0a20); opacity: 1; }
.gch-hero__shade {
  background:
    linear-gradient(to right, rgba(58, 10, 32, 0.55) 0%, rgba(58, 10, 32, 0.28) 40%, rgba(58, 10, 32, 0) 70%),
    linear-gradient(to top, rgba(30, 5, 16, 0.35), rgba(30, 5, 16, 0) 35%);
}
.gch-hero__inner { position: relative; z-index: 1; width: 80%; max-width: 1080px; height: 100%; margin: 0 auto; display: flex; flex-direction: column; justify-content: center; gap: 0.55rem; padding: 2rem 0 2.6rem; }
.gch-hero__title { margin: 0; padding: 0; color: #fff; font-family: 'Montserrat', 'Segoe UI', Arial, sans-serif; font-size: clamp(2rem, 4vw, 3rem); font-weight: 800; line-height: 1.1; letter-spacing: -0.01em; text-shadow: 0 2px 14px rgba(0, 0, 0, 0.55); }
.gch-hero__tag { margin: 0; padding: 0; max-width: 34em; color: #f3e4ec; font-size: clamp(1rem, 1.4vw, 1.15rem); line-height: 1.5; text-shadow: 0 1px 8px rgba(0, 0, 0, 0.6); }
.gch-hero__actions { display: flex; flex-wrap: wrap; gap: 0.6rem; margin-top: 0.6rem; }
.gch-hero__btn {
  display: inline-block; padding: 0.6rem 1.25rem; border-radius: 999px; border: 2px solid rgba(255, 255, 255, 0.85);
  color: #fff !important; font-weight: 700; font-size: 0.92rem; text-decoration: none !important; line-height: 1.2;
  transition: background 0.2s, color 0.2s, border-color 0.2s, transform 0.2s;
}
.gch-hero__btn:hover, .gch-hero__btn:focus-visible { background: #fff; color: #6b1239 !important; transform: translateY(-1px); }
.gch-hero__btn--solid { background: #f0c14b; border-color: #f0c14b; color: #3a0a20 !important; }
.gch-hero__btn--solid:hover, .gch-hero__btn--solid:focus-visible { background: #fff; border-color: #fff; color: #6b1239 !important; }
.gch-hero__dots { position: absolute; z-index: 1; left: 0; right: 0; bottom: 14px; display: flex; justify-content: center; gap: 8px; }
.gch-hero__dot { width: 9px; height: 9px; padding: 0; border: 0; border-radius: 50%; background: rgba(255, 255, 255, 0.45); cursor: pointer; transition: background 0.2s, transform 0.2s; }
.gch-hero__dot.is-active { background: #f0c14b; transform: scale(1.3); }
.gch-hero__admin { position: absolute; z-index: 2; top: 14px; right: 14px; display: flex; gap: 6px; }
.gch-hero__admin .pub-admin-btn { font-size: 0.8rem; padding: 0.4rem 0.8rem; }
@media (max-width: 980px) { .gch-hero { --gch-hero-h: 300px !important; } .gch-hero__inner { width: calc(100% - 40px); } }
@media (max-width: 640px) {
  .gch-hero { --gch-hero-h: 250px !important; }
  .gch-hero__inner { width: calc(100% - 32px); padding-bottom: 2.2rem; gap: 0.4rem; }
  .gch-hero__shade { background: linear-gradient(to top, rgba(58, 10, 32, 0.7) 0%, rgba(58, 10, 32, 0.35) 60%, rgba(58, 10, 32, 0.1) 100%); }
  .gch-hero__admin { top: 8px; right: 8px; }
}
@media (prefers-reduced-motion: reduce) { .gch-hero__slide { transition: none; animation: none !important; transform: none; } }
@media print { .gch-hero__dots, .gch-hero__admin { display: none !important; } }
