/* =============================================================
   BHUTAN AUTOMATION — LOGO STYLES
   Animated logo in the navbar (traveling arrow + blinking LED)
   and a plain static logo in the footer.

   Source image: images/ba-logo-hd.png (native size 4293 x 1539)
   Loaded LAST in <head>, after templatemo-tiya-golf-club.css.

   Shared by every page on the site (index, event, tender, login,
   dashboard, and the rest of the admin pages) so the navbar looks
   and behaves identically everywhere.
   ============================================================= */


/* -----------------------------------------------------------
   1. FIX — templatemo-tiya-golf-club.css caps the brand link at
   `max-width: 48px` (built for a small icon-style logo). That
   single line is why the logo was rendering tiny. Everything
   else in that stylesheet is harmless to us and left untouched.
   The footer reuses the same "navbar-brand" wrapper around its
   own logo (views/*.ejs share the markup), so it needs the same
   fix -- without it, the 48px cap silently overrides
   .footer-logo's own width via `max-width: 100%` resolving
   against the capped 48px parent instead of the real column
   width, which is why bumping .footer-logo's width alone didn't
   visibly change anything.
   ----------------------------------------------------------- */
.navbar .navbar-brand,
.site-footer .navbar-brand {
  max-width: none !important;
  height: auto;
}


/* -----------------------------------------------------------
   2. LOGO FRAME — sizes the logo in the navbar and keeps its
   native aspect ratio so it can never stretch or distort.
   ----------------------------------------------------------- */
.logo-frame {
  position: relative;
  display: inline-block;
  width: 195px;
  aspect-ratio: 4293 / 1539;
}

.logo-img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: contain;
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, .25));
}

@media (max-width: 480px) {
  .logo-frame { width: 150px; }
}


/* -----------------------------------------------------------
   3. ANIMATED CIRCUIT ARROW — an invisible SVG motion-path,
   traced over the logo's real circuit line, that steers a small
   arrowhead (plus a fading comet trail) around it continuously.
   ----------------------------------------------------------- */
.logo-circuit {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  overflow: visible;
  pointer-events: none;
}

.circuit-track {
  fill: none;
  stroke: none; /* the real green line already lives in the PNG */
}

.arrow-glow {
  filter:
    drop-shadow(0 0 55px rgba(52, 211, 153, .95))
    drop-shadow(0 0 110px rgba(16, 185, 129, .6));
}


/* -----------------------------------------------------------
   4. BLINKING LED — a red circle overlay positioned exactly on
   the logo's red button, pulsing on a continuous cycle.
   ----------------------------------------------------------- */
.logo-blink-dot {
  position: absolute;
  left: 39.83%;
  top: 64.39%;
  width: 15.47%;
  height: 41.07%;
  transform: translate(-50%, -50%);
  border-radius: 50%;
  background: radial-gradient(circle at 35% 30%, #ff9b8f 0%, #e6392b 45%, #8c0f0c 100%);
  pointer-events: none;
  animation: baLedBlink 1.4s ease-in-out infinite;
}

@keyframes baLedBlink {
  0%, 100% {
    opacity: 1;
    transform: translate(-50%, -50%) scale(1);
    box-shadow: 0 0 8px 3px rgba(255, 45, 35, .85), 0 0 18px 8px rgba(255, 45, 35, .35);
  }
  50% {
    opacity: .22;
    transform: translate(-50%, -50%) scale(.82);
    box-shadow: 0 0 0 0 rgba(255, 45, 35, 0);
  }
}


/* -----------------------------------------------------------
   5. FOOTER LOGO — plain, static (no animation) for the dark
   footer background.
   ----------------------------------------------------------- */
.site-footer .footer-logo {
  width: 250px;
  max-width: 100%;
  height: auto;
  display: block;
  margin-bottom: 1rem;
}


/* -----------------------------------------------------------
   6. CONSISTENT NAVBAR BACKGROUND — templatemo-tiya-golf-club.css
   gives the navbar three different backgrounds depending on
   context: transparent by default, var(--secondary-color) (a
   dark slate) at widths <= 991px, and a sticky-scroll blue.
   Switching between transparent and dark slate right at the
   991px breakpoint is what made the bar look like it was
   "changing colour" as the window resized. Pinning one solid
   colour here makes the navbar look identical at every screen
   size, on every page. Colour is #123f61 -- the same shade every
   hero/page-header gradient starts from, so the navbar now reads
   as a seamless continuation of the page rather than a separate,
   brighter blue bar sitting on top of it (previously #1a5888,
   which didn't belong to the site's navy palette at all).
   ----------------------------------------------------------- */
.navbar,
.sticky-wrapper.is-sticky .navbar {
  background-color: #123f61 !important;
}


/* -----------------------------------------------------------
   7. HERO PHOTO, UNCROPPED — the homepage used to have a large
   decorative wave SVG sitting over the top of the hero photo.
   It cropped off the tops of both entrance pillars and part of
   the building signage, so it's been removed from the markup in
   favour of showing the photo in full. This softens the seam
   where the solid navbar ends and the photo begins, so it reads
   as an intentional edge instead of an abrupt cut.
   ----------------------------------------------------------- */
.hero-section {
  box-shadow: inset 0 70px 60px -50px rgba(0, 0, 0, .55);
}


/* -----------------------------------------------------------
   8. HERO CTA + QUICK-FACTS ROW — the two hero buttons and three
   headline facts (ISO count, incorporation year, the DGPC/Andritz
   joint venture) sit in one row near the top of the hero content —
   buttons on the left, facts on the right — so both are visible
   at a glance without scrolling. The certification badges below
   (in the site's navy) are a secondary confirmation once you
   scroll past the hero.
   ----------------------------------------------------------- */
html {
  scroll-behavior: smooth;
}

.hero-cta-stats-row {
  margin-top: 28px;
}

.hero-quick-stats {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px 16px;
  text-align: left;
}

@media (min-width: 992px) {
  .hero-quick-stats {
    grid-template-columns: repeat(3, auto);
    justify-content: end;
    text-align: right;
    gap: 18px 32px;
  }
}

.hero-stat-number {
  color: #ffffff;
  font-size: 1.65rem;
  font-weight: 800;
  line-height: 1;
  text-shadow: 0 2px 8px rgba(0, 0, 0, .75), 0 1px 3px rgba(0, 0, 0, .9);
}

.hero-stat-label {
  color: rgba(255, 255, 255, .9);
  font-size: .82rem;
  margin-top: 4px;
  text-shadow: 0 1px 5px rgba(0, 0, 0, .85);
}

.hero-stats-section {
  position: relative;
  z-index: 1;
  background: linear-gradient(180deg, #123f61 0%, #0f3652 100%);
  padding: 22px 0;
  /* templatemo-tiya-golf-club.css pulls .hero-section's bottom edge up by
     90px (margin-bottom: -90px) so a taller element below tucks under the
     photo. This strip (68px tall) partially cancels that pull -- enough
     to keep it comfortably taller than the remaining overlap (so no gap
     ever shows through), while still sliding the strip up closer to the
     hero instead of sitting a full scroll below it. */
  margin-top: 28px;
}

@media screen and (max-width: 991px) {
  .hero-stats-section {
    /* at this breakpoint the template pushes .hero-section DOWN instead
       (position: relative; top: 82px), so there's no negative pull to
       cancel here. */
    margin-top: 0;
  }
}

.hero-certified-strip {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 14px 28px;
}

.hero-certified-label {
  color: rgba(255, 255, 255, .5);
  font-size: .78rem;
  font-weight: 600;
  letter-spacing: .08em;
  text-transform: uppercase;
  margin-right: 4px;
}

.hero-cert-badge {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, .85);
  font-size: .85rem;
  font-weight: 600;
}

.hero-cert-badge i {
  color: #F2CC8F;
  font-size: 1rem;
}

@media (max-width: 767px) {
  .hero-stat-number { font-size: 1.3rem; }
  .hero-cta-stats-row { margin-top: 20px; }
}


/* -----------------------------------------------------------
   9. ABOUT-US TEASER (homepage) — condensed "Who We Are" panel
   replacing the old full About Us content on the homepage, in
   the site's navy/gold palette. Links through to the dedicated
   About Us page (/about) for the full company + board detail.
   The right-hand column is two stacked white partner cards (DGPC,
   Andritz), each a clickable link out to that partner's site.
   ----------------------------------------------------------- */
.about-teaser-section {
  background: linear-gradient(180deg, #123f61 0%, #0c2c44 100%);
  padding: 90px 0;
  min-height: 100vh;
  display: flex;
  align-items: center;
  overflow: hidden;
}

.about-teaser-section > .container {
  width: 100%;
}

.about-teaser-eyebrow {
  display: inline-block;
  color: #F2CC8F;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  margin-bottom: 18px;
}

.about-teaser-headline {
  color: #ffffff;
  font-weight: 800;
  font-size: 2.25rem;
  line-height: 1.2;
  margin-bottom: 22px;
}

.about-teaser-text {
  color: rgba(255, 255, 255, .78);
  font-size: 1rem;
  line-height: 1.7;
  margin-bottom: 18px;
}

.about-teaser-divider {
  border: none;
  border-top: 1px solid rgba(242, 204, 143, .35);
  margin: 28px 0;
}

.about-teaser-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 28px 40px;
  margin-bottom: 30px;
}

.about-teaser-stat-number {
  color: #ffffff;
  font-size: 1.9rem;
  font-weight: 800;
  line-height: 1;
}

.about-teaser-stat-label {
  color: rgba(255, 255, 255, .68);
  font-size: .85rem;
  margin-top: 6px;
}

.about-teaser-link {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: #F2CC8F;
  font-weight: 700;
  font-size: 1rem;
  text-decoration: none;
  transition: gap .2s ease, color .2s ease;
}

.about-teaser-link:hover {
  color: #ffffff;
  gap: 14px;
}

.about-teaser-partner-cards {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 20px;
  height: 100%;
}

.about-teaser-partner-card {
  display: block;
  background: #ffffff;
  border-radius: 16px;
  padding: 26px 28px;
  text-decoration: none;
  box-shadow: 0 16px 34px rgba(0, 0, 0, .22);
  transition: transform .2s ease, box-shadow .2s ease;
}

.about-teaser-partner-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 20px 42px rgba(0, 0, 0, .3);
}

