/* OGDC site styles (generated). */

  html { scroll-behavior: smooth; }
  #ogdc-hero-track::-webkit-scrollbar { display: none; }
  body { margin: 0; background: #F7F4EE; }
  /* Nothing on any page may widen the viewport: no sideways drift or gutter
     while scrolling on phones. clip (not hidden) keeps sticky headers working. */
  html, body { overflow-x: clip; max-width: 100%; }
  @supports not (overflow-x: clip) { html, body { overflow-x: hidden; } }
  /* Footer on phones: stack the columns; Contact us + LinkedIn share one row. */
  @media (max-width: 720px) {
    .ogdc-foot-grid { grid-template-columns: minmax(0, 1fr) !important; gap: 24px !important; }
    .ogdc-foot-grid > div:empty { display: none; }
    .ogdc-foot-actions { flex-direction: row !important; align-items: center !important; justify-content: flex-start !important; flex-wrap: wrap; gap: 12px !important; }
  }
  a { color: #1F4E89; text-decoration: none; }
  a:hover { color: #0C1F3F; }
  ::selection { background: #DDE6F1; }
  .ogdc-flip:hover .ogdc-flip-back, .ogdc-flip:focus-within .ogdc-flip-back { opacity: 1; }
  .ogdc-bio { overflow: hidden; height: 0; }
  /* The DS Button's mouse-leave handler clears the border shorthand into
     border-image-* leftovers, so the colour falls back to near-black. Pin it. */
  #dc-root .ogdc-button--secondary { border: 1px solid var(--stone-300) !important; }
  #dc-root .ogdc-button--secondary:hover { border-color: var(--navy-700) !important; }
  #dc-root .ogdc-button--primary { border: 1px solid var(--navy-700) !important; }
  /* Leadership cards: grid on desktop, swipeable single-row carousel on mobile.
     Driven by measured element width (JS adds .is-carousel) so it also works
     inside scaled preview frames; the inline display must be overridden. */
  @media (max-width: 720px) { .ogdc-map-frame { display: none; } }
  .ogdc-map-frame.is-hidden { display: none; }
  /* No chevron-up in the icon set — flip the chevron when the list is open. */
  [data-news-toggle] svg { transition: transform 200ms cubic-bezier(0.2,0,0,1); }
  [data-news-toggle][data-open="true"] svg { transform: rotate(180deg); }
  .ogdc-team-wrap, .ogdc-cardrow-wrap { container-type: inline-size; }
  /* Community card status label: smaller on phones so it doesn't dominate the image. */
  @media (max-width: 720px) {
    .ogdc-card-badge { top: 8px !important; left: 8px !important; gap: 6px !important; padding: 4px 7px !important; }
    .ogdc-card-badge-dot { width: 5px !important; height: 5px !important; }
    .ogdc-card-badge-txt { font-size: 8.5px !important; letter-spacing: 0.1em !important; }
  }
  /* Project card hover: the image darkens and eases back (pans out). */
  .ogdc-card-zoom .ogdc-slot { position: absolute; inset: 0; width: 100%; height: 100%; }
  .ogdc-card-zoom .ogdc-slot, .ogdc-card-zoom img {
    transition: transform 420ms cubic-bezier(0.2,0,0,1), filter 420ms cubic-bezier(0.2,0,0,1);
    transform: scale(1.06);
  }
  .ogdc-projcard:hover .ogdc-card-zoom .ogdc-slot,
  .ogdc-projcard:hover .ogdc-card-zoom img {
    transform: scale(1);
    filter: brightness(0.78);
  }
  /* Underline wipes in from the left on hover. */
  .ogdc-wipe::after {
    content: ''; position: absolute; left: 0; right: 0; bottom: 0; height: 1px;
    background: #0C1F3F; transform: scaleX(0); transform-origin: left center;
    transition: transform 260ms cubic-bezier(0.2,0,0,1);
  }
  .ogdc-wipe:hover::after, .ogdc-wipe:focus-visible::after { transform: scaleX(1); }
  /* Drag-to-scroll tracks: text selection fights the drag gesture. */
  #ogdc-proj-track, #ogdc-hero-track, .ogdc-team-grid, .ogdc-cardrow {
    user-select: none; -webkit-user-select: none;
  }
  .ogdc-cardrow { display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: clamp(24px, 3vw, 40px); }
  .ogdc-cardrow-tight { gap: clamp(20px, 2.2vw, 28px); }
  /* Values rows: narrow gaps buy the card width that keeps each heading on one line. */
  .ogdc-cardrow-values { gap: 10px; }
  .ogdc-cardrow-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 24px; align-items: stretch; }
  .ogdc-cardrow-4 { grid-template-columns: repeat(4, minmax(0, 274px)); gap: 20px; align-items: stretch; justify-content: space-between; }
  /* Partner card headings: tighter leading, and every heading reserves two
     lines so the body copy starts on the same baseline across all four. */
  .ogdc-cardrow-4 h3 { font-size: 19px !important; line-height: 1.22; min-height: 2.44em; margin: 0 0 8px !important; text-wrap: balance; }
  /* Four case studies: three visible at full width, the rest reached by
     drag/swipe — avoids a lone orphan card on a second row. */
  .ogdc-cardrow-cases {
    display: flex; gap: clamp(24px, 3vw, 32px); align-items: stretch;
    overflow-x: auto; overscroll-behavior-x: contain; scroll-behavior: smooth;
    scrollbar-width: none; -ms-overflow-style: none; cursor: grab;
  }
  .ogdc-cardrow-cases::-webkit-scrollbar { display: none; }
  .ogdc-cardrow-cases > .ogdc-reveal { display: flex; flex: 0 0 calc((100% - 2 * clamp(24px, 3vw, 32px)) / 3); min-width: 350px; }
  /* Arrows centred on the 4:3 card image: card width x 0.375. */
  .ogdc-case-arrow { top: calc(max((100cqw - 2 * clamp(24px, 3vw, 32px)) / 3, 350px) * 0.375); }
  @container (max-width: 700px) {
    .ogdc-case-arrow { display: none !important; }
    .ogdc-cardrow-cases { scroll-snap-type: x mandatory; scroll-padding-left: 0; }
    .ogdc-cardrow-cases > .ogdc-reveal { flex: 0 0 86% !important; min-width: 0 !important; scroll-snap-align: start; }
  }
  /* Text-heavy case cards: never narrower than 350px, even in carousel mode. */
  @container (max-width: 1120px) {
    .ogdc-cardrow-cases > .ogdc-reveal { flex: 0 0 350px; }
    /* Partner cards keep their 274px cap in carousel mode too — the generic
       percentage basis would make them grow as the window narrows. */
    .ogdc-cardrow-4 > .ogdc-reveal { flex: 0 0 274px; }
  }
  /* Partner logos: two justified rows of five. Each tile is sized to its own
     logo (--w = logo width as % of the old equal tile, x0.173 = % of the row),
     so the space between neighbouring logos is even and each row spans the
     full width. Phones fall back to an even 2-up tile grid. */
  .ogdc-logos { --gap: clamp(12px, 1.5vw, 20px); display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; row-gap: clamp(24px, 3.4vw, 44px); }
  .ogdc-logo { flex: 0 0 calc(var(--w) * 0.173%); height: clamp(56px, 7.6vw, 98px); display: flex; align-items: center; justify-content: center; min-width: 0; }
  .ogdc-logo > * { width: 100%; }
  .ogdc-logos-break { flex: 0 0 100%; height: 0; }
  @media (max-width: 560px) {
    .ogdc-logos { justify-content: center; gap: var(--gap); }
    .ogdc-logos-break { display: none; }
    .ogdc-logo { flex: 0 0 calc((100% - var(--gap)) / 2); height: auto; aspect-ratio: 16 / 9; padding: 8px; box-sizing: border-box; }
    .ogdc-logo > * { width: calc(var(--w) * 1%); }
  }
  .ogdc-cardrow-4 > .ogdc-reveal { display: flex; }
  .ogdc-cardrow-4 > .ogdc-reveal > .sc-host-x > *, .ogdc-cardrow-4 .ogdc-card { width: 100%; height: 100%; }
  /* Equal-height cards: the reveal wrapper and the DS card both need to fill
     the track, in grid and in carousel mode alike. */
  .ogdc-cardrow-3 > .ogdc-reveal { display: flex; }
  .ogdc-cardrow-3 > .ogdc-reveal > .sc-host-x > *, .ogdc-cardrow-3 .ogdc-card { width: 100%; height: 100%; }
  /* 4 tracks at their 250px minimum plus gaps: below this the row would wrap,
     so it becomes a drag/swipe carousel instead of leaving an orphan card. */
  @container (max-width: 1120px) {
    .ogdc-cardrow {
      display: flex; overflow-x: auto;
      overscroll-behavior-x: contain; scrollbar-width: none; -ms-overflow-style: none;
      cursor: grab;
    }
    .ogdc-cardrow::-webkit-scrollbar { display: none; }
    .ogdc-cardrow > *, .ogdc-cardrow > .sc-host-x > * { flex: 0 0 31.5%; }
  }
  @container (max-width: 700px) {
    .ogdc-cardrow > *, .ogdc-cardrow > .sc-host-x > * { flex: 0 0 76%; }
  }
  .ogdc-team-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: clamp(24px, 3vw, 32px); }
  /* 4 tracks at their 230px minimum plus gaps = 1016px; below that the grid
     would wrap a card onto a second row, so it becomes a carousel instead. */
  @container (max-width: 1015px) {
    .ogdc-team-grid {
      display: flex; overflow-x: auto;
      overscroll-behavior-x: contain; scrollbar-width: none; -ms-overflow-style: none;
    }
    .ogdc-team-grid::-webkit-scrollbar { display: none; }
    .ogdc-team-grid > div { flex: 0 0 31.5%; }
  }
  @container (max-width: 700px) {
    .ogdc-team-grid > div { flex: 0 0 76%; }
  }
  @container (max-width: 1015px) { .ogdc-team-grid { cursor: grab; } }
  /* .is-carousel is set from measured element width, so it also fires inside a
     narrow preview pane where the viewport itself still reads wide. */
  .ogdc-reveal { opacity: 0; transform: translateY(16px); transition: opacity 620ms cubic-bezier(0,0,0.2,1), transform 620ms cubic-bezier(0,0,0.2,1); }
  .ogdc-reveal.ogdc-shown { opacity: 1; transform: none; }
  @media (prefers-reduced-motion: reduce) { .ogdc-reveal { opacity: 1; transform: none; transition: none; } }
  .ogdc-pm { position: relative; width: 18px; height: 18px; flex: none; }
  .ogdc-pm::before, .ogdc-pm::after { content: ''; position: absolute; background: #0C1F3F; }
  .ogdc-pm::before { left: 0; right: 0; top: 8px; height: 2px; }
  .ogdc-pm::after { top: 0; bottom: 0; left: 8px; width: 2px; transition: transform 260ms cubic-bezier(0.2,0,0,1); }
  .ogdc-pm[data-open="true"]::after { transform: scaleY(0); }
  @media (prefers-reduced-motion: reduce) { .ogdc-pm::after { transition: none; } }
  @media (prefers-reduced-motion: reduce) { .ogdc-bio { transition: none; } }
  .ogdc-stat > div:nth-child(2) { clip-path: inset(0 100% 0 0); transition: clip-path 1520ms cubic-bezier(0.2,0,0,1); }
  .ogdc-stat.ogdc-swiped > div:nth-child(2) { clip-path: inset(0 0 0 0); }
  @media (prefers-reduced-motion: reduce) {
    .ogdc-stat > div:nth-child(2) { clip-path: none; transition: none; }
  }

.ogdc-sr { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
#og-construction, #news, #contact { scroll-margin-top: 92px; }
dc-if, dc-li { display: contents; }
dc-if[hidden], dc-li[hidden] { display: none !important; }
@media (max-width: 819.98px) { dc-if[data-if="isDesktop"] { display: none !important; } }
@media (min-width: 820px) { dc-if[data-if="isMobile"] { display: none !important; } }
.ogdc-button--primary:hover { background: var(--navy-900) !important; border-color: var(--navy-900) !important; }
.ogdc-button--secondary:hover { border-color: var(--navy-700) !important; }
.ogdc-button:focus-visible { outline: 2px solid var(--navy-700); outline-offset: 2px; }
.dcp1:hover{text-decoration:underline !important;text-underline-offset:5px !important}
.dcp2:hover{color:#0C1F3F !important}
.dcp3:hover{gap:14px !important;color:#0C1F3F !important}
.dcp4:hover{background:rgba(255,255,255,0.78) !important}
.dcp5:hover{color:#002B5C !important;text-decoration:underline !important}
.dcp6:hover{text-decoration:underline !important}
