/* Public Theme Harmonization */

/* Cards */
.card-link {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.card-link:hover {
  transform: translateY(-2px);
  box-shadow: 0 6px 16px rgba(0,0,0,0.12);
}

/* Image wrappers */
.card-img-top-wrapper {
  position: relative;
  overflow: hidden;
  background: #f8f9fa;
  border-top-left-radius: .5rem;
  border-top-right-radius: .5rem;
}
.card-img-top-wrapper img.card-img-top {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Aspect ratio utilities */
.aspect-16x9 { padding-top: 56.25%; }
.aspect-4x3 { padding-top: 75%; }

/* Empty state */
.empty .empty-title {
  font-weight: 600;
}
.empty .empty-subtitle {
  max-width: 520px;
  margin: 0 auto;
}

/* Partner logos */
.partner-logo {
  max-height: 80px;
  max-width: 100%;
  object-fit: contain;
}

/* Shared hero sections */
.page-hero {
  padding: 3rem 0;
  border-radius: 0.5rem;
  color: #fff;
}
.page-hero .page-title {
  color: #fff;
}
.page-hero .lead {
  color: rgba(255,255,255,0.9);
}
.page-hero--investment {
  background: linear-gradient(135deg, #2fb344 0%, #28a745 100%);
}
.page-hero--industry {
  background: linear-gradient(135deg, #f59f00 0%, #e67e22 100%);
}
.page-hero--diaspora {
  background: linear-gradient(135deg, #0054a6 0%, #0b72c6 100%);
}

/* About page variant */
.page-hero--about {
  background: linear-gradient(135deg, #083E2D 0%, #0F5132 100%);
}

/* CTA card gradient (About) */
.card-gradient--about {
  background: linear-gradient(135deg, #083E2D 0%, #0F5132 100%);
  color: #fff;
}
.card-gradient--about .text-white,
.card-gradient--about .text-white-50 {
  color: rgba(255,255,255,0.9) !important;
}

/* Homepage Carousel hero utilities */
.carousel-hero .carousel-item {
  position: relative;
  height: 400px;
  overflow: hidden;
  background-size: cover;
  background-position: center center;
  background-repeat: no-repeat;
}
.carousel-hero .carousel-item::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0.25) 0%, rgba(0,0,0,0.15) 40%, rgba(0,0,0,0.1) 100%);
  z-index: 1;
}
.carousel-hero .carousel-caption {
  z-index: 2;
  left: 50%;
  transform: translateX(-50%);
  text-align: center;
  max-width: 900px;
}
.carousel-hero .carousel-caption h3,
.carousel-hero .carousel-caption p {
  text-shadow: 0 2px 6px rgba(0,0,0,0.4);
}
.carousel-hero .carousel-item > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
}
.carousel-hero .carousel-item > img.contain {
  object-fit: contain;
  background: #f8f9fa;
}

/* Prevent pixelated stretching: if an image is smaller than the slide,
   JS will add .no-upscale to switch to containment instead of upscaling */
.carousel-hero .carousel-item > img.no-upscale {
  object-fit: cover;
  background: transparent;
}

@media (min-width: 992px) {
  .carousel-hero .carousel-item { height: 480px; }
}
@media (max-width: 576px) {
  .carousel-hero .carousel-item { height: 300px; }
}

/* Compact variant: use when forcing cover to minimize upscaling */
.carousel-hero.compact .carousel-item { height: 320px; }
@media (min-width: 992px) {
  .carousel-hero.compact .carousel-item { height: 380px; }
}
@media (max-width: 576px) {
  .carousel-hero.compact .carousel-item { height: 260px; }
}

/* Shared section titles */
.section-title {
  color: var(--tblr-primary);
  text-shadow: 1px 1px 0 rgba(0,84,166,0.1);
  -webkit-text-stroke: 0.5px var(--tblr-primary);
}

/* Inverse section title for dark/gradient cards */
.section-title-inverse {
  color: #fff;
  text-shadow: 1px 1px 0 rgba(255,255,255,0.1);
  -webkit-text-stroke: 0.5px rgba(255,255,255,0.85);
}
.topbar { position: sticky; top: 0; z-index: 1020; box-shadow: 0 2px 12px rgba(0,0,0,.06); }
.nav-link { position: relative; transition: color .2s ease; }
.nav-link.active { color: var(--tblr-primary); font-weight: 600; }
.nav-link.active::after { content:""; position:absolute; left:.75rem; right:.75rem; bottom:-6px; height:3px; border-radius:2px; background: var(--tblr-primary); }
.nav-link:hover { color: var(--tblr-primary); }

.navbar-brand img{height:40px;width:auto}
.nav-divider{border-left:1px solid rgba(0,0,0,.12);margin:0 .75rem;height:24px;align-self:center}
.skip-link{position:absolute;left:-999px;top:-999px;background:#1f6feb;color:#fff;padding:.5rem;border-radius:.25rem;z-index:2000}
.skip-link:focus{left:.5rem;top:.5rem;outline:none}
a:focus, .btn:focus, .nav-link:focus{outline:2px solid #1f6feb; outline-offset:2px}

.image-placeholder { background: linear-gradient(180deg, #f6f8fb 0%, #eef2f7 100%); border-radius:.5rem; }
.avatar{border-radius:.5rem}
.avatar.bg-primary,.avatar.bg-success,.avatar.bg-warning,.avatar.bg-info{box-shadow:0 6px 14px rgba(0,0,0,.08)}

.card-link:focus { outline: none; box-shadow: 0 0 0 .25rem rgba(0,84,166,0.15); }
.partner-logo-lg { max-height: 120px; max-width: 200px; object-fit: contain; }
.markdown { line-height: 1.7; }

/* Line clamp utilities */
.clamp-1 { display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; line-clamp: 1; }
.clamp-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; line-clamp: 2; }
.clamp-3 { display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; line-clamp: 3; }

/* Pagination visual improvements */
.pagination .page-link { min-width: 40px; text-align: center; border-radius:.4rem; }
.pagination .page-item.active .page-link { box-shadow: 0 0 0 .2rem rgba(0,84,166,0.12); }
.pagination .page-link:hover { background-color: var(--tblr-primary); color: #fff; }

/* Soft badges */
.badge-soft-primary{color:#1f6feb;background-color:rgba(31,111,235,.1)}
.badge-soft-info{color:#0b72c6;background-color:rgba(11,114,198,.12)}
.badge-soft-secondary{color:#6c757d;background-color:rgba(108,117,125,.12)}
.badge-soft-success{color:#2fb344;background-color:rgba(47,179,68,.12)}

/* Utility classes to replace inline styles */
.avatar-bg-primary { background-color: var(--tblr-primary-lt); }
.avatar-bg-success { background-color: var(--tblr-success-lt); }
.avatar-bg-warning { background-color: var(--tblr-warning-lt); }
.avatar-bg-info { background-color: var(--tblr-info-lt); }
.icon-2x { font-size: 2rem; }
.icon-lg { font-size: 1.5rem; }
.icon-6x { font-size: 6rem; }
.object-cover { object-fit: cover; }
.min-h-400 { min-height: 400px; }
.min-h-60vh { min-height: 60vh; }
.min-w-300 { min-width: 300px; }
.lh-1_8 { line-height: 1.8; }
/* Admin-specific utilities */
.max-h-120 { max-height: 120px; }
.min-h-200 { min-height: 200px; }
.w-120 { width: 120px; }
.h-60 { height: 60px; }
.h-56 { height: 56px; }
.whitespace-prewrap { white-space: pre-wrap; }
.badge-soft-warning{color:#f59f00;background-color:rgba(245,159,0,.16)}
.badge-soft-danger{color:#d63939;background-color:rgba(214,57,57,.12)}

/* Sector badge mapping */
.badge-sector-diaspora{color:#0b72c6;background-color:rgba(11,114,198,.12)}
.badge-sector-investment{color:#2fb344;background-color:rgba(47,179,68,.12)}
.badge-sector-industry{color:#f59f00;background-color:rgba(245,159,0,.16)}

/* Card polish */
.card .card-footer{background:transparent;border-top:0;padding-top:.25rem}
.card-title{line-height:1.35}
.card-body .text-muted{color:#6b7785 !important}

/* Section spacing */
.page-wrapper .container-xl .section-title{margin-bottom:.25rem}
.page-wrapper .container-xl .row-cards{margin-top:.5rem}

/* Buttons */
.btn-primary{box-shadow:0 4px 12px rgba(31,111,235,.18)}
.btn-primary:hover{transform:translateY(-1px)}

.icon-2x { font-size: 2rem; }
.avatar-bg-primary { background-color: var(--tblr-primary-lt); }
.avatar-bg-success { background-color: var(--tblr-success-lt); }
.avatar-bg-info { background-color: var(--tblr-info-lt); }
.avatar-bg-warning { background-color: var(--tblr-warning-lt); }
.carousel-hero .carousel-item {
  height: clamp(240px, 45vh, 560px);
}