.about-teaser-partner-card-head {
  display: flex;
  align-items: center;
  gap: 14px;
  margin-bottom: 14px;
}

.about-teaser-partner-card-logo-frame {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 46px;
  height: 46px;
  flex-shrink: 0;
}

.about-teaser-partner-card-logo {
  display: block;
  width: auto;
  height: auto;
  max-width: 100%;
  max-height: 100%;
  object-fit: contain;
}

.about-teaser-partner-card-name {
  color: #3D405B;
  font-size: 1.05rem;
  font-weight: 700;
  line-height: 1.3;
}

.about-teaser-partner-card-desc {
  color: #6b7280;
  font-size: .92rem;
  line-height: 1.6;
  margin-bottom: 16px;
}

.about-teaser-partner-card-link {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  color: #1a5888;
  font-weight: 700;
  font-size: .9rem;
}

.about-teaser-partner-card:hover .about-teaser-partner-card-link {
  text-decoration: underline;
}

@media (max-width: 991px) {
  .about-teaser-partner-cards {
    margin-top: 50px;
  }
}

@media (max-width: 767px) {
  .about-teaser-headline { font-size: 1.7rem; }
  .about-teaser-section { padding: 60px 0; }
}


/* -----------------------------------------------------------
   10. ABOUT PAGE HEADER — compact navy banner at the top of the
   dedicated About Us page (views/about.ejs), matching the same
   gradient used for the homepage's hero-stats-section and the
   About-Us teaser above.
   ----------------------------------------------------------- */
.about-page-header {
  background: linear-gradient(180deg, #123f61 0%, #0f3652 100%);
  padding: 160px 0 60px;
  text-align: center;
}

.about-page-eyebrow {
  display: inline-block;
  color: #F2CC8F;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  margin-bottom: 14px;
}

.about-page-lead {
  color: rgba(255, 255, 255, .82);
  max-width: 640px;
  margin: 0 auto;
  font-size: 1.05rem;
}

@media (max-width: 767px) {
  .about-page-header { padding: 130px 0 50px; }
}


/* -----------------------------------------------------------
   11. ABOUT PAGE — CONTINUOUS NAVY. The company-detail block and
   the Board block (views/about.ejs) used to drop to the site's
   default white background right after the navy page header,
   which read as a jarring cut to "a white page" partway through
   one continuous "who we are" story. Both now share this flat
   navy -- the same tone the header's gradient ends on, so the
   seam between header/company-detail/board is invisible -- with
   light text, and a white card behind each partner logo (DGPC's
   is a transparent PNG that needs a light backdrop to read) and
   behind each board member's bio for contrast against the navy.
   ----------------------------------------------------------- */
.about-detail-section {
  background: #0f3652;
}

.about-detail-section h1,
.about-detail-section h2 {
  color: #ffffff;
}

.about-detail-section p {
  color: rgba(255, 255, 255, .78);
}

.about-detail-section p strong {
  color: #ffffff;
}

.about-detail-section .member-block-image-wrap {
  background: #ffffff;
  padding: 20px;
  border-radius: 16px;
}

.about-detail-section .member-block-info p {
  color: rgba(255, 255, 255, .78);
}

.about-detail-section .custom-block-wrap {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 24px 20px;
}

.about-detail-section .custom-block-image {
  border-radius: 12px;
}

.about-detail-section .custom-block-body h5:first-child {
  color: #ffffff;
}

.about-detail-section .custom-block-body h5[style] {
  color: #F2CC8F !important;
}


/* -----------------------------------------------------------
   12. ABOUT PAGE — FULL REDESIGN. Six content sections beneath
   the page header (views/about.ejs): The Adjoint Company, What
   We Stand For, Leadership / Board of Directors, Parent
   Organizations, and a Get In Touch CTA. All sit on the same
   flat navy used by .about-detail-section (section 11); the
   "odd" detail sections below get a touch darker shade so
   consecutive sections stay visually distinct from one another
   without breaking the continuous-navy story. Eyebrow/headline/
   divider/stat styling mirrors the homepage teaser (section 9)
   and page header (section 10) for a consistent voice across
   all three navy surfaces. Board cards keep each director's
   photo (as a circular avatar) next to their name/role.
   ----------------------------------------------------------- */
.about-detail-section:nth-of-type(odd) {
  background: #0c2c44;
}

/* The reused .about-teaser-partner-card* component (section 9) is a
   white card with dark/gray text, but section 11's generic
   ".about-detail-section p" rule (specificity class+type) outranks
   the card's own single-class ".about-teaser-partner-card-desc" rule
   when the card is embedded here on the About page -- turning its
   description paragraph white-on-white and invisible. Reassert the
   card's intended colors at matching (class+class) specificity. */
.about-detail-section .about-teaser-partner-card-desc {
  color: #6b7280;
}

.about-detail-section .about-teaser-partner-card-name {
  color: #3D405B;
}

.about-section-eyebrow {
  display: inline-block;
  color: #F2CC8F;
  font-size: .82rem;
  font-weight: 700;
  letter-spacing: .14em;
  text-transform: uppercase;
  margin-bottom: 14px;
}

.about-section-headline {
  color: #ffffff;
  font-weight: 800;
  font-size: 2.1rem;
  line-height: 1.25;
  margin-bottom: 22px;
}

.about-page-text {
  color: rgba(255, 255, 255, .78);
  font-size: 1rem;
  line-height: 1.75;
  margin-bottom: 18px;
}

.about-page-divider {
  border: none;
  border-top: 1px solid rgba(242, 204, 143, .35);
  margin: 28px 0;
}

.about-page-stats {
  display: flex;
  flex-wrap: wrap;
  gap: 32px;
}

.about-page-stat-number {
  color: #ffffff;
  font-size: 1.9rem;
  font-weight: 800;
  line-height: 1;
}

.about-page-stat-label {
  color: rgba(255, 255, 255, .68);
  font-size: .85rem;
  margin-top: 6px;
  max-width: 140px;
}

/* -- What We Stand For: value cards -- */
.about-value-card {
  height: 100%;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 30px 26px;
  transition: transform .2s ease, background .2s ease, border-color .2s ease;
}

.about-value-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, .08);
  border-color: rgba(242, 204, 143, .35);
}

.about-value-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border-radius: 12px;
  background: rgba(242, 204, 143, .14);
  color: #F2CC8F;
  font-size: 1.3rem;
  margin-bottom: 18px;
}

.about-value-card h5 {
  color: #ffffff;
  font-weight: 700;
  margin-bottom: 10px;
}

.about-value-card p {
  color: rgba(255, 255, 255, .68);
  font-size: .92rem;
  line-height: 1.65;
  margin-bottom: 0;
}

/* -- about-value-card variant with a photo instead of an icon (used by
   the Solutions page's "Every Layer of the System" catalogue cards) --
   the image bleeds to the card's own edges via negative margins
   matching the card's padding, so it reads as a photo header rather
   than an inset thumbnail. */
.about-value-card-with-image {
  padding-top: 0;
  overflow: hidden;
}

.about-value-card-image {
  margin: 0 -26px 20px;
  overflow: hidden;
}

.about-value-card-image img {
  display: block;
  width: 100%;
  height: 170px;
  object-fit: cover;
}

/* -- Leadership: board of directors cards -- */
.about-board-card {
  height: 100%;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 26px 24px;
  transition: transform .2s ease, background .2s ease, border-color .2s ease;
}

.about-board-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, .08);
  border-color: rgba(242, 204, 143, .35);
}

.about-board-card-head {
  display: flex;
  align-items: center;
  gap: 16px;
  margin-bottom: 16px;
}

.about-board-card-photo {
  width: 104px;
  height: 104px;
  border-radius: 50%;
  object-fit: cover;
  flex-shrink: 0;
  border: 2px solid rgba(242, 204, 143, .45);
  background: #ffffff;
}

.about-board-card-name {
  color: #ffffff;
  font-weight: 700;
  font-size: 1.02rem;
  margin-bottom: 4px;
}

.about-board-card-role {
  display: block;
  color: #F2CC8F;
  font-size: .78rem;
  font-weight: 600;
  line-height: 1.4;
}

.about-board-card-bio {
  color: rgba(255, 255, 255, .68);
  font-size: .88rem;
  line-height: 1.6;
  margin-bottom: 0;
}

