/* ============================================================
   site-extras.css
   Small additions needed by the ASP.NET (Web Forms) version.
   style.css is NOT modified - everything here only styles things
   the static site never had: server validation messages, the
   form success/error banners, the "nothing published yet" note
   and the news pager.
   ============================================================ */

/* ASP.NET renders its hidden fields (__VIEWSTATE ...) in a div inside every server form.
   Inside a CSS-grid form that div would take a grid cell, so take it out of the layout. */
.form-grid > .aspNetHidden,
form .aspNetHidden{display:none;}

/* --- validation messages ------------------------------------------------ */
.field-error{
  display:block;
  margin-top:6px;
  font-size:.78rem;
  font-weight:600;
  line-height:1.35;
  color:#ffb4b4;              /* on the navy enquiry form */
}
.search-panel .field-error{color:#c62828;}   /* on the white contact panel */

/* --- form result banners ------------------------------------------------ */
.form-alert{
  border-radius:12px;
  padding:14px 18px;
  margin-bottom:22px;
  font-size:.92rem;
  font-weight:600;
  line-height:1.5;
}
.form-alert.success{background:rgba(18,183,166,.16);border:1px solid var(--teal);color:#fff;}
.form-alert.error{background:rgba(255,107,107,.14);border:1px solid #ff8a8a;color:#ffd0d0;}
.search-panel .form-alert.success{background:#e6f8f5;color:#0b6b61;}
.search-panel .form-alert.error{background:#fdecec;border-color:#e57373;color:#a12626;}

/* Contact form sits on a white panel - keep the labels readable there */
.search-panel .form-grid label{color:var(--ink-faint);}

/* --- empty states ------------------------------------------------------- */
.empty-note{
  grid-column:1 / -1;
  text-align:center;
  padding:48px 20px;
  color:var(--ink-soft);
  background:#fff;
  border:1px dashed var(--line);
  border-radius:var(--radius-m);
}
.bg-navy .empty-note{background:rgba(255,255,255,.06);border-color:var(--line-navy);color:rgba(255,255,255,.75);}

/* --- news pager --------------------------------------------------------- */
.pager-nav{display:flex;justify-content:center;flex-wrap:wrap;gap:10px;margin-top:40px;}
.pager-nav a,.pager-nav span{
  min-width:44px;
  padding:10px 16px;
  text-align:center;
  border-radius:999px;
  font-weight:700;
  font-size:.9rem;
  border:1px solid var(--line);
  background:#fff;
  color:var(--navy);
}
.pager-nav a:hover{border-color:var(--blue);color:var(--blue);}
.pager-nav span.current{background:var(--navy);border-color:var(--navy);color:#fff;}
.pager-nav span.disabled{opacity:.45;}

/* pager on the dark (bg-navy) video page */
.bg-navy .pager-nav a,.bg-navy .pager-nav span{background:rgba(255,255,255,.08);border-color:var(--line-navy);color:#fff;}
.bg-navy .pager-nav a:hover{border-color:var(--teal);color:var(--teal);}
.bg-navy .pager-nav span.current{background:var(--teal);border-color:var(--teal);color:var(--navy);}

/* --- "Find Opportunities" results grid (3 -> 2 -> 1 columns) --- */
.result-grid{grid-template-columns:repeat(3,1fr);}
@media (max-width:1000px){.result-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:640px){.result-grid{grid-template-columns:1fr;}}

/* --- news detail: article body ------------------------------------------ */
.article-body p{margin:0 0 18px;}

/* --- home page: success stories carousel pagination (dots, same look as the destinations carousel) --- */
.testi-controls{display:flex;justify-content:center;margin-top:28px;}
.testi-pagi{position:static !important;display:flex;justify-content:center;flex-wrap:wrap;gap:9px;width:auto !important;}
.testi-pagi .swiper-pagination-bullet{width:9px;height:9px;margin:0 !important;border-radius:50%;background:rgba(10,27,61,.22);opacity:1;cursor:pointer;transition:background .3s,width .3s;}
.testi-pagi .swiper-pagination-bullet-active{background:var(--blue);width:26px;border-radius:5px;}