/* ========================================================
   1. Gradient Text Effects
   ======================================================== */

.text-gradient,
.gradient-text,
.neuro-gradient,
.frame-text-gradient h1,
.frame-text-gradient h2,
.frame-text-gradient h3,
.frame-text-gradient .frame-header * {
  background: linear-gradient(135deg, #0f172a 0%, #0284c7 50%, #0d9488 100%) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  display: inline-block !important;
  font-weight: 800 !important;
}

.gradient-fire,
.frame-gradient-fire h1,
.frame-gradient-fire h2,
.frame-gradient-fire h3,
.frame-gradient-fire .frame-header * {
  background: linear-gradient(135deg, #fb923c 0%, #f43f5e 50%, #ec4899 100%) !important;
  -webkit-background-clip: text !important;
  -webkit-text-fill-color: transparent !important;
  background-clip: text !important;
  display: inline-block !important;
  font-weight: 800 !important;
}

/* ========================================================
   2. Image Card Hover & Zoom Effect
   ======================================================== */

/* Target the entire element frame, cards, or custom containers */
.frame-card-neurofire,
.card-neurofire,
.frame-card-neurofire .card,
.card.card-neurofire,
.neuro-img-card {
  position: relative !important;
  overflow: hidden !important;
  border-radius: 1rem !important;
  transition: transform 0.35s cubic-bezier(0.16, 1, 0.3, 1), 
              box-shadow 0.35s ease, 
              border-color 0.35s ease !important;
}

/* Hover Elevation */
.frame-card-neurofire:hover,
.card-neurofire:hover,
.frame-card-neurofire:hover .card,
.card.card-neurofire:hover,
.neuro-img-card:hover {
  transform: translateY(-4px) !important;
  box-shadow: 0 16px 28px -6px rgba(0, 0, 0, 0.12) !important;
}

/* Media Wrappers - Covers all Bootstrap Package gallery, figure, and card containers */
.frame-card-neurofire .card-image,
.frame-card-neurofire .card-img-top,
.frame-card-neurofire .ce-media,
.frame-card-neurofire .ce-gallery,
.frame-card-neurofire .gallery-row,
.frame-card-neurofire .gallery-item,
.frame-card-neurofire figure,
.frame-card-neurofire picture,
.card-neurofire picture,
.neuro-img-card picture {
  position: relative !important;
  display: block !important;
  width: 100% !important;
  overflow: hidden !important;
  margin: 0 !important;
}

/* Base Image */
.frame-card-neurofire img,
.card-neurofire img,
.neuro-img-card img {
  display: block !important;
  width: 100% !important;
  height: 100% !important;
  object-fit: cover !important;
  transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1) !important;
  will-change: transform;
}

/* Image Zoom on Hover */
.frame-card-neurofire:hover img,
.card-neurofire:hover img,
.neuro-img-card:hover img {
  transform: scale(1.05) !important;
}

/* Light Bottom Vignette Overlay */
.frame-card-neurofire figure::after,
.frame-card-neurofire .card-image::after,
.frame-card-neurofire .ce-media::after,
.card-neurofire .card-image::after,
.neuro-img-card::after {
  content: '' !important;
  position: absolute !important;
  inset: 0 !important;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0) 50%,
    rgba(0, 0, 0, 0.4) 100%
  ) !important;
  pointer-events: none !important;
}

/* Floating Bottom Caption Badge */
.frame-card-neurofire .card-body,
.frame-card-neurofire figcaption,
.card-neurofire .card-body,
.neuro-img-card .img-overlay-badge {
  position: absolute !important;
  bottom: 1rem !important;
  left: 1rem !important;
  right: 1rem !important;
  padding: 0.65rem 1rem !important;
  background: rgba(255, 255, 255, 0.92) !important;
  backdrop-filter: blur(8px) !important;
  -webkit-backdrop-filter: blur(8px) !important;
  border: 1px solid rgba(255, 255, 255, 0.6) !important;
  border-radius: 0.5rem !important;
  box-shadow: 0 4px 10px rgba(0, 0, 0, 0.08) !important;
  text-align: center !important;
  z-index: 2 !important;
  pointer-events: none;
}

.frame-card-neurofire .card-body *,
.frame-card-neurofire figcaption *,
.neuro-img-card .img-overlay-badge * {
  color: #1e293b !important;
  font-size: 0.825rem !important;
  font-weight: 600 !important;
  margin: 0 !important;
}