/* -- Organogram: pure-CSS connector tree for the internal reporting
   structure (Board -> CEO -> CTO/Finance/ICT/Procurement/HR, with
   Project Management + Manufacturing under CTO). Each <li> draws its
   own elbow connector to its siblings' shared bus via ::before/::after,
   and each nested <ul> drops a trunk line from its parent node down to
   that bus via "ul ul::before" -- this lets the same recipe handle any
   branch count (1, 2 or 5 children) correctly without JS. Horizontal
   on small screens: the tree keeps its natural width and scrolls. -- */
.about-org-scroll-hint {
  text-align: center;
  color: rgba(255, 255, 255, .5);
  font-size: .75rem;
  margin-bottom: 10px;
}

.about-org-chart-wrap {
  overflow-x: auto;
  padding-bottom: 8px;
}

.about-org-tree,
.about-org-tree ul {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  justify-content: center;
}

.about-org-tree {
  padding-top: 0;
  min-width: 640px;
}

.about-org-tree ul {
  padding-top: 34px;
  position: relative;
}

.about-org-tree li {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  position: relative;
  padding: 34px 12px 0;
}

.about-org-tree li::before,
.about-org-tree li::after {
  content: '';
  position: absolute;
  top: 0;
  right: 50%;
  width: 50%;
  height: 34px;
  border-top: 1px solid rgba(242, 204, 143, .4);
}

.about-org-tree li::after {
  right: auto;
  left: 50%;
  border-left: 1px solid rgba(242, 204, 143, .4);
}

.about-org-tree li:only-child::before,
.about-org-tree li:only-child::after {
  display: none;
}

.about-org-tree li:only-child {
  padding-top: 0;
}

.about-org-tree li:first-child::before,
.about-org-tree li:last-child::after {
  border: 0 none;
}

.about-org-tree li:last-child::before {
  border-right: 1px solid rgba(242, 204, 143, .4);
  border-radius: 0 6px 0 0;
}

.about-org-tree li:first-child::after {
  border-radius: 6px 0 0 0;
}

.about-org-tree ul ul::before {
  content: '';
  position: absolute;
  top: 0;
  left: 50%;
  width: 0;
  height: 34px;
  border-left: 1px solid rgba(242, 204, 143, .4);
}

.about-org-node {
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  width: 150px;
  min-height: 54px;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .18);
  border-radius: 10px;
  padding: 10px 12px;
  color: #ffffff;
  font-weight: 700;
  font-size: .8rem;
  line-height: 1.35;
}

.about-org-node-sub {
  display: block;
  color: rgba(255, 255, 255, .58);
  font-weight: 500;
  font-size: .7rem;
  margin-top: 3px;
}

.about-org-node-root {
  background: rgba(242, 204, 143, .14);
  border-color: rgba(242, 204, 143, .55);
  color: #F2CC8F;
}

/* Below 767px the horizontal branching diagram gets too cramped even
   with the scroll wrapper, so it switches to a vertical, indented
   "file tree" layout instead: each level nests under the previous
   one with a dashed guide line and a short tick connecting each node
   to it, reading top-to-bottom rather than left-to-right. No
   scrolling required. */
@media (max-width: 767px) {
  .about-org-scroll-hint {
    display: none;
  }

  .about-org-chart-wrap {
    overflow-x: visible;
    padding-bottom: 0;
  }

  .about-org-tree,
  .about-org-tree ul {
    display: block;
    min-width: 0;
  }

  .about-org-tree {
    text-align: left;
  }

  .about-org-tree ul {
    padding-top: 0;
    padding-left: 18px;
    margin: 10px 0 0 15px;
    border-left: 1px dashed rgba(242, 204, 143, .35);
  }

  .about-org-tree li {
    display: block;
    text-align: left;
    padding: 0 0 14px 20px;
    position: relative;
  }

  .about-org-tree > li {
    padding-left: 0;
  }

  .about-org-tree li:last-child {
    padding-bottom: 0;
  }

  .about-org-tree li::before,
  .about-org-tree li::after,
  .about-org-tree li:only-child::before,
  .about-org-tree li:only-child::after,
  .about-org-tree ul ul::before {
    content: none;
    display: none;
  }

  /* re-declared with :only-child so this beats the desktop-tree
     ":only-child { display:none }" rule (higher specificity) that
     would otherwise hide CEO's tick -- Board is the only single-child
     case excluded, via the ".about-org-tree > li" scope below. */
  .about-org-tree ul li::before,
  .about-org-tree ul li:only-child::before {
    content: '';
    display: block;
    position: absolute;
    top: 24px;
    left: 0;
    width: 16px;
    height: 1px;
    background: rgba(242, 204, 143, .35);
  }

  .about-org-node {
    width: auto;
    max-width: 100%;
    font-size: .78rem;
    padding: 9px 12px;
  }

  .about-org-node-sub {
    font-size: .68rem;
  }
}


/* -- Parent Organizations -- */
.about-parent-orgs-card {
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 20px;
  padding: 44px 40px;
}

.about-parent-org-name {
  color: #ffffff;
  font-weight: 700;
  margin-bottom: 12px;
}

.about-parent-org-desc {
  color: rgba(255, 255, 255, .72);
  font-size: .92rem;
  line-height: 1.7;
  margin-bottom: 0;
}

/* -- Get In Touch CTA -- */
.about-cta-card {
  text-align: center;
  max-width: 640px;
  margin: 0 auto;
}

.about-cta-eyebrow {
  display: block;
  text-align: center;
}

.about-cta-text {
  color: rgba(255, 255, 255, .72);
  font-size: 1.02rem;
  margin-bottom: 30px;
}

.about-cta-buttons {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 16px;
}

.about-cta-btn-primary {
  display: inline-block;
  background: #F2CC8F;
  color: #123f61;
  font-weight: 700;
  padding: 14px 32px;
  border-radius: 999px;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease;
}

.about-cta-btn-primary:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(242, 204, 143, .3);
  color: #123f61;
}

.about-cta-btn-secondary {
  display: inline-block;
  background: transparent;
  color: #ffffff;
  font-weight: 700;
  padding: 14px 32px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .35);
  text-decoration: none;
  transition: background .2s ease, border-color .2s ease;
}

.about-cta-btn-secondary:hover {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(255, 255, 255, .6);
  color: #ffffff;
}

@media (max-width: 767px) {
  .about-section-headline { font-size: 1.6rem; }
  .about-parent-orgs-card { padding: 32px 22px; }
  .about-page-stats { gap: 22px; }
}


/* -----------------------------------------------------------
   13. SOLUTIONS -- the homepage "Our Products" section (now a
   6-card Core Solutions grid, id=section_3) and the dedicated
   /solutions page (views/solutions.ejs) it links out to. Sits on
   the same flat navy as the About-Us teaser directly above it on
   the homepage (section 9) so the handoff has no white seam, and
   reuses about-section-eyebrow/-headline, about-value-card and
   about-cta-* from the About page for a consistent voice across
   every navy surface on the site. Site's own blue/navy palette
   throughout -- no reference cyan/near-black.
   ----------------------------------------------------------- */
.solution-cards-section {
  background: #0f3652;
}

.solution-product-card {
  display: block;
  height: 100%;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 30px 26px;
  text-decoration: none;
  transition: transform .2s ease, background .2s ease, border-color .2s ease;
}

.solution-product-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, .08);
  border-color: rgba(242, 204, 143, .4);
}

.solution-product-card-icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 50px;
  height: 50px;
  border-radius: 12px;
  background: rgba(242, 204, 143, .14);
  color: #F2CC8F;
  font-size: 1.3rem;
  margin-bottom: 18px;
}

.solution-product-card-kicker {
  display: block;
  color: rgba(255, 255, 255, .5);
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: 8px;
}

.solution-product-card-title {
  color: #ffffff;
  font-weight: 700;
  font-size: 1.15rem;
  margin-bottom: 12px;
}

.solution-product-card-desc {
  color: rgba(255, 255, 255, .68);
  font-size: .9rem;
  line-height: 1.65;
  margin-bottom: 22px;
}

.solution-product-card-arrow {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 38px;
  height: 38px;
  border-radius: 50%;
  border: 1px solid rgba(255, 255, 255, .3);
  color: #ffffff;
  transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.solution-product-card:hover .solution-product-card-arrow {
  background: #F2CC8F;
  border-color: #F2CC8F;
  color: #123f61;
}

/* -- /solutions page: breadcrumb -- */
.solution-breadcrumb {
  font-size: .82rem;
  color: rgba(255, 255, 255, .55);
  margin-bottom: 18px;
}

.solution-breadcrumb a {
  color: rgba(255, 255, 255, .75);
  text-decoration: none;
}

.solution-breadcrumb a:hover {
  color: #F2CC8F;
}

.solution-breadcrumb-sep {
  margin: 0 8px;
  color: rgba(255, 255, 255, .35);
}

/* -- /solutions page: framed detail image (SCADA & Control /
   Hydropower Solutions deep-dives) -- */
.solution-detail-image {
  border-radius: 18px;
  overflow: hidden;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .35);
  border: 1px solid rgba(255, 255, 255, .12);
}

.solution-detail-image img {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 320px;
  object-fit: cover;
}

