
      *,
      *::before,
      *::after {
        box-sizing: border-box;
      }
      :root {
        --navy: #0a0a5c;
        --blue: #1e56d6;
        --tint: #f3f6fd;
        --line: #e0e7f6;
        --muted: #4a4f86;
        color-scheme: light;
        padding-top: env(safe-area-inset-top, 0px);
        padding-bottom: env(safe-area-inset-bottom, 0px);
      }
      html {
        scroll-behavior: smooth;
        scroll-padding-top: calc(env(safe-area-inset-top, 0px) + 84px);
        overflow-x: hidden;
      }
      body {
        background: #fff;
        color: var(--navy);
        font-family: "DM Sans", system-ui, sans-serif;
        overflow-x: hidden;
        width: 100%;
      }

      /* ── Hamburger / X animado ── */
      .hbg {
        display: flex;
        flex-direction: column;
        justify-content: center;
        align-items: center;
        width: 20px;
        height: 20px;
        gap: 0;
        position: relative;
      }
      .hbg span {
        display: block;
        width: 20px;
        height: 2px;
        background: var(--navy);
        border-radius: 2px;
        position: absolute;
        transition: transform 0.3s ease, opacity 0.2s ease, top 0.3s ease;
      }
      .hbg span:nth-child(1) { top: 4px; }
      .hbg span:nth-child(2) { top: 50%; margin-top: -1px; }
      .hbg span:nth-child(3) { top: calc(100% - 6px); }
      /* Estado "aberto" → X */
      .hbg.open span:nth-child(1) { top: 50%; margin-top: -1px; transform: rotate(45deg); }
      .hbg.open span:nth-child(2) { opacity: 0; transform: scaleX(0); }
      .hbg.open span:nth-child(3) { top: 50%; margin-top: -1px; transform: rotate(-45deg); }

      /* Overlay mobile */
      #mo.visible { display: block; }
      #mo.visible #mo-bg { opacity: 1; }
      #mo.visible #mp { transform: translateX(0); }

      /* ── Header fixo permanentemente ── */
      #hd {
        position: fixed;
        top: 0;
        left: 0;
        right: 0;
        width: 100%;
        z-index: 50;
        transition: box-shadow 0.25s ease, background-color 0.25s ease;
      }
      #hd.hd-scroll {
        box-shadow: 0 4px 24px 0 rgba(10, 10, 92, 0.08);
        background: rgba(255, 255, 255, 0.98);
      }

      /* ── Carrosséis de Clientes e Parceiros ── */
      .carousel-card {
        flex: 0 0 85%;
        scroll-snap-align: start;
        transition: transform 0.2s, box-shadow 0.2s, border-color 0.2s;
      }
      .carousel-card:hover {
        transform: translateY(-2px);
      }
      @media (min-width: 640px) {
        .carousel-card {
          flex: 0 0 calc((100% - 1.25rem) / 2);
        }
      }
      @media (min-width: 1024px) {
        .carousel-card {
          flex: 0 0 calc((100% - 2.5rem) / 3);
        }
      }
      @media (min-width: 1280px) {
        .carousel-card {
          flex: 0 0 calc((100% - 3.75rem) / 4);
        }
      }

      /* ── Espaços preparados para logótipos de Clientes e Parceiros ── */
      .logo-box {
        width: 100%;
        height: 4.75rem;
        display: flex;
        align-items: center;
        justify-content: center;
        border-radius: 0.5rem;
        background-color: var(--tint);
        border: 1px dashed var(--line);
        padding: 0.5rem;
        overflow: hidden;
        position: relative;
      }
      .logo-img {
        max-height: 3.25rem;
        max-width: 100%;
        width: auto;
        object-fit: contain;
        transition: transform 0.2s;
      }
      .carousel-card:hover .logo-img {
        transform: scale(1.03);
      }
      .logo-placeholder-text {
        font-size: 0.8rem;
        color: var(--muted);
        font-weight: 500;
        user-select: none;
        letter-spacing: 0.01em;
      }

      .ic {
        font-family: "Material Symbols Rounded";
        font-weight: normal;
        font-style: normal;
        line-height: 1;
        display: inline-block;
        font-feature-settings: "liga";
        -webkit-font-smoothing: antialiased;
        user-select: none;
      }
      .m {
        color: var(--muted);
      }
      .skip {
        position: absolute;
        left: -9999px;
        top: 0;
        z-index: 60;
        background: var(--navy);
        color: #fff;
        padding: 0.75rem 1rem;
        border-radius: 0.5rem;
      }
      .skip:focus {
        left: 1rem;
        top: 1rem;
      }
      #track:focus-visible {
        outline: 3px solid var(--blue);
        outline-offset: 6px;
        border-radius: 0.5rem;
      }
      .wrap {
        max-width: 72rem;
        margin: 0 auto;
      }
      .sec {
        padding: 4.5rem 1.25rem;
      }
      @media (min-width: 768px) {
        .sec {
          padding: 6.5rem 1.25rem;
        }
      }
      .h2 {
        font-family: Outfit, system-ui, sans-serif;
        font-weight: 600;
        font-size: clamp(1.9rem, 4vw, 2.6rem);
        line-height: 1.12;
        letter-spacing: -0.02em;
      }
      .btn {
        display: inline-flex;
        align-items: center;
        gap: 0.5rem;
        border-radius: 0.6rem;
        padding: 0.85rem 1.4rem;
        font-weight: 700;
        transition:
          transform 0.2s,
          background-color 0.2s,
          color 0.2s;
      }
      .btn:hover {
        transform: translateY(-2px);
      }
      .b1 {
        background: var(--blue);
        color: #fff;
      }
      .b1:hover {
        background: var(--navy);
      }
      .b2 {
        border: 2px solid var(--navy);
      }
      .b2:hover {
        background: var(--navy);
        color: #fff;
      }
      .ibox {
        width: 2.75rem;
        height: 2.75rem;
        border-radius: 0.6rem;
        background: var(--tint);
        color: var(--blue);
        display: grid;
        place-items: center;
        flex-shrink: 0;
        transition:
          background-color 0.25s,
          color 0.25s;
      }
      .ibox .ic {
        font-size: 1.5rem;
      }
      .svc {
        background: #fff;
        padding: 1.75rem;
      }
      .svc:hover .ibox {
        background: var(--blue);
        color: #fff;
      }
      img {
        display: block;
        max-width: 100%;
        height: auto;
      }
      img:not([src]) {
        background: var(--tint);
        border: 2px dashed var(--line);
        color: transparent;
        font-size: 0;
        border-radius: 0.75rem;
      }
      .no-scrollbar {
        scrollbar-width: none;
      }
      .no-scrollbar::-webkit-scrollbar {
        display: none;
      }
      nav a.nl {
        position: relative;
      }
      nav a.nl::after {
        content: "";
        position: absolute;
        left: 0;
        bottom: -6px;
        height: 2px;
        width: 100%;
        background: var(--blue);
        transform: scaleX(0);
        transform-origin: left;
        transition: transform 0.3s;
      }
      nav a.nl:hover::after {
        transform: scaleX(1);
      }

      a:focus-visible,
      button:focus-visible,
      summary:focus-visible {
        outline: 3px solid var(--blue);
        outline-offset: 3px;
        border-radius: 0.5rem;
      }
      @keyframes rise {
        from {
          opacity: 0;
          transform: translateY(24px);
        }
        to {
          opacity: 1;
          transform: none;
        }
      }
      .hl {
        animation: rise 0.8s cubic-bezier(0.2, 0.7, 0.2, 1) both;
      }
      .rv {
        opacity: 0;
        transform: translateY(12px);
        transition:
          opacity 0.65s cubic-bezier(0.2, 0.7, 0.2, 1),
          transform 0.65s cubic-bezier(0.2, 0.7, 0.2, 1);
      }
      .rv.in {
        opacity: 1;
        transform: none;
      }
      .ph {
        overflow: hidden;
        border-radius: 0.75rem;
        background: var(--tint);
        display: flex;
        align-items: center;
        justify-content: center;
      }
      .ph img {
        transition: transform 0.6s;
        object-fit: contain;
      }
      article:hover .ph img {
        transform: scale(1.04);
      }
      /* Tipografia e Justificação Controlada */
      p, li {
        overflow-wrap: break-word;
        word-break: normal;
      }
      .text-justify-pt {
        text-align: left;
        hyphens: auto;
        -webkit-hyphens: auto;
      }
      @media (min-width: 640px) {
        .text-justify-pt {
          text-align: justify;
          text-justify: inter-word;
        }
      }

      /* Refinamentos para ecrãs pequenos (< 640px e especialmente 320px - 430px) */
      @media (max-width: 639px) {
        .sec {
          padding: 3.5rem 1rem;
        }
        .btn {
          width: 100%;
          justify-content: center;
        }
        #track > div {
          flex: 0 0 85%;
        }
      }

      #track > div {
        flex: 0 0 78%;
        scroll-snap-align: start;
      }
      @media (min-width: 640px) {
        #track > div {
          flex-basis: calc((100% - 1.25rem) / 2);
        }
      }
      @media (min-width: 1024px) {
        #track > div {
          flex-basis: calc((100% - 3.75rem) / 4);
        }
      }
      details[open] summary .ic {
        transform: rotate(45deg);
      }
      summary .ic {
        transition: transform 0.25s;
      }
      summary::-webkit-details-marker {
        display: none;
      }
      @media (prefers-reduced-motion: reduce) {
        * {
          animation: none !important;
          transition-duration: 0.01ms !important;
        }
        html {
          scroll-behavior: auto;
        }
      }

      /* ── Espaço preparado para fotos da equipa com fallback para avatar ── */
      .team-photo-wrap {
        position: relative;
        aspect-ratio: 4/5;
        width: 100%;
        border-radius: 0.75rem;
        overflow: hidden;
        background: var(--tint);
        border: 1px solid var(--line);
      }
      .team-photo-wrap img {
        width: 100%;
        height: 100%;
        object-fit: cover;
        border-radius: 0.75rem;
        transition: transform 0.4s ease;
        display: block;
      }
      .team-photo-wrap:hover img {
        transform: scale(1.04);
      }
      .team-avatar {
        aspect-ratio: 4/5;
        width: 100%;
        height: 100%;
        border-radius: 0.75rem;
        background: linear-gradient(135deg, var(--tint) 0%, #e3eafc 100%);
        border: 1px solid var(--line);
        display: flex;
        flex-direction: column;
        align-items: center;
        justify-content: center;
        color: var(--blue);
        position: relative;
        overflow: hidden;
        transition: transform 0.3s ease, border-color 0.3s ease;
      }
      .team-avatar:hover {
        transform: translateY(-3px);
        border-color: rgba(30, 86, 214, 0.35);
      }
      .team-avatar .team-initials {
        font-family: Outfit, system-ui, sans-serif;
        font-weight: 700;
        font-size: 2.25rem;
        letter-spacing: -0.02em;
        color: var(--navy);
      }
      .team-avatar .team-badge {
        font-size: 0.75rem;
        font-weight: 600;
        color: var(--blue);
        text-transform: uppercase;
        letter-spacing: 0.05em;
        margin-top: 0.5rem;
      }