/* ========================================================
   3. Custom Image Frames (Bootstrap Package)
   ======================================================== */

/* 1. Simple Bordered Frame */
.frame-image-frame-border img {
  border: 1px solid var(--bs-border-color, #dee2e6) !important;
  border-radius: 0.5rem !important;
  padding: 0.35rem !important;
  background-color: #ffffff !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.05) !important;
}

/* 2. Elevated Shadow Frame */
.frame-image-frame-shadow img {
  border-radius: 0.75rem !important;
  box-shadow: 0 10px 25px -5px rgba(0, 0, 0, 0.1), 0 8px 10px -6px rgba(0, 0, 0, 0.04) !important;
  border: 1px solid rgba(0, 0, 0, 0.05) !important;
}

/* 3. Academic Double/Inset Frame */
.frame-image-frame-academic img {
  border: 2px solid #0f172a !important;
  outline: 4px solid rgba(15, 23, 42, 0.08) !important;
  outline-offset: 4px !important;
  border-radius: 0.25rem !important;
}

/* ==========================================================================
   TYPO3 EXT:publications — Academic Layout with Evenly Spaced Papers
   Left Sidebar: 25% Sticky Search | Right: 75% Papers (Exact Spacing)
   ========================================================================== */

/* 1. Main 2-Column Grid */
.tx-publications {
  display: grid !important;
  grid-template-columns: minmax(260px, 25%) 1fr !important;
  gap: 2rem !important;
  align-items: start !important;
  width: 100% !important;
  margin-top: 1.25rem !important;
  margin-bottom: 2rem !important;
  padding-bottom: 0 !important;
}

/* 2. Left Column: Sticky Search & Filter Sidebar */
.tx-publications form[name="filter"] {
  grid-column: 1 !important;
  grid-row: 1 !important; /* Only row 1 — prevents empty vertical trailing tracks */
  position: sticky !important;
  top: 1.5rem !important;
  background: #ffffff !important;
  border: 1px solid #e2e8f0 !important;
  border-radius: 1rem !important;
  padding: 1.5rem !important;
  box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.04), 0 2px 4px -2px rgba(0, 0, 0, 0.04) !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0.9rem !important;
  margin: 0 !important;
  z-index: 5 !important;
  box-sizing: border-box !important;
}

/* Reset inline padding from extension */
.tx-publications form[name="filter"] > div {
  padding: 0 !important;
  margin: 0 !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 0.35rem !important;
}

.tx-publications form[name="filter"] label {
  font-size: 0.775rem !important;
  font-weight: 700 !important;
  text-transform: uppercase !important;
  letter-spacing: 0.06em !important;
  color: #475569 !important;
  margin-bottom: 0.15rem !important;
}

.tx-publications form[name="filter"] input[type="text"],
.tx-publications form[name="filter"] input[type="number"],
.tx-publications form[name="filter"] select {
  width: 100% !important;
  max-width: 100% !important;
  border: 1px solid #cbd5e1 !important;
  border-radius: 0.5rem !important;
  padding: 0.55rem 0.75rem !important;
  font-size: 0.9rem !important;
  color: #1e293b !important;
  background-color: #f8fafc !important;
  outline: none !important;
  box-sizing: border-box !important;
  transition: all 0.2s ease !important;
}

.tx-publications form[name="filter"] input[type="text"]:focus,
.tx-publications form[name="filter"] input[type="number"]:focus,
.tx-publications form[name="filter"] select:focus {
  border-color: #0284c7 !important;
  background-color: #ffffff !important;
  box-shadow: 0 0 0 3px rgba(2, 132, 199, 0.15) !important;
}

.tx-publications .js-collapser {
  align-self: flex-start !important;
  margin: 0.2rem 0 0 0 !important;
  padding: 0.35rem 0.75rem !important;
  font-size: 0.8rem !important;
  font-weight: 600 !important;
  color: #0284c7 !important;
  background: #f0f9ff !important;
  border: 1px solid #bae6fd !important;
  border-radius: 0.5rem !important;
  cursor: pointer !important;
}