/* -- /solutions page: catalogue card kicker (reuses about-value-card) -- */
.solution-card-kicker {
  display: block;
  color: rgba(255, 255, 255, .5);
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: 6px;
}

/* -- /solutions page: delivery-process cards -- */
.solution-process-card {
  height: 100%;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 14px;
  padding: 24px 20px;
  transition: transform .2s ease, background .2s ease, border-color .2s ease;
}

.solution-process-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, .08);
  border-color: rgba(242, 204, 143, .35);
}

.solution-process-index {
  display: block;
  color: #F2CC8F;
  font-weight: 800;
  font-size: 1.1rem;
  margin-bottom: 10px;
}

.solution-process-card h5 {
  color: #ffffff;
  font-weight: 700;
  font-size: 1rem;
  margin-bottom: 10px;
}

.solution-process-card p {
  color: rgba(255, 255, 255, .68);
  font-size: .85rem;
  line-height: 1.6;
  margin-bottom: 0;
}

@media (max-width: 767px) {
  .solution-detail-image img {
    min-height: 220px;
  }
  .solution-product-card {
    padding: 26px 22px;
  }
}


/* -----------------------------------------------------------
   14. INSIGHTS -- the homepage "Our Insights" teaser (id=insights,
   views/index_final.ejs). A magazine-style layout (one featured
   story + a grid of four smaller stories) matching a reference
   design the client supplied, adapted to the site's own navy/gold
   palette instead of the reference's cyan. Each card leads with
   the real event photo (event.image_url), bled to the card's own
   edges via the same negative-margin technique as the Solutions
   page's about-value-card-with-image, with title/excerpt/date
   below. Backend-driven: still loops over the real `events` array
   (index.controller.js pulls 5 rows -- events[0] is the featured
   story, events[1..4] fill the small-card grid). Sits directly
   beneath the Core Solutions grid (section 13, #0f3652) so it
   takes the established "odd section" darker navy (#0c2c44, same
   technique as the About page's alternating detail sections in
   section 12) to stay visually distinct while remaining part of
   the same continuous navy story.
   ----------------------------------------------------------- */
.insights-section {
  background: #0c2c44;
}

.insight-card {
  height: 100%;
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 16px;
  padding: 26px 24px;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform .2s ease, background .2s ease, border-color .2s ease;
}

.insight-card:hover {
  transform: translateY(-4px);
  background: rgba(255, 255, 255, .07);
  border-color: rgba(242, 204, 143, .35);
}

.insight-card-media {
  margin: -26px -24px 20px;
  overflow: hidden;
}

.insight-card-media img {
  display: block;
  width: 100%;
  height: 150px;
  object-fit: cover;
  transition: transform .35s ease;
}

.insight-card:hover .insight-card-media img {
  transform: scale(1.06);
}

.insight-card-title {
  color: #ffffff;
  font-weight: 700;
  font-size: 1.05rem;
  line-height: 1.4;
  margin-bottom: 10px;
  display: -webkit-box;
  -webkit-line-clamp: 3;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.insight-card-excerpt {
  color: rgba(255, 255, 255, .62);
  font-size: .88rem;
  line-height: 1.65;
  margin-bottom: 0;
}

.insight-card-date {
  display: block;
  color: rgba(255, 255, 255, .42);
  font-size: .76rem;
  font-weight: 600;
  letter-spacing: .03em;
  margin-top: auto;
  padding-top: 16px;
}

/* -- the large featured card -- */
.insight-card-featured {
  min-height: 430px;
}

.insight-card-featured .insight-card-media {
  height: 220px;
}

.insight-card-featured .insight-card-media img {
  height: 220px;
}

.insight-card-featured .insight-card-title {
  font-size: 1.5rem;
  -webkit-line-clamp: 3;
}

.insight-card-featured .insight-card-excerpt {
  font-size: .92rem;
}

@media (max-width: 767px) {
  .insight-card-featured {
    min-height: 0;
  }
  .insight-card-featured .insight-card-media,
  .insight-card-featured .insight-card-media img {
    height: 170px;
  }
  .insight-card-featured .insight-card-title {
    font-size: 1.25rem;
  }
}


/* -----------------------------------------------------------
   15. INSIGHTS LISTING PAGE -- the dedicated /insights page
   (views/event.ejs, route renamed from /events) that the homepage
   teaser's "View All Insights" button links to. It previously
   used the plain default Bootstrap look (only the date badge had
   text-white). The page header now reuses .about-page-header/
   .about-page-eyebrow/.about-page-lead verbatim (same component
   as about.ejs and solutions.ejs) for a consistent header across
   the site. Each entry is kept plain (no card box/background/
   hover) per client request -- just a thin divider between rows.
   ----------------------------------------------------------- */
.insights-listing-section {
  background: #0f3652;
}

.insights-listing-section .custom-block-bg {
  background: transparent;
  padding-bottom: 32px;
  margin-bottom: 32px;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}

.insights-listing-section .custom-block-bg:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}

.insights-listing-section .custom-block-image {
  border-radius: 12px;
  object-fit: cover;
  height: 100%;
  max-height: 220px;
  width: 100%;
}

.insights-listing-section .custom-block-date-wrap {
  background: rgba(12, 44, 68, .6);
  border: 1px solid rgba(242, 204, 143, .35);
  border-radius: 14px;
}

.insights-listing-section .custom-block-date {
  color: #F2CC8F;
  font-weight: 800;
  font-size: 2.2rem;
}

.insights-listing-section .events-title {
  display: block;
  color: #ffffff;
  font-weight: 700;
  font-size: 1.2rem;
  margin-bottom: 10px;
}

.insights-listing-section .custom-block-info p {
  color: rgba(255, 255, 255, .72);
  line-height: 1.7;
}

@media (max-width: 767px) {
  .insights-listing-section .custom-block-image {
    max-height: 200px;
    margin-bottom: 16px;
  }
}


/* -----------------------------------------------------------
   16. TENDER LISTING PAGE -- the /tenders page (views/tender.ejs).
   Previously the site's un-themed default look (white background,
   mint-green status badge, black heading, blue button, all from
   the base Bootstrap/templatemo styles with no site override).
   Brought onto the same navy/gold language as the rest of the
   site: .about-page-header for the header, and the same "plain
   list, thin divider between entries" treatment just applied to
   the Insights listing page, for a consistent voice across both
   listing-style pages. The Open/Closed status badge uses the
   green already established by the nav logo's circuit animation
   dots as a functional signal (not just decoration) -- knowing at
   a glance whether a tender can still be bid on matters here.
   Fresh class names throughout (not reused from the base theme)
   to avoid the base template's own un-namespaced defaults leaking
   through, the way .custom-block-bg's default white background
   did on the Insights listing page.
   ----------------------------------------------------------- */
.tender-listing-section {
  background: #0f3652;
}

.tender-entry {
  padding-bottom: 32px;
  margin-bottom: 32px;
  border-bottom: 1px solid rgba(255, 255, 255, .12);
}

.tender-entry:last-child {
  border-bottom: none;
  margin-bottom: 0;
  padding-bottom: 0;
}

.tender-status-badge {
  display: inline-block;
  padding: 6px 16px;
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .04em;
  text-transform: uppercase;
  margin-bottom: 16px;
}

.tender-status-open {
  background: rgba(34, 197, 94, .14);
  border: 1px solid rgba(34, 197, 94, .4);
  color: #4ade80;
}

.tender-status-closed {
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .2);
  color: rgba(255, 255, 255, .5);
}

.tender-dates {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin-bottom: 20px;
}

.tender-dates span {
  display: block;
  color: rgba(255, 255, 255, .5);
  font-size: .78rem;
}

.tender-dates strong {
  display: block;
  color: #ffffff;
  font-weight: 600;
  font-size: .88rem;
  margin-top: 2px;
}

.tender-title {
  color: #ffffff;
  font-weight: 700;
  font-size: 1.3rem;
  line-height: 1.4;
  margin-bottom: 14px;
}

.tender-body {
  color: rgba(255, 255, 255, .72);
  line-height: 1.75;
  margin-bottom: 18px;
}

.tender-meta {
  display: flex;
  flex-wrap: wrap;
  gap: 10px 24px;
  margin-bottom: 22px;
}

.tender-meta span {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  color: rgba(255, 255, 255, .6);
  font-size: .86rem;
}

.tender-meta i {
  color: #F2CC8F;
}

.tender-download-btn {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  background: #F2CC8F;
  color: #123f61;
  font-weight: 700;
  padding: 12px 26px;
  border-radius: 999px;
  text-decoration: none;
  transition: transform .2s ease, box-shadow .2s ease;
}

.tender-download-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 24px rgba(242, 204, 143, .3);
  color: #123f61;
}

@media (max-width: 767px) {
  .tender-title {
    font-size: 1.15rem;
  }
  .tender-dates {
    flex-direction: row;
    flex-wrap: wrap;
    gap: 20px;
  }
}


/* =============================================================
   17. NAV — "LET'S TALK" CTA PILL
   Replaces the old plain "Contact Us" nav-link. Sits as the last
   item in the same navbar-nav list but styled as a distinct
   outlined pill button (gold border/text, fills gold on hover)
   so it reads as a call-to-action rather than a regular link.
   ============================================================= */
.nav-item-cta {
  display: flex;
  align-items: center;
}

