/* =========================
   Other Projects Section
========================= */
.op {
  --rail-max: 1160px;
  --pad: clamp(16px, 4vw, 48px);

  /* Palette */
  --blue-700: #0f4f8e;
  --blue-600: #165c7d;
  --blue-500: #398fba;
  --gold-500: #FF6C63;
  --ink-900: #1f1f1f;
  --ink-600: #555;
  --white: #fff;
  font-family: "Montserrat";
  color: var(--ink-900);
}

.op__rail {
  max-width: var(--rail-max);
  margin: 0 auto;
  padding: var(--pad);
  
}

/* Header */
.op__head {
  text-align: center;
  margin-bottom: clamp(20px, 4vw, 36px);
}
.op__title {
  font-size: clamp(28px, 3.2vw, 40px);
  font-weight: 700;
  line-height: 1.15;
}
.op__intro {
  max-width: 65ch;
  margin: 12px auto 0;
  color: var(--ink-600);
  font-size: clamp(15px, 1.6vw, 18px);
}

/* Grid - 3 projects */
.op__grid {
  list-style: none;
  margin: 28px 0 0;
  padding: 0;
  display: grid;
  gap: 30px;
  grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
}

/* Card */
.op-card {
  display: flex;
  flex-direction: column;
  height: 100%;
  border-radius: 10px;
  overflow: hidden;
  background: var(--white);
  box-shadow: 0 18px 40px rgba(0, 0, 0, 0.1);
  transition: transform 0.35s ease, box-shadow 0.35s ease;
}
.op-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.15);
}
.op-card__link {
  display: flex;
  flex-direction: column;
  text-decoration: none;
  color: inherit;
  height: 100%;
}

/* Media */
.op-media {
  position: relative;
  aspect-ratio: 4/3;
  overflow: hidden;
}
.op-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.02);
  transition: transform 0.5s ease;
}
.op-card:hover .op-media img {
  transform: scale(1.08);
}

/* Veil */
.op-veil {
  position: absolute;
  inset: 0;
  background: rgba(0, 0, 0, 0.25);
  opacity: 0;
  transition: opacity 0.3s ease;
}
.op-card:hover .op-veil {
  opacity: 1;
}

/* Circular CTA */
.op-cta {
  position: absolute;
  left: 50%;
  top: 50%;
  transform: translate(-50%, -50%) scale(0.85);
  background: var(--white);
  color: var(--gold-500);
  border: 2px solid var(--gold-500);
  padding: 18px 22px;
  font-weight: 700;
  white-space: nowrap;
  border-radius: 10px;
  opacity: 0;
  transition: opacity 0.3s ease, transform 0.3s ease;
}
.op-card:hover .op-cta {
  opacity: 1;
  transform: translate(-50%, -50%) scale(1);
}

/* Meta */
.op-meta {
  padding: 18px 20px;
}
.op-name {
  font-size: 1.1rem;
  font-weight: 700;
  margin-bottom: 6px;
}
.op-desc {
  font-size: 0.95rem;
  color: var(--ink-600);
  line-height: 1.4;
}

/* Section Button */
.op__cta-row {
  text-align: center;
  margin-top: 34px;
}
.op-btn {
  background: var(--gold-500);
  color: white;
  border: 2px solid var(--gold-500);
  padding: 10px 26px;
  border-radius: 10px;
  font-weight: 600;
  transition: all 0.3s ease;
}
.op-btn:hover {
  background: var(--white);
  color: var(--gold-500);
  border-color: var(--gold-500);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.1);
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
  .op-card,
  .op-media img,
  .op-veil,
  .op-cta,
  .op-btn {
    transition: none !important;
  }
}


/* =========================
   Page Transition Overlay
========================= */
.page-transition{
  position: fixed;
  inset: 0;
  background: var(--page-bg, #ffffff); /* match your site background */
  transform: translate3d(0, 100%, 0);  /* start off-screen at the bottom */
  transition: transform 600ms ease;
  z-index: 9999;
  pointer-events: none;
  will-change: transform;
}

/* Slide up to cover the page */
.page-transition.active{
  transform: translate3d(0, 0, 0);
}

/* Optional: prevent scroll jump during the transition */
html.is-transitioning{
  overflow: hidden;
}

/* Respect reduced motion */
@media (prefers-reduced-motion: reduce){
  .page-transition{ transition: none; }
}