.tx-publications input[type="submit"] {
  width: 100% !important;
  margin-top: 0.5rem !important;
  padding: 0.65rem 1rem !important;
  font-size: 0.9rem !important;
  font-weight: 600 !important;
  color: #ffffff !important;
  background: #0f172a !important; /* Deep navy */
  border: 1px solid #0f172a !important;
  border-radius: 0.5rem !important;
  cursor: pointer !important;
  transition: all 0.2s ease !important;
}

.tx-publications input[type="submit"]:hover {
  background: #0284c7 !important;
  border-color: #0284c7 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 12px rgba(2, 132, 199, 0.25) !important;
}

/* 3. Right Column: Direct Placement in Column 2 */
.tx-publications > *:not(form[name="filter"]) {
  grid-column: 2 !important;
}

/* 4. Publication Item Cards (Strict Uniform Spacing) */
.tx-publications [data-publications-record] {
  background: #ffffff !important;
  border: 1px solid #e2e8f0 !important;
  border-radius: 0.875rem !important;
  padding: 1.4rem 1.6rem !important;
  margin-top: 0 !important;
  margin-bottom: 1.25rem !important; /* Exact equal gap between every paper */
  box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03) !important;
  transition: transform 0.25s ease, box-shadow 0.25s ease, border-color 0.25s ease !important;
  box-sizing: border-box !important;
}

.tx-publications [data-publications-record]:hover {
  transform: translateY(-2px) !important;
  border-color: #cbd5e1 !important;
  box-shadow: 0 10px 20px -3px rgba(0, 0, 0, 0.06) !important;
}

/* Entry Layout: Align counter and content side-by-side */
.tx-publications [data-publications-record] > div {
  display: flex !important;
  align-items: flex-start !important;
  gap: 1rem !important;
}

/* Number Counter (e.g. "1.", "2.") */
.tx-publications [data-publications-record] > div > div:first-child {
  font-weight: 700 !important;
  color: #0284c7 !important;
  font-size: 1.05rem !important;
  min-width: 2.2rem !important;
  padding-right: 0 !important;
  line-height: 1.5 !important;
  flex-shrink: 0 !important;
}

/* Main Text Details */
.tx-publications [data-publications-record] > div > div:last-child {
  font-size: 0.95rem !important;
  line-height: 1.65 !important;
  color: #334155 !important;
  flex-grow: 1 !important;
}

/* Remove unwanted default empty line breaks */
.tx-publications [data-publications-record] br:first-child {
  display: none !important;
}

.tx-publications [data-publications-record] br {
  display: block !important;
  content: "" !important;
  margin-top: 0.35rem !important;
}

/* Journal / Book Titles */
.tx-publications [data-publications-record] i {
  font-style: italic !important;
  font-weight: 600 !important;
  color: #0f172a !important;
  font-size: 1.05rem !important;
}

/* Links inside entries */
.tx-publications [data-publications-record] a {
  color: #0284c7 !important;
  text-decoration: none !important;
  font-weight: 500 !important;
  transition: color 0.2s ease !important;
}

.tx-publications [data-publications-record] a:hover {
  color: #0369a1 !important;
  text-decoration: underline !important;
}

/* 5. BibTeX Download Button */
.tx-publications a.button,
.tx-publications a.btn-secondary {
  display: inline-flex !important;
  align-items: center !important;
  padding: 0.5rem 1rem !important;
  font-size: 0.85rem !important;
  font-weight: 600 !important;
  color: #334155 !important;
  background: #f8fafc !important;
  border: 1px solid #cbd5e1 !important;
  border-radius: 0.5rem !important;
  text-decoration: none !important;
  transition: all 0.2s ease !important;
  margin-top: 0.5rem !important;
  margin-bottom: 0 !important;
}

.tx-publications a.button:hover,
.tx-publications a.btn-secondary:hover {
  background: #0284c7 !important;
  color: #ffffff !important;
  border-color: #0284c7 !important;
  transform: translateY(-1px) !important;
  box-shadow: 0 4px 10px rgba(2, 132, 199, 0.2) !important;
}

/* 6. Responsive Breakpoint (< 992px) */
@media (max-width: 991px) {
  .tx-publications {
    grid-template-columns: 1fr !important;
    gap: 1.5rem !important;
  }

  .tx-publications form[name="filter"] {
    grid-column: 1 !important;
    grid-row: auto !important;
    position: static !important;
  }

  .tx-publications > *:not(form[name="filter"]) {
    grid-column: 1 !important;
  }
}