.nav-cta-link {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  padding: 9px 22px;
  margin-left: 6px;
  border: 1.5px solid rgba(242, 204, 143, .6);
  border-radius: 999px;
  color: #F2CC8F !important;
  font-weight: 700;
  font-size: .88rem;
  text-decoration: none;
  white-space: nowrap;
  transition: background .2s ease, color .2s ease, border-color .2s ease;
}

.nav-cta-link i {
  font-size: .78rem;
  transition: transform .2s ease;
}

.nav-cta-link:hover {
  background: #F2CC8F;
  border-color: #F2CC8F;
  color: #123f61 !important;
}

.nav-cta-link:hover i {
  transform: translateX(3px);
}

@media (max-width: 991px) {
  .nav-item-cta {
    margin-top: 10px;
  }
  .nav-cta-link {
    margin-left: 0;
  }
}


/* =============================================================
   18. Page breadcrumbs on the new Capabilities and Sustainability
   pages reuse .solution-breadcrumb / .solution-breadcrumb-sep,
   already defined above for the Solutions page header.
   ============================================================= */


/* =============================================================
   19. CAPABILITIES PAGE (views/capabilities.ejs)
   Numbered pill-tab selector + active detail panel, followed by
   a "delivery chain" strip of connected stage icons. Restyled
   into the site's navy/gold palette from the reference screenshot
   (which used a dark/cyan theme) -- same adaptation approach used
   for Solutions, Insights and Tender.
   ============================================================= */
.capabilities-section {
  background: #0f3652;
}

.capability-tabs-nav {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin: 8px 0 32px;
}

.capability-tab-pill {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  padding: 10px 20px;
  border-radius: 999px;
  border: 1px solid rgba(255, 255, 255, .18);
  background: rgba(255, 255, 255, .04);
  color: rgba(255, 255, 255, .72);
  font-weight: 600;
  font-size: .85rem;
  cursor: pointer;
  transition: all .2s ease;
}

.capability-tab-num {
  color: rgba(242, 204, 143, .7);
  font-weight: 800;
}

.capability-tab-pill:hover {
  border-color: rgba(242, 204, 143, .45);
  color: #ffffff;
}

.capability-tab-pill.active {
  background: #F2CC8F;
  border-color: #F2CC8F;
  color: #123f61;
}

.capability-tab-pill.active .capability-tab-num {
  color: #123f61;
}

.capability-tab-panel {
  display: none;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 20px;
  padding: 40px;
}

.capability-tab-panel.active {
  display: block;
  animation: capabilityFadeIn .35s ease;
}

@keyframes capabilityFadeIn {
  from { opacity: 0; transform: translateY(8px); }
  to { opacity: 1; transform: translateY(0); }
}

.capability-tab-panel-eyebrow {
  display: block;
  color: #F2CC8F;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .1em;
  text-transform: uppercase;
  margin-bottom: 10px;
}

.capability-tab-panel h3 {
  color: #ffffff;
  font-size: 1.6rem;
  font-weight: 700;
  margin-bottom: 16px;
}

.capability-tab-panel p {
  color: rgba(255, 255, 255, .72);
  font-size: 1rem;
  line-height: 1.7;
  margin-bottom: 22px;
  max-width: 640px;
}

.capability-tab-panel-list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px 24px;
}

.capability-tab-panel-list li {
  display: flex;
  align-items: flex-start;
  gap: 10px;
  color: rgba(255, 255, 255, .82);
  font-size: .92rem;
}

.capability-tab-panel-list li i {
  color: #F2CC8F;
  margin-top: 3px;
}

@media (max-width: 767px) {
  .capability-tab-panel {
    padding: 28px 22px;
  }
  .capability-tab-panel h3 {
    font-size: 1.3rem;
  }
  .capability-tab-panel-list {
    grid-template-columns: 1fr;
  }
  .capability-tab-pill {
    padding: 8px 15px;
    font-size: .8rem;
  }
}


/* -- Delivery chain diagram ("How the System Connects.") -- */
.capability-chain-section {
  background: #0c2c44;
}

.capability-chain-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: flex-start;
  gap: 4px 0;
  margin-top: 44px;
}

.capability-chain-node {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  width: 122px;
}

.capability-chain-icon {
  width: 62px;
  height: 62px;
  border-radius: 50%;
  background: rgba(255, 255, 255, .05);
  border: 1.5px solid rgba(242, 204, 143, .4);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 1.35rem;
  color: #F2CC8F;
  margin-bottom: 12px;
  transition: all .25s ease;
}

.capability-chain-node:hover .capability-chain-icon {
  background: rgba(242, 204, 143, .14);
  transform: translateY(-4px);
}

.capability-chain-index {
  display: block;
  font-size: .66rem;
  letter-spacing: .08em;
  color: rgba(255, 255, 255, .4);
  font-weight: 700;
  margin-bottom: 2px;
}

.capability-chain-label {
  display: block;
  font-size: .84rem;
  font-weight: 600;
  color: #ffffff;
}

.capability-chain-arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  width: 30px;
  height: 62px;
  color: rgba(242, 204, 143, .4);
  font-size: 1rem;
  flex: 0 0 auto;
}

@media (max-width: 767px) {
  .capability-chain-row {
    flex-direction: column;
    align-items: center;
    gap: 0;
  }
  .capability-chain-node {
    flex-direction: row;
    justify-content: flex-start;
    text-align: left;
    width: 220px;
    gap: 16px;
  }
  .capability-chain-icon {
    margin-bottom: 0;
    flex: 0 0 auto;
  }
  .capability-chain-arrow {
    width: 62px;
    height: 30px;
    transform: rotate(90deg);
  }
}


/* =============================================================
   20. SUSTAINABILITY PAGE (views/sustainability.ejs)
   "Sustainable by Design" checklist + a lightweight decorative
   orbit graphic (concentric rings with slow-orbiting dots),
   restyled from the reference screenshot's own dark theme into
   the site's navy/gold palette.
   ============================================================= */
.sustainability-section {
  background: #0f3652;
}

.sustainability-list {
  list-style: none;
  margin: 28px 0 0;
  padding: 0;
}

.sustainability-list li {
  display: flex;
  align-items: flex-start;
  gap: 16px;
  padding: 18px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .1);
}

.sustainability-list li:first-child {
  padding-top: 0;
}

.sustainability-list li:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.sustainability-list-icon {
  flex: 0 0 auto;
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: rgba(242, 204, 143, .12);
  border: 1px solid rgba(242, 204, 143, .4);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #F2CC8F;
  font-size: 1.05rem;
}

.sustainability-list-title {
  color: #ffffff;
  font-weight: 700;
  font-size: 1.02rem;
  margin-bottom: 4px;
}

.sustainability-list-desc {
  color: rgba(255, 255, 255, .68);
  font-size: .92rem;
  line-height: 1.6;
  margin: 0;
}

/* decorative concentric-orbit graphic */
.sustainability-orbit {
  position: relative;
  width: 100%;
  max-width: 340px;
  aspect-ratio: 1 / 1;
  margin: 0 auto;
}

.sustainability-orbit-ring {
  position: absolute;
  inset: 0;
  border: 1px dashed rgba(242, 204, 143, .3);
  border-radius: 50%;
}

.sustainability-orbit-ring--mid {
  inset: 15%;
  border-color: rgba(242, 204, 143, .4);
}

.sustainability-orbit-ring--inner {
  inset: 32%;
  border: none;
  background: rgba(242, 204, 143, .12);
  display: flex;
  align-items: center;
  justify-content: center;
}

.sustainability-orbit-ring--inner i {
  font-size: 2.4rem;
  color: #F2CC8F;
}

.sustainability-orbit-dot {
  position: absolute;
  width: 14px;
  height: 14px;
  border-radius: 50%;
  background: #F2CC8F;
  box-shadow: 0 0 14px 3px rgba(242, 204, 143, .5);
  top: 50%;
  left: 50%;
  transform-origin: 0 0;
  animation: sustainabilityOrbit 14s linear infinite;
}

.sustainability-orbit-dot--outer {
  margin: -7px 0 0 -7px;
  animation-duration: 18s;
}

.sustainability-orbit-dot--mid {
  margin: -7px 0 0 -7px;
  animation-name: sustainabilityOrbitMid;
  animation-duration: 11s;
  animation-timing-function: linear;
  animation-iteration-count: infinite;
  animation-direction: reverse;
  background: #ffffff;
  box-shadow: 0 0 10px 2px rgba(255, 255, 255, .4);
}

@keyframes sustainabilityOrbit {
  from { transform: rotate(0deg) translateX(170px) rotate(0deg); }
  to { transform: rotate(360deg) translateX(170px) rotate(-360deg); }
}

@keyframes sustainabilityOrbitMid {
  from { transform: rotate(0deg) translateX(115px) rotate(0deg); }
  to { transform: rotate(360deg) translateX(115px) rotate(-360deg); }
}

@media (max-width: 991px) {
  .sustainability-orbit {
    max-width: 240px;
    margin-top: 40px;
  }
  .sustainability-orbit-dot--outer {
    animation-name: sustainabilityOrbitSmall;
  }
  .sustainability-orbit-dot--mid {
    animation-name: sustainabilityOrbitMidSmall;
  }
  @keyframes sustainabilityOrbitSmall {
    from { transform: rotate(0deg) translateX(120px) rotate(0deg); }
    to { transform: rotate(360deg) translateX(120px) rotate(-360deg); }
  }
  @keyframes sustainabilityOrbitMidSmall {
    from { transform: rotate(0deg) translateX(80px) rotate(0deg); }
    to { transform: rotate(360deg) translateX(80px) rotate(-360deg); }
  }
}


/* =============================================================
   21. HOMEPAGE — CONTACT US (id="section_6")
   Was left in the site's original default look (white background,
   light-grey #e1e6eb boxes, blue-grey headings) through every
   earlier redesign pass. Restyled here into the same navy/gold
   language as the rest of the page -- content unchanged, only the
   presentation: a framed map alongside a stack of icon info cards.
   ============================================================= */
.contact-section {
  background: #0f3652;
}

.contact-map-frame {
  border-radius: 20px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .14);
  height: 100%;
  min-height: 320px;
}

.contact-map-frame iframe {
  display: block;
  width: 100%;
  height: 100%;
  min-height: 320px;
  border: 0;
}

.contact-info-card {
  display: flex;
  gap: 16px;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 26px;
  margin-bottom: 20px;
  transition: background .25s ease, border-color .25s ease, transform .25s ease;
}

.contact-info-card:last-child {
  margin-bottom: 0;
}

.contact-info-card:hover {
  background: rgba(255, 255, 255, .08);
  border-color: rgba(242, 204, 143, .35);
  transform: translateY(-3px);
}

.contact-info-icon {
  flex: 0 0 auto;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: rgba(242, 204, 143, .12);
  border: 1px solid rgba(242, 204, 143, .4);
  display: flex;
  align-items: center;
  justify-content: center;
  color: #F2CC8F;
  font-size: 1.15rem;
}

.contact-info-body {
  flex: 1 1 auto;
  min-width: 0;
}

.contact-info-title {
  color: #ffffff;
  font-weight: 700;
  font-size: 1.05rem;
  margin-bottom: 8px;
}

.contact-info-text {
  color: rgba(255, 255, 255, .68);
  font-size: .92rem;
  line-height: 1.65;
  margin: 0 0 6px;
}

.contact-info-text:last-child {
  margin-bottom: 0;
}

.contact-info-link {
  color: #F2CC8F;
  font-weight: 600;
  text-decoration: none;
}

.contact-info-link:hover {
  text-decoration: underline;
}

.contact-hours-list {
  list-style: none;
  padding: 0;
  margin: 0;
}

.contact-hours-list li {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 12px;
  padding: 7px 0;
  border-bottom: 1px solid rgba(255, 255, 255, .08);
  color: rgba(255, 255, 255, .62);
  font-size: .9rem;
}

.contact-hours-list li:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.contact-hours-list li span {
  color: #ffffff;
  font-weight: 600;
}

@media (max-width: 991px) {
  .contact-map-frame {
    min-height: 280px;
    margin-bottom: 8px;
  }
}


/* =============================================================
   22. SITE FOOTER — every page
   The footer inherited the base template's default white
   background with dark-slate headings/icons, the one piece of
   "default theme" left untouched anywhere on the site. Restyled
   into the same navy/gold language, content and structure
   unchanged (same four columns, same links, same decorative wave
   -- the wave SVG's own fill="" attribute is recoloured per file
   from #1a5888 to #0f3652 so it still reads as a visible crest
   against the new, darker #0c2c44 footer background).
   ============================================================= */
.site-footer {
  background: #0c2c44;
  padding-top: 70px;
  border-top: 1px solid rgba(255, 255, 255, .08);
}

.site-footer-title {
  color: #F2CC8F;
  font-size: 1.02rem;
  font-weight: 700;
}

.site-footer p {
  color: rgba(255, 255, 255, .64);
  font-size: .92rem;
}

.site-footer .copyright-text {
  color: rgba(255, 255, 255, .45);
  font-size: .85rem;
}

.site-footer a {
  color: rgba(255, 255, 255, .74);
  text-decoration: none;
  transition: color .2s ease;
}

.site-footer a:hover {
  color: #F2CC8F;
}

.site-footer p .bi {
  color: #F2CC8F;
}

.social-icon-link {
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(255, 255, 255, .16);
  color: #ffffff;
}

.social-icon-link:hover {
  background: #F2CC8F;
  border-color: #F2CC8F;
  color: #123f61;
}

.site-footer-credit {
  font-size: .82rem;
  color: rgba(255, 255, 255, .4);
  margin-top: 22px;
  padding-top: 22px;
  border-top: 1px solid rgba(255, 255, 255, .08);
}

.site-footer-credit-link {
  color: #F2CC8F;
  font-weight: 700;
  font-style: italic;
  text-decoration: none;
  transition: color .2s ease;
}

.site-footer-credit-link:hover {
  color: #ffffff;
}

@media (max-width: 767px) {
  .site-footer {
    padding-top: 50px;
  }
}

/* ==========================================================================
   23. LOGIN PAGE
   ========================================================================== */

.login-section {
  background: linear-gradient(160deg, #123f61 0%, #0f3652 55%, #0c2c44 100%);
  padding-top: 190px;
  padding-bottom: 130px;
  position: relative;
  overflow: hidden;
}

.login-section::before {
  content: '';
  position: absolute;
  top: -120px;
  right: -120px;
  width: 360px;
  height: 360px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(242, 204, 143, .12) 0%, rgba(242, 204, 143, 0) 70%);
  pointer-events: none;
}

.login-section::after {
  content: '';
  position: absolute;
  bottom: -140px;
  left: -140px;
  width: 380px;
  height: 380px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(255, 255, 255, .06) 0%, rgba(255, 255, 255, 0) 70%);
  pointer-events: none;
}

/* neutralize login.css's legacy unscoped "form" selector (position:absolute,
   fixed height/width, brown glass background) so the new .login-card form
   lays out normally instead of being pulled out of flow and re-centered */
.login-card form {
  position: static;
  top: auto;
  left: auto;
  transform: none;
  width: auto;
  height: auto;
  background: none;
  backdrop-filter: none;
  border: none;
  box-shadow: none;
  padding: 0;
}

.login-card {
  position: relative;
  z-index: 1;
  max-width: 440px;
  margin: 0 auto;
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 3rem 2.75rem;
  backdrop-filter: blur(10px);
  box-shadow: 0 20px 60px rgba(0, 0, 0, .35);
}

.login-card-icon {
  width: 60px;
  height: 60px;
  margin: 0 auto 1.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(242, 204, 143, .12);
  border: 1px solid rgba(242, 204, 143, .3);
  color: #F2CC8F;
  font-size: 1.5rem;
}

.login-card h3 {
  text-align: center;
  color: #ffffff;
  font-family: 'DM Sans', sans-serif;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: normal;
  margin-bottom: 2rem;
}

.login-card label {
  display: block;
  color: rgba(255, 255, 255, .74);
  font-family: 'DM Sans', sans-serif;
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .04em;
  text-transform: uppercase;
  margin-top: 1.25rem;
  margin-bottom: .5rem;
}

.login-card label:first-of-type {
  margin-top: 0;
}

.login-card input {
  display: block;
  width: 100%;
  height: 50px;
  padding: 0 16px;
  background: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .16);
  border-radius: 8px;
  color: #ffffff;
  font-family: 'DM Sans', sans-serif;
  font-size: .95rem;
  letter-spacing: normal;
  transition: border-color .2s ease, background .2s ease;
}

.login-card input::placeholder {
  color: rgba(255, 255, 255, .35);
}

.login-card input:focus {
  outline: none;
  border-color: #F2CC8F;
  background: rgba(255, 255, 255, .09);
}

.login-card button[type="submit"] {
  display: block;
  width: 100%;
  margin-top: 2rem;
  padding: 14px 0;
  background: #F2CC8F;
  color: #123f61;
  font-family: 'DM Sans', sans-serif;
  font-size: 1rem;
  font-weight: 700;
  letter-spacing: normal;
  border: none;
  border-radius: 8px;
  cursor: pointer;
  transition: background .2s ease, transform .2s ease;
}

.login-card button[type="submit"]:hover {
  background: #ffffff;
  transform: translateY(-2px);
}

.login-alert {
  border-radius: 8px;
  padding: .75rem 1rem;
  font-size: .88rem;
  margin-bottom: 1.5rem;
  border: 1px solid transparent;
}

.login-alert.alert-success {
  background: rgba(34, 197, 94, .12);
  border-color: rgba(34, 197, 94, .35);
  color: #4ade80;
}

.login-alert.alert-danger {
  background: rgba(239, 68, 68, .12);
  border-color: rgba(239, 68, 68, .35);
  color: #f87171;
}

@media (max-width: 767px) {
  .login-section {
    padding-top: 150px;
    padding-bottom: 90px;
  }

  .login-card {
    padding: 2.25rem 1.75rem;
    max-width: 92%;
  }
}

/* Login MFA (email OTP) step — reuses .login-card/.login-alert above, adds
   a wide letter-spaced code field and a lightweight resend/back row. */
.login-otp-hint {
  text-align: center;
  color: rgba(255, 255, 255, .65);
  font-family: 'DM Sans', sans-serif;
  font-size: .88rem;
  letter-spacing: normal;
  margin: -1rem 0 1.75rem;
}

#code {
  text-align: center;
  font-size: 1.6rem;
  font-weight: 700;
  letter-spacing: .6rem;
}

.login-otp-actions {
  margin-top: 1.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  flex-wrap: wrap;
  gap: .75rem;
}

/* Overrides .login-card button[type="submit"]'s full-width gold button
   styling — this needs to be a small text-link-style action instead, so it
   re-specifies everything that rule sets. */
.login-card .login-otp-resend-form button[type="submit"] {
  display: inline;
  width: auto;
  margin-top: 0;
  padding: 0;
  background: none;
  color: #F2CC8F;
  font-family: 'DM Sans', sans-serif;
  font-size: .85rem;
  font-weight: 600;
  letter-spacing: normal;
  border: none;
  border-radius: 0;
  cursor: pointer;
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color .2s ease;
}

.login-card .login-otp-resend-form button[type="submit"]:hover {
  background: none;
  color: #ffffff;
  transform: none;
}

.login-otp-link {
  color: rgba(255, 255, 255, .6);
  font-family: 'DM Sans', sans-serif;
  font-size: .85rem;
  font-weight: 500;
  letter-spacing: normal;
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color .2s ease;
}

.login-otp-link:hover {
  color: #ffffff;
}

@media (max-width: 767px) {
  #code {
    font-size: 1.3rem;
    letter-spacing: .4rem;
  }

  .login-otp-actions {
    justify-content: center;
    text-align: center;
  }
}

/* ==========================================================================
   24. ADMIN DASHBOARD
   ========================================================================== */

.admin-dashboard-section {
  background: linear-gradient(160deg, #123f61 0%, #0f3652 55%, #0c2c44 100%);
  padding: 170px 0 100px;
}

.admin-card {
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 14px;
  overflow: hidden;
  box-shadow: 0 16px 40px rgba(0, 0, 0, .25);
}

.admin-card .admin-card-header {
  background: rgba(255, 255, 255, .04);
  border-bottom: 1px solid rgba(255, 255, 255, .12);
  padding: 1.15rem 1.75rem;
  display: flex;
  align-items: center;
  gap: .6rem;
}

.admin-card-header h5 {
  color: #ffffff;
  font-weight: 700;
  letter-spacing: .01em;
}

.admin-card-header .bi {
  color: #F2CC8F;
  font-size: 1.2rem;
}

.admin-card .card-body {
  padding: 1.75rem;
}

.admin-stat-box {
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 12px;
  padding: 1.5rem 1rem;
  text-align: center;
  height: 100%;
  transition: transform .2s ease, border-color .2s ease, background .2s ease;
}

.admin-stat-box:hover {
  transform: translateY(-3px);
  border-color: rgba(242, 204, 143, .35);
  background: rgba(255, 255, 255, .065);
}

.admin-stat-icon {
  width: 46px;
  height: 46px;
  margin: 0 auto .75rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 50%;
  background: rgba(242, 204, 143, .12);
  border: 1px solid rgba(242, 204, 143, .3);
  color: #F2CC8F;
  font-size: 1.15rem;
}

.admin-stat-title {
  font-size: .76rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: rgba(255, 255, 255, .6);
  margin-bottom: .35rem;
}

.admin-stat-value {
  font-size: 1.9rem;
  font-weight: 700;
  color: #ffffff;
  margin: 0;
}

.admin-dashboard-section .alert-success,
.admin-dashboard-section .alert-danger {
  border-radius: 8px;
  border: 1px solid transparent;
  font-size: .9rem;
}

.admin-dashboard-section .alert-success {
  background: rgba(34, 197, 94, .12) !important;
  border-color: rgba(34, 197, 94, .35);
  color: #4ade80;
}

.admin-dashboard-section .alert-danger {
  background: rgba(239, 68, 68, .12) !important;
  border-color: rgba(239, 68, 68, .35);
  color: #f87171;
}

.admin-table-wrap {
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 14px;
  padding: .5rem;
  box-shadow: 0 16px 40px rgba(0, 0, 0, .25);
}

.admin-table-wrap .table {
  --bs-table-color: rgba(255, 255, 255, .88);
  --bs-table-bg: transparent;
  --bs-table-border-color: rgba(255, 255, 255, .1);
  --bs-table-striped-color: rgba(255, 255, 255, .88);
  --bs-table-striped-bg: rgba(255, 255, 255, .03);
  --bs-table-hover-color: #ffffff;
  --bs-table-hover-bg: rgba(242, 204, 143, .08);
  margin-bottom: 0;
}

.admin-table-wrap .table thead th {
  background-color: rgba(255, 255, 255, .06);
  color: #F2CC8F;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .05em;
  text-transform: uppercase;
  white-space: nowrap;
  border-bottom-color: rgba(255, 255, 255, .16);
}

.admin-table-wrap .table td {
  vertical-align: middle;
  font-size: .87rem;
}

/* neutralize the base template's unscoped .table-responsive tbody tr:nth-child(even)
   rule (background-color: #F4F1DE, a cream color from the old golf-club theme) which
   otherwise bleeds through the (transparent) td backgrounds onto every even row here */
.admin-table-wrap .table tbody tr:nth-child(even) {
  background-color: transparent;
}

.admin-dashboard-section .btn {
  border-radius: 6px;
  font-weight: 600;
  font-size: .8rem;
  transition: transform .15s ease, box-shadow .15s ease;
}

.admin-dashboard-section .btn:hover {
  transform: translateY(-1px);
  box-shadow: 0 6px 14px rgba(0, 0, 0, .3);
}

@media (max-width: 767px) {
  .admin-dashboard-section {
    padding: 140px 0 70px;
  }

  .admin-card .card-body,
  .admin-table-wrap {
    padding: 1.1rem;
  }

  .admin-table-wrap .table td,
  .admin-table-wrap .table th {
    border-color: rgba(255, 255, 255, .1);
  }

  /* replace the base template's broken "everything display:block" stacking
     (dashboard.css th,td{display:block}) with proper label/value mobile cards */
  .admin-table-wrap .table thead {
    display: none;
  }

  .admin-table-wrap .table,
  .admin-table-wrap .table tbody {
    display: block;
    width: 100%;
  }

  .admin-table-wrap .table tbody tr {
    display: block;
    background: rgba(255, 255, 255, .04);
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 10px;
    margin-bottom: .85rem;
    padding: .35rem .25rem;
  }

  .admin-table-wrap .table tbody tr:last-child {
    margin-bottom: 0;
  }

  .admin-table-wrap .table td {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    width: 100%;
    padding: .55rem .85rem;
    border: none;
    border-bottom: 1px solid rgba(255, 255, 255, .06);
    text-align: right;
  }

  .admin-table-wrap .table td:last-child {
    border-bottom: none;
  }

  .admin-table-wrap .table td::before {
    content: attr(data-label);
    flex-shrink: 0;
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
    color: #F2CC8F;
    text-align: left;
  }
}

/* ==========================================================================
   25. ADMIN LIST PAGES (Tender / Insight Management)
   ========================================================================== */

.admin-list-header {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  margin-bottom: 2rem;
}

.admin-list-title {
  color: #ffffff;
  font-weight: 700;
  margin: 0;
}

.admin-add-btn {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  background: #F2CC8F;
  color: #123f61 !important;
  font-weight: 700;
  border: none;
  border-radius: 999px;
  padding: .7rem 1.6rem;
  text-decoration: none;
  transition: transform .2s ease, background .2s ease, box-shadow .2s ease;
}

.admin-add-btn:hover {
  background: #ffffff;
  color: #123f61 !important;
  transform: translateY(-2px);
  box-shadow: 0 10px 24px rgba(0, 0, 0, .25);
}

.admin-list-card {
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 14px;
  padding: 1.75rem;
  margin-bottom: 1.5rem;
  transition: border-color .2s ease, background .2s ease;
}

.admin-list-card:hover {
  border-color: rgba(242, 204, 143, .28);
  background: rgba(255, 255, 255, .065);
}

.admin-list-status-wrap {
  background: rgba(255, 255, 255, .04);
  border: 1px solid rgba(255, 255, 255, .1);
  border-radius: 10px;
  text-align: center;
  padding: 1.25rem 1rem;
  height: 100%;
}

.admin-list-status {
  font-size: 1.5rem;
  font-weight: 700;
  color: #F2CC8F;
  margin: 0 0 .6rem;
}

.admin-status-open {
  color: #4ade80;
}

.admin-status-closed {
  color: #f87171;
}

.admin-list-status-wrap strong {
  display: block;
  font-size: .78rem;
  font-weight: 500;
  color: rgba(255, 255, 255, .6);
  margin-bottom: .3rem;
}

.admin-list-info-title {
  color: #ffffff;
  font-size: 1.2rem;
  font-weight: 700;
  display: block;
  margin-bottom: .6rem;
}

.admin-list-info p {
  color: rgba(255, 255, 255, .72);
  font-size: .92rem;
  margin-bottom: .4rem;
}

.admin-list-image-wrap {
  border-radius: 10px;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .1);
  height: 100%;
  min-height: 140px;
}

.admin-list-image-wrap img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}

.admin-list-actions {
  border-top: 1px solid rgba(255, 255, 255, .12);
}

@media (max-width: 767px) {
  .admin-list-card {
    padding: 1.25rem;
  }

  /* the status/date box uses Bootstrap's d-flex at this breakpoint (inherited
     from the base template, meant for a single short date fragment); now that
     it holds full "Opening Date ..." sentences, force it to stack instead */
  .admin-list-status-wrap.d-flex {
    display: block !important;
  }

  .admin-list-status-wrap strong {
    display: block;
    margin-top: .35rem;
  }
}

/* ==========================================================================
   26. ADMIN FORM PAGES (Add/Update Tender, Add/Update Insight, etc.)
   ========================================================================== */

.admin-form-title {
  color: #ffffff;
  font-weight: 700;
}

.admin-form-card {
  background: rgba(255, 255, 255, .05);
  border: 1px solid rgba(255, 255, 255, .12);
  border-radius: 16px;
  padding: 2.5rem;
  box-shadow: 0 20px 50px rgba(0, 0, 0, .3);
}

.admin-form-card label {
  display: block;
  color: rgba(255, 255, 255, .74);
  font-size: .82rem;
  font-weight: 600;
  letter-spacing: .03em;
  text-transform: uppercase;
  margin-bottom: .5rem;
}

.admin-form-card label .text-danger {
  color: #f87171 !important;
}

.admin-form-card .form-control {
  background-color: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .16);
  color: #ffffff;
  border-radius: 8px;
  padding: .65rem .9rem;
}

.admin-form-card .form-control::placeholder {
  color: rgba(255, 255, 255, .35);
}

.admin-form-card .form-control:focus {
  background-color: rgba(255, 255, 255, .09);
  border-color: #F2CC8F;
  color: #ffffff;
  box-shadow: 0 0 0 .2rem rgba(242, 204, 143, .18);
}

.admin-form-card .form-control[type="file"] {
  padding-top: .5rem;
  padding-bottom: .5rem;
}

.admin-form-card .form-control[type="date"] {
  color-scheme: dark;
}

.admin-form-card textarea.form-control {
  min-height: 120px;
}

.admin-form-card .form-control[readonly] {
  background-color: rgba(255, 255, 255, .03);
  color: rgba(255, 255, 255, .6);
  cursor: not-allowed;
}

.admin-form-card .form-select {
  --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23F2CC8F' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
  background-color: rgba(255, 255, 255, .06);
  border: 1px solid rgba(255, 255, 255, .16);
  color: #ffffff;
  border-radius: 8px;
  padding: .65rem 2.25rem .65rem .9rem;
}

.admin-form-card .form-select:focus {
  background-color: rgba(255, 255, 255, .09);
  border-color: #F2CC8F;
  color: #ffffff;
  box-shadow: 0 0 0 .2rem rgba(242, 204, 143, .18);
}

.admin-form-card .form-select option {
  color: #123f61;
  background: #ffffff;
}

.admin-form-card h2 {
  color: #ffffff;
  font-weight: 700;
}

.admin-form-card .btn-primary,
.admin-form-card .btn-success {
  background: #F2CC8F;
  border-color: #F2CC8F;
  color: #123f61;
  font-weight: 700;
  border-radius: 8px;
}

.admin-form-card .btn-primary:hover,
.admin-form-card .btn-success:hover {
  background: #ffffff;
  border-color: #ffffff;
  color: #123f61;
}

.admin-form-card .btn-secondary {
  background: transparent;
  border-color: rgba(255, 255, 255, .3);
  color: #ffffff;
  border-radius: 8px;
  font-weight: 600;
}

.admin-form-card .btn-secondary:hover {
  background: rgba(255, 255, 255, .1);
  border-color: rgba(255, 255, 255, .5);
  color: #ffffff;
}

@media (max-width: 767px) {
  .admin-form-card {
    padding: 1.5rem;
  }
}


/* ==========================================================================
   27. DISPATCH MANAGEMENT (Register list + Create Dispatch form)
   ========================================================================== */

/* File-number preview shown at the top of the create-dispatch form */
.admin-dispatch-preview {
  background: rgba(242, 204, 143, .08);
  border: 1px solid rgba(242, 204, 143, .35);
  border-radius: 10px;
  padding: .9rem 1.25rem;
}

.admin-dispatch-preview-label {
  display: block;
  color: rgba(255, 255, 255, .65);
  font-size: .78rem;
  text-transform: uppercase;
  letter-spacing: .06em;
  margin-bottom: .3rem;
}

.admin-dispatch-preview-number {
  display: block;
  color: #F2CC8F;
  font-weight: 700;
  font-size: 1.4rem;
  letter-spacing: .03em;
}

/* Dispatch register table: keep the file number legible in the striped rows */
.admin-table-wrap .table td strong {
  color: #F2CC8F;
}

/* Secondary variant of .admin-add-btn — used for "Generate Dispatch" /
   "Manage Files" cross-links that sit next to the primary gold action */
.admin-add-btn-secondary {
  background: transparent;
  color: #F2CC8F !important;
  border: 1px solid rgba(242, 204, 143, .55);
}

.admin-add-btn-secondary:hover {
  background: rgba(242, 204, 143, .12);
  color: #ffffff !important;
  border-color: #F2CC8F;
}

@media (max-width: 767px) {
  .admin-dispatch-preview-number {
    font-size: 1.15rem;
  }
}

/* Year picker attached to the "Download PDF" button — sits in the
   admin-list-header button row, so it needs its own compact styling
   rather than the form-card select treatment. */
.admin-pdf-year-form {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin: 0;
}

.admin-year-select {
  background: rgba(255, 255, 255, .06);
  color: #ffffff;
  border: 1px solid rgba(242, 204, 143, .35);
  border-radius: 999px;
  padding: .65rem 2.2rem .65rem 1.1rem;
  font-size: .9rem;
  font-weight: 600;
  appearance: none;
  -webkit-appearance: none;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23F2CC8F'%3E%3Cpath d='M4.646 6.646a.5.5 0 0 1 .708 0L8 9.293l2.646-2.647a.5.5 0 0 1 .708.708l-3 3a.5.5 0 0 1-.708 0l-3-3a.5.5 0 0 1 0-.708z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right .8rem center;
  background-size: 12px 12px;
  cursor: pointer;
  transition: border-color .2s ease, background-color .2s ease;
}

.admin-year-select:hover,
.admin-year-select:focus {
  border-color: #F2CC8F;
  background-color: rgba(255, 255, 255, .1);
  outline: none;
}

.admin-year-select option {
  background: #123f61;
  color: #ffffff;
}

@media (max-width: 767px) {
  .admin-pdf-year-form {
    width: 100%;
  }

  .admin-year-select {
    flex: 1 1 auto;
  }
}

/* Edit / Delete row actions on the Dispatch Files and Dispatch Register
   tables — small pill buttons matching the .admin-add-btn-secondary
   treatment, with a red variant for the destructive action. */
.admin-table-actions {
  display: flex;
  flex-wrap: wrap;
  gap: .4rem;
}

.admin-action-btn {
  display: inline-flex;
  align-items: center;
  gap: .3rem;
  background: transparent;
  border: 1px solid transparent;
  border-radius: 999px;
  padding: .3rem .75rem;
  font-size: .78rem;
  font-weight: 600;
  cursor: pointer;
  text-decoration: none;
  transition: background .2s ease, border-color .2s ease, color .2s ease;
}

.admin-action-btn-edit {
  color: #F2CC8F;
  border-color: rgba(242, 204, 143, .45);
}

.admin-action-btn-edit:hover {
  background: rgba(242, 204, 143, .12);
  border-color: #F2CC8F;
  color: #ffffff;
}

.admin-action-btn-delete {
  color: #f19999;
  border-color: rgba(239, 68, 68, .4);
}

.admin-action-btn-delete:hover {
  background: rgba(239, 68, 68, .15);
  border-color: #ef4444;
  color: #ffffff;
}

/* Editable file number on the Create Dispatch File form — admin types the
   number themselves instead of a read-only auto-assigned preview. */
.admin-file-number-row {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: .5rem;
  flex-wrap: wrap;
}

.admin-file-number-part {
  color: #F2CC8F;
  font-weight: 700;
  font-size: 1.4rem;
  letter-spacing: .03em;
}

.admin-file-number-input {
  width: 6rem;
  text-align: center;
  background: rgba(255, 255, 255, .08);
  border: 1px solid rgba(242, 204, 143, .5);
  border-radius: 8px;
  color: #F2CC8F;
  font-weight: 700;
  font-size: 1.4rem;
  letter-spacing: .03em;
  padding: .25rem .5rem;
}

.admin-file-number-input:focus {
  outline: none;
  border-color: #F2CC8F;
  background: rgba(255, 255, 255, .12);
  box-shadow: 0 0 0 3px rgba(242, 204, 143, .2);
}

/* Hide the native number spinner so the input reads as part of the
   BA / [ ] / year number, not a generic form field. */
.admin-file-number-input::-webkit-outer-spin-button,
.admin-file-number-input::-webkit-inner-spin-button {
  -webkit-appearance: none;
  margin: 0;
}
.admin-file-number-input[type="number"] {
  -moz-appearance: textfield;
}

.admin-file-number-hint {
  color: rgba(255, 255, 255, .6);
  font-size: .82rem;
  margin: .6rem 0 0;
}

@media (max-width: 767px) {
  .admin-file-number-part {
    font-size: 1.15rem;
  }

  .admin-file-number-input {
    font-size: 1.15rem;
    width: 5rem;
  }
}
